调整目录结构
This commit is contained in:
parent
6f1dc3f05f
commit
1002e9aade
@ -1 +0,0 @@
|
||||
uid://hbu73fxqen34
|
||||
8
Inspector/ParsedInfoPanel.cs
Normal file
8
Inspector/ParsedInfoPanel.cs
Normal file
@ -0,0 +1,8 @@
|
||||
using Godot;
|
||||
|
||||
namespace Learn.Inspector;
|
||||
|
||||
public partial class ParsedInfoPanel : Tree
|
||||
{
|
||||
|
||||
}
|
||||
1
Inspector/ParsedInfoPanel.cs.uid
Normal file
1
Inspector/ParsedInfoPanel.cs.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bkx2esr711e68
|
||||
@ -3,11 +3,14 @@ using System.Linq;
|
||||
using Godot;
|
||||
using Learn.Models;
|
||||
|
||||
public partial class ItemInfoPanel : Tree
|
||||
public partial class RawInfoPanel : Tree
|
||||
{
|
||||
private IEnumerable<TreeNode> _nodes;
|
||||
private ItemGroup _itemGroup;
|
||||
|
||||
private readonly Dictionary<TreeItem, string> _nodeKeys = new ();
|
||||
private readonly HashSet<TreeItem> _selectingNodes = new ();
|
||||
|
||||
#region Columns Definitions
|
||||
private const int EmptyColumn = 0;
|
||||
private const int KeyColumn = 1;
|
||||
@ -30,9 +33,20 @@ public partial class ItemInfoPanel : Tree
|
||||
SetColumnExpand(ValueColumn, true);
|
||||
|
||||
ItemEdited += OnItemEdited;
|
||||
MultiSelected += OnMultiSelected;
|
||||
}
|
||||
|
||||
private readonly Godot.Collections.Dictionary<TreeItem, string> _nodeKeys = new ();
|
||||
private void OnMultiSelected(TreeItem item, long column, bool selected)
|
||||
{
|
||||
if (selected)
|
||||
{
|
||||
_selectingNodes.Add(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
_selectingNodes.Remove(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnItemEdited()
|
||||
{
|
||||
@ -66,6 +80,7 @@ public partial class ItemInfoPanel : Tree
|
||||
{
|
||||
Clear();
|
||||
_nodeKeys.Clear();
|
||||
_selectingNodes.Clear();
|
||||
if (_itemGroup == null) return;
|
||||
var root = CreateItem();
|
||||
foreach (var key in _itemGroup.GetKeys())
|
||||
@ -97,15 +112,11 @@ public partial class ItemInfoPanel : Tree
|
||||
{
|
||||
if(_itemGroup == null) return;
|
||||
|
||||
var node = GetSelected();
|
||||
var root = GetRoot();
|
||||
while (node != null)
|
||||
foreach (var node in _selectingNodes)
|
||||
{
|
||||
_itemGroup.Remove(_nodeKeys[node]);
|
||||
_nodeKeys.Remove(node);
|
||||
var next = GetNextSelected(node);
|
||||
root.RemoveChild(node);
|
||||
node = next;
|
||||
}
|
||||
}
|
||||
}
|
||||
1
Inspector/RawInfoPanel.cs.uid
Normal file
1
Inspector/RawInfoPanel.cs.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://dehqc84newiyv
|
||||
@ -1 +0,0 @@
|
||||
uid://dxkhiggkgqs6
|
||||
@ -1,3 +1,5 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARawInfoPanel_005FScriptMethods_002Egenerated_002Ecs_002Fl_003AC_0021_003FUsers_003Flianzefeng_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9fdf5fe7bab299c9c5ee4ca6784782ae9851b9b_003FRawInfoPanel_005FScriptMethods_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Flianzefeng_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa03380083db34a2faee436e29e06a72ae8e910_003Fa8_003Fec982e59_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATreeItem_002Ecs_002Fl_003AC_0021_003FUsers_003Flianzefeng_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F1c378f459c054fecaf4484a0fa6d44c055a800_003F1d_003Fbc7bd422_003FTreeItem_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATree_002Ecs_002Fl_003AC_0021_003FUsers_003Flianzefeng_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F1c378f459c054fecaf4484a0fa6d44c055a800_003F9d_003Fbcfb64ab_003FTree_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
||||
@ -1 +0,0 @@
|
||||
uid://bngqk8kje5m2k
|
||||
@ -1,15 +1,14 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Godot;
|
||||
using Learn.Models;
|
||||
|
||||
public partial class LearnTree : Tree
|
||||
public partial class MainTreePanel : Tree
|
||||
{
|
||||
[Export]
|
||||
private FileDirSelector _dirSelector;
|
||||
[Export]
|
||||
private ItemInfoPanel _itemInfoPanel;
|
||||
private RawInfoPanel _rawInfoPanel;
|
||||
|
||||
private bool _updateItemInfoPanel;
|
||||
private readonly HashSet<TreeNode> _selectingNodes = new ();
|
||||
@ -25,7 +24,7 @@ public partial class LearnTree : Tree
|
||||
if (_updateItemInfoPanel)
|
||||
{
|
||||
_updateItemInfoPanel = false;
|
||||
_itemInfoPanel.SetSelectedNodes(_selectingNodes);
|
||||
_rawInfoPanel.SetSelectedNodes(_selectingNodes);
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,8 +88,11 @@ public partial class LearnTree : Tree
|
||||
|
||||
private async void Open()
|
||||
{
|
||||
var path = await _dirSelector.SelectFolderAsync() ?? "None";
|
||||
if (string.IsNullOrEmpty(path)) return;
|
||||
var path = await _dirSelector.SelectFolderAsync();
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
return;
|
||||
}
|
||||
Clear();
|
||||
_mapper.Clear();
|
||||
_selectingNodes.Clear();
|
||||
1
MainTreePanel.cs.uid
Normal file
1
MainTreePanel.cs.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bmepprx2mndih
|
||||
1
Utils/FileDirSelector.cs.uid
Normal file
1
Utils/FileDirSelector.cs.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://dqs5segp8tixm
|
||||
81
tree.tscn
81
tree.tscn
@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://b3ypva4l8wfoh"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://b3ypva4l8wfoh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bngqk8kje5m2k" path="res://LearnTree.cs" id="1_brfkd"]
|
||||
[ext_resource type="Script" uid="uid://dxkhiggkgqs6" path="res://ItemInfoPanel.cs" id="2_gvmkm"]
|
||||
[ext_resource type="Script" uid="uid://hbu73fxqen34" path="res://FileDirSelector.cs" id="2_nnvrw"]
|
||||
[ext_resource type="Script" uid="uid://dqs5segp8tixm" path="res://Utils/FileDirSelector.cs" id="1_d2g23"]
|
||||
[ext_resource type="Script" uid="uid://bmepprx2mndih" path="res://MainTreePanel.cs" id="2_44ud8"]
|
||||
[ext_resource type="Script" uid="uid://bkx2esr711e68" path="res://Inspector/ParsedInfoPanel.cs" id="3_d2g23"]
|
||||
[ext_resource type="Script" uid="uid://dehqc84newiyv" path="res://Inspector/RawInfoPanel.cs" id="4_ind6k"]
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
layout_mode = 3
|
||||
@ -12,62 +13,92 @@ anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
[node name="FileDirDialog" type="FileDialog" parent="."]
|
||||
script = ExtResource("1_d2g23")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="Toolbar" type="HBoxContainer" parent="VBoxContainer"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Button" type="Button" parent="VBoxContainer/Toolbar"]
|
||||
[node name="Toolbar" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Button" type="Button" parent="MarginContainer/VBoxContainer/Toolbar"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 4
|
||||
text = "打开文件夹"
|
||||
|
||||
[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"]
|
||||
[node name="HSplitContainer" type="HSplitContainer" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Tree" type="Tree" parent="VBoxContainer/HSplitContainer" node_paths=PackedStringArray("_dirSelector", "_itemInfoPanel")]
|
||||
custom_minimum_size = Vector2(700, 0)
|
||||
[node name="MainTreePanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer" node_paths=PackedStringArray("_dirSelector", "_rawInfoPanel")]
|
||||
custom_minimum_size = Vector2(600, 0)
|
||||
layout_mode = 2
|
||||
allow_search = false
|
||||
hide_root = true
|
||||
select_mode = 2
|
||||
script = ExtResource("1_brfkd")
|
||||
_dirSelector = NodePath("../../../FileDirDialog")
|
||||
_itemInfoPanel = NodePath("../VBoxContainer/ItemInfoPanel")
|
||||
script = ExtResource("2_44ud8")
|
||||
_dirSelector = NodePath("../../../../FileDirDialog")
|
||||
_rawInfoPanel = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/Raw")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HSplitContainer"]
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/HSplitContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="FoldableContainer2" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||
layout_mode = 2
|
||||
title = "解析数据"
|
||||
|
||||
[node name="Parsed" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer2"]
|
||||
custom_minimum_size = Vector2(0, 300)
|
||||
layout_mode = 2
|
||||
script = ExtResource("3_d2g23")
|
||||
|
||||
[node name="FoldableContainer" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||
layout_mode = 2
|
||||
folded = true
|
||||
title = "原始数据"
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Add" type="Button" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer"]
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Add" type="Button" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
text = "添加字段"
|
||||
|
||||
[node name="Remove" type="Button" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer"]
|
||||
[node name="Remove" type="Button" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "移除选中"
|
||||
|
||||
[node name="ItemInfoPanel" type="Tree" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
[node name="Raw" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 300)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
allow_search = false
|
||||
hide_root = true
|
||||
select_mode = 2
|
||||
script = ExtResource("2_gvmkm")
|
||||
script = ExtResource("4_ind6k")
|
||||
|
||||
[node name="FileDirDialog" type="FileDialog" parent="."]
|
||||
script = ExtResource("2_nnvrw")
|
||||
|
||||
[connection signal="pressed" from="VBoxContainer/Toolbar/Button" to="VBoxContainer/HSplitContainer/Tree" method="Open"]
|
||||
[connection signal="pressed" from="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer/Add" to="VBoxContainer/HSplitContainer/VBoxContainer/ItemInfoPanel" method="AddKeyValue"]
|
||||
[connection signal="pressed" from="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer/Remove" to="VBoxContainer/HSplitContainer/VBoxContainer/ItemInfoPanel" method="RemoveKeyValue"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Toolbar/Button" to="MarginContainer/VBoxContainer/HSplitContainer/MainTreePanel" method="Open"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/Add" to="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/Raw" method="AddKeyValue"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/Remove" to="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/Raw" method="RemoveKeyValue"]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user