完善显示
This commit is contained in:
parent
89de0e2ebd
commit
a80d7cf72e
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@
|
|||||||
.godot/
|
.godot/
|
||||||
/android/
|
/android/
|
||||||
.idea/
|
.idea/
|
||||||
|
data.json
|
||||||
@ -1,5 +1,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using Godot;
|
using Godot;
|
||||||
using Learn.Models;
|
using Learn.Models;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
@ -9,6 +10,13 @@ namespace Learn.Component;
|
|||||||
|
|
||||||
public partial class MainTreePanel : Tree
|
public partial class MainTreePanel : Tree
|
||||||
{
|
{
|
||||||
|
public class MainTreeData
|
||||||
|
{
|
||||||
|
public List<string> Columns { get; set; }
|
||||||
|
public Dictionary<string, Item> Items { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private readonly HashSet<string> _columns = new();
|
private readonly HashSet<string> _columns = new();
|
||||||
private readonly HashSet<TreeNode> _selectingNodes = new();
|
private readonly HashSet<TreeNode> _selectingNodes = new();
|
||||||
private readonly Dictionary<TreeItem, TreeNode> _mapper = new();
|
private readonly Dictionary<TreeItem, TreeNode> _mapper = new();
|
||||||
@ -26,6 +34,8 @@ public partial class MainTreePanel : Tree
|
|||||||
SetColumnExpand(0, true);
|
SetColumnExpand(0, true);
|
||||||
|
|
||||||
MultiSelected += OnMultiSelected;
|
MultiSelected += OnMultiSelected;
|
||||||
|
|
||||||
|
UpdateColumns();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddColumn(string columnName)
|
public void AddColumn(string columnName)
|
||||||
@ -118,18 +128,28 @@ public partial class MainTreePanel : Tree
|
|||||||
|
|
||||||
public void LoadData(string dataPath)
|
public void LoadData(string dataPath)
|
||||||
{
|
{
|
||||||
var items = JsonConvert.DeserializeObject<Dictionary<string, Item>>(File.ReadAllText(dataPath));
|
var data = JsonConvert.DeserializeObject<MainTreeData>(File.ReadAllText(dataPath));
|
||||||
foreach (var kv in items)
|
foreach (var kv in data.Items)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(kv.Key)) continue;
|
if (string.IsNullOrEmpty(kv.Key)) continue;
|
||||||
_items[kv.Key] = kv.Value;
|
_items[kv.Key] = kv.Value;
|
||||||
}
|
}
|
||||||
|
_columns.Clear();
|
||||||
|
foreach (var column in data.Columns)
|
||||||
|
{
|
||||||
|
_columns.Add(column);
|
||||||
|
}
|
||||||
UpdateColumns();
|
UpdateColumns();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveData(string dataPath)
|
public void SaveData(string dataPath)
|
||||||
{
|
{
|
||||||
File.WriteAllText(dataPath, JsonConvert.SerializeObject(_items, Formatting.Indented));
|
var data = new MainTreeData
|
||||||
|
{
|
||||||
|
Columns = _columns.ToList(),
|
||||||
|
Items = _items
|
||||||
|
};
|
||||||
|
File.WriteAllText(dataPath, JsonConvert.SerializeObject(data, Formatting.Indented));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Scan(string path)
|
public void Scan(string path)
|
||||||
|
|||||||
@ -30,9 +30,9 @@ _addKeyButton = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBo
|
|||||||
_removeKeyButton = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/RemoveKey")
|
_removeKeyButton = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/RemoveKey")
|
||||||
_parsedInfoPanel = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer2/ParsedNodePanel")
|
_parsedInfoPanel = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer2/ParsedNodePanel")
|
||||||
_mainTreePanel = NodePath("../MarginContainer/HSplitContainer/MainTreePanel")
|
_mainTreePanel = NodePath("../MarginContainer/HSplitContainer/MainTreePanel")
|
||||||
_columnText = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/ColunmText")
|
_columnText = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer4/VBoxContainer/HBoxContainer/ColunmText")
|
||||||
_addColumnButton = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/AddColumn")
|
_addColumnButton = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer4/VBoxContainer/HBoxContainer/AddColumn")
|
||||||
_removeColumnButton = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/RemoveColumn")
|
_removeColumnButton = NodePath("../MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer4/VBoxContainer/HBoxContainer/RemoveColumn")
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@ -98,35 +98,27 @@ text = "保存"
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "重置"
|
text = "重置"
|
||||||
|
|
||||||
[node name="FoldableContainer3" type="FoldableContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer4/VBoxContainer"]
|
||||||
layout_mode = 2
|
|
||||||
folded = true
|
|
||||||
title = "添加显示字段"
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3"]
|
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="ColunmText" type="LineEdit" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
[node name="ColunmText" type="LineEdit" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer4/VBoxContainer/HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(100, 0)
|
custom_minimum_size = Vector2(100, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="AddColumn" type="Button" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
[node name="AddColumn" type="Button" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer4/VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "显示"
|
text = "显示"
|
||||||
|
|
||||||
[node name="RemoveColumn" type="Button" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
[node name="RemoveColumn" type="Button" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer4/VBoxContainer/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "隐藏"
|
text = "隐藏"
|
||||||
|
|
||||||
[node name="FoldableContainer2" type="FoldableContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
[node name="FoldableContainer2" type="FoldableContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
folded = true
|
|
||||||
title = "解析数据"
|
title = "解析数据"
|
||||||
|
|
||||||
[node name="ParsedNodePanel" type="Tree" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer2" node_paths=PackedStringArray("_editPanel")]
|
[node name="ParsedNodePanel" type="Tree" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer2" node_paths=PackedStringArray("_editPanel")]
|
||||||
visible = false
|
custom_minimum_size = Vector2(0, 250)
|
||||||
custom_minimum_size = Vector2(0, 400)
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
hide_root = true
|
hide_root = true
|
||||||
select_mode = 1
|
select_mode = 1
|
||||||
@ -135,11 +127,9 @@ _editPanel = NodePath("../../FoldableContainer/VBoxContainer/NodeEditPanel")
|
|||||||
|
|
||||||
[node name="FoldableContainer" type="FoldableContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
[node name="FoldableContainer" type="FoldableContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
folded = true
|
|
||||||
title = "数据编辑"
|
title = "数据编辑"
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer"]
|
||||||
visible = false
|
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer"]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user