示例#1
0
        /// <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);
        }
示例#2
0
        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;
        }