调整
This commit is contained in:
parent
9770157420
commit
dd2703418a
@ -1,13 +1,12 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Godot;
|
using Godot;
|
||||||
using Learn.Inspector;
|
|
||||||
using Learn.Models;
|
using Learn.Models;
|
||||||
|
|
||||||
public partial class NodeInfoEditPanel : Tree
|
public partial class NodeInfoEditPanel : Tree
|
||||||
{
|
{
|
||||||
[Export]
|
public event Action OnNodeInfoEdited;
|
||||||
private ParsedInfoPanel _notifyNodeChanged;
|
|
||||||
|
|
||||||
private IEnumerable<TreeNode> _nodes;
|
private IEnumerable<TreeNode> _nodes;
|
||||||
private ItemGroup _itemGroup;
|
private ItemGroup _itemGroup;
|
||||||
@ -59,7 +58,7 @@ public partial class NodeInfoEditPanel : Tree
|
|||||||
_itemGroup.Remove(prevKey);
|
_itemGroup.Remove(prevKey);
|
||||||
}
|
}
|
||||||
_itemGroup.SetValue(currentKey, value);
|
_itemGroup.SetValue(currentKey, value);
|
||||||
_notifyNodeChanged.OnNodeChanged();
|
OnNodeInfoEdited?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetNodes(IEnumerable<TreeNode> nodes)
|
public void SetNodes(IEnumerable<TreeNode> nodes)
|
||||||
@ -119,6 +118,6 @@ public partial class NodeInfoEditPanel : Tree
|
|||||||
_itemGroup.Remove(_nodeKeys[node]);
|
_itemGroup.Remove(_nodeKeys[node]);
|
||||||
root.RemoveChild(node);
|
root.RemoveChild(node);
|
||||||
}
|
}
|
||||||
_notifyNodeChanged.OnNodeChanged();
|
OnNodeInfoEdited?.Invoke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,12 +6,14 @@ namespace Learn.Inspector;
|
|||||||
|
|
||||||
public partial class ParsedInfoPanel : Tree
|
public partial class ParsedInfoPanel : Tree
|
||||||
{
|
{
|
||||||
|
[Export] private NodeInfoEditPanel _editPanel;
|
||||||
|
|
||||||
private TreeNode _node;
|
private TreeNode _node;
|
||||||
|
|
||||||
#region Columns Definitions
|
#region Columns Definitions
|
||||||
private const int NotesColumn = 0;
|
private const int KeyColumn = 0;
|
||||||
private const int KeyColumn = 1;
|
private const int ValueColumn = 1;
|
||||||
private const int ValueColumn = 2;
|
private const int NotesColumn = 2;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
@ -19,16 +21,18 @@ public partial class ParsedInfoPanel : Tree
|
|||||||
Columns = 3;
|
Columns = 3;
|
||||||
SetColumnTitlesVisible(true);
|
SetColumnTitlesVisible(true);
|
||||||
|
|
||||||
SetColumnTitle(NotesColumn, "备注");
|
|
||||||
SetColumnCustomMinimumWidth(NotesColumn, 80);
|
|
||||||
SetColumnExpand(NotesColumn, false);
|
|
||||||
|
|
||||||
SetColumnTitle(KeyColumn, "键");
|
SetColumnTitle(KeyColumn, "键");
|
||||||
SetColumnCustomMinimumWidth(KeyColumn, 100);
|
SetColumnCustomMinimumWidth(KeyColumn, 100);
|
||||||
SetColumnExpand(KeyColumn, false);
|
SetColumnExpand(KeyColumn, false);
|
||||||
|
|
||||||
SetColumnTitle(ValueColumn, "值");
|
SetColumnTitle(ValueColumn, "值");
|
||||||
SetColumnExpand(ValueColumn, true);
|
SetColumnExpand(ValueColumn, true);
|
||||||
|
|
||||||
|
SetColumnTitle(NotesColumn, "备注");
|
||||||
|
SetColumnCustomMinimumWidth(NotesColumn, 80);
|
||||||
|
SetColumnExpand(NotesColumn, false);
|
||||||
|
|
||||||
|
_editPanel.OnNodeInfoEdited += OnNodeChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetNode(TreeNode node)
|
public void SetNode(TreeNode node)
|
||||||
|
|||||||
@ -4,7 +4,4 @@
|
|||||||
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net9.0</TargetFramework>
|
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net9.0</TargetFramework>
|
||||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Parsers\" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
</Project>
|
||||||
@ -7,14 +7,14 @@ using Learn.Models;
|
|||||||
|
|
||||||
public partial class MainTreePanel : Tree
|
public partial class MainTreePanel : Tree
|
||||||
{
|
{
|
||||||
[Export]
|
[Export] private FileDirSelector _dirSelector;
|
||||||
private FileDirSelector _dirSelector;
|
[Export] private NodeInfoEditPanel _nodeInfoEditPanel;
|
||||||
[Export]
|
[Export] private ParsedInfoPanel _parsedInfoPanel;
|
||||||
private NodeInfoEditPanel _nodeInfoEditPanel;
|
|
||||||
[Export]
|
[Export] private LineEdit _columnText;
|
||||||
private ParsedInfoPanel _parsedInfoPanel;
|
[Export] private Button _addColumnButton;
|
||||||
[Export]
|
[Export] private Button _removeColumnButton;
|
||||||
private MenuButton _menuButton;
|
private readonly HashSet<string> _columns = new();
|
||||||
|
|
||||||
private bool _updateItemInfoPanel;
|
private bool _updateItemInfoPanel;
|
||||||
private readonly HashSet<TreeNode> _selectingNodes = new ();
|
private readonly HashSet<TreeNode> _selectingNodes = new ();
|
||||||
@ -22,9 +22,63 @@ public partial class MainTreePanel : Tree
|
|||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
_menuButton.GetPopup().AddItem("test");
|
Columns = 1;
|
||||||
|
SetColumnTitlesVisible(true);
|
||||||
|
|
||||||
|
SetColumnTitle(0, "文件名");
|
||||||
|
SetColumnCustomMinimumWidth(0, 400);
|
||||||
|
SetColumnExpand(0, true);
|
||||||
|
|
||||||
MultiSelected += OnMultiSelected;
|
MultiSelected += OnMultiSelected;
|
||||||
|
|
||||||
|
_addColumnButton.Pressed += OnAddColumn;
|
||||||
|
_removeColumnButton.Pressed += OnRemoveColumn;
|
||||||
|
|
||||||
|
_nodeInfoEditPanel.OnNodeInfoEdited += OnUpdateColumns;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnAddColumn()
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(_columnText.Text)) return;
|
||||||
|
_columns.Add(_columnText.Text);
|
||||||
|
OnUpdateColumns();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnRemoveColumn()
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(_columnText.Text)) return;
|
||||||
|
_columns.Remove(_columnText.Text);
|
||||||
|
OnUpdateColumns();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnUpdateColumns()
|
||||||
|
{
|
||||||
|
Columns = _columns.Count + 1;
|
||||||
|
int index = 1;
|
||||||
|
foreach (var column in _columns)
|
||||||
|
{
|
||||||
|
SetColumnTitle(index, column);
|
||||||
|
SetColumnCustomMinimumWidth(index, 200);
|
||||||
|
SetColumnExpand(index, true);
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var kv in _mapper)
|
||||||
|
{
|
||||||
|
index = 1;
|
||||||
|
foreach (var column in _columns)
|
||||||
|
{
|
||||||
|
if (kv.Value.TryGetValue(column, out var value, out _))
|
||||||
|
{
|
||||||
|
kv.Key.SetText(index, value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
kv.Key.SetText(index, "");
|
||||||
|
}
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void _Process(double delta)
|
public override void _Process(double delta)
|
||||||
@ -110,4 +164,10 @@ public partial class MainTreePanel : Tree
|
|||||||
BuildTree(root, path);
|
BuildTree(root, path);
|
||||||
_updateItemInfoPanel = true;
|
_updateItemInfoPanel = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DoParse()
|
||||||
|
{
|
||||||
|
var nodes = _mapper.Values.ToList();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,25 @@ public class TreeNode(Item item)
|
|||||||
node._parent = this;
|
node._parent = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryGetValue(string key, out string value, out bool isInherited)
|
||||||
|
{
|
||||||
|
var curr = this;
|
||||||
|
|
||||||
|
while (curr.Info != null)
|
||||||
|
{
|
||||||
|
if (curr.Info.Info.TryGetValue(key, out value))
|
||||||
|
{
|
||||||
|
isInherited = curr != this;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
curr = curr.Parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = null;
|
||||||
|
isInherited = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<KeyValueInfo> GetKeyValueInfos()
|
public IEnumerable<KeyValueInfo> GetKeyValueInfos()
|
||||||
{
|
{
|
||||||
var result = new List<KeyValueInfo>();
|
var result = new List<KeyValueInfo>();
|
||||||
|
|||||||
35
Parsers/ParseItemHelper.cs
Normal file
35
Parsers/ParseItemHelper.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Learn.Models;
|
||||||
|
|
||||||
|
namespace Learn.Parsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 目标的解析字段:
|
||||||
|
/// "季度"
|
||||||
|
/// "剧名"
|
||||||
|
/// "发布组"
|
||||||
|
/// "集数"
|
||||||
|
/// "类型":"额外内容", "字幕", "剧集"
|
||||||
|
/// "字幕语言"
|
||||||
|
/// "年份"
|
||||||
|
/// </summary>
|
||||||
|
public static class ParseItemHelper
|
||||||
|
{
|
||||||
|
private static void ParseItem(Item item)
|
||||||
|
{
|
||||||
|
var info = item.Info;
|
||||||
|
if (info["IsDir"] == "True")
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DoParse(IEnumerable<TreeNode> nodes)
|
||||||
|
{
|
||||||
|
foreach (var node in nodes)
|
||||||
|
{
|
||||||
|
if (node.Info == null) continue;
|
||||||
|
ParseItem(node.Info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
Parsers/ParseItemHelper.cs.uid
Normal file
1
Parsers/ParseItemHelper.cs.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://dbm2l6j6s1t7r
|
||||||
45
tree.tscn
45
tree.tscn
@ -34,16 +34,21 @@ layout_mode = 2
|
|||||||
[node name="Toolbar" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
[node name="Toolbar" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="MarginContainer/VBoxContainer/Toolbar"]
|
[node name="OpenDir" type="Button" parent="MarginContainer/VBoxContainer/Toolbar"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
text = "打开文件夹"
|
text = "打开文件夹"
|
||||||
|
|
||||||
|
[node name="DoParse" type="Button" parent="MarginContainer/VBoxContainer/Toolbar"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 4
|
||||||
|
text = "开始解析"
|
||||||
|
|
||||||
[node name="HSplitContainer" type="HSplitContainer" parent="MarginContainer/VBoxContainer"]
|
[node name="HSplitContainer" type="HSplitContainer" parent="MarginContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="MainTreePanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer" node_paths=PackedStringArray("_dirSelector", "_nodeInfoEditPanel", "_parsedInfoPanel", "_menuButton")]
|
[node name="MainTreePanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer" node_paths=PackedStringArray("_dirSelector", "_nodeInfoEditPanel", "_parsedInfoPanel", "_columnText", "_addColumnButton", "_removeColumnButton")]
|
||||||
custom_minimum_size = Vector2(600, 0)
|
custom_minimum_size = Vector2(600, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
allow_search = false
|
allow_search = false
|
||||||
@ -53,7 +58,9 @@ script = ExtResource("2_44ud8")
|
|||||||
_dirSelector = NodePath("../../../../FileDirDialog")
|
_dirSelector = NodePath("../../../../FileDirDialog")
|
||||||
_nodeInfoEditPanel = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/NodeEditPanel")
|
_nodeInfoEditPanel = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/NodeEditPanel")
|
||||||
_parsedInfoPanel = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer2/ParsedNodePanel")
|
_parsedInfoPanel = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer2/ParsedNodePanel")
|
||||||
_menuButton = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/MenuButton")
|
_columnText = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/ColunmText")
|
||||||
|
_addColumnButton = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/AddColumn")
|
||||||
|
_removeColumnButton = NodePath("../ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer/RemoveColumn")
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/HSplitContainer"]
|
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/HSplitContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
@ -64,36 +71,44 @@ size_flags_horizontal = 3
|
|||||||
|
|
||||||
[node name="FoldableContainer3" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
[node name="FoldableContainer3" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
folded = true
|
||||||
|
title = "添加显示字段"
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3"]
|
||||||
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="MenuButton" type="MenuButton" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
[node name="ColunmText" type="LineEdit" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
||||||
custom_minimum_size = Vector2(100, 50)
|
custom_minimum_size = Vector2(100, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 0
|
|
||||||
text = "eee"
|
|
||||||
|
|
||||||
[node name="Button" type="Button" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
[node name="AddColumn" type="Button" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer3/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "添加"
|
text = "显示"
|
||||||
|
|
||||||
|
[node name="RemoveColumn" 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"]
|
[node name="FoldableContainer2" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
title = "解析数据"
|
title = "解析数据"
|
||||||
|
|
||||||
[node name="ParsedNodePanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer2"]
|
[node name="ParsedNodePanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer2" node_paths=PackedStringArray("_editPanel")]
|
||||||
custom_minimum_size = Vector2(0, 300)
|
custom_minimum_size = Vector2(0, 400)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
hide_root = true
|
hide_root = true
|
||||||
select_mode = 1
|
select_mode = 1
|
||||||
script = ExtResource("3_d2g23")
|
script = ExtResource("3_d2g23")
|
||||||
|
_editPanel = NodePath("../../FoldableContainer/VBoxContainer/NodeEditPanel")
|
||||||
|
|
||||||
[node name="FoldableContainer" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
[node name="FoldableContainer" type="FoldableContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
folded = true
|
||||||
title = "数据编辑"
|
title = "数据编辑"
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer"]
|
||||||
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer"]
|
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer"]
|
||||||
@ -108,16 +123,16 @@ text = "添加字段"
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "移除选中"
|
text = "移除选中"
|
||||||
|
|
||||||
[node name="NodeEditPanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer" node_paths=PackedStringArray("_notifyNodeChanged")]
|
[node name="NodeEditPanel" type="Tree" parent="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer"]
|
||||||
custom_minimum_size = Vector2(0, 300)
|
custom_minimum_size = Vector2(0, 400)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
allow_search = false
|
allow_search = false
|
||||||
hide_root = true
|
hide_root = true
|
||||||
select_mode = 2
|
select_mode = 2
|
||||||
script = ExtResource("4_d2g23")
|
script = ExtResource("4_d2g23")
|
||||||
_notifyNodeChanged = NodePath("../../../FoldableContainer2/ParsedNodePanel")
|
|
||||||
|
|
||||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Toolbar/Button" to="MarginContainer/VBoxContainer/HSplitContainer/MainTreePanel" method="Open"]
|
[connection signal="pressed" from="MarginContainer/VBoxContainer/Toolbar/OpenDir" to="MarginContainer/VBoxContainer/HSplitContainer/MainTreePanel" method="Open"]
|
||||||
|
[connection signal="pressed" from="MarginContainer/VBoxContainer/Toolbar/DoParse" to="MarginContainer/VBoxContainer/HSplitContainer/MainTreePanel" method="DoParse"]
|
||||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/Add" to="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/NodeEditPanel" method="AddKeyValue"]
|
[connection signal="pressed" from="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/Add" to="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/NodeEditPanel" method="AddKeyValue"]
|
||||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/Remove" to="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/NodeEditPanel" method="RemoveKeyValue"]
|
[connection signal="pressed" from="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/HBoxContainer/Remove" to="MarginContainer/VBoxContainer/HSplitContainer/ScrollContainer/VBoxContainer2/FoldableContainer/VBoxContainer/NodeEditPanel" method="RemoveKeyValue"]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user