序列化继续改进

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

@@ -36,6 +36,20 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public override SelectableItemBase GetSerializableObject()
{
if (IsFullConnection)
{
ConnectionItem connection = new ConnectionItem(this);
return connection;
}
else
{
return null;
}
}
protected virtual void Init(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo)
{
this.Root = sourceConnectorInfo.DataItem.Root;
@@ -73,26 +87,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Vertices = new ObservableCollection<ConnectorVertexModel>(designer.Vertices.Select(p => new ConnectorVertexModel(this.Root, this, designer)));
Labels = new ObservableCollection<ConnectorLabelModel>(designer.Labels.Select(p => new ConnectorLabelModel(this.Root, this, designer)));
}
}
public override SelectableItemBase GetSerializableObject()
{
if (IsFullConnection)
{
ConnectionItem connection = new ConnectionItem(this);
return connection;
}
else
{
return null;
}
}
public override Type GetSerializableType()
{
return typeof(ConnectionItem);
}
}
#region
private string _text;

View File

@@ -5,6 +5,7 @@ using System.Text;
using System.Windows;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -20,11 +21,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public ConnectorInfoBase(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public ConnectorInfoBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorInfoItemBase(this);
}
protected override void Init()
{
base.Init();
@@ -49,16 +55,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorInfoItemBase(this);
}
public override Type GetSerializableType()
{
return typeof(ConnectorInfoBase);
}
#region
public virtual PointBase Position
{

View File

@@ -1,6 +1,7 @@
using System;
using System.Linq;
using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
using SvgPathProperties;
namespace AIStudio.Wpf.DiagramDesigner
@@ -20,11 +21,16 @@ namespace AIStudio.Wpf.DiagramDesigner
Parent = connector;
}
public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
Parent = connector;
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorLabelItem(this);
}
protected override void Init()
{
base.Init();
@@ -43,15 +49,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorLabelItem(this);
}
public override Type GetSerializableType()
{
return typeof(ConnectorLabelItem);
}
#region
public ConnectionViewModel Connector

View File

@@ -5,6 +5,7 @@ using System.Text;
using System.Windows;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -32,11 +33,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public ConnectorPointModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public ConnectorPointModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorPointItem(this);
}
protected override void Init()
{
base.Init();
@@ -60,16 +66,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorPointItem(this);
}
public override Type GetSerializableType()
{
return typeof(ConnectorPointItem);
}
/// <summary>
/// 中间X
/// </summary>

View File

