private void OnNodeAfterExpand(object sender, TreeViewEventArgs e) { if (e.Node != null) { GUITools.SetTreeNodeImage(e.Node, "folder1"); } }
private void OnAfterCollapse(object sender, TreeViewEventArgs e) { if (e.Node != null) { GUITools.SetTreeNodeImage(e.Node, "folder0"); } }
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(); }