From 8aca911c3dd64d177d620ef397f539de3ec795ea Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Thu, 16 Oct 2025 21:14:27 +0100 Subject: [PATCH] [TUI] Add Main Help dialog with F1 shortcut and Ok command --- .../Dialogs/MainHelpDialogViewModel.cs | 24 +++++++ .../ViewModels/Windows/MainWindowViewModel.cs | 15 ++++ Aaru.Tui/Views/Dialogs/MainHelpDialog.axaml | 71 +++++++++++++++++++ .../Views/Dialogs/MainHelpDialog.axaml.cs | 11 +++ Aaru.Tui/Views/Windows/MainWindow.axaml | 5 +- 5 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 Aaru.Tui/ViewModels/Dialogs/MainHelpDialogViewModel.cs create mode 100644 Aaru.Tui/Views/Dialogs/MainHelpDialog.axaml create mode 100644 Aaru.Tui/Views/Dialogs/MainHelpDialog.axaml.cs diff --git a/Aaru.Tui/ViewModels/Dialogs/MainHelpDialogViewModel.cs b/Aaru.Tui/ViewModels/Dialogs/MainHelpDialogViewModel.cs new file mode 100644 index 000000000..1ab2a440c --- /dev/null +++ b/Aaru.Tui/ViewModels/Dialogs/MainHelpDialogViewModel.cs @@ -0,0 +1,24 @@ +using System.Windows.Input; +using CommunityToolkit.Mvvm.Input; +using Iciclecreek.Avalonia.WindowManager; + +namespace Aaru.Tui.ViewModels.Dialogs; + +public sealed class MainHelpDialogViewModel : ViewModelBase +{ + internal ManagedWindow _dialog = null!; + + + public MainHelpDialogViewModel(ManagedWindow dialog) + { + _dialog = dialog; + OkCommand = new RelayCommand(Ok); + } + + public ICommand OkCommand { get; } + + void Ok() + { + _dialog.Close(true); + } +} \ No newline at end of file diff --git a/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs b/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs index 5e396e1ce..72c80f1f5 100644 --- a/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs +++ b/Aaru.Tui/ViewModels/Windows/MainWindowViewModel.cs @@ -73,6 +73,7 @@ public sealed partial class MainWindowViewModel : ViewModelBase ExitCommand = new RelayCommand(Exit); SectorViewCommand = new RelayCommand(SectorView); GoToPathCommand = new AsyncRelayCommand(GoToPathAsync); + HelpCommand = new AsyncRelayCommand(HelpAsync); OpenSelectedFileCommand = new RelayCommand(OpenSelectedFile, CanOpenSelectedFile); InformationalVersion = @@ -107,6 +108,7 @@ public sealed partial class MainWindowViewModel : ViewModelBase public ICommand ExitCommand { get; } public ICommand SectorViewCommand { get; } public ICommand GoToPathCommand { get; } + public ICommand HelpCommand { get; } public bool IsFileInfoAvailable => SelectedFile?.FileInfo != null; public bool SelectedFileIsNotDirectory => SelectedFile?.IsDirectory == false; public long? SelectedFileLength => SelectedFile?.IsDirectory == false ? SelectedFile?.FileInfo?.Length : 0; @@ -118,6 +120,19 @@ public sealed partial class MainWindowViewModel : ViewModelBase public string? SelectedFileInformation => SelectedFile?.Information; + Task HelpAsync() + { + var dialog = new MainHelpDialog + { + DataContext = new MainHelpDialogViewModel(null!) + }; + + // Set the dialog reference after creation + ((MainHelpDialogViewModel)dialog.DataContext!)._dialog = dialog; + + return dialog.ShowDialog(_view); + } + async Task GoToPathAsync() { var dialog = new GoToPathDialog diff --git a/Aaru.Tui/Views/Dialogs/MainHelpDialog.axaml b/Aaru.Tui/Views/Dialogs/MainHelpDialog.axaml new file mode 100644 index 000000000..5a8cbd372 --- /dev/null +++ b/Aaru.Tui/Views/Dialogs/MainHelpDialog.axaml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +