Exemple #1
0
        private void MouseCreateCanvasConnection(ICanvas canvas, IPoint point)
        {
            var root = Insert.Pin(canvas, point, Context.DiagramCreator, Context.EnableSnap);

            Context.CurrentRoot = root;

            double x = Context.CurrentRoot.GetX();
            double y = Context.CurrentRoot.GetY();

            Context.CurrentLine = WireEditor.Connect(canvas, Context.CurrentRoot, Context.CurrentLine, x, y, Context.DiagramCreator);
            if (Context.CurrentLine == null)
            {
                Context.CurrentRoot = null;
            }

            Context.CurrentRoot = root;
            Context.CurrentLine = WireEditor.Connect(canvas, Context.CurrentRoot, Context.CurrentLine, x, y, Context.DiagramCreator);
        }
Exemple #2
0
        public bool MouseEventPreviewLeftDown(ICanvas canvas, IPoint point, IThumb pin)
        {
            if (CanConnectToPin(pin))
            {
                if (Context.CurrentLine == null)
                {
                    Snapshot(canvas, true);
                }

                Connect(canvas, pin, Context.DiagramCreator);

                return(true);
            }
            else if (Context.CurrentLine != null)
            {
                var element = MouseGetElementAtPoint(canvas, point);
                if (CanSplitWire(element))
                {
                    if (Context.CurrentLine == null)
                    {
                        Snapshot(canvas, true);
                    }

                    bool result = WireEditor.Split(canvas, element as ILine, Context.CurrentLine, point, Context.DiagramCreator, Context.EnableSnap);

                    Context.CurrentRoot = null;
                    Context.CurrentLine = null;

                    return(result);
                }
            }

            if (CanToggleLine())
            {
                MouseToggleLineSelection(canvas, point);
            }

            return(false);
        }
Exemple #3
0
        private void Connect(ICanvas canvas, IThumb pin, IDiagramCreator creator)
        {
            if (pin == null)
            {
                return;
            }

            Context.CurrentRoot = pin.GetParent() as IThumb;

            double x;
            double y;

            ModelEditor.GetPinPosition(Context.CurrentRoot, pin, out x, out y);

            Context.CurrentLine = WireEditor.Connect(canvas,
                                                     Context.CurrentRoot, Context.CurrentLine,
                                                     x, y,
                                                     creator);

            if (Context.CurrentLine == null)
            {
                Context.CurrentRoot = null;
            }
        }