public override void OnPortDrivesSignalNoLonger(Signal signal, Port port, int outputIndex) { if (maskMDrives) { return; } bool wasMasked = maskNDrives; try { maskNDrives = true; SignalShape ss = _bridge.Signals[signal.InstanceId]; PortShape ps = _bridge.Ports[port.InstanceId]; IConnector sc = ss.InputConnector; IConnector pc = ps.OutputConnectors[outputIndex]; IConnection connection = _bridge.Model.ConnectorHolders[pc.AttachedTo] as IConnection; sc.DetachConnector(connection.From); sc.DetachConnector(connection.To); pc.DetachConnector(connection.From); pc.DetachConnector(connection.To); _bridge.Model.Remove(connection); } finally { maskNDrives = wasMasked; } }
public override void OnPortDrivesSignal(Signal signal, Port port, int outputIndex) { if (maskMDrives) { return; } bool wasMasked = maskNDrives; try { maskNDrives = true; SignalShape ss = _bridge.Signals[signal.InstanceId]; PortShape ps = _bridge.Ports[port.InstanceId]; IConnector sc = ss.InputConnector; IConnector pc = ps.OutputConnectors[outputIndex]; Connection cn = new Connection(Point.Empty, Point.Empty); _bridge.Model.AddConnection(cn); pc.AttachConnector(cn.From); sc.AttachConnector(cn.To); ss.Location = new Point(pc.Point.X - 16, pc.Point.Y - 10); _bridge.Model.SendToFront(ss); } finally { maskNDrives = wasMasked; } }
public override void OnPortRemoved(Port port, int index) { if (!_bridge.Ports.ContainsKey(port.InstanceId)) { return; } PortShape shape = _bridge.Ports[port.InstanceId]; _bridge.Ports.Remove(port.InstanceId); _bridge.Model.RemoveShape(shape); _presentation.Invalidate(); }
public override void OnSignalDrivesPort(Signal signal, Port port, int inputIndex) { SignalShape ss = _bridge.Signals[signal.InstanceId]; PortShape ps = _bridge.Ports[port.InstanceId]; IConnector sc = ss.OutputConnector; IConnector pc = ps.InputConnectors[inputIndex]; Connection cn = new Connection(Point.Empty, Point.Empty); sc.AttachConnector(cn.From); pc.AttachConnector(cn.To); _bridge.Model.AddConnection(cn); }
public override void OnPortAdded(Port port, int index) { if (_bridge.Ports.ContainsKey(port.InstanceId)) { return; } PortShape shape = new PortShape(new CommandReference(port.InstanceId, index)); shape.Port = port; shape.Location = CreateRandomLocation(); _bridge.Ports.Add(port.InstanceId, shape); _bridge.Model.AddShape(shape); _presentation.Invalidate(); }
public override void OnPortDrivesSignal(Signal signal, Port port, int outputIndex) { SignalShape ss = _bridge.Signals[signal.InstanceId]; PortShape ps = _bridge.Ports[port.InstanceId]; IConnector sc = ss.InputConnector; IConnector pc = ps.OutputConnectors[outputIndex]; Connection cn = new Connection(Point.Empty, Point.Empty); pc.AttachConnector(cn.From); sc.AttachConnector(cn.To); _bridge.Model.AddConnection(cn); ss.Location = new Point(pc.Point.X - 16, pc.Point.Y - 10); _bridge.Model.SendToFront(ss); }
void NetronEntityRemovedHandler(object sender, EntityEventArgs e) { IDiagramEntity entity = e.Entity; SignalShape ss = entity as SignalShape; if (ss != null) { if (!_bridge.Signals.ContainsValue(ss)) { return; } _bridge.Signals.Remove(ss.SignalReference.InstanceId); PostCommandRemoveSignal(ss.SignalReference, true); return; } BusShape bs = entity as BusShape; if (bs != null) { if (!_bridge.Buses.ContainsValue(bs)) { return; } _bridge.Buses.Remove(bs.BusReference.InstanceId); PostCommandRemoveBus(bs.BusReference); return; } PortShape ps = entity as PortShape; if (ps != null) { if (!_bridge.Ports.ContainsValue(ps)) { return; } _bridge.Ports.Remove(ps.PortReference.InstanceId); PostCommandRemovePort(ps.PortReference, true); return; } IConnection cn = entity as IConnection; if (cn != null) { } }
void Model_OnConnectorAttached(object sender, ConnectorsEventArgs e) { if (maskNDrives) { return; } bool wasMasked = maskMDrives; try { maskMDrives = true; IConnection con = _bridge.Model.ConnectorHolders[e.SubjectConnector] as IConnection; // get rid of uninteresting situations if (con != null) { if (con.From.AttachedTo == null || con.To.AttachedTo == null) { return; } } else { con = _bridge.Model.ConnectorHolders[e.ObjectConnector] as IConnection; if (con != null) { if (con.From.AttachedTo == null || con.To.AttachedTo == null) { return; } } else { return; } } // find out who connects to whom IConnector portConnector = con.From.AttachedTo; IShape portShape = (IShape)_bridge.Model.ConnectorHolders[portConnector]; IShape valueShape = (IShape)_bridge.Model.ConnectorHolders[con.To.AttachedTo]; PortShape port = portShape as PortShape; if (port == null) { port = valueShape as PortShape; if (port == null) { return; } valueShape = portShape; //ensure valueShape should now be either signal or bus portConnector = con.To.AttachedTo; } SignalShape signal = valueShape as SignalShape; if (signal != null) { // PORT <-> SIGNAL int index = -1; List <YttriumConnector> sl = port.InputConnectors; for (int i = 0; i < sl.Count; i++) { if (sl[i] == portConnector) { index = i; break; } } if (index > -1) { PostCommandSignalDrivesPort(signal.SignalReference, port.PortReference, index); return; } index = -1; sl = port.OutputConnectors; for (int i = 0; i < sl.Count; i++) { if (sl[i] == portConnector) { index = i; break; } } if (index > -1) { PostCommandPortDrivesSignal(signal.SignalReference, port.PortReference, index); } return; } BusShape bus = valueShape as BusShape; if (bus != null) { // PORT <-> BUS int index = -1; List <YttriumConnector> bl = port.BusConnectors; for (int i = 0; i < bl.Count; i++) { if (bl[i] == portConnector) { index = i; break; } } if (index > -1) { PostCommandBusAttachedToPort(bus.BusReference, port.PortReference, index); } return; } } finally { maskMDrives = wasMasked; } }