支持多个node保存到工具栏,显示还有点问题。

This commit is contained in:
kwai
2023-02-03 18:23:53 +08:00
parent 397ebcfac2
commit 2fde666182
12 changed files with 273 additions and 140 deletions

View File

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