From a01eb8825af3dd458fe52e15329488b8297a5cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Wed, 25 Jan 2023 11:11:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8C=96=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E6=94=B9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/DiagramDocument.cs | 2 +- AIStudio.Wpf.DiagramApp/Models/DiagramItem.cs | 109 +--------------- .../ViewModels/DiagramsViewModel.cs | 117 ++++++++---------- .../ViewModels/MainWindowViewModel.cs | 2 +- .../ViewModels/ToolBoxViewModel.cs | 12 +- .../Connector/ConnectorLabelItem.cs | 16 ++- .../Serializables/SelectableItemBase.cs | 39 +++++- .../Serializables/SerializableObject.cs | 16 ++- .../BaseViewModel/ConnectionViewModel.cs | 35 +++--- .../Connector/ConnectorInfoBase.cs | 18 ++- .../Connector/ConnectorLabelModel.cs | 17 ++- .../Connector/ConnectorPointModel.cs | 18 ++- .../Connector/ConnectorVertexModel.cs | 18 ++- .../Connector/FullyCreatedConnectorInfo.cs | 18 ++- .../DesignerItemViewModelBase.cs | 17 +-- .../BaseViewModel/DiagramViewModel.cs | 14 +-- .../SelectableDesignerItemViewModelBase.cs | 2 +- .../BaseViewModel/SelectableViewModelBase.cs | 11 +- .../SimpleViewModel/GifImageItemViewModel.cs | 8 +- .../SimpleViewModel/ImageItemViewModel.cs | 8 +- .../LogicalGateItemViewModelBase.cs | 8 +- .../SimpleViewModel/MediaItemViewModel.cs | 8 +- .../TextDesignerItemViewModel.cs | 5 +- .../SimpleViewModel/VideoItemViewModel.cs | 8 +- .../BarcodeDesignerItemViewModel.cs | 3 +- .../OutLineTextDesignerItemViewModel.cs | 8 +- .../ViewModels/PathItemViewModel.cs | 8 +- .../PersistDesignerItemViewModel.cs | 9 +- .../SettingsDesignerItemViewModel.cs | 8 +- .../ViewModels/SvgDesignerItemViewModel.cs | 8 +- AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs | 18 ++- .../ViewModels/MiddleFlowNode.cs | 3 +- .../ViewModels/LogicalGateItemViewModel.cs | 88 +++++++------ AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs | 3 +- AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs | 3 +- AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs | 3 +- .../ViewModels/SFCConditionNode.cs | 3 +- AIStudio.Wpf.SFC/ViewModels/SFCNode.cs | 8 +- AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs | 3 +- AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs | 3 +- .../ViewModels/Simulate_ListViewModel.cs | 3 +- .../ViewModels/Simulate_SolenoidViewModel.cs | 3 +- .../ViewModels/Simulate_StartViewModel.cs | 3 +- .../ViewModels/Simulate_TankViewModel.cs | 3 +- 44 files changed, 319 insertions(+), 398 deletions(-) diff --git a/AIStudio.Wpf.DiagramApp/Models/DiagramDocument.cs b/AIStudio.Wpf.DiagramApp/Models/DiagramDocument.cs index 1f2d0af..a93ee53 100644 --- a/AIStudio.Wpf.DiagramApp/Models/DiagramDocument.cs +++ b/AIStudio.Wpf.DiagramApp/Models/DiagramDocument.cs @@ -22,7 +22,7 @@ namespace AIStudio.Wpf.DiagramApp.Models [XmlArray] public List DiagramItems { get; set; } - public const string XMLNS = "http://AIStudio.Wpf.DiagramApp/DesignLayout"; + public const string XMLNS = "https://gitee.com/akwkevin/aistudio.-wpf.-diagram"; private readonly object saveLock = new Object(); public void Save(FileInfo designFile) diff --git a/AIStudio.Wpf.DiagramApp/Models/DiagramItem.cs b/AIStudio.Wpf.DiagramApp/Models/DiagramItem.cs index 393b986..808d6fc 100644 --- a/AIStudio.Wpf.DiagramApp/Models/DiagramItem.cs +++ b/AIStudio.Wpf.DiagramApp/Models/DiagramItem.cs @@ -17,6 +17,7 @@ using AIStudio.Wpf.SFC.Models; using AIStudio.Wpf.SFC.ViewModels; using System.Windows; using System.Windows.Media; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramApp.Models { @@ -25,8 +26,7 @@ namespace AIStudio.Wpf.DiagramApp.Models { public DiagramItem() { - this.ConnectionIds = new List(); - this.Connections = new List(); + } [XmlAttribute] @@ -84,7 +84,7 @@ namespace AIStudio.Wpf.DiagramApp.Models [XmlAttribute] public PageSizeType PageSizeType { get; set; } - [XmlAttribute] + [XmlIgnore] public Size GridMarginSize { get; set; } [JsonIgnore] @@ -119,108 +119,9 @@ namespace AIStudio.Wpf.DiagramApp.Models } [XmlArray] - public List DesignerItems { get; set; } = new List(); + public List DesignerItems { get; set; } = new List(); [XmlArray] - public List PersistDesignerItems { get; set; } = new List(); - - [XmlArray] - public List SettingsDesignerItems { get; set; } = new List(); - - [XmlArray] - public List PathDesignerItems { get; set; } = new List(); - - [XmlArray] - public List MediaDesignerItems { get; set; } = new List(); - - [XmlArray] - public List ImageDesignerItems { get; set; } = new List(); - - [XmlArray] - public List TextDesignerItems { get; set; } = new List(); - - [XmlArray] - public List LogicalGateItems { get; set; } = new List(); - - [XmlArray] - public List FlowNodeDesignerItems { get; set; } = new List(); - - [XmlArray] - public List SFCNodeDesignerItems { get; set; } = new List(); - - [JsonIgnore] - [XmlIgnore] - public List AllDesignerItems - { - get - { - return -DesignerItems.OfType() -.Union(TextDesignerItems.OfType()) -.Union(LogicalGateItems.OfType()) -.Union(MediaDesignerItems.OfType()) -.Union(ImageDesignerItems.OfType()) -.Union(PathDesignerItems.OfType()) -.Union(PersistDesignerItems.OfType()) -.Union(SettingsDesignerItems.OfType()) -.Union(FlowNodeDesignerItems.OfType()) -.Union(SFCNodeDesignerItems.OfType()) -.ToList(); - } - } - - [XmlArray] - public List ConnectionIds { get; set; } - - [XmlArray] - public List Connections { get; set; } - - public void AddItems(IEnumerable selectedDesignerItems) - { - var items = selectedDesignerItems.OfType().Select(p => p.GetSerializableObject()); - foreach (var item in items) - { - if (item is PersistDesignerItem persistDesignerItem) - { - PersistDesignerItems.Add(persistDesignerItem); - } - else if (item is SettingsDesignerItem settingsDesignerItem) - { - SettingsDesignerItems.Add(settingsDesignerItem); - } - else if (item is PathDesignerItem pathDesignerItem) - { - PathDesignerItems.Add(pathDesignerItem); - } - else if (item is MediaDesignerItem mediaDesignerItem) - { - MediaDesignerItems.Add(mediaDesignerItem); - } - else if (item is ImageDesignerItem imageDesignerItem) - { - ImageDesignerItems.Add(imageDesignerItem); - } - else if (item is TextDesignerItem textDesignerItem) - { - TextDesignerItems.Add(textDesignerItem); - } - else if (item is LogicalGateDesignerItemBase logicalGateDesignerItemBase) - { - LogicalGateItems.Add(logicalGateDesignerItemBase); - } - else if (item is FlowNodeDesignerItem flowNodeDesignerItem) - { - FlowNodeDesignerItems.Add(flowNodeDesignerItem); - } - else if (item is SFCNodeDesignerItem sFCNodeDesignerItem) - { - SFCNodeDesignerItems.Add(sFCNodeDesignerItem); - } - else if (item is DesignerItemBase designerItemBase) - { - DesignerItems.Add(designerItemBase); - } - } - } + public List Connections { get; set; } = new List(); } } diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs index 9c8d6a4..0444060 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs @@ -42,14 +42,16 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels public DiagramsViewModel(string filename) { FileName = filename; - var diagramDocument = OpenFile(filename); - OpenFile(diagramDocument); + string ext = Path.GetExtension(filename); + var diagramDocument = OpenFile(filename, ext); + OpenFile(diagramDocument, ext); } public DiagramsViewModel(string filename, DiagramDocument diagramDocument) { FileName = filename; - OpenFile(diagramDocument); + string ext = Path.GetExtension(filename); + OpenFile(diagramDocument, ext); } protected virtual void InitDiagramViewModel() @@ -159,7 +161,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { if (e.PropertyName == "IsSelected") { - _service.SelectedItem = DiagramViewModel.SelectedItems?.FirstOrDefault(); + _service.SelectedItem = DiagramViewModel?.SelectedItems?.FirstOrDefault(); } var property = sender.GetType().GetProperty(e.PropertyName); @@ -179,13 +181,13 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels return true; } - public static DiagramDocument OpenFile(string filename) + public static DiagramDocument OpenFile(string filename, string ext) { try { DiagramDocument diagramDocument = null; - if (filename.ToLower().EndsWith(".xml")) + if (ext == ".xml") { XmlSerializer serializer = new XmlSerializer(typeof(DiagramDocument)); FileInfo fileInfo = new FileInfo(filename); @@ -229,7 +231,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels } } - protected virtual void OpenFile(DiagramDocument diagramDocument) + protected virtual void OpenFile(DiagramDocument diagramDocument, string ext) { Title = diagramDocument.Title; DiagramType = diagramDocument.DiagramType; @@ -250,27 +252,29 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels viewModel.GridMarginSize = diagramItem.GridMarginSize; viewModel.GridColor = diagramItem.GridColor; - foreach (DesignerItemBase diagramItemData in diagramItem.AllDesignerItems) + foreach (var diagramItemData in diagramItem.DesignerItems) { - Type type = TypeHelper.GetType(diagramItemData.ItemTypeName); - - DesignerItemViewModelBase itemBase = (DesignerItemViewModelBase)Activator.CreateInstance(type, viewModel, diagramItemData); - viewModel.Items.Add(itemBase); + Type type = TypeHelper.GetType(diagramItemData.ModelTypeName); + DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, viewModel, diagramItemData, ext) as DesignerItemViewModelBase; + viewModel.Items.Add(itemBase); } foreach (var connection in diagramItem.Connections) { - connection.SourceType = System.Type.GetType(connection.SourceTypeName); - connection.SinkType = System.Type.GetType(connection.SinkTypeName); - DesignerItemViewModelBase sourceItem = GetConnectorDataItem(viewModel, connection.SourceId, connection.SourceType); - ConnectorOrientation sourceConnectorOrientation = connection.SourceOrientation; - FullyCreatedConnectorInfo sourceConnectorInfo = GetFullConnectorInfo(connection.Id, sourceItem, sourceConnectorOrientation, connection.SourceXRatio, connection.SourceYRatio, connection.SourceInnerPoint); + Type type = TypeHelper.GetType(connection.SerializableTypeName); + var connectionItem = SerializeHelper.DeserializeObject(type, connection.SerializableString, ext) as ConnectionItem; - DesignerItemViewModelBase sinkItem = GetConnectorDataItem(viewModel, connection.SinkId, connection.SinkType); - ConnectorOrientation sinkConnectorOrientation = connection.SinkOrientation; - FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint); + connectionItem.SourceType = System.Type.GetType(connectionItem.SourceTypeName); + connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName); + DesignerItemViewModelBase sourceItem = GetConnectorDataItem(viewModel, connectionItem.SourceId, connectionItem.SourceType); + ConnectorOrientation sourceConnectorOrientation = connectionItem.SourceOrientation; + FullyCreatedConnectorInfo sourceConnectorInfo = GetFullConnectorInfo(connectionItem.Id, sourceItem, sourceConnectorOrientation, connectionItem.SourceXRatio, connectionItem.SourceYRatio, connectionItem.SourceInnerPoint); - ConnectionViewModel connectionVM = new ConnectionViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connection); + DesignerItemViewModelBase sinkItem = GetConnectorDataItem(viewModel, connectionItem.SinkId, connectionItem.SinkType); + ConnectorOrientation sinkConnectorOrientation = connectionItem.SinkOrientation; + FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connectionItem.Id, sinkItem, sinkConnectorOrientation, connectionItem.SinkXRatio, connectionItem.SinkYRatio, connectionItem.SinkInnerPoint); + + ConnectionViewModel connectionVM = new ConnectionViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connectionItem); viewModel.Items.Add(connectionVM); } @@ -299,7 +303,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels } } - var para = Path.GetExtension(FileName); + var ext = Path.GetExtension(FileName); DiagramDocument diagramDocument = new DiagramDocument(); diagramDocument.DiagramItems = new List(); @@ -321,22 +325,16 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels diagramItem.GridMarginSize = viewModel.GridMarginSize; diagramItem.GridColor = viewModel.GridColor; - diagramItem.AddItems(DiagramViewModel.Items); + var selectedDesignerItems = viewModel.Items.OfType(); + var selectedConnections = viewModel.Items.OfType(); - foreach (var connectionVM in DiagramViewModel.Items.OfType()) - { - if (!connectionVM.IsFullConnection) - continue; - - ConnectionItem connection = new ConnectionItem(connectionVM); - diagramItem.ConnectionIds.Add(connectionVM.Id); - diagramItem.Connections.Add(connection); - } + diagramItem.DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem(ext)).Where(p => p != null).ToList(); + diagramItem.Connections = selectedConnections.Select(p => p.ToSerializableItem(ext)).Where(p => p != null).ToList(); diagramDocument.DiagramItems.Add(diagramItem); } - if (para == ".xml") + if (ext == ".xml") { FileInfo file = new FileInfo(FileName); diagramDocument.Save(file); @@ -455,7 +453,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels public void LockAction(LockObject lockObject, string propertyName) { - foreach (var item in DiagramViewModel.SelectedItems) + foreach (var item in DiagramViewModel?.SelectedItems) { item.LockObjectViewModel.SetValue(lockObject); } @@ -496,19 +494,11 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels diagramItem.GridMarginSize = viewModel.GridMarginSize; diagramItem.GridColor = viewModel.GridColor; - diagramItem.AddItems(DiagramViewModel.Items); + var selectedDesignerItems = viewModel.Items.OfType(); + var selectedConnections = viewModel.Items.OfType(); - foreach (var connectionVM in DiagramViewModel.Items.OfType()) - { - if (connectionVM.IsFullConnection == false) continue; - - FullyCreatedConnectorInfo sinkConnector = connectionVM.SinkConnectorInfoFully; - - ConnectionItem connection = new ConnectionItem(connectionVM); - - diagramItem.ConnectionIds.Add(connectionVM.Id); - diagramItem.Connections.Add(connection); - } + diagramItem.DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(); + diagramItem.Connections = selectedConnections.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(); viewModel = new DiagramViewModel(); viewModel.Name = NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"); @@ -523,27 +513,28 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels viewModel.GridMarginSize = diagramItem.GridMarginSize; viewModel.GridColor = diagramItem.GridColor; - foreach (DesignerItemBase diagramItemData in diagramItem.AllDesignerItems) + foreach (var diagramItemData in diagramItem.DesignerItems) { - Type type = TypeHelper.GetType(diagramItemData.ItemTypeName); - - DesignerItemViewModelBase itemBase = (DesignerItemViewModelBase)Activator.CreateInstance(type, viewModel, diagramItemData); + Type type = TypeHelper.GetType(diagramItemData.ModelTypeName); + DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, viewModel, diagramItemData, "json") as DesignerItemViewModelBase; viewModel.Items.Add(itemBase); } foreach (var connection in diagramItem.Connections) { - connection.SourceType = System.Type.GetType(connection.SourceTypeName); - connection.SinkType = System.Type.GetType(connection.SinkTypeName); - DesignerItemViewModelBase sourceItem = GetConnectorDataItem(viewModel, connection.SourceId, connection.SourceType); - ConnectorOrientation sourceConnectorOrientation = connection.SourceOrientation; - FullyCreatedConnectorInfo sourceConnectorInfo = GetFullConnectorInfo(connection.Id, sourceItem, sourceConnectorOrientation, connection.SourceXRatio, connection.SourceYRatio, connection.SourceInnerPoint); + var connectionItem = JsonConvert.DeserializeObject(connection.SerializableString); - DesignerItemViewModelBase sinkItem = GetConnectorDataItem(viewModel, connection.SinkId, connection.SinkType); - ConnectorOrientation sinkConnectorOrientation = connection.SinkOrientation; - FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint); + connectionItem.SourceType = System.Type.GetType(connectionItem.SourceTypeName); + connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName); + DesignerItemViewModelBase sourceItem = GetConnectorDataItem(viewModel, connectionItem.SourceId, connectionItem.SourceType); + ConnectorOrientation sourceConnectorOrientation = connectionItem.SourceOrientation; + FullyCreatedConnectorInfo sourceConnectorInfo = GetFullConnectorInfo(connectionItem.Id, sourceItem, sourceConnectorOrientation, connectionItem.SourceXRatio, connectionItem.SourceYRatio, connectionItem.SourceInnerPoint); - ConnectionViewModel connectionVM = new ConnectionViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connection); + DesignerItemViewModelBase sinkItem = GetConnectorDataItem(viewModel, connectionItem.SinkId, connectionItem.SinkType); + ConnectorOrientation sinkConnectorOrientation = connectionItem.SinkOrientation; + FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connectionItem.Id, sinkItem, sinkConnectorOrientation, connectionItem.SinkXRatio, connectionItem.SinkYRatio, connectionItem.SinkInnerPoint); + + ConnectionViewModel connectionVM = new ConnectionViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connectionItem); viewModel.Items.Add(connectionVM); } @@ -590,7 +581,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels public void AddImageExecuted(object para) { ImageItemViewModel itemBase = new ImageItemViewModel(); - DiagramViewModel.DirectAddItemCommand.Execute(itemBase); + DiagramViewModel?.DirectAddItemCommand.Execute(itemBase); if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; @@ -627,7 +618,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels public void AddVideoExecuted(object para) { VideoItemViewModel itemBase = new VideoItemViewModel(); - DiagramViewModel.DirectAddItemCommand.Execute(itemBase); + DiagramViewModel?.DirectAddItemCommand.Execute(itemBase); if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; @@ -637,7 +628,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels public void AddOutLineTextExecuted(object para) { OutLineTextDesignerItemViewModel itemBase = new OutLineTextDesignerItemViewModel(); - DiagramViewModel.DirectAddItemCommand.Execute(itemBase); + DiagramViewModel?.DirectAddItemCommand.Execute(itemBase); if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; @@ -647,7 +638,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels public void AddBarcodeExecuted(object para) { BarcodeDesignerItemViewModel itemBase = new BarcodeDesignerItemViewModel() { Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), para.ToString()), Text="AIStudio.Wpf.DiagramApp" }; - DiagramViewModel.DirectAddItemCommand.Execute(itemBase); + DiagramViewModel?.DirectAddItemCommand.Execute(itemBase); if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs index 293f6c0..2b12fb4 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs @@ -779,7 +779,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels return; } - var diagram = DiagramsViewModel.OpenFile(filename); + var diagram = DiagramsViewModel.OpenFile(filename, Path.GetExtension(filename)); DiagramsViewModel flow; if (diagram.DiagramType == DiagramType.FlowChart) { diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs index 2149164..e681b93 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/ToolBoxViewModel.cs @@ -19,6 +19,7 @@ using System.Windows.Media; using AIStudio.Wpf.Flowchart.Models; using AIStudio.Wpf.SFC.Models; using System.Windows; +using System; namespace AIStudio.Wpf.DiagramApp.ViewModels { @@ -239,10 +240,13 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { try { - var xmlobject = JsonConvert.DeserializeObject(File.ReadAllText(filename)); - var diagramItemData = xmlobject.DiagramItems[0].AllDesignerItems[0]; + var xmlobject = JsonConvert.DeserializeObject(File.ReadAllText(filename)); - return diagramItemData; + Type type = TypeHelper.GetType(xmlobject.DiagramItems[0].DesignerItems[0].SerializableTypeName); + + var itemBase = JsonConvert.DeserializeObject(xmlobject.DiagramItems[0].DesignerItems[0].SerializableString, type) as DesignerItemBase; + + return itemBase; } catch { @@ -259,7 +263,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels DiagramDocument diagramDocument = new DiagramDocument(); diagramDocument.DiagramItems = new List(); DiagramItem diagramItem = new DiagramItem(); - diagramItem.AddItems(new List { designer }); + diagramItem.DesignerItems = new List { designer.ToSerializableItem(".json") }; diagramDocument.DiagramItems.Add(diagramItem); string newname = NewNameHelper.GetNewName(MyToolBoxCategory.ToolBoxItems.OfType().Select(p => Path.GetFileNameWithoutExtension(p.FileName)), ""); var filename = $"{_custom}\\{newname}.json"; diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorLabelItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorLabelItem.cs index b3bfe8e..f2a333c 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorLabelItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/ConnectorLabelItem.cs @@ -25,12 +25,26 @@ namespace AIStudio.Wpf.DiagramDesigner Offset = viewmodel.Offset; } - [XmlAttribute] + [XmlIgnore] public double? Distance { get; set; } + [JsonIgnore] + [XmlAttribute("Distance")] + public string XmlDistance + { + get + { + return SerializeHelper.SerializeDoubleNull(Distance); + } + set + { + Distance = SerializeHelper.DeserializeDoubleNull(value); + } + } + [XmlIgnore] public Point Offset { diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs index d1b86dc..36bcf65 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using AIStudio.Wpf.DiagramDesigner.Helpers; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -489,9 +490,24 @@ namespace AIStudio.Wpf.DiagramDesigner return new Size(double.Parse(pieces[0]), double.Parse(pieces[1])); } + public static string SerializeDoubleNull(double? point) + { + return point?.ToString(); + } + + public static double? DeserializeDoubleNull(string point) + { + double? value = null; + if (Double.TryParse(point, out var result)) + { + value = result; + } + return value; + } + public static string SerializeObject(object obj, string serializableType) { - if (serializableType?.ToLower() == "xml") + if (serializableType?.ToLower() == ".xml") { XmlSerializer serializer = new XmlSerializer(obj.GetType()); XmlWriterSettings settings = new XmlWriterSettings(); @@ -517,7 +533,24 @@ namespace AIStudio.Wpf.DiagramDesigner public static SelectableItemBase DeserializeObject(Type type, string serializableString, string serializableType) { - if (serializableType?.ToLower() == "xml") + if (serializableType?.ToLower() == ".xml") + { + using (StringReader sr = new StringReader(serializableString)) + { + XmlSerializer serializer = new XmlSerializer(type); + return serializer.Deserialize(sr) as SelectableItemBase; + } + } + else + { + return JsonConvert.DeserializeObject(serializableString, type) as SelectableItemBase; + } + } + + public static SelectableItemBase DeserializeObject(string typename, string serializableString, string serializableType) + { + Type type = TypeHelper.GetType(typename); + if (serializableType?.ToLower() == ".xml") { using (StringReader sr = new StringReader(serializableString)) { diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SerializableObject.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SerializableObject.cs index 83295fe..7e6fb9d 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SerializableObject.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SerializableObject.cs @@ -10,13 +10,25 @@ namespace AIStudio.Wpf.DiagramDesigner.Models public class SerializableItem { [XmlIgnore] - public Type Type + public Type ModelType { get; set; } [XmlAttribute] - public string TypeName + public string ModelTypeName + { + get; set; + } + + [XmlIgnore] + public Type SerializableType + { + get; set; + } + + [XmlAttribute] + public string SerializableTypeName { get; set; } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs index beda165..44583fd 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs @@ -36,6 +36,20 @@ namespace AIStudio.Wpf.DiagramDesigner } + public override SelectableItemBase GetSerializableObject() + { + if (IsFullConnection) + { + ConnectionItem connection = new ConnectionItem(this); + + return connection; + } + else + { + return null; + } + } + protected virtual void Init(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo) { this.Root = sourceConnectorInfo.DataItem.Root; @@ -73,26 +87,7 @@ namespace AIStudio.Wpf.DiagramDesigner Vertices = new ObservableCollection(designer.Vertices.Select(p => new ConnectorVertexModel(this.Root, this, designer))); Labels = new ObservableCollection(designer.Labels.Select(p => new ConnectorLabelModel(this.Root, this, designer))); } - } - - public override SelectableItemBase GetSerializableObject() - { - if (IsFullConnection) - { - ConnectionItem connection = new ConnectionItem(this); - - return connection; - } - else - { - return null; - } - } - - public override Type GetSerializableType() - { - return typeof(ConnectionItem); - } + } #region 属性 private string _text; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorInfoBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorInfoBase.cs index 836bca6..e785495 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorInfoBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorInfoBase.cs @@ -5,6 +5,7 @@ using System.Text; using System.Windows; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner.Geometrys; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -20,11 +21,16 @@ namespace AIStudio.Wpf.DiagramDesigner } - public ConnectorInfoBase(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ConnectorInfoBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } + public override SelectableItemBase GetSerializableObject() + { + return new ConnectorInfoItemBase(this); + } + protected override void Init() { base.Init(); @@ -49,16 +55,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public override SelectableItemBase GetSerializableObject() - { - return new ConnectorInfoItemBase(this); - } - - public override Type GetSerializableType() - { - return typeof(ConnectorInfoBase); - } - #region 属性 public virtual PointBase Position { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs index 65eefbc..e4c96b7 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using AIStudio.Wpf.DiagramDesigner.Geometrys; +using AIStudio.Wpf.DiagramDesigner.Models; using SvgPathProperties; namespace AIStudio.Wpf.DiagramDesigner @@ -20,11 +21,16 @@ namespace AIStudio.Wpf.DiagramDesigner Parent = connector; } - public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { Parent = connector; } + public override SelectableItemBase GetSerializableObject() + { + return new ConnectorLabelItem(this); + } + protected override void Init() { base.Init(); @@ -43,15 +49,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public override SelectableItemBase GetSerializableObject() - { - return new ConnectorLabelItem(this); - } - - public override Type GetSerializableType() - { - return typeof(ConnectorLabelItem); - } #region 属性 public ConnectionViewModel Connector diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs index 7a8c202..62066f5 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs @@ -5,6 +5,7 @@ using System.Text; using System.Windows; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner.Geometrys; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -32,11 +33,16 @@ namespace AIStudio.Wpf.DiagramDesigner } - public ConnectorPointModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ConnectorPointModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } + public override SelectableItemBase GetSerializableObject() + { + return new ConnectorPointItem(this); + } + protected override void Init() { base.Init(); @@ -60,16 +66,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public override SelectableItemBase GetSerializableObject() - { - return new ConnectorPointItem(this); - } - - public override Type GetSerializableType() - { - return typeof(ConnectorPointItem); - } - /// /// 中间X /// diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs index 2e2e330..252e69d 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs @@ -1,5 +1,6 @@ using System; using AIStudio.Wpf.DiagramDesigner.Geometrys; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -17,11 +18,16 @@ namespace AIStudio.Wpf.DiagramDesigner Parent = connector; } - public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { Parent = connector; } + public override SelectableItemBase GetSerializableObject() + { + return new ConnectorVertexItem(this); + } + protected override void Init() { base.Init(); @@ -40,16 +46,6 @@ namespace AIStudio.Wpf.DiagramDesigner } - public override SelectableItemBase GetSerializableObject() - { - return new ConnectorVertexItem(this); - } - - public override Type GetSerializableType() - { - return typeof(ConnectorVertexModel); - } - public ConnectionViewModel Connector { get diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/FullyCreatedConnectorInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/FullyCreatedConnectorInfo.cs index 8d22a50..fdfa952 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/FullyCreatedConnectorInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/FullyCreatedConnectorInfo.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Windows; using AIStudio.Wpf.DiagramDesigner.Geometrys; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -30,7 +31,7 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public FullyCreatedConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public FullyCreatedConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { this.DataItem = dataItem; if (IsInnerPoint == true) @@ -39,6 +40,11 @@ namespace AIStudio.Wpf.DiagramDesigner } } + public override SelectableItemBase GetSerializableObject() + { + return new FullyCreatedConnectorInfoItem(this); + } + protected override void Init() { base.Init(); @@ -62,16 +68,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public override SelectableItemBase GetSerializableObject() - { - return new FullyCreatedConnectorInfoItem(this); - } - - public override Type GetSerializableType() - { - return typeof(FullyCreatedConnectorInfo); - } - #region 属性 public override PointBase Position { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs index cced83d..9756073 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs @@ -23,11 +23,16 @@ namespace AIStudio.Wpf.DiagramDesigner ShapeDefiner = Shapes.Rectangle; } - public DesignerItemViewModelBase(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public DesignerItemViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { ShapeDefiner = Shapes.Rectangle; } + public override SelectableItemBase GetSerializableObject() + { + return new DesignerItemBase(this); + } + protected override void Init() { base.Init(); @@ -52,16 +57,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public override SelectableItemBase GetSerializableObject() - { - return new DesignerItemBase(this); - } - - public override Type GetSerializableType() - { - return typeof(DesignerItemBase); - } - protected virtual void InitConnector() { connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top)); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index 57a250f..3ac6ed9 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -221,7 +221,7 @@ namespace AIStudio.Wpf.DiagramDesigner } } - private bool _showGrid; + private bool _showGrid = true; public bool ShowGrid { get @@ -1406,8 +1406,8 @@ namespace AIStudio.Wpf.DiagramDesigner string json = new SerializableObject { - DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(), - Connections = selectedConnections.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(), + DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem(".json")).Where(p => p != null).ToList(), + Connections = selectedConnections.Select(p => p.ToSerializableItem(".json")).Where(p => p != null).ToList(), }.ToJson(); OffsetX = 10; @@ -1420,9 +1420,9 @@ namespace AIStudio.Wpf.DiagramDesigner { if (System.Windows.Clipboard.ContainsData(System.Windows.DataFormats.Serializable)) { - String clipboardData = System.Windows.Clipboard.GetData(System.Windows.DataFormats.Serializable) as String; + string clipboardData = System.Windows.Clipboard.GetData(System.Windows.DataFormats.Serializable) as String; - if (String.IsNullOrEmpty(clipboardData)) + if (string.IsNullOrEmpty(clipboardData)) return; try { @@ -1435,9 +1435,9 @@ namespace AIStudio.Wpf.DiagramDesigner { DesignerItemViewModelBase newItem = null; - Type type = TypeHelper.GetType(diagramItemData.TypeName); + Type type = TypeHelper.GetType(diagramItemData.ModelTypeName); - DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, this, diagramItemData.SerializableString, "json") as DesignerItemViewModelBase; + DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, this, diagramItemData, ".json") as DesignerItemViewModelBase; Guid newID = Guid.NewGuid(); mappingOldToNewIDs.Add(itemBase.Id, newID); itemBase.Id = newID; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs index 6b7489d..7b86ab7 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs @@ -33,7 +33,7 @@ namespace AIStudio.Wpf.DiagramDesigner } - public SelectableDesignerItemViewModelBase(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SelectableDesignerItemViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs index 34d71dd..46e6e93 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs @@ -33,11 +33,11 @@ namespace AIStudio.Wpf.DiagramDesigner (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; } - public SelectableViewModelBase(IDiagramViewModel root, string serializableString, string serializableType) + public SelectableViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) { Init(); - SelectableItemBase obj = SerializeHelper.DeserializeObject(GetSerializableType(), serializableString, serializableType); + SelectableItemBase obj = SerializeHelper.DeserializeObject(serializableItem.SerializableTypeName, serializableItem.SerializableString, serializableType); LoadDesignerItemViewModel(root, obj); (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; } @@ -47,7 +47,7 @@ namespace AIStudio.Wpf.DiagramDesigner var obj = GetSerializableObject(); if (obj != null) { - return new SerializableItem() { TypeName = this.GetType().FullName, SerializableString = SerializeHelper.SerializeObject(obj, serializableType) }; + return new SerializableItem() { ModelTypeName = this.GetType().FullName, SerializableTypeName = obj.GetType().FullName, SerializableString = SerializeHelper.SerializeObject(obj, serializableType) }; } else { @@ -60,11 +60,6 @@ namespace AIStudio.Wpf.DiagramDesigner return null; } - public virtual Type GetSerializableType() - { - return null; - } - protected virtual void Init() { ColorViewModel = _service.CopyDefaultColorViewModel(); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs index b9b9405..0ea7e50 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs @@ -9,6 +9,7 @@ using System.Text; using System.Windows; using System.Windows.Input; using System.Windows.Media; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -30,7 +31,7 @@ namespace AIStudio.Wpf.DiagramDesigner } - public GifImageItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public GifImageItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -40,11 +41,6 @@ namespace AIStudio.Wpf.DiagramDesigner return new MediaDesignerItem(this); } - public override Type GetSerializableType() - { - return typeof(MediaDesignerItem); - } - protected override void Init() { AddItemCommand = new SimpleCommand(ExecuteAddItemCommand); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs index 5280a25..9785077 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs @@ -9,6 +9,7 @@ using System.Text; using System.Windows; using System.Windows.Input; using System.Windows.Media; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -25,7 +26,7 @@ namespace AIStudio.Wpf.DiagramDesigner } - public ImageItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ImageItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -35,11 +36,6 @@ namespace AIStudio.Wpf.DiagramDesigner return new ImageDesignerItem(this); } - public override Type GetSerializableType() - { - return typeof(ImageDesignerItem); - } - protected override void Init() { base.Init(); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs index 66d9636..d7dda35 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -78,7 +79,7 @@ namespace AIStudio.Wpf.DiagramDesigner BuildMenuOptions(); } - public LogicalGateItemViewModelBase(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public LogicalGateItemViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { BuildMenuOptions(); } @@ -88,11 +89,6 @@ namespace AIStudio.Wpf.DiagramDesigner return new LogicalGateDesignerItemBase(this); } - public override Type GetSerializableType() - { - return typeof(LogicalGateDesignerItemBase); - } - protected override void Init() { ShowRotate = false; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs index 685a86f..f447a10 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -19,7 +20,7 @@ namespace AIStudio.Wpf.DiagramDesigner } - public MediaItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public MediaItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -29,11 +30,6 @@ namespace AIStudio.Wpf.DiagramDesigner return new MediaDesignerItem(this); } - public override Type GetSerializableType() - { - return typeof(MediaDesignerItem); - } - protected override void Init() { base.Init(); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs index 3051c24..78e2152 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs @@ -1,4 +1,6 @@ using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; +using System; using System.Windows.Media; namespace AIStudio.Wpf.DiagramDesigner @@ -15,12 +17,11 @@ namespace AIStudio.Wpf.DiagramDesigner } - public TextDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public TextDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } - public override SelectableItemBase GetSerializableObject() { return new TextDesignerItem(this); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs index 2dc82ea..9939eeb 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { @@ -19,9 +20,14 @@ namespace AIStudio.Wpf.DiagramDesigner } - public VideoItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public VideoItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } + + public override SelectableItemBase GetSerializableObject() + { + return new MediaDesignerItem(this); + } } } diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs index 5fe1f1d..9c8d23c 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs @@ -1,5 +1,6 @@ using System; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.Services; using ZXing; @@ -19,7 +20,7 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public BarcodeDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public BarcodeDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs index 3a0dd5b..b0c57c7 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs @@ -2,6 +2,7 @@ using System.Windows; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.Services; namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels @@ -19,11 +20,16 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public OutLineTextDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public OutLineTextDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } + public override SelectableItemBase GetSerializableObject() + { + return new TextDesignerItem(this); + } + protected override void Init() { base.Init(); diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs index 78c9920..2f324d2 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs @@ -1,5 +1,6 @@ using System; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramHelper.Extensions.Models; namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels @@ -17,7 +18,7 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public PathItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public PathItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -27,11 +28,6 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels return new PathDesignerItem(this); } - public override Type GetSerializableType() - { - return typeof(PathDesignerItem); - } - protected override void Init() { base.Init(); diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs index 1715cd1..adebacb 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs @@ -1,5 +1,6 @@ using System; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramHelper.Extensions.Models; @@ -19,7 +20,7 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public PersistDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public PersistDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -29,12 +30,6 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels return new PersistDesignerItem(this); } - - public override Type GetSerializableType() - { - return typeof(PersistDesignerItem); - } - protected override void Init() { base.Init(); diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs index d303051..eeeb6c2 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs @@ -1,5 +1,6 @@ using System; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramHelper.Extensions.Models; @@ -19,7 +20,7 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public SettingsDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SettingsDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -29,11 +30,6 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels return new SettingsDesignerItem(this); } - public override Type GetSerializableType() - { - return typeof(SettingsDesignerItem); - } - protected override void Init() { base.Init(); diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs index 7371e85..d2d62e0 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs @@ -1,4 +1,5 @@ using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels { @@ -15,9 +16,14 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public SvgDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SvgDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } + + public override SelectableItemBase GetSerializableObject() + { + return new MediaDesignerItem(this); + } } } diff --git a/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs b/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs index 1894dac..c291c6f 100644 --- a/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs +++ b/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.ComponentModel; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.Flowchart.Models; @@ -22,7 +23,7 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public FlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public FlowNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -32,11 +33,6 @@ namespace AIStudio.Wpf.Flowchart.ViewModels return new FlowNodeDesignerItem(this); } - public override Type GetSerializableType() - { - return typeof(FlowNodeDesignerItem); - } - protected override void Init() { base.Init(); @@ -139,7 +135,7 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public StartFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public StartFlowNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -157,7 +153,7 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public EndFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public EndFlowNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -175,7 +171,7 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public DecideFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public DecideFlowNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -193,7 +189,7 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public COBeginFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public COBeginFlowNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -211,7 +207,7 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public COEndFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public COEndFlowNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs b/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs index 23dde51..4a2204a 100644 --- a/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs +++ b/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs @@ -3,6 +3,7 @@ using System.ComponentModel; using System.Windows; using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner.Controls; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.Flowchart.ViewModels { @@ -18,7 +19,7 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public MiddleFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public MiddleFlowNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs b/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs index 4718850..45c9ae5 100644 --- a/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs +++ b/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs @@ -3,6 +3,7 @@ using System.Collections.ObjectModel; using System.Linq; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.Services; namespace AIStudio.Wpf.Logical.ViewModels @@ -20,11 +21,16 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LogicalGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public LogicalGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } + public override SelectableItemBase GetSerializableObject() + { + return new LogicalGateDesignerItemBase(this); + } + protected override void Init() { base.Init(); @@ -74,7 +80,7 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public AddGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public AddGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -90,7 +96,7 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public SubtractGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SubtractGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -106,7 +112,7 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public MultiplyGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public MultiplyGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -123,7 +129,7 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public DivideGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public DivideGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -141,7 +147,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public AverageGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public AverageGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -159,7 +165,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public MODGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public MODGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -177,7 +183,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ANDGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ANDGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -195,7 +201,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ORGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ORGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -213,7 +219,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public XORGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public XORGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -231,7 +237,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public NOTGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public NOTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -249,7 +255,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SHLGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SHLGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -267,7 +273,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SHRGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SHRGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -285,7 +291,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ROLGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ROLGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -303,7 +309,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public RORGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public RORGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -321,7 +327,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SELGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SELGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -339,7 +345,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public MAXGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public MAXGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -357,7 +363,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public MINGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public MINGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -375,7 +381,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LIMITGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public LIMITGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -393,7 +399,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public GTGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public GTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -411,7 +417,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LTGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public LTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -429,7 +435,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public GEGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public GEGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -447,7 +453,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LEGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public LEGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -465,7 +471,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public EQGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public EQGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -483,7 +489,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public NEGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public NEGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -501,7 +507,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ABSGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ABSGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -519,7 +525,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SQRTGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SQRTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -537,7 +543,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LNGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public LNGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -555,7 +561,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LOGGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public LOGGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -573,7 +579,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public EXPGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public EXPGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -591,7 +597,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SINGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SINGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -609,7 +615,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public COSGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public COSGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -627,7 +633,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public TANGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public TANGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -645,7 +651,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ASINGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ASINGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -663,7 +669,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ACOSGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ACOSGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -681,7 +687,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ATANGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ATANGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -699,7 +705,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public EXPTGateItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public EXPTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -717,7 +723,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ConstantDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public ConstantDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -735,7 +741,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public InputItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public InputItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -794,7 +800,7 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public OutputItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public OutputItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -861,7 +867,7 @@ namespace AIStudio.Wpf.Logical.ViewModels BuildMenuOptions(); } - public TimerDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public TimerDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { BuildMenuOptions(); } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs index 40180ab..a25549c 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -21,7 +22,7 @@ namespace AIStudio.Wpf.SFC.ViewModels } - public SFCActionNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SFCActionNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs index 9bdfe1c..1383852 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -21,7 +22,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public SFCCOBeginNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SFCCOBeginNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs index 8b8aedf..d3f76ce 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -21,7 +22,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public SFCCOEndNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SFCCOEndNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs index 0b93d19..5d5a23c 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -24,7 +25,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public SFCConditionNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SFCConditionNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs index dc9bf89..70add03 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using System.Linq; using System.Windows.Media; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.SFC.Models; @@ -26,7 +27,7 @@ namespace AIStudio.Wpf.SFC.ViewModels } - public SFCNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SFCNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } @@ -36,11 +37,6 @@ namespace AIStudio.Wpf.SFC.ViewModels return new SFCNodeDesignerItem(this); } - public override Type GetSerializableType() - { - return typeof(SFCNodeDesignerItem); - } - protected override void Init() { IsInnerConnector = true; diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs index 46c9653..160799d 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -18,7 +19,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public SFCNodeNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SFCNodeNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs index f8f45cc..dab5d75 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -17,7 +18,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public SFCStartNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public SFCStartNode(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs index 5ed7e86..c1b6410 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -18,7 +19,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public Simulate_ListViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public Simulate_ListViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs index f398d8d..044416f 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs @@ -4,6 +4,7 @@ using System.Collections.ObjectModel; using System.Reactive.Linq; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -23,7 +24,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public Simulate_SolenoidViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public Simulate_SolenoidViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs index 147683c..5d60837 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -20,7 +21,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public Simulate_StartViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public Simulate_StartViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs index e3fa8e6..7ed2d9e 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.SFC.ViewModels { @@ -23,7 +24,7 @@ namespace AIStudio.Wpf.SFC.ViewModels { } - public Simulate_TankViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) + public Simulate_TankViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { }