feat(ui): add Quit to File menu; hide Wallet item when no wallet is open

- File → Esci (separator + Quit at the bottom) calls IClassicDesktopStyleApplicationLifetime.Shutdown()
- Wallet menu item and mobile button now use IsVisible instead of IsEnabled:
  they disappear entirely on the wizard/setup screen and reappear once a
  wallet is open, avoiding a confusing greyed-out entry
This commit is contained in:
2026-06-21 22:34:54 +02:00
parent affeaccae8
commit c0193ae440
3 changed files with 11 additions and 2 deletions
+1
View File
@@ -47,6 +47,7 @@ public sealed class Loc
["menu.file.new"] = ["Nuovo / ripristina wallet…", "New / restore wallet…", "Nuevo / restaurar wallet…", "Nouveau / restaurer le wallet…", "Novo / restaurar carteira…", "Neu / Wallet wiederherstellen…"], ["menu.file.new"] = ["Nuovo / ripristina wallet…", "New / restore wallet…", "Nuevo / restaurar wallet…", "Nouveau / restaurer le wallet…", "Novo / restaurar carteira…", "Neu / Wallet wiederherstellen…"],
["menu.file.open"] = ["Apri wallet da file…", "Open wallet from file…", "Abrir wallet desde archivo…", "Ouvrir le wallet depuis un fichier…", "Abrir carteira de arquivo…", "Wallet aus Datei öffnen…"], ["menu.file.open"] = ["Apri wallet da file…", "Open wallet from file…", "Abrir wallet desde archivo…", "Ouvrir le wallet depuis un fichier…", "Abrir carteira de arquivo…", "Wallet aus Datei öffnen…"],
["menu.file.close"] = ["Chiudi wallet", "Close wallet", "Cerrar wallet", "Fermer le wallet", "Fechar carteira", "Wallet schließen"], ["menu.file.close"] = ["Chiudi wallet", "Close wallet", "Cerrar wallet", "Fermer le wallet", "Fechar carteira", "Wallet schließen"],
["menu.file.quit"] = ["Esci", "Quit", "Salir", "Quitter", "Sair", "Beenden"],
["menu.net"] = ["_Rete", "_Network", "_Red", "_Réseau", "_Rede", "_Netzwerk"], ["menu.net"] = ["_Rete", "_Network", "_Red", "_Réseau", "_Rede", "_Netzwerk"],
["menu.net.discover"] = ["Cerca altri server (peer)", "Discover servers (peers)", "Buscar otros servidores (peers)", "Rechercher d'autres serveurs (pairs)", "Procurar outros servidores (peers)", "Weitere Server suchen (Peers)"], ["menu.net.discover"] = ["Cerca altri server (peer)", "Discover servers (peers)", "Buscar otros servidores (peers)", "Rechercher d'autres serveurs (pairs)", "Procurar outros servidores (peers)", "Weitere Server suchen (Peers)"],
["menu.net.resetcerts"] = ["Reset certificati SSL", "Reset SSL certificates", "Restablecer certificados SSL", "Réinitialiser les certificats SSL", "Redefinir certificados SSL", "SSL-Zertifikate zurücksetzen"], ["menu.net.resetcerts"] = ["Reset certificati SSL", "Reset SSL certificates", "Restablecer certificados SSL", "Réinitialiser les certificats SSL", "Redefinir certificados SSL", "SSL-Zertifikate zurücksetzen"],
@@ -69,6 +69,12 @@ public partial class MainWindowViewModel
[RelayCommand] [RelayCommand]
private void OpenHelp() => IsHelpOpen = true; private void OpenHelp() => IsHelpOpen = true;
[RelayCommand]
private static void QuitApp() =>
(Avalonia.Application.Current?.ApplicationLifetime
as Avalonia.Controls.ApplicationLifetimes.IClassicDesktopStyleApplicationLifetime)
?.Shutdown();
[RelayCommand] [RelayCommand]
private void CloseHelp() { IsHelpOpen = false; ResetDonate(); } private void CloseHelp() { IsHelpOpen = false; ResetDonate(); }
} }
+4 -2
View File
@@ -36,10 +36,12 @@
<Separator/> <Separator/>
<MenuItem Header="{Binding Loc[menu.file.close]}" Command="{Binding CloseWalletCommand}" <MenuItem Header="{Binding Loc[menu.file.close]}" Command="{Binding CloseWalletCommand}"
IsEnabled="{Binding IsWalletOpen}"/> IsEnabled="{Binding IsWalletOpen}"/>
<Separator/>
<MenuItem Header="{Binding Loc[menu.file.quit]}" Command="{Binding QuitAppCommand}"/>
</MenuItem> </MenuItem>
<MenuItem Header="{Binding Loc[menu.wallet]}" <MenuItem Header="{Binding Loc[menu.wallet]}"
Command="{Binding OpenWalletInfoCommand}" Command="{Binding OpenWalletInfoCommand}"
IsEnabled="{Binding IsWalletOpen}"/> IsVisible="{Binding IsWalletOpen}"/>
<MenuItem Header="{Binding Loc[menu.settings]}" <MenuItem Header="{Binding Loc[menu.settings]}"
Command="{Binding OpenSettingsCommand}"/> Command="{Binding OpenSettingsCommand}"/>
<MenuItem Header="{Binding Loc[menu.help]}" <MenuItem Header="{Binding Loc[menu.help]}"
@@ -52,7 +54,7 @@
IsVisible="{Binding IsMobile}"> IsVisible="{Binding IsMobile}">
<Button Content="{Binding Loc[menu.wallet]}" <Button Content="{Binding Loc[menu.wallet]}"
Command="{Binding OpenWalletInfoCommand}" Command="{Binding OpenWalletInfoCommand}"
IsEnabled="{Binding IsWalletOpen}"/> IsVisible="{Binding IsWalletOpen}"/>
<Button Content="{Binding Loc[menu.settings]}" Command="{Binding OpenSettingsCommand}"/> <Button Content="{Binding Loc[menu.settings]}" Command="{Binding OpenSettingsCommand}"/>
<Button Content="{Binding Loc[menu.help]}" Command="{Binding OpenHelpCommand}"/> <Button Content="{Binding Loc[menu.help]}" Command="{Binding OpenHelpCommand}"/>
</StackPanel> </StackPanel>