/// <summary> /// Start drag a new connection. Called from InputWidget and OperatorWidget when staring to drag from output thumb /// </summary> public void Start(Point p, IConnectionLineSource src, int outputIdx) { _sourceOutputIndex = -1; if (outputIdx < 0 || outputIdx >= src.Outputs.Count) { return; } _sourceOutputIndex = outputIdx; _sourceWidget = src; _startPosition = p; // NOTE: In the long term, this should be capable of handling simultaneously creating multiple connection _lastPosition = _startPosition; var cl = new ConnectionLine(_sourceWidget.CV.CompositionGraphView.CompositionOperator, _sourceWidget, _sourceWidget.Outputs[outputIdx]); _sourceWidget.CV.CompositionGraphView.UnfinishedConnections.Add(cl); _sourceWidget.CV.CompositionGraphView.XOperatorCanvas.Children.Add(cl); cl.UpdateDuringConstruction(_lastPosition); }
public void RewireExistingConnection(ConnectionLine cl, Point startPoint, int outputIdx) { _sourceOutputIndex = -1; if (outputIdx < 0 || outputIdx >= cl.Source.Outputs.Count) { return; } _sourceWidget = cl.Source; _sourceOutputIndex = outputIdx; _startPosition = startPoint; _lastPosition = _startPosition; // Delete old connection from model... cl.Remove(); cl.Target.UpdateConnections(); // ...and restart as unfinished connection line _sourceWidget.CV.CompositionGraphView.UnfinishedConnections.Add(cl); _sourceWidget.CV.CompositionGraphView.XOperatorCanvas.Children.Add(cl); cl.UpdateDuringConstruction(_lastPosition); cl.IsSelected = true; }