LearnGodot/Component/InspectorPanel.cs
2025-12-28 18:09:36 +08:00

69 lines
1.4 KiB
C#

using System.Collections.Generic;
using Godot;
using Learn.Models;
using Learn.Parsers;
namespace Learn.Component;
public partial class InspectorPanel : Tree
{
[Export] private NodeInfoEditPanel _editPanel;
private TreeNode _node;
#region Columns Definitions
private const int KeyColumn = 0;
private const int ValueColumn = 1;
private const int NotesColumn = 2;
#endregion
public override void _Ready()
{
Columns = 3;
SetColumnTitlesVisible(true);
SetColumnTitle(KeyColumn, "键");
SetColumnCustomMinimumWidth(KeyColumn, 100);
SetColumnExpand(KeyColumn, false);
SetColumnTitle(ValueColumn, "值");
SetColumnExpand(ValueColumn, true);
SetColumnTitle(NotesColumn, "备注");
SetColumnCustomMinimumWidth(NotesColumn, 80);
SetColumnExpand(NotesColumn, false);
_editPanel.OnNodeInfoEdited += OnNodeChanged;
}
public void SetNode(TreeNode node)
{
_node = node;
OnNodeChanged();
}
public void OnNodeChanged()
{
Clear();
if (_node == null) return;
var root = CreateItem();
var nameNode = CreateItem(root);
nameNode.SetText(KeyColumn, "Name");
nameNode.SetText(ValueColumn, _node.Info.Name());
var kvs = _node.GetKeyValueInfos();
foreach (var kv in kvs)
{
var node = CreateItem(root);
if (kv.IsInherited)
{
node.SetText(NotesColumn, "(继承)");
}
node.SetText(KeyColumn, kv.Key);
node.SetText(ValueColumn, kv.Value);
}
}
}