40 lines
1.7 KiB
C#
40 lines
1.7 KiB
C#
using Ardalis.GuardClauses;
|
|
using Godot;
|
|
|
|
namespace SharpIDE.Godot.Features.LeftSideBar;
|
|
|
|
public partial class LeftSideBar : Panel
|
|
{
|
|
private Button _slnExplorerButton = null!;
|
|
// These are in a ButtonGroup, which handles mutual exclusivity of being toggled on
|
|
private Button _problemsButton = null!;
|
|
private Button _runButton = null!;
|
|
private Button _buildButton = null!;
|
|
|
|
public override void _Ready()
|
|
{
|
|
_slnExplorerButton = GetNode<Button>("%SlnExplorerButton");
|
|
_problemsButton = GetNode<Button>("%ProblemsButton");
|
|
_runButton = GetNode<Button>("%RunButton");
|
|
_buildButton = GetNode<Button>("%BuildButton");
|
|
|
|
_problemsButton.Toggled += toggledOn => GodotGlobalEvents.InvokeBottomPanelTabSelected(toggledOn ? BottomPanelType.Problems : null);
|
|
_runButton.Toggled += toggledOn => GodotGlobalEvents.InvokeBottomPanelTabSelected(toggledOn ? BottomPanelType.Run : null);
|
|
_buildButton.Toggled += toggledOn => GodotGlobalEvents.InvokeBottomPanelTabSelected(toggledOn ? BottomPanelType.Build : null);
|
|
GodotGlobalEvents.BottomPanelTabExternallySelected += OnBottomPanelTabExternallySelected;
|
|
}
|
|
|
|
private async Task OnBottomPanelTabExternallySelected(BottomPanelType arg)
|
|
{
|
|
await this.InvokeAsync(() =>
|
|
{
|
|
switch (arg)
|
|
{
|
|
case BottomPanelType.Run: _runButton.ButtonPressed = true; break;
|
|
case BottomPanelType.Build: _buildButton.ButtonPressed = true; break;
|
|
case BottomPanelType.Problems: _problemsButton.ButtonPressed = true; break;
|
|
default: throw new ArgumentOutOfRangeException(nameof(arg), arg, null);
|
|
}
|
|
});
|
|
}
|
|
} |