protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); switch (Drag) { case DragOp.CableFrom: { var src = Selected as TPin; var dest = Hovered as TPin; if (dest != null && !dest.IsOutput && dest.Module.Mod.Inputs[dest.Index] == null) { try { MyGraph.Connect(src.Module.Mod, dest.Module.Mod, (dest.Index > 0 ? dest.Module.Mod.Definition.ParamNames[dest.Index - 1] : null)); } catch (ModelException me) { MessageBox.Show(me.Message); } Dirty = true; } DragCable = null; Invalidate(); } break; case DragOp.CableTo: { var src = Hovered as TPin; var dest = Selected as TPin; if (src != null && src.IsOutput) { try { MyGraph.Connect(src.Module.Mod, dest.Module.Mod, (dest.Index > 0 ? dest.Module.Mod.Definition.ParamNames[dest.Index - 1] : null)); } catch (ModelException me) { MessageBox.Show(me.Message); } Dirty = true; } DragCable = null; Invalidate(); } break; } Drag = DragOp.None; }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); SetHovered(Hit(e.Location)); switch (Drag) { case DragOp.Module: { var tmod = Selected as TModule; tmod.Mod.X = Math.Max(0, e.X - DragOffset.X); tmod.Mod.Y = Math.Max(0, e.Y - DragOffset.Y); Dirty = true; Invalidate(); } break; case DragOp.CableFrom: { var tpin = Selected as TPin; DragCable = new TCable(tpin.Module, e.Location, this); Invalidate(); } break; case DragOp.CableTo: { var tpin = Selected as TPin; DragCable = new TCable(e.Location, tpin.Module, tpin.Index, this); Invalidate(); } break; } }