/// <summary>
        /// Retourne True si une sortie d'un component1 à une sortie d'un component2 ont été reliées, et si c'est le cas mettre à jour les input/output
        /// </summary>
        /// <param name="component1">Le composant qui comporte le input/output sortie</param>
        /// <param name="component2">Le composant qui comporte le input/output entree</param>
        /// <param name="sortie">La sortie à relier</param>
        /// <param name="entree">L'entrée à relier</param>
        /// <returns></returns>
        public bool Relate(Outils component1, Outils component2, Sortie sortie, ClasseEntree entree)
        {
            component1.circuit = this;
            component2.circuit = this;
            //On vérifie si l'entrée entree n'est pas déjà reliée,
            //et si sortie et entree ont le meme état booléen,
            //et si sortie est contenue dans la liste_sorties de component1,
            //et si entree est contenue dans la liste_sentrees de component2,
            //et si component1 et component2 sont contenus dans le circuit
            if (!entree.getRelated() && entree.getEtat() == sortie.getEtat() && component1.getListesorties().Contains(sortie) && component2.getListeentrees().Contains(entree) && Circuit.ContainsVertex(component2) && Circuit.ContainsVertex(component1)) //Si l'entrée de component2 n'est pas reliée
            {
                OutStruct outstruct = new OutStruct(entree, component2);                                                                                                                                                                                    //Mise à jour des liaison
                if (!sortie.getSortie().Contains(outstruct))
                {
                    sortie.getSortie().Add(outstruct);
                    entree.setRelated(true);//Mise à jour de related
                }

                if (!Circuit.ContainsEdge(component1, component2)) //Si il n'y a pas un edge déja présent liant component1 et component2
                {
                    Edge <Outils> edge = new Edge <Outils>(component1, component2);
                    Circuit.AddEdge(edge); //Ajouter edge entre component1 et component2
                }

                entree.setEtat(sortie.getEtat()); //Mise à jour de l'état d'entree de component2
                return(true);                     // component1 et component2 liées avec succès
            }
            else
            {
                return(false);
            }
        }
        /// Pour la réeutilisation
        public override void setEntreeSpe(int i, bool etat)
        {
            ClasseEntree io = liste_entrees[i];

            foreach (Outils v in Circuit.Vertices)
            {
                if (v.getListeentrees().Contains(io))
                {
                    v.setEntreeSpe(v.getListeentrees().IndexOf(io), etat);
                }
            }
        }
示例#3
0
 public void DeleteOustruct(Outils outil, ClasseEntree t)
 {
     for (int i = Sorties.Count - 1; i >= 0; i--)
     {
         if (Sorties[i].getOutils().Equals(outil))
         {
             if (Sorties[i].GetEntree().Equals(t))
             {
                 Sorties.Remove(Sorties[i]);
             }
         }
     }
 }
        public void RecupEntré(IN outils)
        {
            foreach (OutStruct outs in outils.getListesorties()[0].get_OutStruct())
            {
                this.nb_entrees++;
                ClasseEntree entree = outs.GetEntree();
                entree.setDispo(Disposition.left);
                entree.setRelated(false);
                outs.getOutils().end = true;
                this.liste_entrees.Add(entree);//on ajoute l'entrée
                //creation de la liste pour la sauvegarde aprés réutilisation
                this.Entrée.Add(new Point(outs.getOutils().id, outs.getOutils().getListeentrees().IndexOf(outs.GetEntree())));

                ((Grid)(entree.Parent)).Children.Remove(entree);
            }
        }
示例#5
0
 public void SupprimerEntree(ClasseEntree classeEntree)
 {
     this.nb_entrees--;
     this.liste_entrees.Remove(classeEntree);
 }
示例#6
0
 public void AjoutEntreeSpe(ClasseEntree entree, int i)
 {
     this.liste_entrees.Insert(i, entree);
     this.nb_entrees++;
 }
示例#7
0
 public void AjoutEntree(ClasseEntree entree)
 {
     this.liste_entrees.Add(entree);
     this.nb_entrees++;
 }
示例#8
0
 public OutStruct(ClasseEntree entree, Outils outils)
 {
     this.entree = entree;
     this.outils = outils;
 }