From b08e13b93eb0b90dd29cc5725d920f0555f0c5e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Wed, 23 Aug 2023 22:49:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E6=9E=84?= =?UTF-8?q?=E9=80=A0=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseViewModel/DiagramViewModel.cs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index 69493e1..e8bc873 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -12,6 +12,7 @@ using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Helpers; using AIStudio.Wpf.DiagramDesigner.Models; using Newtonsoft.Json; +using static System.Net.Mime.MediaTypeNames; namespace AIStudio.Wpf.DiagramDesigner { @@ -813,6 +814,38 @@ namespace AIStudio.Wpf.DiagramDesigner BuildMenuOptions(); } + public DiagramViewModel(DiagramItem diagramItem, string ext) : this() + { + Init(diagramItem); + + foreach (var diagramItemData in diagramItem.DesignerItems) + { + Type type = TypeHelper.GetType(diagramItemData.ModelTypeName); + DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, this, diagramItemData, ext) as DesignerItemViewModelBase; + Items.Add(itemBase); + } + + foreach (var connection in diagramItem.Connections) + { + Type type = TypeHelper.GetType(connection.SerializableTypeName); + var connectionItem = SerializeHelper.DeserializeObject(type, connection.SerializableString, ext) as ConnectionItem; + + connectionItem.SourceType = System.Type.GetType(connectionItem.SourceTypeName); + connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName); + DesignerItemViewModelBase sourceItem = DiagramViewModelHelper.GetConnectorDataItem(Items, connectionItem.SourceId, connectionItem.SourceType); + ConnectorOrientation sourceConnectorOrientation = connectionItem.SourceOrientation; + FullyCreatedConnectorInfo sourceConnectorInfo = sourceItem.GetFullConnectorInfo(connectionItem.Id, sourceConnectorOrientation, connectionItem.SourceXRatio, connectionItem.SourceYRatio, connectionItem.SourceInnerPoint, connectionItem.SourceInnerPoint); + + DesignerItemViewModelBase sinkItem = DiagramViewModelHelper.GetConnectorDataItem(Items, connectionItem.SinkId, connectionItem.SinkType); + ConnectorOrientation sinkConnectorOrientation = connectionItem.SinkOrientation; + FullyCreatedConnectorInfo sinkConnectorInfo = sinkItem.GetFullConnectorInfo(connectionItem.Id, sinkConnectorOrientation, connectionItem.SinkXRatio, connectionItem.SinkYRatio, connectionItem.SinkInnerPoint, connectionItem.SinkInnerPoint); + + ConnectionViewModel connectionVM = new ConnectionViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem); + connectionVM.Id = Guid.NewGuid(); + Items.Add(connectionVM); + } + } + public void Init(DiagramItem diagramItem) { DiagramType = diagramItem.DiagramType;