mind 有点样子了

This commit is contained in:
艾竹
2023-02-19 21:38:28 +08:00
parent 08a4fddfdc
commit ca1ac13a1f
14 changed files with 1993 additions and 246 deletions

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
@@ -742,7 +743,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
#endregion
private DoCommandManager DoCommandManager = new DoCommandManager();
private DoCommandManager DoCommandManager = new DoCommandManager();
public event DiagramEventHandler Event;
@@ -899,7 +900,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
//加入ReDo
DoCommandManager.DoNewCommand(sender.ToString() + e.PropertyName, () => Do(sender, e.PropertyName, valuePropertyChangedEventArgs.NewValue), () => UnDo(sender, e.PropertyName, valuePropertyChangedEventArgs.OldValue), null, false);
Event?.Invoke(sender, new DiagramEventArgs(valuePropertyChangedEventArgs.PropertyName, valuePropertyChangedEventArgs.NewValue, valuePropertyChangedEventArgs.OldValue, selectable?.Id));
}
}
@@ -992,7 +993,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Items.Remove(ite);
});
}
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
else if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> items)
{
if (items.Select(p => AddVerify(p)).Any() != true) return;
@@ -1005,7 +1006,10 @@ namespace AIStudio.Wpf.DiagramDesigner
}
},
() => {
items.ForEach(item => Items.Remove(item));
foreach (var item in items)
{
Items.Remove(item);
}
});
}
}
@@ -1016,7 +1020,7 @@ namespace AIStudio.Wpf.DiagramDesigner
ite.IsSelected = false;
Items.Remove(ite);
}
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
else if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> items)
{
foreach (var item in items)
{
@@ -1038,7 +1042,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Items.Add(ite);
});
}
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
else if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> items)
{
DoCommandManager.DoNewCommand(this.ToString(),
() => {
@@ -1060,8 +1064,22 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteClearSelectedItemsCommand(object parameter)
{
ClearSelectedItems();
IEnumerable<SelectableDesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
foreach (var item in selectedItems)
{
item.IsSelected = false;
}
}
public void ClearSelectedItems()
{
foreach (var item in this.Items.ToList())
@@ -1081,7 +1099,15 @@ namespace AIStudio.Wpf.DiagramDesigner
#region
private void ExecuteAlignTopCommand(object parameter)
{
var selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1113,7 +1139,15 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteAlignVerticalCentersCommand(object parameter)
{
var selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1145,7 +1179,16 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteAlignBottomCommand(object parameter)
{
var selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1177,7 +1220,16 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteAlignLeftCommand(object parameter)
{
var selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1209,7 +1261,16 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteAlignHorizontalCentersCommand(object parameter)
{
var selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1241,7 +1302,16 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteAlignRightCommand(object parameter)
{
var selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1274,7 +1344,15 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteBringForwardCommand(object parameter)
{
List<SelectableDesignerItemViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> ordered;
if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> para)
{
ordered = para.OrderByDescending(p => p.ZIndex).ToList();
}
else
{
ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
}
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid();
@@ -1323,7 +1401,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteBringToFrontCommand(object parameter)
{
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> selectionSorted;
if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> para)
{
selectionSorted = para.OrderByDescending(p => p.ZIndex).ToList();
}
else
{
selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
}
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
@@ -1363,7 +1450,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteSendBackwardCommand(object parameter)
{
List<SelectableDesignerItemViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> ordered;
if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> para)
{
ordered = para.OrderBy(p => p.ZIndex).ToList();
}
else
{
ordered = SelectedItems.OrderBy(p => p.ZIndex).ToList();
}
int count = this.Items.Count;
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
@@ -1412,7 +1508,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteSendToBackCommand(object parameter)
{
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> selectionSorted;
if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> para)
{
selectionSorted = para.OrderByDescending(p => p.ZIndex).ToList();
}
else
{
selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
}
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
@@ -1452,10 +1557,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteDistributeHorizontalCommand(object parameter)
{
var selectedItems = from item in this.SelectedItems.OfType<DesignerItemViewModelBase>()
where item.ParentId == Guid.Empty
orderby item.Left
select item;
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para.Where(p => p.ParentId == Guid.Empty).OrderBy(p => p.Left);
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>().Where(p => p.ParentId == Guid.Empty).OrderBy(p => p.Left);
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1509,10 +1620,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteDistributeVerticalCommand(object parameter)
{
var selectedItems = from item in this.SelectedItems.OfType<DesignerItemViewModelBase>()
where item.ParentId == Guid.Empty
orderby item.Top
select item;
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para.Where(p => p.ParentId == Guid.Empty).OrderBy(p => p.Top);
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>().Where(p => p.ParentId == Guid.Empty).OrderBy(p => p.Top);
}
var guid = Guid.NewGuid();
if (selectedItems.Count() > 1)
@@ -1568,11 +1685,21 @@ namespace AIStudio.Wpf.DiagramDesigner
#region
private void ExecuteCopyCommand(object parameter)
{
List<DesignerItemViewModelBase> selectedDesignerItems =
SelectedItems.OfType<DesignerItemViewModelBase>().ToList();
List<DesignerItemViewModelBase> selectedDesignerItems;
List<ConnectionViewModel> selectedConnections;
if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> para)
{
selectedDesignerItems = para.OfType<DesignerItemViewModelBase>().ToList();
selectedConnections = para.OfType<ConnectionViewModel>().ToList();
}
else
{
selectedDesignerItems = SelectedItems.OfType<DesignerItemViewModelBase>().ToList();
selectedConnections = SelectedItems.OfType<ConnectionViewModel>().ToList();
}
List<ConnectionViewModel> selectedConnections =
SelectedItems.OfType<ConnectionViewModel>().ToList();
foreach (ConnectionViewModel connection in Items.OfType<ConnectionViewModel>())
{
@@ -1712,7 +1839,17 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDeleteCommand(object parameter)
{
List<SelectableDesignerItemViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableDesignerItemViewModelBase>().ToList();
List<SelectableDesignerItemViewModelBase> itemsToRemove;
if (parameter is IEnumerable<SelectableDesignerItemViewModelBase> para)
{
itemsToRemove = para.OfType<SelectableDesignerItemViewModelBase>().ToList();
}
else
{
itemsToRemove = SelectedItems.OfType<SelectableDesignerItemViewModelBase>().ToList();
}
List<SelectableDesignerItemViewModelBase> connectionsToAlsoRemove = new List<SelectableDesignerItemViewModelBase>();
foreach (var connector in Items.OfType<ConnectionViewModel>())
@@ -1737,7 +1874,17 @@ namespace AIStudio.Wpf.DiagramDesigner
#region
private void ExecuteLeftMoveCommand(object parameter)
{
foreach (var item in SelectedItems.OfType<DesignerItemViewModelBase>())
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
foreach (var item in selectedItems.OfType<DesignerItemViewModelBase>())
{
item.Left -= 0.5;
}
@@ -1745,7 +1892,17 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteRightMoveCommand(object parameter)
{
foreach (var item in SelectedItems.OfType<DesignerItemViewModelBase>())
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
foreach (var item in selectedItems.OfType<DesignerItemViewModelBase>())
{
item.Left += 0.5;
}
@@ -1753,7 +1910,17 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteUpMoveCommand(object parameter)
{
foreach (var item in SelectedItems.OfType<DesignerItemViewModelBase>())
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
foreach (var item in selectedItems.OfType<DesignerItemViewModelBase>())
{
item.Top -= 0.5;
}
@@ -1761,7 +1928,17 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDownMoveCommand(object parameter)
{
foreach (var item in SelectedItems.OfType<DesignerItemViewModelBase>())
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
foreach (var item in selectedItems.OfType<DesignerItemViewModelBase>())
{
item.Top += 0.5;
}
@@ -1769,7 +1946,17 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteCenterMoveCommand(object parameter)
{
foreach (var item in SelectedItems.OfType<DesignerItemViewModelBase>())
IEnumerable<DesignerItemViewModelBase> selectedItems;
if (parameter is IEnumerable<DesignerItemViewModelBase> para)
{
selectedItems = para;
}
else
{
selectedItems = this.SelectedItems.OfType<DesignerItemViewModelBase>();
}
foreach (var item in selectedItems.OfType<DesignerItemViewModelBase>())
{
item.Left = (PageSize.Width - item.ItemWidth) / 2;
item.Top = (PageSize.Height - item.ItemHeight) / 2;
@@ -1780,7 +1967,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{
List<SelectableDesignerItemViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
for (int i = 0; i < ordered.Count; i++)
{
ordered[i].ZIndex = i;