public NodeData(NodeData parent, object data, string objectName, ObjectKind kind) { _data = data; _kind = kind; _parent = parent; this.objectName = objectName; }
void AddNewNode(TreeNode parent, TreeNode child, NodeData data) { if (parent == null) { treeViewVariables.Nodes.Add(child); } else { parent.Nodes.Add(child); } child.Tag = data; child.Nodes.Add(_specialNodeName); }
void treeViewVariables_BeforeExpand(object sender, TreeViewCancelEventArgs e) { var firstChild = e.Node.FirstNode; if (firstChild.Text.CompareTo(_specialNodeName) == 0) { e.Node.Nodes.Clear(); } Dictionary<string, TreeNode> map = new Dictionary<string, TreeNode>(); foreach (TreeNode node in e.Node.Nodes) { node.Tag = null; // unmapped map[node.Text] = node; } var objectToInspect = (NodeData)e.Node.Tag; var ctx = _engine.CreateScriptContext(); ctx.SetVariable("targetObject", objectToInspect.Data); var list = ctx.ExecuteString("l = dir(targetObject); l.sort();\nl"); foreach (var l in list) { string nodeName = l.ToString(); var nodeData = new NodeData(objectToInspect, l, l, ObjectKind.String); ; if (map.ContainsKey(nodeName)) { map[nodeName].Tag = nodeData; } else { AddNewNode(e.Node, new TreeNode(nodeName), nodeData); } } treeViewVariables.BeginUpdate(); try { foreach (var de in map) { if (de.Value.Tag == null) { de.Value.Remove(); } } } finally { treeViewVariables.EndUpdate(); } }
public void UpdateVariables() { Compile("").Execute(); Dictionary<string, TreeNode> map = new Dictionary<string, TreeNode>(); foreach (TreeNode node in treeViewVariables.Nodes) { node.Tag = null; // unmapped map[node.Text] = node; } foreach (var global in _context.GetGlobals()) { string nodeName = global[0]; var nodeData = new NodeData(null, global[1], global[0], ObjectKind.Object); if (map.ContainsKey(nodeName)) { map[nodeName].Tag = nodeData; // unmapped } else { var treeNode = new TreeNode(nodeName); AddNewNode(null, treeNode, nodeData); map[nodeName] = treeNode; } } treeViewVariables.BeginUpdate(); try { foreach (var de in map) { if (de.Value.Tag == null) { de.Value.Remove(); } } } finally { treeViewVariables.EndUpdate(); } }