Example #1
0
        public void Supprimer()
        {
            // Supression in kernel
            RaiseEvent(new RoutedEventArgs(SuppwireEvent));

            if (io1 is ClasseEntree)
            {
                ClasseEntree i = (ClasseEntree)io1;
                i.setEtat(false);
                i.setRelated(false);


                Sortie o = (Sortie)io2;
                o.DeleteOustruct(gateStart.outil, i);
            }
            else
            {
                ClasseEntree i = (ClasseEntree)io2;
                i.setEtat(false);
                i.setRelated(false);


                Sortie o = (Sortie)io1;
                o.DeleteOustruct(gateEnd.outil, i);
            }
        }
Example #2
0
        //deserialisation gate
        public Gate LoadGate(XElement gate)
        {
            Gate abgate = CreateGate(gate);
            //l'emplacement
            //anchorpoint
            double x = double.Parse(gate.Element("anchorPoint").Attribute("X").Value, CultureInfo.InvariantCulture);
            double y = double.Parse(gate.Element("anchorPoint").Attribute("Y").Value, CultureInfo.InvariantCulture);

            abgate.anchorPoint = new Point(x, y);
            //transform point
            x = double.Parse(gate.Element("transform").Attribute("X").Value, CultureInfo.InvariantCulture);
            y = double.Parse(gate.Element("transform").Attribute("Y").Value, CultureInfo.InvariantCulture);
            abgate.transform.X    += x;
            abgate.transform.Y    += y;
            abgate.RenderTransform = abgate.transform;
            abgate.outil.id        = int.Parse(gate.Attribute("ID").Value);
            int i = abgate.outil.getnbrentrees(), entree = int.Parse(gate.Attribute("Entree").Value);

            if (!(abgate is CircuitComplet))
            {//norbre d'entrées mis à jour
                while (i < entree)
                {
                    abgate.AddEntree(abgate.outil.GetType());
                    i++;
                }
            }
            if (abgate is CircuitComplet)//le cass d'un circuit personalisé
            {
                foreach (XElement element in gate.Element("Gates").Elements())
                {
                    Gate Cgate = LoadGate(element);
                    Cgate.outil.end = bool.Parse(element.Attribute("end").Value);
                    ((CircuitPersonnalise)abgate.outil).AddComponent(Cgate.outil);
                    ((CircuitPersonnalise)abgate.outil).gates.Add(Cgate);
                }
                foreach (XElement element1 in gate.Element("Wires").Elements())
                {
                    Wire wire = LoadWire(element1, ((CircuitPersonnalise)abgate.outil));
                    ((CircuitPersonnalise)abgate.outil).wires.Add(wire);
                }
                foreach (XElement element2 in gate.Element("Entrees").Elements())
                {
                    int x0 = int.Parse(element2.Attribute("id").Value);
                    int y0 = int.Parse(element2.Attribute("num").Value);
                    ((CircuitPersonnalise)abgate.outil).Entrée.Add(new Point(x0, y0));
                    Gate         gate1        = Recuplist(x0, ((CircuitPersonnalise)abgate.outil).gates);
                    ClasseEntree classeEntree = gate1.outil.getListeentrees()[y0];
                    classeEntree.setDispo(Disposition.left);
                    classeEntree.setRelated(false);
                    ((Grid)(classeEntree.Parent)).Children.Remove(classeEntree);
                    abgate.outil.AjoutEntree(classeEntree);
                    abgate.getE_left().Insert(0, classeEntree);
                }
                foreach (XElement element3 in gate.Element("Sorties").Elements())
                {
                    int x1 = int.Parse(element3.Attribute("id").Value);
                    int y1 = int.Parse(element3.Attribute("num").Value);
                    ((CircuitPersonnalise)abgate.outil).Entrée.Add(new Point(x1, y1));
                    Gate   gate2  = Recuplist(x1, ((CircuitPersonnalise)abgate.outil).gates);
                    Sortie sortie = gate2.outil.getListesorties()[y1];
                    sortie.set_Sorties(new List <OutStruct>());
                    sortie.setDispo(Disposition.right);
                    ((Grid)(sortie.Parent)).Children.Remove(sortie);

                    abgate.outil.AjoutSortie(sortie);
                    abgate.getS_right().Insert(0, sortie);
                }
                abgate.MAJ();
                abgate.Creation();
                abgate.MAJ_Path();
            }
            return(abgate);
        }