mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-09-13 07:02:18 -06:00
Merge branch ryujinx:master into feature/rec-call-prot
This commit is contained in:
@ -1,18 +0,0 @@
|
|||||||
function pub {
|
|
||||||
dotnet publish -c release
|
|
||||||
}
|
|
||||||
|
|
||||||
function package {
|
|
||||||
cd src/$1
|
|
||||||
pub
|
|
||||||
mv bin/Release/$1.1.0.0.nupkg ../../pkgs/$1.1.0.0.nupkg
|
|
||||||
cd ../../
|
|
||||||
}
|
|
||||||
|
|
||||||
rm -rf pkgs
|
|
||||||
mkdir pkgs
|
|
||||||
|
|
||||||
package ARMeilleure
|
|
||||||
package Ryujinx.Memory
|
|
||||||
|
|
||||||
dotnet nuget push pkgs/*.nupkg --source RyubingPkgs
|
|
40
CHANGELOG.md
40
CHANGELOG.md
@ -21,8 +21,8 @@ Additionally, 1.2.74 & 75 were fixes for uploading Windows build artifacts.
|
|||||||
|
|
||||||
1.2.76 fixes a rare crash on startup.
|
1.2.76 fixes a rare crash on startup.
|
||||||
|
|
||||||
## [1.2.72](<https://github.com/GreemDev/Ryujinx/releases/tag/1.2.72>) - 2024-11-03
|
## [1.2.72](<https://git.ryujinx.app/ryubing/ryujinx/-/tags/1.2.72>) - 2024-11-03
|
||||||
PRs [#163](<https://github.com/GreemDev/Ryujinx/pull/163>), [#164](<https://github.com/GreemDev/Ryujinx/pull/164>), [#139](<https://github.com/GreemDev/Ryujinx/pull/139>)
|
PRs [#163](<https://web.archive.org/web/20241123015123/https://github.com/GreemDev/Ryujinx/pull/163>), [#164](<https://web.archive.org/web/20250307192526/https://github.com/Ryubing/Ryujinx/pull/164>), [#139](<https://web.archive.org/web/20250306123457/https://github.com/Ryubing/Ryujinx/pull/139>)
|
||||||
### HLE:
|
### HLE:
|
||||||
- Add DebugMouse HID device.
|
- Add DebugMouse HID device.
|
||||||
- Fixes "Clock Tower Rewind" crashing while loading.
|
- Fixes "Clock Tower Rewind" crashing while loading.
|
||||||
@ -32,7 +32,7 @@ PRs [#163](<https://github.com/GreemDev/Ryujinx/pull/163>), [#164](<https://gith
|
|||||||
### misc:
|
### misc:
|
||||||
- Update macOS distribution .icns.
|
- Update macOS distribution .icns.
|
||||||
|
|
||||||
## [1.2.69](<https://github.com/GreemDev/Ryujinx/releases/tag/1.2.69>) - 2024-11-01
|
## [1.2.69](<https://git.ryujinx.app/ryubing/ryujinx/-/tags/1.2.69>) - 2024-11-01
|
||||||
### Infra:
|
### Infra:
|
||||||
- Compile the native libraries into the Ryujinx executable.
|
- Compile the native libraries into the Ryujinx executable.
|
||||||
- Remove `libarmeilleure-jitsupport.dylib` from Windows & Linux releases (dylibs are macOS-only)
|
- Remove `libarmeilleure-jitsupport.dylib` from Windows & Linux releases (dylibs are macOS-only)
|
||||||
@ -42,8 +42,8 @@ PRs [#163](<https://github.com/GreemDev/Ryujinx/pull/163>), [#164](<https://gith
|
|||||||
- Replace "" with `string.Empty`.
|
- Replace "" with `string.Empty`.
|
||||||
- Code cleanups & simplifications.
|
- Code cleanups & simplifications.
|
||||||
|
|
||||||
## [1.2.67](<https://github.com/GreemDev/Ryujinx/releases/tag/1.2.67>) - 2024-11-01
|
## [1.2.67](<https://git.ryujinx.app/ryubing/ryujinx/-/tags/1.2.67>) - 2024-11-01
|
||||||
PRs [#36](<https://github.com/GreemDev/Ryujinx/pull/36>), [#135](<https://github.com/GreemDev/Ryujinx/pull/135>)
|
PRs [#36](<https://web.archive.org/web/20250306215917/https://github.com/Ryubing/Ryujinx/pull/36>), [#135](<https://web.archive.org/web/20241122135125/https://github.com/GreemDev/Ryujinx/pull/135>)
|
||||||
|
|
||||||
### GUI:
|
### GUI:
|
||||||
- Set UseFloatingWatermark to false when watermark is empty
|
- Set UseFloatingWatermark to false when watermark is empty
|
||||||
@ -54,8 +54,8 @@ PRs [#36](<https://github.com/GreemDev/Ryujinx/pull/36>), [#135](<https://github
|
|||||||
- Fix homebrew loading.
|
- Fix homebrew loading.
|
||||||
|
|
||||||
|
|
||||||
## [1.2.64](https://github.com/GreemDev/Ryujinx/releases/tag/1.2.64) - 2024-10-30
|
## [1.2.64](https://git.ryujinx.app/ryubing/ryujinx/-/tags/1.2.64) - 2024-10-30
|
||||||
PRs [#92](https://github.com/GreemDev/Ryujinx/pull/92), [#96](https://github.com/GreemDev/Ryujinx/pull/96), [#97](https://github.com/GreemDev/Ryujinx/pull/97), [#101](https://github.com/GreemDev/Ryujinx/pull/101), [#103](https://github.com/GreemDev/Ryujinx/pull/103)
|
PRs [#92](https://web.archive.org/web/20241118052724/https://github.com/GreemDev/Ryujinx/pull/92), ~~[#96](https://github.com/GreemDev/Ryujinx/pull/96)~~, ~~[#97](https://github.com/GreemDev/Ryujinx/pull/97)~~, [#101](https://web.archive.org/web/20250306223605/https://github.com/Ryubing/Ryujinx/pull/101), ~~[#103](https://github.com/GreemDev/Ryujinx/pull/103)~~
|
||||||
### GUI:
|
### GUI:
|
||||||
- Option to show classic-style title bar. Requires restart of emulator to take effect.
|
- Option to show classic-style title bar. Requires restart of emulator to take effect.
|
||||||
- This is only relevant on Windows. Other Operating Systems default to this being on and not being changeable, because the custom (current) title bar only works on Windows in the first place.
|
- This is only relevant on Windows. Other Operating Systems default to this being on and not being changeable, because the custom (current) title bar only works on Windows in the first place.
|
||||||
@ -71,14 +71,14 @@ PRs [#92](https://github.com/GreemDev/Ryujinx/pull/92), [#96](https://github.com
|
|||||||
|
|
||||||
## 1.2.59 - 2024-10-27
|
## 1.2.59 - 2024-10-27
|
||||||
|
|
||||||
PRs [#88](https://github.com/GreemDev/Ryujinx/pull/88), [#87](https://github.com/GreemDev/Ryujinx/pull/87)
|
PRs ~~[#88](https://github.com/GreemDev/Ryujinx/pull/88), [#87](https://github.com/GreemDev/Ryujinx/pull/87)~~
|
||||||
### i18n:
|
### i18n:
|
||||||
- fr_FR:
|
- fr_FR:
|
||||||
- Add missing translations for new features & fix a couple wrong ones.
|
- Add missing translations for new features & fix a couple wrong ones.
|
||||||
- Fix Ignore Missing Services / Ignore Applet tooltip.
|
- Fix Ignore Missing Services / Ignore Applet tooltip.
|
||||||
|
|
||||||
## 1.2.57 - 2024-10-27
|
## 1.2.57 - 2024-10-27
|
||||||
PRs [#60](https://github.com/GreemDev/Ryujinx/pull/60), [#42](https://github.com/GreemDev/Ryujinx/pull/42)
|
PRs ~~[#60](https://github.com/GreemDev/Ryujinx/pull/60)~~, [#42](https://web.archive.org/web/20241126203614/https://github.com/GreemDev/Ryujinx/pull/42)
|
||||||
### GUI:
|
### GUI:
|
||||||
- Automatically remove invalid DLC & updates as part of autoload.
|
- Automatically remove invalid DLC & updates as part of autoload.
|
||||||
- Added Thai translation for Ignore Applet hover tooltip.
|
- Added Thai translation for Ignore Applet hover tooltip.
|
||||||
@ -104,7 +104,7 @@ PRs [#60](https://github.com/GreemDev/Ryujinx/pull/60), [#42](https://github.com
|
|||||||
- Code cleanup.
|
- Code cleanup.
|
||||||
|
|
||||||
## 1.2.44 - 2024-10-25
|
## 1.2.44 - 2024-10-25
|
||||||
PR [#59](https://github.com/GreemDev/Ryujinx/pull/59)
|
PR [#59](https://web.archive.org/web/20241125060420/https://github.com/GreemDev/Ryujinx/pull/59)
|
||||||
### GUI:
|
### GUI:
|
||||||
- Add descriptions for "ignoring applet" translated into other languages.
|
- Add descriptions for "ignoring applet" translated into other languages.
|
||||||
|
|
||||||
@ -117,9 +117,9 @@ NOTE: The translation isn't referenced in the code yet, it will be in the next u
|
|||||||
## 1.2.42 - 2024-10-24
|
## 1.2.42 - 2024-10-24
|
||||||
Sources:
|
Sources:
|
||||||
|
|
||||||
Init function: https://github.com/MutantAura/Ryujinx/commit/9cef4ceba40d66492ff775af793ff70e6e7551a9
|
Init function: [archive of github.com/MutantAura/Ryujinx/commit/9cef4ceba40d66492ff775af793ff70e6e7551a9](https://web.archive.org/web/20241122193401/https://github.com/MutantAura/Ryujinx/commit/9cef4ceba40d66492ff775af793ff70e6e7551a9)
|
||||||
|
|
||||||
Shader counter: https://github.com/MutantAura/Ryujinx/commit/67b873645fd593e83d042a77bf7ab12e5ec97357
|
Shader counter: ~~https://github.com/MutantAura/Ryujinx/commit/67b873645fd593e83d042a77bf7ab12e5ec97357~~ Original commit has been lost
|
||||||
|
|
||||||
Thanks MutantAura :D
|
Thanks MutantAura :D
|
||||||
### GUI:
|
### GUI:
|
||||||
@ -127,14 +127,14 @@ Thanks MutantAura :D
|
|||||||
- Remove graphics backend / GPU name event logic in favor of a single init function.
|
- Remove graphics backend / GPU name event logic in favor of a single init function.
|
||||||
|
|
||||||
## 1.2.41 - 2024-10-24
|
## 1.2.41 - 2024-10-24
|
||||||
PR [#54](https://github.com/GreemDev/Ryujinx/pull/54)
|
PR ~~[#54](https://github.com/GreemDev/Ryujinx/pull/54)~~
|
||||||
|
|
||||||
Thanks Whitescatz!
|
Thanks Whitescatz!
|
||||||
### i18n:
|
### i18n:
|
||||||
- th_TH (Thai): Added missing translations, reduce transliterated words, fix grammar.
|
- th_TH (Thai): Added missing translations, reduce transliterated words, fix grammar.
|
||||||
|
|
||||||
## 1.2.40 - 2024-10-23
|
## 1.2.40 - 2024-10-23
|
||||||
PR [#40](https://github.com/GreemDev/Ryujinx/pull/40)
|
PR ~~[#40](https://github.com/GreemDev/Ryujinx/pull/40)~~
|
||||||
|
|
||||||
Thanks Вова С!
|
Thanks Вова С!
|
||||||
### GUI:
|
### GUI:
|
||||||
@ -148,30 +148,30 @@ Thanks Вова С!
|
|||||||
- Should prevent crashing on config loads in some circumstances.
|
- Should prevent crashing on config loads in some circumstances.
|
||||||
|
|
||||||
## 1.2.38 - 2024-10-23
|
## 1.2.38 - 2024-10-23
|
||||||
PR [#51](https://github.com/GreemDev/Ryujinx/pull/51)
|
PR [#51](https://web.archive.org/web/20241127022413/https://github.com/GreemDev/Ryujinx/pull/51)
|
||||||
### i18n:
|
### i18n:
|
||||||
- zh_CH (Simplified Chinese): Add some missing translations.
|
- zh_CH (Simplified Chinese): Add some missing translations.
|
||||||
|
|
||||||
## 1.2.37 - 2024-10-23
|
## 1.2.37 - 2024-10-23
|
||||||
PR [#37](https://github.com/GreemDev/Ryujinx/pull/37)
|
PR [#37](https://web.archive.org/web/20241123010103/https://github.com/GreemDev/Ryujinx/pull/37)
|
||||||
|
|
||||||
Thanks Last Breath!
|
Thanks Last Breath!
|
||||||
### GUI:
|
### GUI:
|
||||||
- Set the default controller to the Pro Controller.
|
- Set the default controller to the Pro Controller.
|
||||||
|
|
||||||
## 1.2.36 - 2024-10-21
|
## 1.2.36 - 2024-10-21
|
||||||
PR [#30](https://github.com/GreemDev/Ryujinx/pull/30)
|
PR ~~[#30](https://github.com/GreemDev/Ryujinx/pull/30)~~
|
||||||
### GUI:
|
### GUI:
|
||||||
- Fix repeated dialog popup notifying you of new updates when there aren't any, while having a bundled update inside an XCI and an external update file.
|
- Fix repeated dialog popup notifying you of new updates when there aren't any, while having a bundled update inside an XCI and an external update file.
|
||||||
|
|
||||||
## 1.2.35 - 2024-10-21
|
## 1.2.35 - 2024-10-21
|
||||||
PR [#32](https://github.com/GreemDev/Ryujinx/pull/32)
|
PR [#32](https://web.archive.org/web/20241127010942/https://github.com/GreemDev/Ryujinx/pull/32)
|
||||||
### GUI:
|
### GUI:
|
||||||
- Replace "expand DRAM" option with a DRAM size dropdown.
|
- Replace "expand DRAM" option with a DRAM size dropdown.
|
||||||
- Allows for using mods which require a ridiculous amount of memory to allocate from.
|
- Allows for using mods which require a ridiculous amount of memory to allocate from.
|
||||||
|
|
||||||
## 1.2.34 - 2024-10-21
|
## 1.2.34 - 2024-10-21
|
||||||
PR [#29](https://github.com/GreemDev/Ryujinx/pull/29)
|
PR [#29](https://web.archive.org/web/20241125093029/https://github.com/GreemDev/Ryujinx/pull/29)
|
||||||
### GUI:
|
### GUI:
|
||||||
- Fix duplicate controller names when 2 controllers of the same type are connected.
|
- Fix duplicate controller names when 2 controllers of the same type are connected.
|
||||||
### INPUT:
|
### INPUT:
|
||||||
@ -248,7 +248,7 @@ Added Low-power PPTC mode strings to the translation files.
|
|||||||
## 1.2.1-1.2.19 - 2024-10-08 - 2024-10-11
|
## 1.2.1-1.2.19 - 2024-10-08 - 2024-10-11
|
||||||
### GUI/INFRA/MISC:
|
### GUI/INFRA/MISC:
|
||||||
- Remove GTK UI.
|
- Remove GTK UI.
|
||||||
- Autoload DLC/Updates from dir ([#12](https://github.com/GreemDev/Ryujinx/pull/12)).
|
- Autoload DLC/Updates from dir ([#12](https://web.archive.org/web/20241127004005/https://github.com/GreemDev/Ryujinx/pull/12)).
|
||||||
- Changed executable icon to rainbow logo.
|
- Changed executable icon to rainbow logo.
|
||||||
- Extract Data > Logo now also extracts the square thumbnail you see for the game in the UI.
|
- Extract Data > Logo now also extracts the square thumbnail you see for the game in the UI.
|
||||||
- The "use random UUID hack" checkbox in the Amiibo screen now remembers its last state when you reopen the window in a given session.
|
- The "use random UUID hack" checkbox in the Amiibo screen now remembers its last state when you reopen the window in a given session.
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -20,6 +20,18 @@ namespace Ryujinx.HLE
|
|||||||
{
|
{
|
||||||
public class Switch : IDisposable
|
public class Switch : IDisposable
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Currently running emulated Switch, if there is one.
|
||||||
|
/// <para>
|
||||||
|
/// Proper usage of this property null checks it before use, unless the caller is certain that the emulation is running.
|
||||||
|
/// </para>
|
||||||
|
/// <para>
|
||||||
|
/// In case the emulation is running, there might be a way to directly pass the <see cref="Switch" /> instance, which is preferred.
|
||||||
|
/// </para>
|
||||||
|
/// <para>
|
||||||
|
/// The instance is set to <c>this</c> on any <see cref="Switch" /> instantiation, and set to <c>null</c> on any <see cref="Switch" /> disposal.
|
||||||
|
/// </para>
|
||||||
|
/// </summary>
|
||||||
public static Switch Shared { get; private set; }
|
public static Switch Shared { get; private set; }
|
||||||
|
|
||||||
public HleConfiguration Configuration { get; }
|
public HleConfiguration Configuration { get; }
|
||||||
|
@ -19,7 +19,7 @@ namespace Ryujinx.Ava.Common.Locale
|
|||||||
private readonly Dictionary<LocaleKeys, string> _localeStrings;
|
private readonly Dictionary<LocaleKeys, string> _localeStrings;
|
||||||
private readonly ConcurrentDictionary<LocaleKeys, object[]> _dynamicValues;
|
private readonly ConcurrentDictionary<LocaleKeys, object[]> _dynamicValues;
|
||||||
private string _localeLanguageCode;
|
private string _localeLanguageCode;
|
||||||
|
public string CurrentLanguageCode => _localeLanguageCode;
|
||||||
public static LocaleManager Instance { get; } = new();
|
public static LocaleManager Instance { get; } = new();
|
||||||
public event Action LocaleChanged;
|
public event Action LocaleChanged;
|
||||||
|
|
||||||
|
@ -71,12 +71,12 @@
|
|||||||
Command="{Binding OpenTitleUpdateManager}"
|
Command="{Binding OpenTitleUpdateManager}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuManageTitleUpdates}"
|
Header="{ext:Locale GameListContextMenuManageTitleUpdates}"
|
||||||
Icon="{ext:Icon fa-solid fa-code-compare}" />
|
Icon="{ext:Icon fa-solid fa-diagram-predecessor}" />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenDownloadableContentManager}"
|
Command="{Binding OpenDownloadableContentManager}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuManageDlc}"
|
Header="{ext:Locale GameListContextMenuManageDlc}"
|
||||||
Icon="{ext:Icon fa-solid fa-download}" />
|
Icon="{ext:Icon fa-solid fa-puzzle-piece}" />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenCheatManager}"
|
Command="{Binding OpenCheatManager}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
@ -92,12 +92,12 @@
|
|||||||
Command="{Binding OpenModsDirectory}"
|
Command="{Binding OpenModsDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuOpenModsDirectory}"
|
Header="{ext:Locale GameListContextMenuOpenModsDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder}" />
|
Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenSdModsDirectory}"
|
Command="{Binding OpenSdModsDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuOpenSdModsDirectory}"
|
Header="{ext:Locale GameListContextMenuOpenSdModsDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder}"
|
Icon="{ext:Icon fa-solid fa-folder-closed}"
|
||||||
ToolTip.Tip="{ext:Locale GameListContextMenuOpenSdModsDirectoryToolTip}" />
|
ToolTip.Tip="{ext:Locale GameListContextMenuOpenSdModsDirectoryToolTip}" />
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
@ -128,12 +128,12 @@
|
|||||||
Command="{Binding OpenPtcDirectory}"
|
Command="{Binding OpenPtcDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuCacheManagementOpenPptcDirectory}"
|
Header="{ext:Locale GameListContextMenuCacheManagementOpenPptcDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder}" />
|
Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenShaderCacheDirectory}"
|
Command="{Binding OpenShaderCacheDirectory}"
|
||||||
CommandParameter="{Binding}"
|
CommandParameter="{Binding}"
|
||||||
Header="{ext:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectory}"
|
Header="{ext:Locale GameListContextMenuCacheManagementOpenShaderCacheDirectory}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder}" />
|
Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="{ext:Locale GameListContextMenuExtractData}" Icon="{ext:Icon fa-solid fa-file-export}">
|
<MenuItem Header="{ext:Locale GameListContextMenuExtractData}" Icon="{ext:Icon fa-solid fa-file-export}">
|
||||||
<MenuItem
|
<MenuItem
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
x:Class="Ryujinx.Ava.RyujinxApp"
|
x:Class="Ryujinx.Ava.RyujinxApp"
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:sty="using:FluentAvalonia.Styling">
|
xmlns:sty="using:FluentAvalonia.Styling"
|
||||||
|
xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup">
|
||||||
<Application.Resources>
|
<Application.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
@ -19,7 +20,7 @@
|
|||||||
</Application.Styles>
|
</Application.Styles>
|
||||||
<NativeMenu.Menu>
|
<NativeMenu.Menu>
|
||||||
<NativeMenu>
|
<NativeMenu>
|
||||||
<NativeMenuItem Header="About Ryujinx" Click="AboutRyujinx_OnClick" />
|
<NativeMenuItem Header="{ext:Locale MenuBarHelpAbout}" Click="AboutRyujinx_OnClick" />
|
||||||
</NativeMenu>
|
</NativeMenu>
|
||||||
</NativeMenu.Menu>
|
</NativeMenu.Menu>
|
||||||
</Application>
|
</Application>
|
||||||
|
@ -1204,11 +1204,11 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
_rendererWaitEvent.Set();
|
_rendererWaitEvent.Set();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task LoadContentFromFolder(LocaleKeys localeMessageAddedKey, LocaleKeys localeMessageRemovedKey, LoadContentFromFolderDelegate onDirsSelected)
|
private async Task LoadContentFromFolder(LocaleKeys localeMessageAddedKey, LocaleKeys localeMessageRemovedKey, LoadContentFromFolderDelegate onDirsSelected, LocaleKeys dirSelectDialogTitle)
|
||||||
{
|
{
|
||||||
IReadOnlyList<IStorageFolder> result = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
|
IReadOnlyList<IStorageFolder> result = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
|
||||||
{
|
{
|
||||||
Title = LocaleManager.Instance[LocaleKeys.OpenFolderDialogTitle],
|
Title = LocaleManager.Instance[dirSelectDialogTitle],
|
||||||
AllowMultiple = true,
|
AllowMultiple = true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1505,7 +1505,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
{
|
{
|
||||||
IReadOnlyList<IStorageFile> result = await StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
|
IReadOnlyList<IStorageFile> result = await StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
|
||||||
{
|
{
|
||||||
Title = LocaleManager.Instance[LocaleKeys.OpenFileDialogTitle],
|
Title = LocaleManager.Instance[LocaleKeys.LoadApplicationFromFileDialogTitle],
|
||||||
AllowMultiple = false,
|
AllowMultiple = false,
|
||||||
FileTypeFilter = new List<FilePickerFileType>
|
FileTypeFilter = new List<FilePickerFileType>
|
||||||
{
|
{
|
||||||
@ -1581,7 +1581,8 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
await LoadContentFromFolder(
|
await LoadContentFromFolder(
|
||||||
LocaleKeys.AutoloadDlcAddedMessage,
|
LocaleKeys.AutoloadDlcAddedMessage,
|
||||||
LocaleKeys.AutoloadDlcRemovedMessage,
|
LocaleKeys.AutoloadDlcRemovedMessage,
|
||||||
ApplicationLibrary.AutoLoadDownloadableContents);
|
ApplicationLibrary.AutoLoadDownloadableContents,
|
||||||
|
LocaleKeys.LoadDLCFromFolderDialogTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task LoadTitleUpdatesFromFolder()
|
public async Task LoadTitleUpdatesFromFolder()
|
||||||
@ -1589,14 +1590,15 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
await LoadContentFromFolder(
|
await LoadContentFromFolder(
|
||||||
LocaleKeys.AutoloadUpdateAddedMessage,
|
LocaleKeys.AutoloadUpdateAddedMessage,
|
||||||
LocaleKeys.AutoloadUpdateRemovedMessage,
|
LocaleKeys.AutoloadUpdateRemovedMessage,
|
||||||
ApplicationLibrary.AutoLoadTitleUpdates);
|
ApplicationLibrary.AutoLoadTitleUpdates,
|
||||||
|
LocaleKeys.LoadTitleUpdatesFromFolderDialogTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task OpenFolder()
|
public async Task OpenFolder()
|
||||||
{
|
{
|
||||||
IReadOnlyList<IStorageFolder> result = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
|
IReadOnlyList<IStorageFolder> result = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
|
||||||
{
|
{
|
||||||
Title = LocaleManager.Instance[LocaleKeys.OpenFolderDialogTitle],
|
Title = LocaleManager.Instance[LocaleKeys.LoadUnpackedGameFromFolderDialogTitle],
|
||||||
AllowMultiple = false,
|
AllowMultiple = false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -39,36 +39,29 @@
|
|||||||
Header="{ext:Locale MenuBarFileOpenUnpacked}"
|
Header="{ext:Locale MenuBarFileOpenUnpacked}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder-open}"
|
Icon="{ext:Icon fa-solid fa-folder-open}"
|
||||||
IsEnabled="{Binding EnableNonGameRunningControls}" />
|
IsEnabled="{Binding EnableNonGameRunningControls}" />
|
||||||
<MenuItem
|
|
||||||
Command="{Binding LoadDlcFromFolder}"
|
|
||||||
Header="{ext:Locale MenuBarFileLoadDlcFromFolder}"
|
|
||||||
Icon="{ext:Icon fa-solid fa-download}"
|
|
||||||
IsEnabled="{Binding EnableNonGameRunningControls}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding LoadTitleUpdatesFromFolder}"
|
Command="{Binding LoadTitleUpdatesFromFolder}"
|
||||||
Header="{ext:Locale MenuBarFileLoadTitleUpdatesFromFolder}"
|
Header="{ext:Locale MenuBarFileLoadTitleUpdatesFromFolder}"
|
||||||
Icon="{ext:Icon fa-solid fa-code-compare}"
|
Icon="{ext:Icon fa-solid fa-diagram-predecessor}"
|
||||||
|
IsEnabled="{Binding EnableNonGameRunningControls}" />
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding LoadDlcFromFolder}"
|
||||||
|
Header="{ext:Locale MenuBarFileLoadDlcFromFolder}"
|
||||||
|
Icon="{ext:Icon fa-solid fa-puzzle-piece}"
|
||||||
IsEnabled="{Binding EnableNonGameRunningControls}" />
|
IsEnabled="{Binding EnableNonGameRunningControls}" />
|
||||||
<MenuItem Header="{ext:Locale MenuBarFileOpenApplet}" IsEnabled="{Binding IsAppletMenuActive}" Icon="{ext:Icon fa-solid fa-microchip}">
|
|
||||||
<MenuItem
|
|
||||||
Name="MiiAppletMenuItem"
|
|
||||||
Header="{ext:Locale MenuBarFileOpenAppletOpenMiiApplet}"
|
|
||||||
Icon="{ext:Icon fa-solid fa-person}"
|
|
||||||
ToolTip.Tip="{ext:Locale MenuBarFileOpenAppletOpenMiiAppletToolTip}" />
|
|
||||||
</MenuItem>
|
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenRyujinxFolder}"
|
Command="{Binding OpenRyujinxFolder}"
|
||||||
Header="{ext:Locale MenuBarFileOpenEmuFolder}"
|
Header="{ext:Locale MenuBarFileOpenEmuFolder}"
|
||||||
Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
||||||
<MenuItem
|
|
||||||
Command="{Binding OpenScreenshotsFolder}"
|
|
||||||
Header="{ext:Locale MenuBarFileOpenScreenshotsFolder}"
|
|
||||||
Icon="{ext:Icon fa-solid fa-desktop}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Command="{Binding OpenLogsFolder}"
|
Command="{Binding OpenLogsFolder}"
|
||||||
Header="{ext:Locale MenuBarFileOpenLogsFolder}"
|
Header="{ext:Locale MenuBarFileOpenLogsFolder}"
|
||||||
Icon="{ext:Icon fa-solid fa-file-lines}" />
|
Icon="{ext:Icon fa-solid fa-terminal}" />
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding OpenScreenshotsFolder}"
|
||||||
|
Header="{ext:Locale MenuBarFileOpenScreenshotsFolder}"
|
||||||
|
Icon="{ext:Icon fa-solid fa-image}" />
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Name="CloseRyujinxMenuItem"
|
Name="CloseRyujinxMenuItem"
|
||||||
@ -132,11 +125,6 @@
|
|||||||
Icon="{ext:Icon fa-solid fa-globe}"
|
Icon="{ext:Icon fa-solid fa-globe}"
|
||||||
Classes="withCheckbox">
|
Classes="withCheckbox">
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem
|
|
||||||
Name="ToggleFileTypesMenuItem"
|
|
||||||
Padding="-10,0,0,0"
|
|
||||||
Header="{ext:Locale MenuBarShowFileTypes}" />
|
|
||||||
<Separator />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Name="OpenSettingsMenuItem"
|
Name="OpenSettingsMenuItem"
|
||||||
Padding="0"
|
Padding="0"
|
||||||
@ -222,20 +210,25 @@
|
|||||||
<MenuItem Command="{Binding InstallFirmwareFromFile}" Header="{ext:Locale MenuBarActionsInstallFirmwareFromFile}" Icon="{ext:Icon fa-solid fa-file-code}" />
|
<MenuItem Command="{Binding InstallFirmwareFromFile}" Header="{ext:Locale MenuBarActionsInstallFirmwareFromFile}" Icon="{ext:Icon fa-solid fa-file-code}" />
|
||||||
<MenuItem Command="{Binding InstallFirmwareFromFolder}" Header="{ext:Locale MenuBarActionsInstallFirmwareFromDirectory}" Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
<MenuItem Command="{Binding InstallFirmwareFromFolder}" Header="{ext:Locale MenuBarActionsInstallFirmwareFromDirectory}" Icon="{ext:Icon fa-solid fa-folder-closed}" />
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="{ext:Locale MenuBarActionsManageFileTypes}" IsVisible="{Binding ManageFileTypesVisible}">
|
<MenuItem Header="{ext:Locale MenuBarActionsManageFileTypes}" IsVisible="{Binding ManageFileTypesVisible}" Icon="{ext:Icon fa-solid fa-clipboard}">
|
||||||
<MenuItem Name="InstallFileTypesMenuItem" Header="{ext:Locale MenuBarActionsInstallFileTypes}" IsEnabled="{Binding AreMimeTypesRegistered, Converter={x:Static BoolConverters.Not}}" />
|
<MenuItem Name="InstallFileTypesMenuItem" Header="{ext:Locale MenuBarActionsInstallFileTypes}" IsEnabled="{Binding AreMimeTypesRegistered, Converter={x:Static BoolConverters.Not}}" Icon="{ext:Icon fa-solid fa-square-plus}" />
|
||||||
<MenuItem Name="UninstallFileTypesMenuItem" Header="{ext:Locale MenuBarActionsUninstallFileTypes}" IsEnabled="{Binding AreMimeTypesRegistered}" />
|
<MenuItem Name="UninstallFileTypesMenuItem" Header="{ext:Locale MenuBarActionsUninstallFileTypes}" IsEnabled="{Binding AreMimeTypesRegistered}" Icon="{ext:Icon fa-solid fa-square-minus}" />
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem Name="XciTrimmerMenuItem" Header="{ext:Locale MenuBarActionsXCITrimmer}" Icon="{ext:Icon fa-solid fa-scissors}" />
|
<MenuItem Header="{ext:Locale MenuBarActionsTools}" Icon="{ext:Icon fa-solid fa-toolbox}">
|
||||||
|
<MenuItem
|
||||||
|
Name="MiiAppletMenuItem" Header="{ext:Locale MenuBarActionsOpenMiiEditor}" Icon="{ext:Icon fa-solid fa-face-grin-wide}" ToolTip.Tip="{ext:Locale MenuBarActionsOpenMiiEditorToolTip}" />
|
||||||
|
<MenuItem Name="XciTrimmerMenuItem" Header="{ext:Locale MenuBarActionsXCITrimmer}" Icon="{ext:Icon fa-solid fa-scissors}" />
|
||||||
|
</MenuItem>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarView}">
|
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarView}">
|
||||||
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarViewWindow}">
|
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarViewWindow}" Icon="{ext:Icon fa-solid fa-window-restore}">
|
||||||
<MenuItem Name="WindowSize720PMenuItem" Header="{ext:Locale MenuBarViewWindow720}" CommandParameter="1280 720" />
|
<MenuItem Name="WindowSize720PMenuItem" Header="{ext:Locale MenuBarViewWindow720}" CommandParameter="1280 720" />
|
||||||
<MenuItem Name="WindowSize1080PMenuItem" Header="{ext:Locale MenuBarViewWindow1080}" CommandParameter="1920 1080" />
|
<MenuItem Name="WindowSize1080PMenuItem" Header="{ext:Locale MenuBarViewWindow1080}" CommandParameter="1920 1080" />
|
||||||
<MenuItem Name="WindowSize1440PMenuItem" Header="{ext:Locale MenuBarViewWindow1440}" CommandParameter="2560 1440" />
|
<MenuItem Name="WindowSize1440PMenuItem" Header="{ext:Locale MenuBarViewWindow1440}" CommandParameter="2560 1440" />
|
||||||
<MenuItem Name="WindowSize2160PMenuItem" Header="{ext:Locale MenuBarViewWindow2160}" CommandParameter="3840 2160" />
|
<MenuItem Name="WindowSize2160PMenuItem" Header="{ext:Locale MenuBarViewWindow2160}" CommandParameter="3840 2160" />
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
<MenuItem Name="ToggleFileTypesMenuItem" Header="{ext:Locale MenuBarShowFileTypes}" Icon="{ext:Icon fa-solid fa-tags}" />
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelp}">
|
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelp}">
|
||||||
<MenuItem
|
<MenuItem
|
||||||
@ -258,12 +251,6 @@
|
|||||||
IsEnabled="{Binding IsRyuLdnEnabled}"/>
|
IsEnabled="{Binding IsRyuLdnEnabled}"/>
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelpFaqAndGuides}" Icon="{ext:Icon fa-solid fa-question}" >
|
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelpFaqAndGuides}" Icon="{ext:Icon fa-solid fa-question}" >
|
||||||
<MenuItem
|
|
||||||
Name="FaqMenuItem"
|
|
||||||
Header="{ext:Locale MenuBarHelpFaq}"
|
|
||||||
Icon="{ext:Icon fa-brands fa-gitlab}"
|
|
||||||
CommandParameter="{x:Static common:SharedConstants.FaqWikiUrl}"
|
|
||||||
ToolTip.Tip="{ext:Locale MenuBarHelpFaqTooltip}" />
|
|
||||||
<MenuItem
|
<MenuItem
|
||||||
Name="SetupGuideMenuItem"
|
Name="SetupGuideMenuItem"
|
||||||
Header="{ext:Locale MenuBarHelpSetup}"
|
Header="{ext:Locale MenuBarHelpSetup}"
|
||||||
@ -276,6 +263,12 @@
|
|||||||
Icon="{ext:Icon fa-brands fa-gitlab}"
|
Icon="{ext:Icon fa-brands fa-gitlab}"
|
||||||
CommandParameter="{x:Static common:SharedConstants.MultiplayerWikiUrl}"
|
CommandParameter="{x:Static common:SharedConstants.MultiplayerWikiUrl}"
|
||||||
ToolTip.Tip="{ext:Locale MenuBarHelpMultiplayerTooltip}" />
|
ToolTip.Tip="{ext:Locale MenuBarHelpMultiplayerTooltip}" />
|
||||||
|
<MenuItem
|
||||||
|
Name="FaqMenuItem"
|
||||||
|
Header="{ext:Locale MenuBarHelpFaq}"
|
||||||
|
Icon="{ext:Icon fa-brands fa-gitlab}"
|
||||||
|
CommandParameter="{x:Static common:SharedConstants.FaqWikiUrl}"
|
||||||
|
ToolTip.Tip="{ext:Locale MenuBarHelpFaqTooltip}" />
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
|
@ -61,6 +61,14 @@ namespace Ryujinx.Ava.UI.Views.Main
|
|||||||
WindowSize1080PMenuItem.Command =
|
WindowSize1080PMenuItem.Command =
|
||||||
WindowSize1440PMenuItem.Command =
|
WindowSize1440PMenuItem.Command =
|
||||||
WindowSize2160PMenuItem.Command = Commands.Create<string>(ChangeWindowSize);
|
WindowSize2160PMenuItem.Command = Commands.Create<string>(ChangeWindowSize);
|
||||||
|
|
||||||
|
LocaleManager.Instance.LocaleChanged += OnLocaleChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnLocaleChanged()
|
||||||
|
{
|
||||||
|
ChangeLanguageMenuItem.ItemsSource = GenerateLanguageMenuItems();
|
||||||
|
Menu.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<CheckBox> GenerateToggleFileTypeItems() =>
|
private IEnumerable<CheckBox> GenerateToggleFileTypeItems() =>
|
||||||
@ -80,6 +88,7 @@ namespace Ryujinx.Ava.UI.Views.Main
|
|||||||
const string LocalePath = "Ryujinx/Assets/Locale.json";
|
const string LocalePath = "Ryujinx/Assets/Locale.json";
|
||||||
|
|
||||||
string languageJson = EmbeddedResources.ReadAllText(LocalePath);
|
string languageJson = EmbeddedResources.ReadAllText(LocalePath);
|
||||||
|
string currentLanguageCode = LocaleManager.Instance.CurrentLanguageCode;
|
||||||
|
|
||||||
LocalesJson locales = JsonHelper.Deserialize(languageJson, LocalesJsonContext.Default.LocalesJson);
|
LocalesJson locales = JsonHelper.Deserialize(languageJson, LocalesJsonContext.Default.LocalesJson);
|
||||||
|
|
||||||
@ -105,7 +114,7 @@ namespace Ryujinx.Ava.UI.Views.Main
|
|||||||
Padding = new Thickness(15, 0, 0, 0),
|
Padding = new Thickness(15, 0, 0, 0),
|
||||||
Margin = new Thickness(3, 0, 3, 0),
|
Margin = new Thickness(3, 0, 3, 0),
|
||||||
HorizontalAlignment = HorizontalAlignment.Stretch,
|
HorizontalAlignment = HorizontalAlignment.Stretch,
|
||||||
Header = languageName,
|
Header = language == currentLanguageCode ? $"{languageName} ✔" : languageName,
|
||||||
Command = Commands.Create(() => MainWindowViewModel.ChangeLanguage(language))
|
Command = Commands.Create(() => MainWindowViewModel.ChangeLanguage(language))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user