public void RefreshCanvas() { if (PART_Canvas == null || rockRefresh || MatDataObjects == null) return; rockRefresh = true; for (int i = PART_Canvas.Children.Count - 1; i >= 0; i--) { MatDataObjectControl objc = PART_Canvas.Children[i] as MatDataObjectControl; if (objc != null) { bool exist = false; foreach (MatDataObject o in MatDataObjects) { if (objc.MyMatDataObject == o) exist = true; } if (!exist) { objc.MyMatDataObject.DisconnectAll(); PART_Canvas.Children.Remove(objc); ctrls.Remove(objc); if (objc.MyMatDataObject is Module) ((Module)objc.MyMatDataObject).IsUsing = false; } } } foreach (MatDataObject o in MatDataObjects) { bool exist = false; foreach (UIElement e in PART_Canvas.Children) { MatDataObjectControl objc = e as MatDataObjectControl; if (objc != null && objc.MyMatDataObject == o) exist = true; } if (!exist) { MatDataObjectControl ctrl = new MatDataObjectControl(this) { MyMatDataObject = o }; Module m = o as Module; if (m != null) { ctrl.BorderBrush = new SolidColorBrush(Color.FromArgb(255, 200, 100, 100)); } ctrl.StateChanged += Ctrl_StateChanged; ctrls.Add(ctrl); PART_Canvas.Children.Add(ctrl); } } Utility.UpdateUI(); rockRefresh = false; RefreshLines(); }
private MatDataOutputPortControl SearchOutputPortControl(MatDataOutputPort port, MatDataObjectControl portIn) { foreach(UIElement uie in portIn.PART_Outputs.Children) { MatDataOutputPortControl outpc = uie as MatDataOutputPortControl; if (outpc != null && outpc.OutputPort == port) return outpc; } return null; }