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); }
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); }
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; } }