@@ -1,5 +1,6 @@
using System;
using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -17,11 +18,16 @@ namespace AIStudio.Wpf.DiagramDesigner
Parent = connector;
}
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
Parent = connector;
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorVertexItem(this);
}
protected override void Init()
{
base.Init();
@@ -40,16 +46,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public override SelectableItemBase GetSerializableObject()
{
return new ConnectorVertexItem(this);
}
public override Type GetSerializableType()
{
return typeof(ConnectorVertexModel);
}
public ConnectionViewModel Connector
{
get

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Windows;
using AIStudio.Wpf.DiagramDesigner.Geometrys;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -30,7 +31,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public FullyCreatedConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public FullyCreatedConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
this.DataItem = dataItem;
if (IsInnerPoint == true)
@@ -39,6 +40,11 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override SelectableItemBase GetSerializableObject()
{
return new FullyCreatedConnectorInfoItem(this);
}
protected override void Init()
{
base.Init();
@@ -62,16 +68,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override SelectableItemBase GetSerializableObject()
{
return new FullyCreatedConnectorInfoItem(this);
}
public override Type GetSerializableType()
{
return typeof(FullyCreatedConnectorInfo);
}
#region
public override PointBase Position
{

View File

@@ -23,11 +23,16 @@ namespace AIStudio.Wpf.DiagramDesigner
ShapeDefiner = Shapes.Rectangle;
}
public DesignerItemViewModelBase(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public DesignerItemViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
ShapeDefiner = Shapes.Rectangle;
}
public override SelectableItemBase GetSerializableObject()
{
return new DesignerItemBase(this);
}
protected override void Init()
{
base.Init();
@@ -52,16 +57,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override SelectableItemBase GetSerializableObject()
{
return new DesignerItemBase(this);
}
public override Type GetSerializableType()
{
return typeof(DesignerItemBase);
}
protected virtual void InitConnector()
{
connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Top));

View File

@@ -221,7 +221,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private bool _showGrid;
private bool _showGrid = true;
public bool ShowGrid
{
get
@@ -1406,8 +1406,8 @@ namespace AIStudio.Wpf.DiagramDesigner
string json = new SerializableObject
{
DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(),
Connections = selectedConnections.Select(p => p.ToSerializableItem("json")).Where(p => p != null).ToList(),
DesignerItems = selectedDesignerItems.Select(p => p.ToSerializableItem(".json")).Where(p => p != null).ToList(),
Connections = selectedConnections.Select(p => p.ToSerializableItem(".json")).Where(p => p != null).ToList(),
}.ToJson();
OffsetX = 10;
@@ -1420,9 +1420,9 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (System.Windows.Clipboard.ContainsData(System.Windows.DataFormats.Serializable))
{
String clipboardData = System.Windows.Clipboard.GetData(System.Windows.DataFormats.Serializable) as String;
string clipboardData = System.Windows.Clipboard.GetData(System.Windows.DataFormats.Serializable) as String;
if (String.IsNullOrEmpty(clipboardData))
if (string.IsNullOrEmpty(clipboardData))
return;
try
{
@@ -1435,9 +1435,9 @@ namespace AIStudio.Wpf.DiagramDesigner
{
DesignerItemViewModelBase newItem = null;
Type type = TypeHelper.GetType(diagramItemData.TypeName);
Type type = TypeHelper.GetType(diagramItemData.ModelTypeName);
DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, this, diagramItemData.SerializableString, "json") as DesignerItemViewModelBase;
DesignerItemViewModelBase itemBase = Activator.CreateInstance(type, this, diagramItemData, ".json") as DesignerItemViewModelBase;
Guid newID = Guid.NewGuid();
mappingOldToNewIDs.Add(itemBase.Id, newID);
itemBase.Id = newID;

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

View File

@@ -9,6 +9,7 @@ using System.Text;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -30,7 +31,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public GifImageItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public GifImageItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
@@ -40,11 +41,6 @@ namespace AIStudio.Wpf.DiagramDesigner
return new MediaDesignerItem(this);
}
public override Type GetSerializableType()
{
return typeof(MediaDesignerItem);
}
protected override void Init()
{
AddItemCommand = new SimpleCommand(ExecuteAddItemCommand);

View File

@@ -9,6 +9,7 @@ using System.Text;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -25,7 +26,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public ImageItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public ImageItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
@@ -35,11 +36,6 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ImageDesignerItem(this);
}
public override Type GetSerializableType()
{
return typeof(ImageDesignerItem);
}
protected override void Init()
{
base.Init();

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -78,7 +79,7 @@ namespace AIStudio.Wpf.DiagramDesigner
BuildMenuOptions();
}
public LogicalGateItemViewModelBase(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public LogicalGateItemViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
BuildMenuOptions();
}
@@ -88,11 +89,6 @@ namespace AIStudio.Wpf.DiagramDesigner
return new LogicalGateDesignerItemBase(this);
}
public override Type GetSerializableType()
{
return typeof(LogicalGateDesignerItemBase);
}
protected override void Init()
{
ShowRotate = false;

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -19,7 +20,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public MediaItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public MediaItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
@@ -29,11 +30,6 @@ namespace AIStudio.Wpf.DiagramDesigner
return new MediaDesignerItem(this);
}
public override Type GetSerializableType()
{
return typeof(MediaDesignerItem);
}
protected override void Init()
{
base.Init();

View File

@@ -1,4 +1,6 @@
using AIStudio.Wpf.DiagramDesigner;
using AIStudio.Wpf.DiagramDesigner.Models;
using System;
using System.Windows.Media;
namespace AIStudio.Wpf.DiagramDesigner
@@ -15,12 +17,11 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public TextDesignerItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public TextDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override SelectableItemBase GetSerializableObject()
{
return new TextDesignerItem(this);

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner
{
@@ -19,9 +20,14 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public VideoItemViewModel(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType)
public VideoItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override SelectableItemBase GetSerializableObject()
{
return new MediaDesignerItem(this);
}
}
}