コード例 #1
0
        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");
            }
        }
コード例 #2
0
        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");
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }