序列化继续改进

This commit is contained in:
艾竹
2023-01-25 11:11:27 +08:00
parent a5005ac083
commit a01eb8825a
44 changed files with 319 additions and 398 deletions

View File

@@ -22,7 +22,7 @@ namespace AIStudio.Wpf.DiagramApp.Models
[XmlArray] [XmlArray]
public List<DiagramItem> DiagramItems { get; set; } 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(); private readonly object saveLock = new Object();
public void Save(FileInfo designFile) public void Save(FileInfo designFile)

View File

@@ -17,6 +17,7 @@ using AIStudio.Wpf.SFC.Models;
using AIStudio.Wpf.SFC.ViewModels; using AIStudio.Wpf.SFC.ViewModels;
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramApp.Models namespace AIStudio.Wpf.DiagramApp.Models
{ {
@@ -25,8 +26,7 @@ namespace AIStudio.Wpf.DiagramApp.Models
{ {
public DiagramItem() public DiagramItem()
{ {
this.ConnectionIds = new List<Guid>();
this.Connections = new List<ConnectionItem>();
} }
[XmlAttribute] [XmlAttribute]
@@ -84,7 +84,7 @@ namespace AIStudio.Wpf.DiagramApp.Models
[XmlAttribute] [XmlAttribute]
public PageSizeType PageSizeType { get; set; } public PageSizeType PageSizeType { get; set; }
[XmlAttribute] [XmlIgnore]
public Size GridMarginSize { get; set; } public Size GridMarginSize { get; set; }
[JsonIgnore] [JsonIgnore]
@@ -119,108 +119,9 @@ namespace AIStudio.Wpf.DiagramApp.Models
} }
[XmlArray] [XmlArray]
public List<DesignerItemBase> DesignerItems { get; set; } = new List<DesignerItemBase>(); public List<SerializableItem> DesignerItems { get; set; } = new List<SerializableItem>();
[XmlArray] [XmlArray]
public List<PersistDesignerItem> PersistDesignerItems { get; set; } = new List<PersistDesignerItem>(); public List<SerializableItem> Connections { get; set; } = new List<SerializableItem>();
[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);
}
}
}
} }
} }

View File

