protected ElementControl(Circuit.Element E) { element = E; element.Tag = this; UseLayoutRounding = true; Background = Brushes.Transparent; foreach (Circuit.Terminal i in E.Terminals) i.ConnectionChanged += (x, y) => InvalidateVisual(); }
protected ElementControl(Circuit.Element E) { element = E; element.Tag = this; Background = Brushes.Transparent; foreach (Circuit.Terminal i in E.Terminals) { i.ConnectionChanged += (x, y) => InvalidateVisual(); } }
public static ElementControl New(Circuit.Element E) { if (E is Circuit.Wire wire) { return(new WireControl(wire)); } else if (E is Circuit.Symbol symbol) { return(new SymbolControl(symbol)); } else { throw new NotImplementedException(); } }
private void ElementLayoutChanged(object sender, EventArgs e) { Circuit.Element element = (Circuit.Element)sender; Circuit.Coord lb = element.LowerBound; Circuit.Coord ub = element.UpperBound; ElementControl control = (ElementControl)element.Tag; Canvas.SetLeft(control, lb.x + origin.x); Canvas.SetTop(control, lb.y + origin.y); control.Width = ub.x - lb.x; control.Height = ub.y - lb.y; control.InvalidateVisual(); }
public override ContextMenu BuildContextMenu(Circuit.Coord At) { Circuit.Element at = Target.AtPoint(At).FirstOrDefault(); if (at != null && !((ElementControl)at.Tag).Selected) { Target.ToggleSelect(at); } ContextMenu menu = new ContextMenu(); menu.Items.Add(new MenuItem() { Command = ApplicationCommands.SelectAll, CommandTarget = Target }); menu.Items.Add(new Separator()); menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Cut, CommandTarget = Target }); menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Copy, CommandTarget = Target }); menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Paste, CommandTarget = Target }); menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Delete, CommandTarget = Target }); menu.Items.Add(new Separator()); menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Undo, CommandTarget = Target }); menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Redo, CommandTarget = Target }); return(menu); }
protected void OnLayoutChanged(object sender, EventArgs e) { Circuit.Element E = (Circuit.Element)sender; }