调整
This commit is contained in:
parent
4b44a3ebcf
commit
9770157420
@ -43,23 +43,16 @@ public partial class ParsedInfoPanel : Tree
|
||||
if (_node == null) return;
|
||||
|
||||
var root = CreateItem();
|
||||
var keys = new HashSet<string>();
|
||||
var curr = _node;
|
||||
|
||||
while (curr != null)
|
||||
var kvs = _node.GetKeyValueInfos();
|
||||
foreach (var kv in kvs)
|
||||
{
|
||||
foreach (var kv in curr.Info.Info)
|
||||
var node = CreateItem(root);
|
||||
if (kv.IsInherited)
|
||||
{
|
||||
if(!keys.Add(kv.Key)) continue;
|
||||
var node = CreateItem(root);
|
||||
if (curr != _node)
|
||||
{
|
||||
node.SetText(NotesColumn, "(继承)");
|
||||
}
|
||||
node.SetText(KeyColumn, kv.Key);
|
||||
node.SetText(ValueColumn, kv.Value);
|
||||
node.SetText(NotesColumn, "(继承)");
|
||||
}
|
||||
curr = curr.Parent;
|
||||
node.SetText(KeyColumn, kv.Key);
|
||||
node.SetText(ValueColumn, kv.Value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -4,4 +4,7 @@
|
||||
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net9.0</TargetFramework>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Parsers\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -13,6 +13,8 @@ public partial class MainTreePanel : Tree
|
||||
private NodeInfoEditPanel _nodeInfoEditPanel;
|
||||
[Export]
|
||||
private ParsedInfoPanel _parsedInfoPanel;
|
||||
[Export]
|
||||
private MenuButton _menuButton;
|
||||
|
||||
private bool _updateItemInfoPanel;
|
||||
private readonly HashSet<TreeNode> _selectingNodes = new ();
|
||||
@ -20,6 +22,8 @@ public partial class MainTreePanel : Tree
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
_menuButton.GetPopup().AddItem("test");
|
||||
|
||||
MultiSelected += OnMultiSelected;
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,13 @@ namespace Learn.Models;
|
||||
|
||||
public class TreeNode(Item item)
|
||||
{
|
||||
public class KeyValueInfo
|
||||
{
|
||||
public string Key { get; set; }
|
||||
public string Value { get; set; }
|
||||
public bool IsInherited { get; set; }
|
||||
}
|
||||
|
||||
public TreeNode Parent => _parent;
|
||||
public IEnumerable<TreeNode> Children => _children;
|
||||
public Item Info => item;
|
||||
@ -18,4 +25,31 @@ public class TreeNode(Item item)
|
||||
_children.Add(node);
|
||||
node._parent = this;
|
||||
}
|
||||
|
||||
public IEnumerable<KeyValueInfo> GetKeyValueInfos()
|
||||
{
|
||||
var result = new List<KeyValueInfo>();
|
||||
var keys = new HashSet<string>();
|
||||
var curr = this;
|
||||
|
||||
while (curr.Info != null)
|
||||
{
|
||||
foreach (var kv in curr.Info.Info)
|
||||
{
|
||||
if(!keys.Add(kv.Key)) continue;
|
||||
var keyValueInfo = new KeyValueInfo();
|
||||
|
||||
if (curr != this)
|
||||
{
|
||||
keyValueInfo.IsInherited = true;
|
||||
}
|
||||
|
||||
keyValueInfo.Key = kv.Key;
|
||||
keyValueInfo.Value = kv.Value;
|
||||
result.Add(keyValueInfo);
|
||||
}
|
||||
curr = curr.Parent;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
19
tree.tscn
19
tree.tscn
@ -43,7 +43,7 @@ text = "打开文件夹"
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="MainTreePanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer" node_paths=PackedStringArray("_dirSelector", "_nodeInfoEditPanel", "_parsedInfoPanel")]
|
||||
[node name="MainTreePanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer" node_paths=PackedStringArray("_dirSelector", "_nodeInfoEditPanel", "_parsedInfoPanel", "_menuButton")]
|
||||
custom_minimum_size = Vector2(600, 0)
|
||||
layout_mode = 2
|
||||
allow_search = false
|
||||
@ -53,6 +53,7 @@ script = ExtResource("2_44ud8")
|
||||
_dirSelector = NodePath("../../../../FileDirDialog")
|
||||
_nodeInfoEditPanel = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/NodeEditPanel")
|
||||
_parsedInfoPanel = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer2/ParsedNodePanel")
|
||||
_menuButton = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/MenuButton")
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/HSplitContainer"]
|
||||
layout_mode = 2
|
||||
@ -61,6 +62,22 @@ layout_mode = 2
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="FoldableContainer3" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="MenuButton" type="MenuButton" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(100, 50)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
text = "eee"
|
||||
|
||||
[node name="Button" type="Button" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "添加"
|
||||
|
||||
[node name="FoldableContainer2" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||
layout_mode = 2
|
||||
title = "解析数据"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user