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 }