private void AddChildren(Thing t, TreeViewItem tvi, int depth) { List <Thing> theChildren; if ((bool)checkBoxSort.IsChecked) { theChildren = t.Children.OrderByDescending(x => x.useCount).ToList(); } else { theChildren = t.Children; } for (int i = 0; i < theChildren.Count; i++) { Thing child = theChildren[i]; string header = child.Label + ":" + child.useCount; if (child.References.Count > 0) { header += " ("; ModuleUKS parent = (ModuleUKS)base.ParentModule; Thing best = parent.FindBestReference(child); foreach (Link L in child.References) { if (L.T == best) { header += "*"; } if (L.weight < 0) { header += "-"; } header += L.T.Label + ", "; } header = header.Substring(0, header.Length - 2); header += ")"; } if (child.V != null) { if (child.V is int iVal) { header += " : " + iVal.ToString("X"); } else { header += " : " + child.V.ToString(); } } TreeViewItem tviChild = new TreeViewItem { Header = header }; if (expandedItems.Contains(LeftOfColon(header))) { tviChild.IsExpanded = true; } tvi.Items.Add(tviChild); tviChild.MouseRightButtonDown += Tvi_MouseRightButtonDown; if (depth < maxDepth) { AddChildren(child, tviChild, depth + 1); AddReferences(child, tviChild); AddReferencedBy(child, tviChild); } } }
private void AddChildren(Thing t, TreeViewItem tvi, int depth, string parentLabel) { if (totalItemCount > 3000) { return; } IList <Thing> theChildren; if ((bool)checkBoxSort.IsChecked) { theChildren = t.Children.OrderByDescending(x => x.useCount).ToList(); } else { theChildren = t.Children; } for (int i = 0; i < theChildren.Count; i++) { Thing child = theChildren[i]; string header = child.Label + ":" + child.useCount; if (child.References.Count > 0) { header += " ("; ModuleUKS parent = (ModuleUKS)base.ParentModule; Thing best = parent.FindBestReference(child); List <Link> refs = child.References.OrderBy(x => - x.Value1).ToList(); for (int j = 0; j < refs.Count; j++)// child.References.Count; j++)// each (Link L in child.References) { if (header.Length - header.LastIndexOf('\n') > charsPerLine - 7 * depth) { header += "\n"; } Link l = refs[j];// child.References[j]; if (l is Relationship r) { header += r.relationshipType.Label + "->" + r.T.Label + ", "; } else { if (l.T == best) { header += "*"; } if (l.weight < 0) { header += "-"; } header += l.T.Label + ", "; } } //header = header.Substring(0, header.Length - 2); header += ")"; } if (child.V != null) { if (child.V is int iVal) { header += " : " + iVal.ToString("X"); } else { header += " : " + child.V.ToString(); } } TreeViewItem tviChild = new TreeViewItem { Header = header }; if (child.lastFired == MainWindow.theNeuronArray.Generation) { tviChild.Background = new SolidColorBrush(Colors.LightGreen); } if (expandedItems.Contains("|" + parentLabel + "|" + LeftOfColon(header))) { tviChild.IsExpanded = true; } tvi.Items.Add(tviChild); totalItemCount++; tviChild.MouseRightButtonDown += Tvi_MouseRightButtonDown; if (depth < maxDepth) { AddChildren(child, tviChild, depth + 1, parentLabel + "|" + child.Label); AddReferences(child, tviChild, parentLabel); AddReferencedBy(child, tviChild, parentLabel); } } }