Example #1
0
 private void OnNodeAfterExpand(object sender, TreeViewEventArgs e)
 {
     if (e.Node != null)
     {
         GUITools.SetTreeNodeImage(e.Node, "folder1");
     }
 }
Example #2
0
 private void OnAfterCollapse(object sender, TreeViewEventArgs e)
 {
     if (e.Node != null)
     {
         GUITools.SetTreeNodeImage(e.Node, "folder0");
     }
 }
Example #3
0
        private void CreateNodes()
        {
            EditorTreeView.Nodes.Clear();
            foreach (PropertyInfo propertyInfo in SelectedObjectType.GetProperties())
            {
                TreeViewPropertyAttribute tvpa = propertyInfo.GetCustomAttribute <TreeViewPropertyAttribute>();
                if (tvpa == null)
                {
                    continue;
                }

                TreeNodeCollection nodeCollection = EditorTreeView.Nodes;

                if (tvpa.ParentNode != null) // Property belongs to a category/folder
                {
                    string parentNodeKey = $"*{tvpa.ParentNode}";
                    if (!EditorTreeView.Nodes.ContainsKey(parentNodeKey)) // Folder does not exist, create it
                    {
                        TreeNode parentNode = new TreeNode(tvpa.ParentNode)
                        {
                            Name = parentNodeKey, ImageKey = "folder0", SelectedImageKey = "folder0"
                        };
                        EditorTreeView.Nodes.Add(parentNode);
                    }

                    nodeCollection = EditorTreeView.Nodes[parentNodeKey].Nodes;
                }

                TreeNode node = new TreeNode
                {
                    Text        = tvpa.DisplayName,
                    Name        = propertyInfo.Name,
                    ToolTipText = tvpa.Description
                };
                GUITools.SetTreeNodeImage(node, "Setting");

                nodeCollection.Add(node);

                if (propertyInfo.PropertyType.IsArray)
                {
                    GUITools.SetTreeNodeImage(node, "folder0");

                    if (tvpa.DataSourceType.IsEnum)
                    {
                        foreach (object enumValue in Enum.GetValues(tvpa.DataSourceType))
                        {
                            GUITools.GetDisplayStrings(tvpa.DataSourceType, enumValue, out string enumDisplayName, out string enumDescription);
                            node.Nodes.Add($"#{enumValue}", enumDisplayName, "checkbox0", "checkbox0").ToolTipText = enumDescription;
                        }
                    }
                    else if (tvpa.DataSourceType.IsSubclassOf(typeof(DBEntry)))
                    {
                        foreach (DBEntry entry in Database.Instance.GetAllEntries(tvpa.DataSourceType))
                        {
                            node.Nodes.Add($"#{entry.ID}", entry.UIDisplayName, "checkbox0", "checkbox0").ToolTipText = entry.UIDescription;
                        }
                    }
                }
            }

            EditorTreeView.Sort();
        }