mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-05-01 13:39:28 +08:00
序列化继续改进
This commit is contained in:
@@ -22,7 +22,7 @@ namespace AIStudio.Wpf.DiagramApp.Models
|
||||
[XmlArray]
|
||||
public List<DiagramItem> 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)
|
||||
|
||||
@@ -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<Guid>();
|
||||
this.Connections = new List<ConnectionItem>();
|
||||
|
||||
}
|
||||
|
||||
[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<DesignerItemBase> DesignerItems { get; set; } = new List<DesignerItemBase>();
|
||||
public List<SerializableItem> DesignerItems { get; set; } = new List<SerializableItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<PersistDesignerItem> PersistDesignerItems { get; set; } = new List<PersistDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<SettingsDesignerItem> SettingsDesignerItems { get; set; } = new List<SettingsDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<PathDesignerItem> PathDesignerItems { get; set; } = new List<PathDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<MediaDesignerItem> MediaDesignerItems { get; set; } = new List<MediaDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<ImageDesignerItem> ImageDesignerItems { get; set; } = new List<ImageDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<TextDesignerItem> TextDesignerItems { get; set; } = new List<TextDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<LogicalGateDesignerItemBase> LogicalGateItems { get; set; } = new List<LogicalGateDesignerItemBase>();
|
||||
|
||||
[XmlArray]
|
||||
public List<FlowNodeDesignerItem> FlowNodeDesignerItems { get; set; } = new List<FlowNodeDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<SFCNodeDesignerItem> SFCNodeDesignerItems { get; set; } = new List<SFCNodeDesignerItem>();
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlIgnore]
|
||||
public List<DesignerItemBase> AllDesignerItems
|
||||
{
|
||||
get
|
||||
{
|
||||
return
|
||||
DesignerItems.OfType<DesignerItemBase>()
|
||||
.Union(TextDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(LogicalGateItems.OfType<DesignerItemBase>())
|
||||
.Union(MediaDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(ImageDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(PathDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(PersistDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(SettingsDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(FlowNodeDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(SFCNodeDesignerItems.OfType<DesignerItemBase>())
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
[XmlArray]
|
||||
public List<Guid> ConnectionIds { get; set; }
|
||||
|
||||
[XmlArray]
|
||||
public List<ConnectionItem> Connections { get; set; }
|
||||
|
||||
public void AddItems(IEnumerable<SelectableDesignerItemViewModelBase> selectedDesignerItems)
|
||||
{
|
||||
var items = selectedDesignerItems.OfType<DesignerItemViewModelBase>().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<SerializableItem> Connections { get; set; } = new List<SerializableItem>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<DiagramItem>();
|
||||
@@ -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<DesignerItemViewModelBase>();
|
||||
var selectedConnections = viewModel.Items.OfType<ConnectionViewModel>();
|
||||
|
||||
foreach (var connectionVM in DiagramViewModel.Items.OfType<ConnectionViewModel>())
|
||||
{
|
||||
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<DesignerItemViewModelBase>();
|
||||
var selectedConnections = viewModel.Items.OfType<ConnectionViewModel>();
|
||||
|
||||
foreach (var connectionVM in DiagramViewModel.Items.OfType<ConnectionViewModel>())
|
||||
{
|
||||
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<ConnectionItem>(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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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<DiagramDocument>(File.ReadAllText(filename));
|
||||
var diagramItemData = xmlobject.DiagramItems[0].AllDesignerItems[0];
|
||||
var xmlobject = JsonConvert.DeserializeObject<DiagramDocument>(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 diagramItem = new DiagramItem();
|
||||
diagramItem.AddItems(new List<DesignerItemViewModelBase> { designer });
|
||||
diagramItem.DesignerItems = new List<DiagramDesigner.Models.SerializableItem> { designer.ToSerializableItem(".json") };
|
||||
diagramDocument.DiagramItems.Add(diagramItem);
|
||||
string newname = NewNameHelper.GetNewName(MyToolBoxCategory.ToolBoxItems.OfType<DesignerItemToolBoxData>().Select(p => Path.GetFileNameWithoutExtension(p.FileName)), "");
|
||||
var filename = $"{_custom}\\{newname}.json";
|
||||
|
||||
Reference in New Issue
Block a user