From 3a0f92fbe55faf78fb7b6c574800c25f79f13b7d Mon Sep 17 00:00:00 2001 From: GreemDev Date: Sat, 22 Nov 2025 23:23:30 -0600 Subject: [PATCH] add a setup wizard opener in the help dropdown in the menu bar, that also respects CanShowSetupWizard --- assets/locales.json | 25 +++++++++++++++++++ .../UI/SetupWizard/RyujinxSetupWizard.cs | 4 +-- .../RyujinxSetupWizardWindow.axaml.cs | 9 ++++--- .../UI/Views/Main/MainMenuBarView.axaml | 6 +++++ .../UI/Views/Main/MainMenuBarView.axaml.cs | 2 ++ src/Ryujinx/UI/Windows/MainWindow.axaml.cs | 6 ++--- 6 files changed, 43 insertions(+), 9 deletions(-) diff --git a/assets/locales.json b/assets/locales.json index 8eaa7b4af..e12b75be3 100644 --- a/assets/locales.json +++ b/assets/locales.json @@ -24842,6 +24842,31 @@ "zh_TW": "你只能加入與 LDN 網路密碼片語 (passphrase) 設定相同的遊戲。" } }, + { + "ID": "SetupWizardOpen", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Setup Wizard", + "es_ES": "", + "fr_FR": "", + "he_IL": "", + "it_IT": "", + "ja_JP": "", + "ko_KR": "", + "no_NO": "", + "pl_PL": "", + "pt_BR": "", + "ru_RU": "", + "sv_SE": "", + "th_TH": "", + "tr_TR": "", + "uk_UA": "", + "zh_CN": "", + "zh_TW": "" + } + }, { "ID": "SetupWizardActionBack", "Translations": { diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs index 663bcce87..08ee4f7f1 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizard.cs @@ -25,7 +25,7 @@ namespace Ryujinx.Ava.UI.SetupWizard public override async Task Start() { NotificationHelper.SetNotificationManager(wizardWindow); - RyujinxSetupWizardWindow.IsUsingSetupWizard = true; + RyujinxSetupWizardWindow.IsOpen = true; Start: await FirstPage(); @@ -40,7 +40,7 @@ namespace Ryujinx.Ava.UI.SetupWizard Return: NotificationHelper.SetNotificationManager(_mainWindow); wizardWindow.Close(); - RyujinxSetupWizardWindow.IsUsingSetupWizard = false; + RyujinxSetupWizardWindow.IsOpen = false; if (_configWasModified) ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.GlobalConfigurationPath); diff --git a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs index de72e9ab2..71d0aa054 100644 --- a/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs +++ b/src/Ryujinx/UI/SetupWizard/RyujinxSetupWizardWindow.axaml.cs @@ -12,7 +12,7 @@ namespace Ryujinx.Ava.UI.SetupWizard { public partial class RyujinxSetupWizardWindow : StyleableAppWindow { - public static bool IsUsingSetupWizard { get; set; } + public static bool IsOpen { get; set; } public RyujinxSetupWizardWindow() : base(useCustomTitleBar: true) { @@ -26,6 +26,9 @@ namespace Ryujinx.Ava.UI.SetupWizard public static Task ShowAsync(Window owner = null) { + if (!CanShowSetupWizard) + return Task.CompletedTask; + Task windowTask = ShowAsync( CreateWindow(out BaseSetupWizard wiz), owner ?? RyujinxApp.MainWindow @@ -49,7 +52,7 @@ namespace Ryujinx.Ava.UI.SetupWizard public static bool DisableSetupWizard() { if (!CanShowSetupWizard) - return false; //cannot disable; file already doesn't exist, so it's disabled. + return false; //cannot disable; file exists, so it's already disabled. string disableFile = Path.Combine(AppDataManager.BaseDirPath, ".DoNotShowSetupWizard"); @@ -69,7 +72,7 @@ namespace Ryujinx.Ava.UI.SetupWizard public static bool EnableSetupWizard() { if (CanShowSetupWizard) - return false; //cannot enable; file already exists, so it's enabled. + return false; //cannot enable; file does not exist, so it's already enabled. string disableFile = Path.Combine(AppDataManager.BaseDirPath, ".DoNotShowSetupWizard"); diff --git a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml index 47f79725c..cea488e8d 100755 --- a/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml +++ b/src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml @@ -8,6 +8,7 @@ xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls" xmlns:common="clr-namespace:Ryujinx.Common;assembly=Ryujinx.Common" + xmlns:setupWizard="clr-namespace:Ryujinx.Ava.UI.SetupWizard" x:DataType="viewModels:MainWindowViewModel" x:Class="Ryujinx.Ava.UI.Views.Main.MainMenuBarView"> @@ -244,6 +245,11 @@ Header="{ext:Locale LdnGameListOpen}" Icon="{ext:Icon fa-solid fa-people-group}" IsEnabled="{Binding IsRyuLdnEnabled}"/> + CompatibilityListWindow.Show()); LdnGameListMenuItem.Command = Commands.Create(() => LdnGamesListWindow.Show()); + SetupWizardMenuItem.Command = Commands.Create(() => RyujinxSetupWizardWindow.ShowAsync()); UpdateMenuItem.Command = MainWindowViewModel.UpdateCommand; diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs index bef4452c2..debbddac9 100644 --- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs @@ -144,10 +144,8 @@ namespace Ryujinx.Ava.UI.Windows { await ShowIntelMacWarningAsync(); - if (Program.IsFirstStart && RyujinxSetupWizardWindow.CanShowSetupWizard) - { + if (Program.IsFirstStart) await RyujinxSetupWizardWindow.ShowAsync(this); - } }); if (CommandLineState.FirmwareToInstallPathArg.TryGet(out FilePath fwPath)) @@ -412,7 +410,7 @@ namespace Ryujinx.Ava.UI.Windows } } } - else if (!RyujinxSetupWizardWindow.IsUsingSetupWizard) + else if (!RyujinxSetupWizardWindow.IsOpen) { ShowKeyErrorOnLoad = false;