private void saveButton_Click(object sender, RoutedEventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SMO"); saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\SMO"; saveFileDialog.Filter = "File (*.dat)|*.dat"; if (saveFileDialog.ShowDialog() != true) { return; } int pointCount = 1; foreach (var elem in ElementsList) { JObject jObject = new JObject(); if (elem.GetType() == typeof(Source)) { Source source = (Source)elem; jObject["DelayType"] = source.DelayType.ToString(); jObject["ElementDistributions"] = JsonConvert.SerializeObject(source.ElementDistributions); jObject["TimeDistributions"] = JsonConvert.SerializeObject(source.TimeDistributions); } else if (elem.GetType() == typeof(Queue)) { Queue queue = (Queue)elem; jObject["DelayType"] = queue.DelayType.ToString(); jObject["Distribution"] = JsonConvert.SerializeObject(queue.TimeLimitDistributions); jObject["Capacity"] = queue.Capacity; jObject["TimeLimitThrowOut"] = queue.TimeLimitThrowOut; jObject["ThrowOutWhenOverflow"] = queue.ThrowOutWhenOverflow; } else if (elem.GetType() == typeof(Delay)) { Delay delay = (Delay)elem; jObject["DelayType"] = delay.DelayType.ToString(); jObject["DelayDistributions"] = JsonConvert.SerializeObject(delay.DelayDistributions); jObject["Capacity"] = delay.Capacity; } else if (elem.GetType() == typeof(SelectOutput)) { SelectOutput selectOutput = (SelectOutput)elem; jObject["Chance"] = selectOutput.Chance; } else { jObject["Name"] = "Sink"; } ((Image)elem.Image).Tag = jObject.ToString(); } foreach (var connector in MainWindow.Connectors) { JObject jObject = new JObject(); jObject["StartElement"] = ((Image)connector.StartElement.Image).Name; jObject["StartPointNumber"] = connector.StartElement.GetPointNumber((Image)connector.StartPoint); jObject["EndElement"] = ((Image)connector.EndElement.Image).Name; jObject["EndPointNumber"] = connector.EndElement.GetPointNumber((Image)connector.EndPoint); ((Line)connector.Image).Tag = jObject.ToString(); } string savedCanvas = XamlWriter.Save(canvas); File.WriteAllText(saveFileDialog.FileName, savedCanvas); }
public IElement CreateElement(string name, UIElement image) { canvas.Children.Add(image); double mouseX = Canvas.GetLeft(image); double mouseY = Canvas.GetTop(image); InPoint inPoint; OutPoint outPoint; switch (name) { case "Source": outPoint = CreateOutPoint(); outPoint.Image.MouseUp += OutPoint_MouseUp; Source source = new Source(image, outPoint); ((Image)source.Image).Name = "Source" + _sourceCount; _sourceCount++; source.Move(mouseX, mouseY); return(source); case "Sink": inPoint = CreateInPoint(); inPoint.Image.MouseUp += InPoint_MouseUp; Sink sink = new Sink(image, inPoint); ((Image)sink.Image).Name = "Sink" + _sinkCount; _sinkCount++; sink.Move(mouseX, mouseY); return(sink); case "SelectOutput": inPoint = CreateInPoint(); inPoint.Image.MouseUp += InPoint_MouseUp; outPoint = CreateOutPoint(); outPoint.Image.MouseUp += OutPoint_MouseUp; OutPoint outPoint2 = CreateOutPoint(); outPoint2.Image.MouseUp += OutPoint_MouseUp; SelectOutput selectOutput = new SelectOutput(image, inPoint, outPoint, outPoint2); ((Image)selectOutput.Image).Name = "SelectOutput" + _selectOutputCount; _selectOutputCount++; selectOutput.Move(mouseX, mouseY); return(selectOutput); case "Queue": inPoint = CreateInPoint(); inPoint.Image.MouseUp += InPoint_MouseUp; outPoint = CreateOutPoint(); outPoint.Image.MouseUp += OutPoint_MouseUp; OutPoint throwPoint1 = CreateOutPoint(); throwPoint1.Image.MouseUp += OutPoint_MouseUp; OutPoint throwPoint2 = CreateOutPoint(); throwPoint2.Image.MouseUp += OutPoint_MouseUp; Queue queue = new Queue(image, inPoint, outPoint, throwPoint1, throwPoint2); ((Image)queue.Image).Name = "Queue" + _queueCount; _queueCount++; queue.Move(mouseX, mouseY); return(queue); case "Delay": inPoint = CreateInPoint(); inPoint.Image.MouseUp += InPoint_MouseUp; outPoint = CreateOutPoint(); outPoint.Image.MouseUp += OutPoint_MouseUp; Delay delay = new Delay(image, inPoint, outPoint); ((Image)delay.Image).Name = "Delay" + _delayCount; _delayCount++; delay.Move(mouseX, mouseY); return(delay); } return(null); }
public SelectOutputParametersWindow(SelectOutput selectOutput) { InitializeComponent(); _selectOutput = selectOutput; Chance.Text = _selectOutput.Chance.ToString(); }