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); } }
//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); }