mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-08 02:06:40 +08:00
序列化继续改进
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user