@@ -42,14 +42,16 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
public DiagramsViewModel(string filename) public DiagramsViewModel(string filename)
{ {
FileName = filename; FileName = filename;
var diagramDocument = OpenFile(filename); string ext = Path.GetExtension(filename);
OpenFile(diagramDocument); var diagramDocument = OpenFile(filename, ext);
OpenFile(diagramDocument, ext);
} }
public DiagramsViewModel(string filename, DiagramDocument diagramDocument) public DiagramsViewModel(string filename, DiagramDocument diagramDocument)
{ {
FileName = filename; FileName = filename;
OpenFile(diagramDocument); string ext = Path.GetExtension(filename);
OpenFile(diagramDocument, ext);
} }
protected virtual void InitDiagramViewModel() protected virtual void InitDiagramViewModel()
@@ -159,7 +161,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
{ {
if (e.PropertyName == "IsSelected") if (e.PropertyName == "IsSelected")
{ {
_service.SelectedItem = DiagramViewModel.SelectedItems?.FirstOrDefault(); _service.SelectedItem = DiagramViewModel?.SelectedItems?.FirstOrDefault();
} }
var property = sender.GetType().GetProperty(e.PropertyName); var property = sender.GetType().GetProperty(e.PropertyName);
@@ -179,13 +181,13 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
return true; return true;
} }
public static DiagramDocument OpenFile(string filename) public static DiagramDocument OpenFile(string filename, string ext)
{ {
try try
{ {
DiagramDocument diagramDocument = null; DiagramDocument diagramDocument = null;
if (filename.ToLower().EndsWith(".xml")) if (ext == ".xml")
{ {
XmlSerializer serializer = new XmlSerializer(typeof(DiagramDocument)); XmlSerializer serializer = new XmlSerializer(typeof(DiagramDocument));
FileInfo fileInfo = new FileInfo(filename); 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; Title = diagramDocument.Title;
DiagramType = diagramDocument.DiagramType; DiagramType = diagramDocument.DiagramType;
@@ -250,27 +252,29 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
viewModel.GridMarginSize = diagramItem.GridMarginSize; viewModel.GridMarginSize = diagramItem.GridMarginSize;
viewModel.GridColor = diagramItem.GridColor; viewModel.GridColor = diagramItem.GridColor;
foreach (DesignerItemBase diagramItemData in diagramItem.AllDesignerItems) foreach (var diagramItemData in diagramItem.DesignerItems)
{ {
Type type = TypeHelper.GetType(diagramItemData.ItemTypeName); Type type = TypeHelper.GetType(diagramItemData.ModelTypeName);
DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, viewModel, diagramItemData, ext) as DesignerItemViewModelBase;
DesignerItemViewModelBase itemBase = (DesignerItemViewModelBase)Activator.CreateInstance(type, viewModel, diagramItemData);
viewModel.Items.Add(itemBase); viewModel.Items.Add(itemBase);
} }
foreach (var connection in diagramItem.Connections) foreach (var connection in diagramItem.Connections)
{ {
connection.SourceType = System.Type.GetType(connection.SourceTypeName); Type type = TypeHelper.GetType(connection.SerializableTypeName);
connection.SinkType = System.Type.GetType(connection.SinkTypeName); var connectionItem = SerializeHelper.DeserializeObject(type, connection.SerializableString, ext) as ConnectionItem;
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);
DesignerItemViewModelBase sinkItem = GetConnectorDataItem(viewModel, connection.SinkId, connection.SinkType); connectionItem.SourceType = System.Type.GetType(connectionItem.SourceTypeName);
ConnectorOrientation sinkConnectorOrientation = connection.SinkOrientation; connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName);
FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint); 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); 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 diagramDocument = new DiagramDocument();
diagramDocument.DiagramItems = new List<DiagramItem>(); diagramDocument.DiagramItems = new List<DiagramItem>();
@@ -321,22 +325,16 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
diagramItem.GridMarginSize = viewModel.GridMarginSize; diagramItem.GridMarginSize = viewModel.GridMarginSize;
diagramItem.GridColor = viewModel.GridColor; 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>()) 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();
if (!connectionVM.IsFullConnection)
continue;
ConnectionItem connection = new ConnectionItem(connectionVM);
diagramItem.ConnectionIds.Add(connectionVM.Id);
diagramItem.Connections.Add(connection);
}
diagramDocument.DiagramItems.Add(diagramItem); diagramDocument.DiagramItems.Add(diagramItem);
} }
if (para == ".xml") if (ext == ".xml")
{ {
FileInfo file = new FileInfo(FileName); FileInfo file = new FileInfo(FileName);
diagramDocument.Save(file); diagramDocument.Save(file);
@@ -455,7 +453,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
public void LockAction(LockObject lockObject, string propertyName) public void LockAction(LockObject lockObject, string propertyName)
{ {
foreach (var item in DiagramViewModel.SelectedItems) foreach (var item in DiagramViewModel?.SelectedItems)
{ {
item.LockObjectViewModel.SetValue(lockObject); item.LockObjectViewModel.SetValue(lockObject);
} }
@@ -496,19 +494,11 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
diagramItem.GridMarginSize = viewModel.GridMarginSize; diagramItem.GridMarginSize = viewModel.GridMarginSize;
diagramItem.GridColor = viewModel.GridColor; 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>()) 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();
if (connectionVM.IsFullConnection == false) continue;
FullyCreatedConnectorInfo sinkConnector = connectionVM.SinkConnectorInfoFully;
ConnectionItem connection = new ConnectionItem(connectionVM);
diagramItem.ConnectionIds.Add(connectionVM.Id);
diagramItem.Connections.Add(connection);
}
viewModel = new DiagramViewModel(); viewModel = new DiagramViewModel();
viewModel.Name = NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-"); viewModel.Name = NewNameHelper.GetNewName(DiagramViewModels.Select(p => p.Name), "页-");
@@ -523,27 +513,28 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
viewModel.GridMarginSize = diagramItem.GridMarginSize; viewModel.GridMarginSize = diagramItem.GridMarginSize;
viewModel.GridColor = diagramItem.GridColor; viewModel.GridColor = diagramItem.GridColor;
foreach (DesignerItemBase diagramItemData in diagramItem.AllDesignerItems) foreach (var diagramItemData in diagramItem.DesignerItems)
{ {
Type type = TypeHelper.GetType(diagramItemData.ItemTypeName); Type type = TypeHelper.GetType(diagramItemData.ModelTypeName);
DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, viewModel, diagramItemData, "json") as DesignerItemViewModelBase;
DesignerItemViewModelBase itemBase = (DesignerItemViewModelBase)Activator.CreateInstance(type, viewModel, diagramItemData);
viewModel.Items.Add(itemBase); viewModel.Items.Add(itemBase);
} }
foreach (var connection in diagramItem.Connections) foreach (var connection in diagramItem.Connections)
{ {
connection.SourceType = System.Type.GetType(connection.SourceTypeName); var connectionItem = JsonConvert.DeserializeObject<ConnectionItem>(connection.SerializableString);
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);
DesignerItemViewModelBase sinkItem = GetConnectorDataItem(viewModel, connection.SinkId, connection.SinkType); connectionItem.SourceType = System.Type.GetType(connectionItem.SourceTypeName);
ConnectorOrientation sinkConnectorOrientation = connection.SinkOrientation; connectionItem.SinkType = System.Type.GetType(connectionItem.SinkTypeName);
FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint); 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); viewModel.Items.Add(connectionVM);
} }
@@ -590,7 +581,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
public void AddImageExecuted(object para) public void AddImageExecuted(object para)
{ {
ImageItemViewModel itemBase = new ImageItemViewModel(); ImageItemViewModel itemBase = new ImageItemViewModel();
DiagramViewModel.DirectAddItemCommand.Execute(itemBase); DiagramViewModel?.DirectAddItemCommand.Execute(itemBase);
if (itemBase.Root != null) if (itemBase.Root != null)
{ {
_service.DrawModeViewModel.CursorMode = CursorMode.Move; _service.DrawModeViewModel.CursorMode = CursorMode.Move;
@@ -627,7 +618,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
public void AddVideoExecuted(object para) public void AddVideoExecuted(object para)
{ {
VideoItemViewModel itemBase = new VideoItemViewModel(); VideoItemViewModel itemBase = new VideoItemViewModel();
DiagramViewModel.DirectAddItemCommand.Execute(itemBase); DiagramViewModel?.DirectAddItemCommand.Execute(itemBase);
if (itemBase.Root != null) if (itemBase.Root != null)
{ {
_service.DrawModeViewModel.CursorMode = CursorMode.Move; _service.DrawModeViewModel.CursorMode = CursorMode.Move;
@@ -637,7 +628,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
public void AddOutLineTextExecuted(object para) public void AddOutLineTextExecuted(object para)
{ {
OutLineTextDesignerItemViewModel itemBase = new OutLineTextDesignerItemViewModel(); OutLineTextDesignerItemViewModel itemBase = new OutLineTextDesignerItemViewModel();
DiagramViewModel.DirectAddItemCommand.Execute(itemBase); DiagramViewModel?.DirectAddItemCommand.Execute(itemBase);
if (itemBase.Root != null) if (itemBase.Root != null)
{ {
_service.DrawModeViewModel.CursorMode = CursorMode.Move; _service.DrawModeViewModel.CursorMode = CursorMode.Move;
@@ -647,7 +638,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
public void AddBarcodeExecuted(object para) public void AddBarcodeExecuted(object para)
{ {
BarcodeDesignerItemViewModel itemBase = new BarcodeDesignerItemViewModel() { Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), para.ToString()), Text="AIStudio.Wpf.DiagramApp" }; 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) if (itemBase.Root != null)
{ {
_service.DrawModeViewModel.CursorMode = CursorMode.Move; _service.DrawModeViewModel.CursorMode = CursorMode.Move;

View File

@@ -779,7 +779,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
return; return;
} }
var diagram = DiagramsViewModel.OpenFile(filename); var diagram = DiagramsViewModel.OpenFile(filename, Path.GetExtension(filename));
DiagramsViewModel flow; DiagramsViewModel flow;
if (diagram.DiagramType == DiagramType.FlowChart) if (diagram.DiagramType == DiagramType.FlowChart)
{ {

View File

@@ -19,6 +19,7 @@ using System.Windows.Media;
using AIStudio.Wpf.Flowchart.Models; using AIStudio.Wpf.Flowchart.Models;
using AIStudio.Wpf.SFC.Models; using AIStudio.Wpf.SFC.Models;
using System.Windows; using System.Windows;
using System;
namespace AIStudio.Wpf.DiagramApp.ViewModels namespace AIStudio.Wpf.DiagramApp.ViewModels
{ {
@@ -240,9 +241,12 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
try try
{ {
var xmlobject = JsonConvert.DeserializeObject<DiagramDocument>(File.ReadAllText(filename)); var xmlobject = JsonConvert.DeserializeObject<DiagramDocument>(File.ReadAllText(filename));
var diagramItemData = xmlobject.DiagramItems[0].AllDesignerItems[0];
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 catch
{ {
@@ -259,7 +263,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
DiagramDocument diagramDocument = new DiagramDocument(); DiagramDocument diagramDocument = new DiagramDocument();
diagramDocument.DiagramItems = new List<DiagramItem>(); diagramDocument.DiagramItems = new List<DiagramItem>();
DiagramItem diagramItem = new 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); diagramDocument.DiagramItems.Add(diagramItem);
string newname = NewNameHelper.GetNewName(MyToolBoxCategory.ToolBoxItems.OfType<DesignerItemToolBoxData>().Select(p => Path.GetFileNameWithoutExtension(p.FileName)), ""); string newname = NewNameHelper.GetNewName(MyToolBoxCategory.ToolBoxItems.OfType<DesignerItemToolBoxData>().Select(p => Path.GetFileNameWithoutExtension(p.FileName)), "");
var filename = $"{_custom}\\{newname}.json"; var filename = $"{_custom}\\{newname}.json";

View File

@@ -25,12 +25,26 @@ namespace AIStudio.Wpf.DiagramDesigner
Offset = viewmodel.Offset; Offset = viewmodel.Offset;
} }
[XmlAttribute] [XmlIgnore]
public double? Distance public double? Distance
{ {
get; set; get; set;
} }
[JsonIgnore]
[XmlAttribute("Distance")]
public string XmlDistance
{
get
{
return SerializeHelper.SerializeDoubleNull(Distance);
}
set
{
Distance = SerializeHelper.DeserializeDoubleNull(value);
}
}
[XmlIgnore] [XmlIgnore]
public Point Offset public Point Offset
{ {

View File

@@ -1,4 +1,5 @@
using Newtonsoft.Json; using AIStudio.Wpf.DiagramDesigner.Helpers;
using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
@@ -489,9 +490,24 @@ namespace AIStudio.Wpf.DiagramDesigner
return new Size(double.Parse(pieces[0]), double.Parse(pieces[1])); 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) public static string SerializeObject(object obj, string serializableType)
{ {
if (serializableType?.ToLower() == "xml") if (serializableType?.ToLower() == ".xml")
{ {
XmlSerializer serializer = new XmlSerializer(obj.GetType()); XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings(); XmlWriterSettings settings = new XmlWriterSettings();
@@ -517,7 +533,24 @@ namespace AIStudio.Wpf.DiagramDesigner
public static SelectableItemBase DeserializeObject(Type type, string serializableString, string serializableType) 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)) using (StringReader sr = new StringReader(serializableString))
{ {

View File

@@ -10,13 +10,25 @@ namespace AIStudio.Wpf.DiagramDesigner.Models
public class SerializableItem public class SerializableItem
{ {
[XmlIgnore] [XmlIgnore]
public Type Type public Type ModelType
{ {
get; set; get; set;
} }
[XmlAttribute] [XmlAttribute]
public string TypeName public string ModelTypeName
{
get; set;
}
[XmlIgnore]
public Type SerializableType
{
get; set;
}
[XmlAttribute]
public string SerializableTypeName
{ {
get; set; get; set;
} }

View File

@@ -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) protected virtual void Init(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo)
{ {
this.Root = sourceConnectorInfo.DataItem.Root; this.Root = sourceConnectorInfo.DataItem.Root;
@@ -75,25 +89,6 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public override SelectableItemBase GetSerializableObject()
{
if (IsFullConnection)
{
ConnectionItem connection = new ConnectionItem(this);
return connection;
}
else
{
return null;
}
}
public override Type GetSerializableType()
{
return typeof(ConnectionItem);
}
#region #region
private string _text; private string _text;
[Browsable(true)] [Browsable(true)]

View File

@@ -5,6 +5,7 @@ using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner 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() protected override void Init()
{ {
base.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 #region
public virtual PointBase Position public virtual PointBase Position
{ {

View File

@@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
using SvgPathProperties; using SvgPathProperties;
namespace AIStudio.Wpf.DiagramDesigner namespace AIStudio.Wpf.DiagramDesigner
@@ -20,11 +21,16 @@ namespace AIStudio.Wpf.DiagramDesigner
Parent = connector; 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; Parent = connector;
} }
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorLabelItem(this);
}
protected override void Init() protected override void Init()
{ {
base.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 #region
public ConnectionViewModel Connector public ConnectionViewModel Connector

View File

@@ -5,6 +5,7 @@ using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner 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() protected override void Init()
{ {
base.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);
}
/// <summary> /// <summary>
/// 中间X /// 中间X
/// </summary> /// </summary>

View File

@@ -1,5 +1,6 @@
using System; using System;
using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner namespace AIStudio.Wpf.DiagramDesigner
{ {
@@ -17,11 +18,16 @@ namespace AIStudio.Wpf.DiagramDesigner
Parent = connector; 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; Parent = connector;
} }
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorVertexItem(this);
}
protected override void Init() protected override void Init()
{ {
base.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 public ConnectionViewModel Connector
{ {
get get

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Windows; using System.Windows;
using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner 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; this.DataItem = dataItem;
if (IsInnerPoint == true) if (IsInnerPoint == true)
@@ -39,6 +40,11 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public override SelectableItemBase GetSerializableObject()
{
return new FullyCreatedConnectorInfoItem(this);
}
protected override void Init() protected override void Init()
{ {
base.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 #region
public override PointBase Position public override PointBase Position
{ {

View File

@@ -23,11 +23,16 @@ namespace AIStudio.Wpf.DiagramDesigner
ShapeDefiner = Shapes.Rectangle; 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; ShapeDefiner = Shapes.Rectangle;
} }
public override SelectableItemBase GetSerializableObject()
{
return new DesignerItemBase(this);
}
protected override void Init() protected override void Init()
{ {
base.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() protected virtual void InitConnector()
{ {
connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top)); connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top));

View File

@@ -221,7 +221,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
private bool _showGrid; private bool _showGrid = true;
public bool ShowGrid public bool ShowGrid
{ {
get get
@@ -1406,8 +1406,8 @@ namespace AIStudio.Wpf.DiagramDesigner
string json = new SerializableObject string json = new SerializableObject
{ {
DesignerItems = selectedDesignerItems.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(), Connections = selectedConnections.Select(p => p.ToSerializableItem(".json")).Where(p => p != null).ToList(),
}.ToJson(); }.ToJson();
OffsetX = 10; OffsetX = 10;
@@ -1420,9 +1420,9 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
if (System.Windows.Clipboard.ContainsData(System.Windows.DataFormats.Serializable)) 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; return;
try try
{ {
@@ -1435,9 +1435,9 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
DesignerItemViewModelBase newItem = null; 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(); Guid newID = Guid.NewGuid();
mappingOldToNewIDs.Add(itemBase.Id, newID); mappingOldToNewIDs.Add(itemBase.Id, newID);
itemBase.Id = newID; itemBase.Id = newID;

View File

@@ -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)
{ {
} }

View File

@@ -33,11 +33,11 @@ namespace AIStudio.Wpf.DiagramDesigner
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
} }
public SelectableViewModelBase(IDiagramViewModel root, string serializableString, string serializableType) public SelectableViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType)
{ {
Init(); Init();
SelectableItemBase obj = SerializeHelper.DeserializeObject(GetSerializableType(), serializableString, serializableType); SelectableItemBase obj = SerializeHelper.DeserializeObject(serializableItem.SerializableTypeName, serializableItem.SerializableString, serializableType);
LoadDesignerItemViewModel(root, obj); LoadDesignerItemViewModel(root, obj);
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
} }
@@ -47,7 +47,7 @@ namespace AIStudio.Wpf.DiagramDesigner
var obj = GetSerializableObject(); var obj = GetSerializableObject();
if (obj != null) 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 else
{ {
@@ -60,11 +60,6 @@ namespace AIStudio.Wpf.DiagramDesigner
return null; return null;
} }
public virtual Type GetSerializableType()
{
return null;
}
protected virtual void Init() protected virtual void Init()
{ {
ColorViewModel = _service.CopyDefaultColorViewModel(); ColorViewModel = _service.CopyDefaultColorViewModel();

View File

@@ -9,6 +9,7 @@ using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner 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); return new MediaDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(MediaDesignerItem);
}
protected override void Init() protected override void Init()
{ {
AddItemCommand = new SimpleCommand(ExecuteAddItemCommand); AddItemCommand = new SimpleCommand(ExecuteAddItemCommand);

View File

@@ -9,6 +9,7 @@ using System.Text;
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner 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); return new ImageDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(ImageDesignerItem);
}
protected override void Init() protected override void Init()
{ {
base.Init(); base.Init();

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner namespace AIStudio.Wpf.DiagramDesigner
{ {
@@ -78,7 +79,7 @@ namespace AIStudio.Wpf.DiagramDesigner
BuildMenuOptions(); 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(); BuildMenuOptions();
} }
@@ -88,11 +89,6 @@ namespace AIStudio.Wpf.DiagramDesigner
return new LogicalGateDesignerItemBase(this); return new LogicalGateDesignerItemBase(this);
} }
public override Type GetSerializableType()
{
return typeof(LogicalGateDesignerItemBase);
}
protected override void Init() protected override void Init()
{ {
ShowRotate = false; ShowRotate = false;

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner 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); return new MediaDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(MediaDesignerItem);
}
protected override void Init() protected override void Init()
{ {
base.Init(); base.Init();

View File

@@ -1,4 +1,6 @@
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using System;
using System.Windows.Media; using System.Windows.Media;
namespace AIStudio.Wpf.DiagramDesigner 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() public override SelectableItemBase GetSerializableObject()
{ {
return new TextDesignerItem(this); return new TextDesignerItem(this);

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner 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);
}
} }
} }

View File

@@ -1,5 +1,6 @@
using System; using System;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramDesigner.Services;
using ZXing; 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)
{ {
} }

View File

@@ -2,6 +2,7 @@
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramDesigner.Services;
namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels 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() protected override void Init()
{ {
base.Init(); base.Init();

View File

@@ -1,5 +1,6 @@
using System; using System;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramHelper.Extensions.Models; using AIStudio.Wpf.DiagramHelper.Extensions.Models;
namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels 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); return new PathDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(PathDesignerItem);
}
protected override void Init() protected override void Init()
{ {
base.Init(); base.Init();

View File

@@ -1,5 +1,6 @@
using System; using System;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramDesigner.Services;
using AIStudio.Wpf.DiagramHelper.Extensions.Models; 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); return new PersistDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(PersistDesignerItem);
}
protected override void Init() protected override void Init()
{ {
base.Init(); base.Init();

View File

@@ -1,5 +1,6 @@
using System; using System;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramDesigner.Services;
using AIStudio.Wpf.DiagramHelper.Extensions.Models; 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); return new SettingsDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(SettingsDesignerItem);
}
protected override void Init() protected override void Init()
{ {
base.Init(); base.Init();

View File

@@ -1,4 +1,5 @@
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels 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);
}
} }
} }

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramDesigner.Services;
using AIStudio.Wpf.Flowchart.Models; 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); return new FlowNodeDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(FlowNodeDesignerItem);
}
protected override void Init() protected override void Init()
{ {
base.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)
{ {
} }

View File

@@ -3,6 +3,7 @@ using System.ComponentModel;
using System.Windows; using System.Windows;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Controls; using AIStudio.Wpf.DiagramDesigner.Controls;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.Flowchart.ViewModels 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)
{ {
} }

View File

@@ -3,6 +3,7 @@ using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramDesigner.Services;
namespace AIStudio.Wpf.Logical.ViewModels 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() protected override void Init()
{ {
base.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(); 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(); BuildMenuOptions();
} }

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -4,6 +4,7 @@ using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Windows.Media; using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.DiagramDesigner.Services;
using AIStudio.Wpf.SFC.Models; 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); return new SFCNodeDesignerItem(this);
} }
public override Type GetSerializableType()
{
return typeof(SFCNodeDesignerItem);
}
protected override void Init() protected override void Init()
{ {
IsInnerConnector = true; IsInnerConnector = true;

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -4,6 +4,7 @@ using System.Collections.ObjectModel;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.SFC.ViewModels 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)
{ {
} }