Exemplo n.º 1
0
 public NodeData(NodeData parent, object data, string objectName, ObjectKind kind)
 {
     _data = data;
     _kind = kind;
     _parent = parent;
     this.objectName = objectName;
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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();
                }
        }
Exemplo n.º 4
0
        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();
            }
        }