mind基本完成,准备写文档

This commit is contained in:
艾竹
2023-03-19 23:26:14 +08:00
parent c2f4d3c706
commit 07ac28965e
28 changed files with 1363 additions and 211 deletions

View File

@@ -45,6 +45,14 @@ namespace AIStudio.Wpf.Mind.ViewModels
return Items.OfType<MindNode>().FirstOrDefault();
}
}
public MindNode MindSelectedItem
{
get
{
return SelectedItem as MindNode;
}
}
#endregion
#region
@@ -280,7 +288,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
{
return this._expand2LevelCommand ?? (this._expand2LevelCommand = new SimpleCommand(ExecuteEnable, this.ExecutedExpand2LevelCommand));
}
}
}
#endregion
public MindDiagramViewModel()
@@ -294,7 +302,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
{
InitRootItem();
}
GetChildren(RootItem);
ResetChildren(RootItem);
RootItem?.LayoutUpdated();
base.Init();
}
@@ -325,7 +333,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
return (SelectedItem as MindNode).NodeLevel != 0;
}
#region
#region
public void ExecuteAddChildCommand(object parameter)
{
List<MindNode> items = new List<MindNode>();
@@ -578,15 +586,9 @@ namespace AIStudio.Wpf.Mind.ViewModels
else
return false;
}
#endregion
protected override void ExecuteCenterMoveCommand(object parameter)
{
RootItem.Left = (PageSize.Width - RootItem.ItemWidth) / 2;
RootItem.Top = (PageSize.Height - RootItem.ItemHeight) / 2;
RootItem?.LayoutUpdated();
FitViewModel = new FitViewModel() { BoundingRect = RootItem.GetBounds() };
}
#region
private void ExecuteAddLinkCommand(object obj)
{
if (obj is object[] array && array.Length == 2)
@@ -687,7 +689,9 @@ namespace AIStudio.Wpf.Mind.ViewModels
p.Tags.Remove(obj?.ToString());
});
}
#endregion
#region
private void ExecutedChangeMindTypeCommand(object obj)
{
if (obj is MindType mindType)
@@ -748,7 +752,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
}
}
private MindNode FormatNode;
private MindNode _formatNode;
private void ExecutedCopyThemeCommand(object parameter)
{
if (parameter is MindNode node)
@@ -762,13 +766,13 @@ namespace AIStudio.Wpf.Mind.ViewModels
if (node != null)
{
FormatNode = node;
_formatNode = node;
}
}
private void ExecutedPasteThemeCommand(object parameter)
{
if (FormatNode != null)
if (_formatNode != null)
{
List<MindNode> nodes = new List<MindNode>();
if (parameter is MindNode node1)
@@ -790,8 +794,8 @@ namespace AIStudio.Wpf.Mind.ViewModels
() => {
foreach (var node in nodes)
{
CopyHelper.CopyPropertyValue(FormatNode.ColorViewModel, node.ColorViewModel);
CopyHelper.CopyPropertyValue(FormatNode.FontViewModel, node.FontViewModel);
CopyHelper.CopyPropertyValue(_formatNode.ColorViewModel, node.ColorViewModel);
CopyHelper.CopyPropertyValue(_formatNode.FontViewModel, node.FontViewModel);
}
RootItem.LayoutUpdated();
},
@@ -803,6 +807,16 @@ namespace AIStudio.Wpf.Mind.ViewModels
}
}
#endregion
#region
protected override void ExecuteCenterMoveCommand(object parameter)
{
RootItem.Left = (PageSize.Width - RootItem.ItemWidth) / 2;
RootItem.Top = (PageSize.Height - RootItem.ItemHeight) / 2;
RootItem?.LayoutUpdated();
FitViewModel = new FitViewModel() { BoundingRect = RootItem.GetBounds() };
}
private void ExecutedExpand2LevelCommand(object obj)
{
@@ -823,8 +837,84 @@ namespace AIStudio.Wpf.Mind.ViewModels
item.IsExpanded = false;
}
}
}
}
protected void ExecuteSelectBrotherCommand(object parameter)
{
if (parameter is MindNode node)
{
}
else
{
node = SelectedItem as MindNode;
}
if (node != null && node.ParentNode != null)
{
foreach (var child in node.ParentNode.Children)
{
child.IsSelected = true;
}
}
}
protected void ExecuteSelectPearCommand(object parameter)
{
if (parameter is MindNode node)
{
}
else
{
node = SelectedItem as MindNode;
}
if (node != null)
{
foreach (var item in Items.OfType<MindNode>().Where(p => p.NodeLevel == node.NodeLevel))
{
item.IsSelected = true;
}
}
}
protected void ExecuteSelectRouteCommand(object parameter)
{
if (parameter is MindNode node)
{
}
else
{
node = SelectedItem as MindNode;
}
if (node != null)
{
GetParent(node).ForEach(p => p.IsSelected = true);
}
}
protected void ExecuteSelectChildCommand(object parameter)
{
if (parameter is MindNode node)
{
}
else
{
node = SelectedItem as MindNode;
}
if (node != null)
{
GetChildren(node).ForEach(p => p.IsSelected = true);
}
}
#endregion
#region
protected override void ExecutedResetLayoutCommand(object obj)
{
foreach (var item in Items.OfType<MindNode>())
@@ -834,7 +924,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
RootItem?.LayoutUpdated();
}
private void GetChildren(MindNode parent)
private void ResetChildren(MindNode parent)
{
if (parent == null)
return;
@@ -845,9 +935,34 @@ namespace AIStudio.Wpf.Mind.ViewModels
item.Parent = parent;
item.InitLayout(false);
item.InitConnectLayout();
GetChildren(item);
ResetChildren(item);
}
}
private List<MindNode> GetParent(MindNode node)
{
List<MindNode> mindnode = new List<MindNode>();
while (node.ParentNode != null)
{
mindnode.Add(node.ParentNode);
node = node.ParentNode;
}
return mindnode;
}
private List<MindNode> GetChildren(MindNode parent)
{
List<MindNode> mindnode = new List<MindNode>();
if (parent.Children != null)
{
foreach (var child in parent.Children)
{
mindnode.Add(child);
mindnode.AddRange(GetChildren(child));
}
}
return mindnode;
}
#endregion
}
}