mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-13 13:09:28 +08:00
支持多个node保存到工具栏,显示还有点问题。
This commit is contained in:
@@ -249,31 +249,41 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
||||
|
||||
private void LoadMyItems()
|
||||
{
|
||||
if (!Directory.Exists(_custom))
|
||||
{
|
||||
Directory.CreateDirectory(_custom);
|
||||
}
|
||||
|
||||
if (Directory.Exists(_custom))
|
||||
{
|
||||
var files = Directory.GetFiles(_custom);
|
||||
foreach (var filename in files.Where(p => p.ToLower().EndsWith(".json")))
|
||||
{
|
||||
var itemBase = ReadMyItem(filename);
|
||||
if (itemBase != null)
|
||||
{
|
||||
MyToolBoxCategory.ToolBoxItems.Add(new DesignerItemToolBoxData(itemBase, filename, TypeHelper.GetType(itemBase.ItemTypeName)));
|
||||
}
|
||||
AddMyItem(filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private DesignerItemBase ReadMyItem(string filename)
|
||||
private object ReadMyItem(string filename)
|
||||
{
|
||||
try
|
||||
{
|
||||
var xmlobject = JsonConvert.DeserializeObject<DiagramDocument>(File.ReadAllText(filename));
|
||||
|
||||
Type type = TypeHelper.GetType(xmlobject.DiagramItems[0].DesignerItems[0].SerializableTypeName);
|
||||
if (xmlobject.DiagramItems[0].DesignerItems.Count > 1)
|
||||
{
|
||||
var itemBase = new MultipleDesignerItemToolBoxData(xmlobject.DiagramItems[0], filename);
|
||||
|
||||
var itemBase = JsonConvert.DeserializeObject(xmlobject.DiagramItems[0].DesignerItems[0].SerializableString, type) as DesignerItemBase;
|
||||
return itemBase;
|
||||
}
|
||||
else
|
||||
{
|
||||
Type type = TypeHelper.GetType(xmlobject.DiagramItems[0].DesignerItems[0].SerializableTypeName);
|
||||
|
||||
return itemBase;
|
||||
var itemBase = JsonConvert.DeserializeObject(xmlobject.DiagramItems[0].DesignerItems[0].SerializableString, type) as DesignerItemBase;
|
||||
|
||||
return itemBase;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -285,22 +295,44 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
||||
|
||||
private void AddMyItem()
|
||||
{
|
||||
if (_service.SelectedItem is DesignerItemViewModelBase designer)
|
||||
if (_service.SelectedItems != null)
|
||||
{
|
||||
DiagramDocument diagramDocument = new DiagramDocument();
|
||||
diagramDocument.DiagramItems = new List<DiagramItem>();
|
||||
DiagramItem diagramItem = new DiagramItem();
|
||||
diagramItem.DesignerItems = new List<DiagramDesigner.Models.SerializableItem> { designer.ToSerializableItem(".json") };
|
||||
|
||||
var selectedDesignerItems = _service.SelectedItems.OfType<DesignerItemViewModelBase>();
|
||||
var selectedConnections = _service.SelectedItems.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();
|
||||
|
||||
diagramDocument.DiagramItems.Add(diagramItem);
|
||||
string newname = NewNameHelper.GetNewName(MyToolBoxCategory.ToolBoxItems.OfType<DesignerItemToolBoxData>().Select(p => Path.GetFileNameWithoutExtension(p.FileName)), "");
|
||||
var filename = $"{_custom}\\{newname}.json";
|
||||
File.WriteAllText(filename, JsonConvert.SerializeObject(diagramDocument));
|
||||
|
||||
AddMyItem(filename);
|
||||
}
|
||||
}
|
||||
|
||||
private void AddMyItem(string filename)
|
||||
{
|
||||
try
|
||||
{
|
||||
var itemBase = ReadMyItem(filename);
|
||||
if (itemBase != null)
|
||||
if (itemBase is DesignerItemBase designer)
|
||||
{
|
||||
MyToolBoxCategory.ToolBoxItems.Add(new DesignerItemToolBoxData(itemBase, filename, TypeHelper.GetType(itemBase.ItemTypeName)));
|
||||
MyToolBoxCategory.ToolBoxItems.Add(new DesignerItemToolBoxData(designer, filename, TypeHelper.GetType(designer.ItemTypeName)));
|
||||
}
|
||||
else if (itemBase is MultipleDesignerItemToolBoxData multiple)
|
||||
{
|
||||
MyToolBoxCategory.ToolBoxItems.Add(multiple);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user