mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-05 16:56:34 +08:00
节点导入完成
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using AIStudio.Wpf.DiagramDesigner;
|
||||
using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
||||
using AIStudio.Wpf.Mind.Controls;
|
||||
using AIStudio.Wpf.Mind.Helpers;
|
||||
using AIStudio.Wpf.Mind.Models;
|
||||
|
||||
@@ -160,6 +160,24 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
private ICommand _exportCommand;
|
||||
public ICommand ExportCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._exportCommand ?? (this._exportCommand = new SimpleCommand(MindExecuteEnable, ExecuteExportCommand));
|
||||
}
|
||||
}
|
||||
|
||||
private ICommand _importCommand;
|
||||
public ICommand ImportCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._importCommand ?? (this._importCommand = new SimpleCommand(MindExecuteEnable, ExecuteImportCommand));
|
||||
}
|
||||
}
|
||||
|
||||
private ICommand _selectBrotherCommand;
|
||||
public ICommand SelectBrotherCommand
|
||||
{
|
||||
@@ -354,7 +372,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
AddRootItem();
|
||||
}
|
||||
ResetChildren(RootItems);
|
||||
RootItems?.ForEach(p => p.LayoutUpdated());
|
||||
RootItems?.ForEach(p => p.UpdatedLayout());
|
||||
base.Init();
|
||||
}
|
||||
|
||||
@@ -378,7 +396,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.Offset = new DiagramDesigner.Geometrys.PointBase();
|
||||
}
|
||||
|
||||
RootItems?.ForEach(p => p.LayoutUpdated());
|
||||
RootItems?.ForEach(p => p.UpdatedLayout());
|
||||
}
|
||||
|
||||
private void ResetChildren(IEnumerable<MindNode> parents)
|
||||
@@ -393,7 +411,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
item.Parent = parent;
|
||||
item.InitLayout(false);
|
||||
item.InitConnectLayout();
|
||||
item.InitConnectionLayout();
|
||||
}
|
||||
ResetChildren(parent.Children);
|
||||
}
|
||||
@@ -483,7 +501,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
newitems.Add(newitem);
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
},
|
||||
() => {
|
||||
foreach (var item in newitems)
|
||||
@@ -491,7 +509,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.RemoveFrom();
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
});
|
||||
|
||||
}
|
||||
@@ -529,7 +547,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
newitems.Add(newitem);
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
},
|
||||
() => {
|
||||
foreach (var item in items)
|
||||
@@ -545,7 +563,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.AddTo(parent.ParentNode, index);
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
});
|
||||
}
|
||||
|
||||
@@ -580,16 +598,16 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
newitems.Add(newitem);
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
},
|
||||
() => {
|
||||
foreach (var item in newitems)
|
||||
{
|
||||
item.RemoveFrom();
|
||||
item.LayoutUpdated();
|
||||
item.UpdatedLayout();
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
});
|
||||
}
|
||||
|
||||
@@ -644,6 +662,78 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
});
|
||||
}
|
||||
|
||||
private void ExecuteExportCommand(object parameter)
|
||||
{
|
||||
if (parameter is MindNode node)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
node = SelectedItem as MindNode;
|
||||
}
|
||||
|
||||
if (node != null)
|
||||
{
|
||||
var output = node.GetChildrenText(true);
|
||||
var window = new NodeDTSWindow("导出节点", output);
|
||||
window.ShowDialog();
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecuteImportCommand(object parameter)
|
||||
{
|
||||
if (parameter is MindNode node)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
node = SelectedItem as MindNode;
|
||||
}
|
||||
|
||||
if (node != null)
|
||||
{
|
||||
var window = new NodeDTSWindow("导入节点", "");
|
||||
if (window.ShowDialog() == true)
|
||||
{
|
||||
List<MindNode> newitems = new List<MindNode>();
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
() =>
|
||||
{
|
||||
var content = window.ContentString;
|
||||
var lines = content.Split(new string[] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
MindNode lastnode = node;
|
||||
foreach (var line in lines)
|
||||
{
|
||||
int level = Regex.Matches(line, "\t").Count + node.NodeLevel + 1;
|
||||
string text = line.Replace("\t", "");
|
||||
var newitem = new MindNode(this) { Text = text };
|
||||
while (lastnode.NodeLevel != level - 1)
|
||||
{
|
||||
lastnode = lastnode.ParentNode;
|
||||
}
|
||||
if (lastnode == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
newitem.AddTo(lastnode, isSelected: false);
|
||||
lastnode = newitem;
|
||||
newitems.Add(newitem);
|
||||
}
|
||||
node.UpdatedLayout();
|
||||
},
|
||||
() => {
|
||||
foreach (var item in newitems)
|
||||
{
|
||||
item.RemoveFrom();
|
||||
}
|
||||
node.UpdatedLayout();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void MoveBack(List<MindNode> items)
|
||||
{
|
||||
foreach (var item in items)
|
||||
@@ -660,7 +750,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.AddTo(parent, index + 1);
|
||||
}
|
||||
}
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
}
|
||||
|
||||
private void MoveForward(List<MindNode> items)
|
||||
@@ -679,7 +769,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.AddTo(parent, index - 1);
|
||||
}
|
||||
}
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
}
|
||||
|
||||
protected override bool Delete(object parameter)
|
||||
@@ -731,7 +821,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
base.Delete(others);
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
},
|
||||
() => {
|
||||
if (others.Any())
|
||||
@@ -748,7 +838,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.LayoutUpdated());
|
||||
items.Select(p => p.RootNode).Distinct().ToList().ForEach(p => p.UpdatedLayout());
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@@ -776,7 +866,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
}
|
||||
ResetChildren(parents);
|
||||
parents.ForEach(p => p.LayoutUpdated());
|
||||
parents.ForEach(p => p.UpdatedLayout());
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -997,14 +1087,14 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
() => {
|
||||
roots.ForEach(p => p.MindType = mindType);
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitLayout(true); });
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitConnectLayout(); });
|
||||
roots.ForEach(p => p.LayoutUpdated());
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitConnectionLayout(); });
|
||||
roots.ForEach(p => p.UpdatedLayout());
|
||||
},
|
||||
() => {
|
||||
roots.ForEach(p => p.MindType = oldMindType);
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitLayout(true); });
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitConnectLayout(); });
|
||||
roots.ForEach(p => p.LayoutUpdated());
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitConnectionLayout(); });
|
||||
roots.ForEach(p => p.UpdatedLayout());
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1033,7 +1123,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
MindTheme = mindTheme;
|
||||
roots.ForEach(p => p.MindTheme = MindTheme);
|
||||
roots.SelectMany(p => p.GetChildren(true)).ToList().ForEach(item => { item.ThemeChange(); });
|
||||
roots.ForEach(p => p.LayoutUpdated());
|
||||
roots.ForEach(p => p.UpdatedLayout());
|
||||
},
|
||||
() => {
|
||||
var mindThemeModel = MindThemeHelper.GetTheme(oldmindTheme);
|
||||
@@ -1048,7 +1138,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
MindTheme = oldmindTheme;
|
||||
roots.ForEach(p => p.MindTheme = MindTheme);
|
||||
roots.SelectMany(p => p.GetChildren(true)).ToList().ForEach(item => { item.ThemeChange(); });
|
||||
roots.ForEach(p => p.LayoutUpdated());
|
||||
roots.ForEach(p => p.UpdatedLayout());
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1177,7 +1267,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
rootitem.Left = left.Value;
|
||||
rootitem.Top = top.Value;
|
||||
rootitem.Offset = offset;
|
||||
rootitem?.LayoutUpdated();
|
||||
rootitem?.UpdatedLayout();
|
||||
FitViewModel = new FitViewModel() { BoundingRect = rootitem.GetBounds() };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user