diff --git a/src/Ryujinx.HLE/HOS/Applets/Dummy/DummyApplet.cs b/src/Ryujinx.HLE/HOS/Applets/Dummy/DummyApplet.cs index a581e1864..0019dfc90 100644 --- a/src/Ryujinx.HLE/HOS/Applets/Dummy/DummyApplet.cs +++ b/src/Ryujinx.HLE/HOS/Applets/Dummy/DummyApplet.cs @@ -19,6 +19,7 @@ namespace Ryujinx.HLE.HOS.Applets.Dummy public ResultCode Start(AppletSession normalSession, AppletSession interactiveSession) { + _system.Device.UIHandler.DisplayMissingAppletDialog(); _normalSession = normalSession; _normalSession.Push(BuildResponse()); AppletStateChanged?.Invoke(this, null); diff --git a/src/Ryujinx.HLE/UI/IHostUIHandler.cs b/src/Ryujinx.HLE/UI/IHostUIHandler.cs index 29a092b58..8930ba22c 100644 --- a/src/Ryujinx.HLE/UI/IHostUIHandler.cs +++ b/src/Ryujinx.HLE/UI/IHostUIHandler.cs @@ -79,5 +79,10 @@ namespace Ryujinx.HLE.UI /// Gets weather or not the applet is real in the system /// bool IsAppletReal(RealAppletId appletId); + + /// + /// Displays a dialog informing the user that the requested applet is missing implementation. + /// + void DisplayMissingAppletDialog(); } } diff --git a/src/Ryujinx/Assets/locales.json b/src/Ryujinx/Assets/locales.json index 0bc62abd0..22560ced7 100644 --- a/src/Ryujinx/Assets/locales.json +++ b/src/Ryujinx/Assets/locales.json @@ -19247,6 +19247,256 @@ "zh_TW": "已設定底座模式。手提控制應該停用。" } }, + { + "ID": "RealDescription", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "This is a collection of real applet options.", + "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": "RealReal", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Real", + "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": "RealSoftware", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Software", + "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": "RealMissingApplets", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Missing Applets", + "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": "RealSoftwareKeyboard", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Software Keyboard", + "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": "RealBrowser", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Browser", + "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": "RealController", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Controller", + "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": "RealPlayerSelect", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Player Select", + "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": "RealCabinet", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "Cabinet", + "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": "ErrorMissingApplet", + "Translations": { + "ar_SA": "", + "de_DE": "", + "el_GR": "", + "en_US": "The functionality of this applet is not implemented, Please set '{0}' to '{1}' if you wish to use the NX version.\n", + "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": "UpdaterRenaming", "Translations": { diff --git a/src/Ryujinx/Headless/Windows/WindowBase.cs b/src/Ryujinx/Headless/Windows/WindowBase.cs index 6f4e6ee02..9bb86bb6f 100644 --- a/src/Ryujinx/Headless/Windows/WindowBase.cs +++ b/src/Ryujinx/Headless/Windows/WindowBase.cs @@ -574,5 +574,10 @@ namespace Ryujinx.Headless { return false; } + + public void DisplayMissingAppletDialog() + { + DisplayMessageDialog("Missing Applet", "The requested applet was not found."); + } } } diff --git a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs index 0e3ae70fd..b1f1fc13d 100644 --- a/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs +++ b/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs @@ -364,5 +364,21 @@ namespace Ryujinx.Ava.UI.Applet return missingAppletsAsReal; } } + + public void DisplayMissingAppletDialog() + { + string title = LocaleManager.Instance[LocaleKeys.RealMissingApplets]; + string message = LocaleManager.Instance[LocaleKeys.ErrorMissingApplet]; + string real = LocaleManager.Instance[LocaleKeys.RealReal]; + string options = LocaleManager.Instance[LocaleKeys.MenuBarOptions].Trim('_'); + message = message.Replace("{0}", title); + message = message.Replace("{1}", real); + string location = options + "->" + + LocaleManager.Instance[LocaleKeys.Settings] + "->" + + LocaleManager.Instance[LocaleKeys.SettingsTabRealApplets] + "->" + + LocaleManager.Instance[LocaleKeys.RealMissingApplets]; + message += location; + DisplayErrorAppletDialog(title, message, [LocaleManager.Instance[LocaleKeys.InputDialogOk]]); + } } } diff --git a/src/Ryujinx/UI/Views/Settings/SettingsRealApplets.axaml b/src/Ryujinx/UI/Views/Settings/SettingsRealApplets.axaml index 8cc879950..f0f2e089b 100644 --- a/src/Ryujinx/UI/Views/Settings/SettingsRealApplets.axaml +++ b/src/Ryujinx/UI/Views/Settings/SettingsRealApplets.axaml @@ -6,6 +6,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" + xmlns:markup="clr-namespace:Ryujinx.Ava.Common.Markup" mc:Ignorable="d" x:DataType="viewModels:SettingsViewModel"> @@ -30,10 +31,10 @@ + Text="{markup:Locale SettingsTabRealApplets}" /> + Text="{markup:Locale RealDescription}" /> @@ -43,13 +44,13 @@ - - + + + Text="{markup:Locale RealMissingApplets}" /> @@ -60,13 +61,13 @@ - - + + + Text="{markup:Locale RealSoftwareKeyboard}" /> @@ -77,13 +78,13 @@ - - + + + Text="{markup:Locale RealBrowser}" /> @@ -94,13 +95,13 @@ - - + + + Text="{markup:Locale RealController}" /> @@ -111,13 +112,13 @@ - - + + + Text="{markup:Locale RealPlayerSelect}" /> @@ -128,13 +129,13 @@ - - + + + Text="{markup:Locale RealCabinet}" />