mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-21 00:47:25 +08:00
序列化继续改进
This commit is contained in:
@@ -22,7 +22,7 @@ namespace AIStudio.Wpf.DiagramApp.Models
|
||||
[XmlArray]
|
||||
public List<DiagramItem> DiagramItems { get; set; }
|
||||
|
||||
public const string XMLNS = "http://AIStudio.Wpf.DiagramApp/DesignLayout";
|
||||
public const string XMLNS = "https://gitee.com/akwkevin/aistudio.-wpf.-diagram";
|
||||
private readonly object saveLock = new Object();
|
||||
|
||||
public void Save(FileInfo designFile)
|
||||
|
||||
@@ -17,6 +17,7 @@ using AIStudio.Wpf.SFC.Models;
|
||||
using AIStudio.Wpf.SFC.ViewModels;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using AIStudio.Wpf.DiagramDesigner.Models;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramApp.Models
|
||||
{
|
||||
@@ -25,8 +26,7 @@ namespace AIStudio.Wpf.DiagramApp.Models
|
||||
{
|
||||
public DiagramItem()
|
||||
{
|
||||
this.ConnectionIds = new List<Guid>();
|
||||
this.Connections = new List<ConnectionItem>();
|
||||
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
@@ -84,7 +84,7 @@ namespace AIStudio.Wpf.DiagramApp.Models
|
||||
[XmlAttribute]
|
||||
public PageSizeType PageSizeType { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
[XmlIgnore]
|
||||
public Size GridMarginSize { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
@@ -119,108 +119,9 @@ namespace AIStudio.Wpf.DiagramApp.Models
|
||||
}
|
||||
|
||||
[XmlArray]
|
||||
public List<DesignerItemBase> DesignerItems { get; set; } = new List<DesignerItemBase>();
|
||||
public List<SerializableItem> DesignerItems { get; set; } = new List<SerializableItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<PersistDesignerItem> PersistDesignerItems { get; set; } = new List<PersistDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<SettingsDesignerItem> SettingsDesignerItems { get; set; } = new List<SettingsDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<PathDesignerItem> PathDesignerItems { get; set; } = new List<PathDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<MediaDesignerItem> MediaDesignerItems { get; set; } = new List<MediaDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<ImageDesignerItem> ImageDesignerItems { get; set; } = new List<ImageDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<TextDesignerItem> TextDesignerItems { get; set; } = new List<TextDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<LogicalGateDesignerItemBase> LogicalGateItems { get; set; } = new List<LogicalGateDesignerItemBase>();
|
||||
|
||||
[XmlArray]
|
||||
public List<FlowNodeDesignerItem> FlowNodeDesignerItems { get; set; } = new List<FlowNodeDesignerItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<SFCNodeDesignerItem> SFCNodeDesignerItems { get; set; } = new List<SFCNodeDesignerItem>();
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlIgnore]
|
||||
public List<DesignerItemBase> AllDesignerItems
|
||||
{
|
||||
get
|
||||
{
|
||||
return
|
||||
DesignerItems.OfType<DesignerItemBase>()
|
||||
.Union(TextDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(LogicalGateItems.OfType<DesignerItemBase>())
|
||||
.Union(MediaDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(ImageDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(PathDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(PersistDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(SettingsDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(FlowNodeDesignerItems.OfType<DesignerItemBase>())
|
||||
.Union(SFCNodeDesignerItems.OfType<DesignerItemBase>())
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
[XmlArray]
|
||||
public List<Guid> ConnectionIds { get; set; }
|
||||
|
||||
[XmlArray]
|
||||
public List<ConnectionItem> Connections { get; set; }
|
||||
|
||||
public void AddItems(IEnumerable<SelectableDesignerItemViewModelBase> selectedDesignerItems)
|
||||
{
|
||||
var items = selectedDesignerItems.OfType<DesignerItemViewModelBase>().Select(p => p.GetSerializableObject());
|
||||
foreach (var item in items)
|
||||
{
|
||||
if (item is PersistDesignerItem persistDesignerItem)
|
||||
{
|
||||
PersistDesignerItems.Add(persistDesignerItem);
|
||||
}
|
||||
else if (item is SettingsDesignerItem settingsDesignerItem)
|
||||
{
|
||||
SettingsDesignerItems.Add(settingsDesignerItem);
|
||||
}
|
||||
else if (item is PathDesignerItem pathDesignerItem)
|
||||
{
|
||||
PathDesignerItems.Add(pathDesignerItem);
|
||||
}
|
||||
else if (item is MediaDesignerItem mediaDesignerItem)
|
||||
{
|
||||
MediaDesignerItems.Add(mediaDesignerItem);
|
||||
}
|
||||
else if (item is ImageDesignerItem imageDesignerItem)
|
||||
{
|
||||
ImageDesignerItems.Add(imageDesignerItem);
|
||||
}
|
||||
else if (item is TextDesignerItem textDesignerItem)
|
||||
{
|
||||
TextDesignerItems.Add(textDesignerItem);
|
||||
}
|
||||
else if (item is LogicalGateDesignerItemBase logicalGateDesignerItemBase)
|
||||
{
|
||||
LogicalGateItems.Add(logicalGateDesignerItemBase);
|
||||
}
|
||||
else if (item is FlowNodeDesignerItem flowNodeDesignerItem)
|
||||
{
|
||||
FlowNodeDesignerItems.Add(flowNodeDesignerItem);
|
||||
}
|
||||
else if (item is SFCNodeDesignerItem sFCNodeDesignerItem)
|
||||
{
|
||||
SFCNodeDesignerItems.Add(sFCNodeDesignerItem);
|
||||
}
|
||||
else if (item is DesignerItemBase designerItemBase)
|
||||
{
|
||||
DesignerItems.Add(designerItemBase);
|
||||
}
|
||||
}
|
||||
}
|
||||
public List<SerializableItem> Connections { get; set; } = new List<SerializableItem>();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user