41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
using T3.Core.Operator;
|
|
|
|
namespace T3.Editor.UiModel.Commands.Graph;
|
|
|
|
internal sealed class DeleteConnectionCommand : ICommand
|
|
{
|
|
public string Name => "Delete Connection";
|
|
public bool IsUndoable => true;
|
|
|
|
internal DeleteConnectionCommand(Symbol compositionSymbol, Symbol.Connection connectionToRemove, int multiInputIndex)
|
|
{
|
|
_removedConnection = connectionToRemove.Clone();
|
|
_compositionSymbolId = compositionSymbol.Id;
|
|
_multiInputIndex = multiInputIndex;
|
|
}
|
|
|
|
public void Do()
|
|
{
|
|
if(!SymbolUiRegistry.TryGetSymbolUi(_compositionSymbolId, out var symbolUi))
|
|
throw new Exception("Symbol not found: " + _compositionSymbolId);
|
|
|
|
var compositionSymbol = symbolUi.Symbol;
|
|
compositionSymbol.RemoveConnection(_removedConnection, _multiInputIndex);
|
|
|
|
symbolUi.FlagAsModified();
|
|
}
|
|
|
|
public void Undo()
|
|
{
|
|
if(!SymbolUiRegistry.TryGetSymbolUi(_compositionSymbolId, out var symbolUi))
|
|
throw new Exception("Symbol not found: " + _compositionSymbolId);
|
|
|
|
var compositionSymbol = symbolUi.Symbol;
|
|
compositionSymbol.AddConnection(_removedConnection, _multiInputIndex);
|
|
symbolUi.FlagAsModified();
|
|
}
|
|
|
|
private readonly Guid _compositionSymbolId;
|
|
private readonly Symbol.Connection _removedConnection;
|
|
private readonly int _multiInputIndex;
|
|
} |