private void MenuItemLoad_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Manipulator (*.json)|*.json|All files (*.*)|*.*"; openFileDialog.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory; openFileDialog.ShowDialog(); if (openFileDialog.FileName != "") { var sr = new StreamReader(openFileDialog.FileName); var json = sr.ReadToEnd(); ManipulatorSerialized manipulatorSerialized = JsonSerializer.Deserialize <ManipulatorSerialized>(json); if (manipulatorSerialized.elements.Count() != 0) { manipulator.LoadManipulatorFromJson(manipulatorSerialized); } else { MessageBox.Show("Структура данных в json неподходящая"); } sr.Close(); } }
public void LoadManipulatorFromJson(ManipulatorSerialized serializedManipulator) { elements.Clear(); foreach (var element in serializedManipulator.elements) { if (element.ElementType == ManipulatorElement.elementTypes.JOINT) { Joint joint = new Joint() { BeginPosition = element.BeginPosition, Weight = element.Weight }; elements.Add(joint); } else if (element.ElementType == ManipulatorElement.elementTypes.LINK) { Link link = new Link() { BeginPosition = element.BeginPosition, EndPosition = element.EndPosition, Weight = element.Weight }; elements.Add(link); } } OnPropertyChanged("LoadManipulatorFromJson"); }
private void MenuItemSave_Click(object sender, RoutedEventArgs e) { ManipulatorSerialized manipulatorSerialized = new ManipulatorSerialized(); foreach (var item in manipulator.elements) { ElementSerialized elementSerialized = new ElementSerialized(item); manipulatorSerialized.elements.Add(elementSerialized); if (item.ElementType == ManipulatorElement.elementTypes.LINK) { ElementSerialized linkSerialized = new ElementSerialized((Link)item); } } if (manipulator.IsThereAnyIntersections()) { MessageBox.Show("В манипуляторе есть пересечения"); } string bufToJsonFile = JsonSerializer.Serialize <ManipulatorSerialized>(manipulatorSerialized); //JsonSerializer.WriteWhitespace(Environment.NewLine); if (bufToJsonFile.Length != 0) { SaveFileDialog sf = new SaveFileDialog(); sf.Filter = "Json files (*.json)|*.json"; sf.FilterIndex = 2; sf.RestoreDirectory = true; sf.ShowDialog(); if (sf.FileName != "") { string kBasePath = sf.FileName; File.WriteAllText(kBasePath, bufToJsonFile); } } else { MessageBox.Show("Что-то пошло не так"); } }