diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs index 29b7203..9b92bbb 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs @@ -68,17 +68,22 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public ConnectorValueType _valueType; + public ConnectorValueType _connectorValueType; public ConnectorValueType ConnectorValueType { get { - return _valueType; + return _connectorValueType; } set { - SetProperty(ref _valueType, value); + SetProperty(ref _connectorValueType, value); } } + + public bool IsError + { + get;set; + } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index 7cc9d68..13db7b9 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -1420,6 +1420,7 @@ namespace AIStudio.Wpf.DiagramDesigner if (parameter is SelectableDesignerItemViewModelBase ite) { ite.IsSelected = false; + ite.Dispose(); Items.Remove(ite); } else if (parameter is IEnumerable items) @@ -1427,6 +1428,7 @@ namespace AIStudio.Wpf.DiagramDesigner foreach (var item in items) { item.IsSelected = false; + item.Dispose(); Items.Remove(item); } } @@ -1451,18 +1453,12 @@ namespace AIStudio.Wpf.DiagramDesigner if (olditems.Any()) { DoCommandManager.DoNewCommand(this.ToString(), - () => { - foreach (var item in olditems) - { - Items.Remove(item); - } - }, - () => { - foreach (var item in olditems) - { - Items.Add(item); - } - }); + () => { + Remove(olditems); + }, + () => { + Add(olditems); + }); } } @@ -3040,27 +3036,33 @@ namespace AIStudio.Wpf.DiagramDesigner } else if (DiagramOption.ShortcutOption.Copy(e)) { - return Copy(null) != null; + CopyCommand.Execute(null); + return true; } else if (DiagramOption.ShortcutOption.Paste(e)) { - return Paste(null) != null; + PasteCommand.Execute(null); + return true; } else if (DiagramOption.ShortcutOption.Cut(e)) { - return Cut(null) != null; + CutCommand.Execute(null); + return true; } else if (DiagramOption.ShortcutOption.Undo(e)) { - return Undo(null); + UndoCommand.Execute(null); + return true; } else if (DiagramOption.ShortcutOption.Redo(e)) { - return Redo(null); + RedoCommand.Execute(null); + return true; } else if (DiagramOption.ShortcutOption.Delete(e)) { - return Delete(null) != null; + DeleteCommand.Execute(null); + return true; } else if (DiagramOption.ShortcutOption.LeftMove(e)) { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs index 336a23e..e8cb3ad 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs @@ -14,7 +14,7 @@ using Newtonsoft.Json; namespace AIStudio.Wpf.DiagramDesigner { - public abstract class SelectableViewModelBase : BindableBase, ISelectable + public abstract class SelectableViewModelBase : BindableBase, ISelectable, IDisposable { protected IDiagramServiceProvider _service { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs index ba8c988..989be5a 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs @@ -303,7 +303,11 @@ namespace AIStudio.Wpf.DiagramDesigner { foreach (var output in Output) { - if (output.Value.ConnectorValueType == ConnectorValueType.Bool) + if (output.Value.IsError) + { + output.Value.ColorViewModel.FillColor.Color = Colors.Orange; + } + else if (output.Value.ConnectorValueType == ConnectorValueType.Bool) { if (output.Value.ConnectorValue == 0) {