把底层再分割一下

This commit is contained in:
艾竹
2023-01-24 09:02:40 +08:00
parent 2b4662ed37
commit f39a57b3e5
26 changed files with 283 additions and 325 deletions

View File

@@ -452,7 +452,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (e.OldItems != null)
{
foreach (var item in e.OldItems.OfType<SelectableViewModelBase>())
foreach (var item in e.OldItems.OfType<SelectableDesignerItemViewModelBase>())
{
item.PropertyChanged -= Item_PropertyChanged;
item.Dispose();
@@ -460,7 +460,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
if (e.NewItems != null)
{
foreach (var item in e.NewItems.OfType<SelectableViewModelBase>())
foreach (var item in e.NewItems.OfType<SelectableDesignerItemViewModelBase>())
{
item.PropertyChanged += Item_PropertyChanged;
}
@@ -675,9 +675,9 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public ObservableCollection<SelectableViewModelBase> Items { get; set; } = new ObservableCollection<SelectableViewModelBase>();
public ObservableCollection<SelectableDesignerItemViewModelBase> Items { get; set; } = new ObservableCollection<SelectableDesignerItemViewModelBase>();
public List<SelectableViewModelBase> SelectedItems
public List<SelectableDesignerItemViewModelBase> SelectedItems
{
get
{
@@ -698,13 +698,13 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public Func<SelectableViewModelBase, bool> OutAddVerify
public Func<SelectableDesignerItemViewModelBase, bool> OutAddVerify
{
get; set;
}
public bool AddVerify(SelectableViewModelBase item)
public bool AddVerify(SelectableDesignerItemViewModelBase item)
{
if (item.InitData() == false)
return false;
@@ -722,14 +722,14 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDirectAddItemCommand(object parameter)
{
if (parameter is SelectableViewModelBase ite)
if (parameter is SelectableDesignerItemViewModelBase ite)
{
if (AddVerify(ite) != true) return;
ClearSelectedItems();
Add(ite);
}
else if (parameter is List<SelectableViewModelBase> items)
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{
if (items.Select(p => AddVerify(p)).Any() != true) return;
@@ -741,7 +741,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private void Add(SelectableViewModelBase item)
private void Add(SelectableDesignerItemViewModelBase item)
{
item.Parent = this;
item.ZIndex = Items.Count;
@@ -768,7 +768,7 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteAddItemCommand(object parameter)
{
if (parameter is SelectableViewModelBase ite)
if (parameter is SelectableDesignerItemViewModelBase ite)
{
if (AddVerify(ite) != true) return;
@@ -781,7 +781,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Items.Remove(ite);
});
}
else if (parameter is List<SelectableViewModelBase> items)
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{
if (items.Select(p => AddVerify(p)).Any() != true) return;
@@ -801,47 +801,34 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDirectRemoveItemCommand(object parameter)
{
if (parameter is SelectableViewModelBase ite)
if (parameter is SelectableDesignerItemViewModelBase ite)
{
ite.IsSelected = false;
Items.Remove(ite);
if (ite.OutTextItem != null)
{
Items.Remove(ite.OutTextItem);
}
}
else if (parameter is List<SelectableViewModelBase> items)
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{
foreach (var item in items)
{
item.IsSelected = false;
Items.Remove(item);
if (item.OutTextItem != null)
{
Items.Remove(item.OutTextItem);
}
}
}
}
private void ExecuteRemoveItemCommand(object parameter)
{
if (parameter is SelectableViewModelBase ite)
if (parameter is SelectableDesignerItemViewModelBase ite)
{
DoCommandManager.DoNewCommand(this.ToString(),
() => {
ite.IsSelected = false;
Items.Remove(ite);
if (ite.OutTextItem != null)
{
Items.Remove(ite.OutTextItem);
}
},
() => {
Items.Add(ite);
});
}
else if (parameter is List<SelectableViewModelBase> items)
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{
DoCommandManager.DoNewCommand(this.ToString(),
() => {
@@ -849,10 +836,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{
item.IsSelected = false;
Items.Remove(item);
if (item.OutTextItem != null)
{
Items.Remove(item.OutTextItem);
}
}
},
@@ -860,10 +843,6 @@ namespace AIStudio.Wpf.DiagramDesigner
foreach (var item in items)
{
Items.Add(item);
if (item.OutTextItem != null)
{
Items.Add(item.OutTextItem);
}
}
});
@@ -1078,9 +1057,9 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteBringForwardCommand(object parameter)
{
List<SelectableViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(),
@@ -1097,7 +1076,7 @@ namespace AIStudio.Wpf.DiagramDesigner
item.ZIndex = newIndex;
changeditems.Add(item);
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
foreach (var elm in it)
{
@@ -1127,10 +1106,10 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteBringToFrontCommand(object parameter)
{
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(),
@@ -1138,7 +1117,7 @@ namespace AIStudio.Wpf.DiagramDesigner
int i = childrenSorted.Count - 1;
int j = childrenSorted.Count - selectionSorted.Count - 1;
foreach (SelectableViewModelBase item in childrenSorted)
foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
{
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
if (selectionSorted.Contains(item))
@@ -1167,10 +1146,10 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteSendBackwardCommand(object parameter)
{
List<SelectableViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
int count = this.Items.Count;
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(),
@@ -1185,7 +1164,7 @@ namespace AIStudio.Wpf.DiagramDesigner
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
item.ZIndex = newIndex;
changeditems.Add(item);
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
foreach (var elm in it)
{
@@ -1216,10 +1195,10 @@ namespace AIStudio.Wpf.DiagramDesigner
}
private void ExecuteSendToBackCommand(object parameter)
{
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(),
@@ -1227,7 +1206,7 @@ namespace AIStudio.Wpf.DiagramDesigner
int i = childrenSorted.Count - 1;
int j = selectionSorted.Count - 1;
foreach (SelectableViewModelBase item in childrenSorted)
foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
{
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
if (selectionSorted.Contains(item))
@@ -1406,16 +1385,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
//连线上的文本
foreach (var selectedConnection in selectedConnections)
{
if (selectedConnection.OutTextItem != null)
{
selectedDesignerItems.Add(selectedConnection.OutTextItem);
}
}
string json = new SerializableObject
{
DesignerItems = selectedDesignerItems.Select(p => p.ToSerializabObject()).Where(p => p != null).ToList(),
@@ -1438,7 +1407,7 @@ namespace AIStudio.Wpf.DiagramDesigner
return;
try
{
List<SelectableViewModelBase> items = new List<SelectableViewModelBase>();
List<SelectableDesignerItemViewModelBase> items = new List<SelectableDesignerItemViewModelBase>();
SerializableObject copyitem = JsonConvert.DeserializeObject<SerializableObject>(clipboardData);
@@ -1469,7 +1438,7 @@ namespace AIStudio.Wpf.DiagramDesigner
OffsetX += 10;
OffsetY += 10;
List<SelectableViewModelBase> connectors = new List<SelectableViewModelBase>();
List<SelectableDesignerItemViewModelBase> connectors = new List<SelectableDesignerItemViewModelBase>();
foreach (var connection in copyitem.Connections)
{
var connectionItem = JsonConvert.DeserializeObject<ConnectionItem>(connection.ObjectJson);
@@ -1491,12 +1460,6 @@ namespace AIStudio.Wpf.DiagramDesigner
ConnectorViewModel connectionVM = new ConnectorViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem);
connectors.Add(connectionVM);
DesignerItemViewModelBase textItem = items.OfType<DesignerItemViewModelBase>().FirstOrDefault(x => x.ParentId == connectionItem.Id);
if (textItem != null)
{
connectionVM.OutTextItem = textItem;
}
}
DirectAddItemCommand.Execute(connectors);
@@ -1550,7 +1513,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private bool ItemsToDeleteHasConnector(List<SelectableViewModelBase> itemsToRemove, ConnectorInfoBase connector)
private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
{
if (connector is FullyCreatedConnectorInfo fully)
{
@@ -1571,8 +1534,8 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDeleteCommand(object parameter)
{
List<SelectableViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableViewModelBase>().ToList();
List<SelectableViewModelBase> connectionsToAlsoRemove = new List<SelectableViewModelBase>();
List<SelectableDesignerItemViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableDesignerItemViewModelBase>().ToList();
List<SelectableDesignerItemViewModelBase> connectionsToAlsoRemove = new List<SelectableDesignerItemViewModelBase>();
foreach (var connector in Items.OfType<ConnectorViewModel>())
{
@@ -1744,7 +1707,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public void UpdateZIndex()
{
List<SelectableViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
List<SelectableDesignerItemViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
for (int i = 0; i < ordered.Count; i++)