private void LoadFile(SystemModel sysModel) { OpenFileDialog openFileDialog = new OpenFileDialog() { InitialDirectory = @"C:\Users\SimonHoulbrooke\source\repos\PetriNet\PetriNet\bin\Debug", CheckFileExists = true, }; if (openFileDialog.ShowDialog() == true) { DataContractSerializer ser = new DataContractSerializer(typeof(Displayable[]), new Type[] { typeof(Arc), typeof(Node), typeof(Transition) }); var filename2open = openFileDialog.FileName; Stream stream = new FileStream(filename2open, FileMode.Open, FileAccess.Read); XmlDictionaryReader xdw = XmlDictionaryReader.CreateTextReader(stream, new XmlDictionaryReaderQuotas()); IEnumerable <Displayable> items = new List <Displayable>(); items = (IEnumerable <Displayable>)ser.ReadObject(xdw); sysModel.Items = new ObservableCollection <Displayable>(items); sysModel.MakeConnections(); sysModel.HookUpEvents(); stream.Close(); } else { MessageBox.Show("Open File Cancelld"); } }
private void SaveFile(SystemModel sysModel) { SaveFileDialog saveFileDialog = new SaveFileDialog() { InitialDirectory = @"C:\Users\SimonHoulbrooke\source\repos\PetriNet\PetriNet\bin\Debug", AddExtension = true, DefaultExt = "xml", Filter = "*.xml(XML)|*.*", }; if (saveFileDialog.ShowDialog() == true) { DataContractSerializer ser = new DataContractSerializer(typeof(Displayable[]), new Type[] { typeof(Arc), typeof(Node), typeof(Transition) }); using (Stream stream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write)) { XmlDictionaryWriter xdw = XmlDictionaryWriter.CreateTextWriter(stream, Encoding.UTF8); ser.WriteObject(stream, Items.ToArray()); } } else { MessageBox.Show("Save File Cancelled"); } }
private void AddNode(SystemModel sysModel) { var nextNode = sysModel.Items.OfType <Node>().Count() + 1; var node = new Node { Ref = $"N{nextNode}", X = lastMousePosition.X, Y = lastMousePosition.Y }; sysModel.Items.Add(node); node.PropertyChanged += NodeOrTrans_PropertyChanged; node.Transition2Node += ConnectNode2Trans; }
private void AddTransition(SystemModel sysModel) { var nextTrans = sysModel.Items.OfType <Transition>().Count() + 1; var transition = new Transition { Ref = $"T{nextTrans}", X = lastMousePosition.X, Y = lastMousePosition.Y }; sysModel.Items.Add(transition); transition.DoubleClick = dbClick; transition.PropertyChanged += NodeOrTrans_PropertyChanged; transition.Node2Transition += ConnectNode2Trans; }