LearnGodot/Main.cs
2025-12-19 22:28:23 +08:00

70 lines
2.0 KiB
C#

using Godot;
using System.Linq;
using Learn.Component;
public partial class Main : Node
{
[ExportGroup("文件夹操作")][Export] private FileDirSelector _dirSelector;
[ExportGroup("操作面板")][Export] private Button _openDirButton;
[ExportGroup("操作面板")][Export] private Button _doParseButton;
[ExportGroup("编辑面板")][Export] private NodeInfoEditPanel _nodeInfoEditPanel;
[ExportGroup("编辑面板")][Export] private Button _addKeyButton;
[ExportGroup("编辑面板")][Export] private Button _removeKeyButton;
[ExportGroup("解析面板")][Export] private ParsedInfoPanel _parsedInfoPanel;
[ExportGroup("主展示面板")] [Export] private MainTreePanel _mainTreePanel;
[ExportGroup("主展示面板")][Export] private LineEdit _columnText;
[ExportGroup("主展示面板")][Export] private Button _addColumnButton;
[ExportGroup("主展示面板")][Export] private Button _removeColumnButton;
private bool _refreshPanels;
public override void _Ready()
{
_nodeInfoEditPanel.OnNodeInfoEdited += _mainTreePanel.UpdateColumns;
_addKeyButton.Pressed += _nodeInfoEditPanel.AddKeyValue;
_removeKeyButton.Pressed += _nodeInfoEditPanel.RemoveKeyValue;
_mainTreePanel.MultiSelected += (_, _, _) => { _refreshPanels = true; };
_addColumnButton.Pressed += () => _mainTreePanel.AddColumn(_columnText.Text);
_removeColumnButton.Pressed += () => _mainTreePanel.RemoveColumn(_columnText.Text);
// 功能区
_openDirButton.Pressed += OpenDir;
_doParseButton.Pressed += DoParse;
}
public override void _Process(double delta)
{
if (_refreshPanels)
{
_refreshPanels = false;
_nodeInfoEditPanel.SetNodes(_mainTreePanel.SelectingNodes);
_parsedInfoPanel.SetNode(_mainTreePanel.SelectingNodes.FirstOrDefault());
}
}
#region Commands
private async void OpenDir()
{
var path = await _dirSelector.SelectFolderAsync();
if (string.IsNullOrEmpty(path))
{
return;
}
_mainTreePanel.Build(path);
_refreshPanels = true;
}
private void DoParse()
{
// todo;
}
#endregion
}