mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-13 12:46:36 +08:00
工具栏整理
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Windows.Input;
|
||||
@@ -7,13 +8,14 @@ using System.Windows.Media;
|
||||
using AIStudio.Wpf.DiagramDesigner;
|
||||
using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
||||
using AIStudio.Wpf.Mind.Helpers;
|
||||
using AIStudio.Wpf.Mind.Models;
|
||||
|
||||
namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
public class MindDiagramViewModel : DiagramViewModel, IMindDiagramViewModel
|
||||
{
|
||||
#region
|
||||
private MindType _mindType = Mind.MindType.Mind;
|
||||
private MindType _mindType = MindType.Mind;
|
||||
public MindType MindType
|
||||
{
|
||||
get
|
||||
@@ -22,26 +24,23 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
set
|
||||
{
|
||||
var oldvalue = _mindType;
|
||||
if (SetProperty(ref _mindType, value))
|
||||
{
|
||||
ExecutedChangeMindType(oldvalue, value);
|
||||
}
|
||||
SetProperty(ref _mindType, value);
|
||||
}
|
||||
}
|
||||
|
||||
private MindThemeModel _mindThemeModel = MindThemeHelper.GetTheme("天空蓝");
|
||||
public MindThemeModel MindThemeModel
|
||||
private MindTheme _mindTheme;
|
||||
public MindTheme MindTheme
|
||||
{
|
||||
get
|
||||
{
|
||||
return _mindThemeModel;
|
||||
return _mindTheme;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _mindThemeModel, value);
|
||||
SetProperty(ref _mindTheme, value);
|
||||
}
|
||||
}
|
||||
|
||||
public List<MindNode> RootItems
|
||||
{
|
||||
get
|
||||
@@ -58,6 +57,14 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public List<MindNode> MindSelectedItems
|
||||
{
|
||||
get
|
||||
{
|
||||
return SelectedItems.OfType<MindNode>().ToList();
|
||||
}
|
||||
}
|
||||
|
||||
private LinkInfo _linkInfo = new LinkInfo();
|
||||
public LinkInfo LinkInfo
|
||||
{
|
||||
@@ -354,7 +361,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
private MindNode AddRootItem()
|
||||
{
|
||||
ClearSelectedItems();
|
||||
MindNode level1node = new MindNode(this) { Root = this, Id = Guid.NewGuid(), Text = "思维导图" };
|
||||
MindNode level1node = new MindNode(this) { Root = this, Id = Guid.NewGuid(), Text = "思维导图", MindType = MindType, MindTheme = MindTheme };
|
||||
level1node.InitLayout(true);
|
||||
Items.Add(level1node);
|
||||
level1node.IsSelected = true;
|
||||
@@ -422,6 +429,11 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
LinkInfo = new LinkInfo(MindSelectedItem?.LinkInfo);
|
||||
ImageInfo = new ImageInfo(MindSelectedItem?.ImageInfo);
|
||||
Remark = MindSelectedItem?.Remark;
|
||||
if (MindSelectedItem != null)
|
||||
{
|
||||
MindType = MindSelectedItem.MindType;
|
||||
MindTheme = MindSelectedItem.MindTheme;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -975,37 +987,42 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
#region 改变模式,主题
|
||||
private void ExecutedChangeMindTypeCommand(object obj)
|
||||
{
|
||||
if (obj is MindType mindType)
|
||||
var oldMindType = MindType;
|
||||
if (obj is MindType mindType && mindType != oldMindType)
|
||||
{
|
||||
MindType = mindType;
|
||||
var roots = MindSelectedItems.Select(p => p.RootNode).Distinct().ToList();
|
||||
if (roots.Count > 0)
|
||||
{
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
() => {
|
||||
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());
|
||||
},
|
||||
() => {
|
||||
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());
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecutedChangeMindType(MindType oldvalue, MindType newvalue)
|
||||
{
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
() => {
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitLayout(true); });
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitConnectLayout(); });
|
||||
RootItems?.ForEach(p => p.LayoutUpdated());
|
||||
},
|
||||
() => {
|
||||
_mindType = oldvalue;
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitLayout(true); });
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.InitConnectLayout(); });
|
||||
RootItems?.ForEach(p => p.LayoutUpdated());
|
||||
});
|
||||
}
|
||||
|
||||
private void ExecutedChangeMindThemeCommand(object obj)
|
||||
{
|
||||
string oldmindThemeModel = MindThemeModel.Name;
|
||||
if (obj is string mindThemeModel && mindThemeModel != oldmindThemeModel)
|
||||
var oldmindTheme = MindTheme;
|
||||
if (obj is MindTheme mindTheme && mindTheme != oldmindTheme)
|
||||
{
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
var roots = MindSelectedItems.Select(p => p.RootNode).Distinct().ToList();
|
||||
if (roots.Count > 0)
|
||||
{
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
() => {
|
||||
MindThemeModel = MindThemeHelper.GetTheme(mindThemeModel);
|
||||
if (MindThemeModel?.Dark == true)
|
||||
var mindThemeModel = MindThemeHelper.GetTheme(mindTheme);
|
||||
if (mindThemeModel?.Dark == true)
|
||||
{
|
||||
PageBackground = Colors.Black;
|
||||
}
|
||||
@@ -1013,11 +1030,14 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
PageBackground = Colors.White;
|
||||
}
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.ThemeChange(); });
|
||||
MindTheme = mindTheme;
|
||||
roots.ForEach(p => p.MindTheme = MindTheme);
|
||||
roots.SelectMany(p => p.GetChildren(true)).ToList().ForEach(item => { item.ThemeChange(); });
|
||||
roots.ForEach(p => p.LayoutUpdated());
|
||||
},
|
||||
() => {
|
||||
MindThemeModel = MindThemeHelper.GetTheme(oldmindThemeModel);
|
||||
if (MindThemeModel?.Dark == true)
|
||||
var mindThemeModel = MindThemeHelper.GetTheme(oldmindTheme);
|
||||
if (mindThemeModel?.Dark == true)
|
||||
{
|
||||
PageBackground = Colors.Black;
|
||||
}
|
||||
@@ -1025,8 +1045,12 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
{
|
||||
PageBackground = Colors.White;
|
||||
}
|
||||
Items.OfType<MindNode>().ToList().ForEach(item => { item.ThemeChange(); });
|
||||
MindTheme = oldmindTheme;
|
||||
roots.ForEach(p => p.MindTheme = MindTheme);
|
||||
roots.SelectMany(p => p.GetChildren(true)).ToList().ForEach(item => { item.ThemeChange(); });
|
||||
roots.ForEach(p => p.LayoutUpdated());
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1048,7 +1072,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
if (items.Any())
|
||||
{
|
||||
Dictionary<MindNode, MindThemeModel> infos = items.OfType<MindNode>().ToDictionary(p => p, p => MindThemeHelper.GetThemeModel(p));
|
||||
Dictionary<MindNode, MindThemeModel> infos = items.OfType<MindNode>().ToDictionary(p => p, p => MindThemeHelper.GetNodeTheme(p));
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
() => {
|
||||
foreach (var item in items)
|
||||
@@ -1144,7 +1168,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
private void Move(MindNode rootitem, double? left, double? top)
|
||||
{
|
||||
|
||||
|
||||
if (left == null)
|
||||
left = (PageSize.Width - rootitem.ItemWidth) / 2;
|
||||
if (top == null)
|
||||
|
||||
Reference in New Issue
Block a user