private void ShowRefs() { List <Tuple <bool, string> > param = new List <Tuple <bool, string> >(showRefs.Count); foreach (KeyValuePair <Class, bool> kvp in showRefs) { param.Add(new Tuple <bool, string>(kvp.Value, kvp.Key.Name)); } SelectWindow w = new SelectWindow((IReadOnlyList <Tuple <bool, string> >)param) { Title = "Show references" }; w.ShowDialog(); List <bool> result = w.Result; if (result == null) { return; } for (int i = 0; i < result.Count; ++i) { showRefs[profile.Classes[param[i].Item2]] = result[i]; } Redraw(); }
private void Deselect() { if (selectedNodes.Count <= 0) { return; } List <Tuple <bool, string> > param = new List <Tuple <bool, string> >(selectedNodes.Count); foreach (Node n in selectedNodes) { param.Add(new Tuple <bool, string>(true, n.Instance.GetProperty("mRID") + " : " + n.Instance.Class.Name)); } SelectWindow w = new SelectWindow(param) { Title = "Deselect" }; w.ShowDialog(); List <bool> result = w.Result; if (result == null) { return; } bool change = false; int i = 0; foreach (bool keep in result) { if (keep) { ++i; continue; } selectedNodes[i].Selected = false; selectedNodes.RemoveAt(i); change = true; } if (change) { Redraw(); } }
private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (!loaded) { return; } List <Node> ns = HitTest(e.GetPosition(canvas)); if (ns.Count <= 0) { return; } if (ns.Count == 1) { Node n = ns[0]; if (n.Selected = !n.Selected) { selectedNodes.Add(n); } else { selectedNodes.Remove(n); } Redraw(); return; } List <Tuple <bool, string> > param = new List <Tuple <bool, string> >(ns.Count); foreach (Node n in ns) { param.Add(new Tuple <bool, string>(n.Selected, n.Instance.GetProperty("mRID") + " : " + n.Instance.Class.Name)); } SelectWindow w = new SelectWindow(param) { Title = "Select" }; w.ShowDialog(); List <bool> result = w.Result; if (result == null) { return; } bool change = false; for (int i = 0; i < ns.Count; ++i) { Node n = ns[i]; if (result[i]) { if (!n.Selected) { n.Selected = true; selectedNodes.Add(n); change = true; } } else { if (n.Selected) { n.Selected = false; selectedNodes.Remove(n); change = true; } } } if (change) { Redraw(); } }