using System.Collections.Generic; using Godot; using Learn.Models; namespace Learn.Component; public partial class ParsedInfoPanel : 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 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); } } }