From 9b111f7e7ee990d3542189b7a280f208ca670acb Mon Sep 17 00:00:00 2001
From: Alexis Lapierre <128792625+Alexis-Lapierre@users.noreply.github.com>
Date: Wed, 17 Jun 2026 00:32:01 +0200
Subject: [PATCH 1/6] Fix crash on Mii Editor: Font Size 0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For some reasons when I pick the precompiled Linux version everything works as expected.
But building from source result in an Avalonia crash:
> System.ArgumentException: 0 is not a valid value for 'FontSize'.
> at Avalonia.PropertyStore.ValueStore.SetValue[T](StyledProperty`1 property, T value, BindingPriority priority)
Don’t really know why. Could have built this application with a different Avalonia version? I don’t really use C# usually.
---
WheelWizard/Views/Components/PopupListButton.axaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/WheelWizard/Views/Components/PopupListButton.axaml b/WheelWizard/Views/Components/PopupListButton.axaml
index a0ec8755..de9accfd 100644
--- a/WheelWizard/Views/Components/PopupListButton.axaml
+++ b/WheelWizard/Views/Components/PopupListButton.axaml
@@ -59,7 +59,7 @@
HorizontalAlignment="Left" VerticalAlignment="Center"
Margin="10,0,10,0" />
-
-
\ No newline at end of file
+
From edf62173cab9a595657dd8b6b50f85d9fa4ce4ba Mon Sep 17 00:00:00 2001
From: altpyrion <294315026+altpyrion@users.noreply.github.com>
Date: Thu, 18 Jun 2026 00:02:31 +0200
Subject: [PATCH 2/6] feat: added auto-detect of native dolphin installations
for linux fix: fixed auto-detect of data folder to be based on textbox
instead of saved value
---
.../DolphinInstaller/LinuxDolphinInstaller.cs | 6 +++
WheelWizard/Services/PathManager.cs | 7 +++-
.../Pages/Settings/WhWzSettings.axaml.cs | 38 ++++++++++++++++---
3 files changed, 44 insertions(+), 7 deletions(-)
diff --git a/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs b/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs
index af2f5725..c2b3a9be 100644
--- a/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs
+++ b/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs
@@ -3,6 +3,7 @@ namespace WheelWizard.DolphinInstaller;
public interface ILinuxDolphinInstaller
{
bool IsDolphinInstalledInFlatpak();
+ bool IsDolphinInstalledNative();
bool IsFlatpakInstalled();
Task InstallFlatpak(IProgress? progress = null);
Task InstallFlatpakDolphin(IProgress? progress = null);
@@ -17,6 +18,11 @@ public bool IsDolphinInstalledInFlatpak()
return processResult.IsSuccess && processResult.Value == 0;
}
+ public bool IsDolphinInstalledNative()
+ {
+ return commandEnvironment.IsCommandAvailable("dolphin-emu");
+ }
+
public bool IsFlatpakInstalled()
{
return commandEnvironment.IsCommandAvailable("flatpak");
diff --git a/WheelWizard/Services/PathManager.cs b/WheelWizard/Services/PathManager.cs
index 1c9dca03..ff6610c9 100644
--- a/WheelWizard/Services/PathManager.cs
+++ b/WheelWizard/Services/PathManager.cs
@@ -1,4 +1,5 @@
using System.Runtime.InteropServices;
+using Serilog;
using WheelWizard.Helpers;
using WheelWizard.Settings;
#if WINDOWS
@@ -849,7 +850,9 @@ private static string TryFindPortableUserFolderPath()
return null;
}
- public static string? TryFindUserFolderPath()
+ public static string? TryFindUserFolderPath() => TryFindUserFolderPath(DolphinFilePath);
+
+ public static string? TryFindUserFolderPath(string dolphinFilePath)
{
var portableUserFolderPath = TryFindPortableUserFolderPath();
if (!string.IsNullOrWhiteSpace(portableUserFolderPath))
@@ -880,7 +883,7 @@ private static string TryFindPortableUserFolderPath()
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
- if (IsFlatpakDolphinFilePath())
+ if (IsFlatpakDolphinFilePath(dolphinFilePath))
{
return TryFindLinuxFlatpakUserFolderPath();
}
diff --git a/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs b/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
index 1e7df351..96ef795a 100644
--- a/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
+++ b/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
@@ -148,10 +148,28 @@ private async void DolphinExeBrowse_OnClick(object sender, RoutedEventArgs e)
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
- if (IsFlatpakDolphinInstalled() && DolphinExeInput.Text == "")
+ // Made this more extensible for future support for e.g. snap
+ var dolphinPaths = new (Func IsInstalled, string Path)[]
{
- DolphinExeInput.Text = "flatpak run org.DolphinEmu.dolphin-emu";
- return;
+ (IsFlatpakDolphinInstalled, "flatpak run org.DolphinEmu.dolphin-emu"),
+ (IsNativeDolphinInstalled, "dolphin-emu"),
+ };
+
+ foreach (var (isInstalled, path) in dolphinPaths)
+ {
+ if (isInstalled())
+ {
+ var result = await new YesNoWindow()
+ .SetMainText(t("question.dolphin_found.title"))
+ .SetExtraText($"{t("question.dolphin_found.extra")}\n{path}")
+ .AwaitAnswer();
+
+ if (result)
+ {
+ DolphinExeInput.Text = path;
+ return;
+ }
+ }
}
if (!EnvHelper.IsFlatpakSandboxed() && !IsFlatpakDolphinInstalled())
@@ -249,6 +267,11 @@ private bool IsFlatpakDolphinInstalled()
return LinuxDolphinInstallerService.IsDolphinInstalledInFlatpak();
}
+ private bool IsNativeDolphinInstalled()
+ {
+ return LinuxDolphinInstallerService.IsDolphinInstalledNative();
+ }
+
private async void GameLocationBrowse_OnClick(object sender, RoutedEventArgs e)
{
var fileType = new FilePickerFileType("Game files") { Patterns = ["*.iso", "*.wbfs", "*.rvz"] };
@@ -262,8 +285,13 @@ private async void GameLocationBrowse_OnClick(object sender, RoutedEventArgs e)
private async void DolphinUserPathBrowse_OnClick(object sender, RoutedEventArgs e)
{
- // Attempt to find Dolphin's default path if no valid folder is set
- var folderPath = PathManager.TryFindUserFolderPath();
+ // Detect Data folder based on the Dolphin path currently in the input field
+ // (which may have been edited but not yet saved)
+ var currentDolphinPath = DolphinExeInput.Text;
+ var folderPath = string.IsNullOrWhiteSpace(currentDolphinPath)
+ ? PathManager.TryFindUserFolderPath()
+ : PathManager.TryFindUserFolderPath(currentDolphinPath);
+
if (!string.IsNullOrEmpty(folderPath))
{
// Ask the user if they want to use the automatically found folder
From a477746d30534a34b23f79a3e3796094f10e053a Mon Sep 17 00:00:00 2001
From: matellush <202132988+matellush@users.noreply.github.com>
Date: Sun, 5 Jul 2026 14:19:38 +0200
Subject: [PATCH 3/6] feat(flatpak): Provide Wheel Wizard URL handler
`.desktop`
---
...TeamWheelWizard.WheelWizard-url-handler.desktop | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 Flatpak/io.github.TeamWheelWizard.WheelWizard-url-handler.desktop
diff --git a/Flatpak/io.github.TeamWheelWizard.WheelWizard-url-handler.desktop b/Flatpak/io.github.TeamWheelWizard.WheelWizard-url-handler.desktop
new file mode 100644
index 00000000..f2554785
--- /dev/null
+++ b/Flatpak/io.github.TeamWheelWizard.WheelWizard-url-handler.desktop
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Version=1.0
+Icon=io.github.TeamWheelWizard.WheelWizard
+Exec=WheelWizard %U
+Terminal=false
+NoDisplay=true
+StartupNotify=true
+Type=Application
+Categories=Game;
+StartupWMClass=WheelWizard
+MimeType=x-scheme-handler/wheelwizard;
+Name=Wheel Wizard – URL Handler
+GenericName=Mario Kart Wii Mod Manager
+Comment=Mario Kart Wii Mod Manager & Retro Rewind Auto Updater
From e532030037c8c73ae7a9f912671ae913a865e578 Mon Sep 17 00:00:00 2001
From: matellush <202132988+matellush@users.noreply.github.com>
Date: Sun, 5 Jul 2026 14:38:36 +0200
Subject: [PATCH 4/6] fix(gamebanana): Filter out mod results with content
ratings
---
WheelWizard.Test/Features/GameBananaTests.cs | 1 +
.../GameBanana/Domain/GameBananaModDetails.cs | 5 ++++-
.../GameBanana/Domain/GameBananaModPreview.cs | 3 +++
.../Features/GameBanana/GameBananaSingletonService.cs | 1 +
WheelWizard/Services/Endpoints.cs | 5 +----
.../Popups/ModManagement/ModBrowserWindow.axaml.cs | 2 +-
.../Views/Popups/ModManagement/ModContent.axaml.cs | 11 ++++++++---
7 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/WheelWizard.Test/Features/GameBananaTests.cs b/WheelWizard.Test/Features/GameBananaTests.cs
index 5d59fb34..dc76757b 100644
--- a/WheelWizard.Test/Features/GameBananaTests.cs
+++ b/WheelWizard.Test/Features/GameBananaTests.cs
@@ -212,6 +212,7 @@ private GameBananaModPreview CreateFakeModPreview(int id)
},
ModelName = "Mod",
PreviewMedia = new(),
+ HasContentRatings = false,
};
}
diff --git a/WheelWizard/Features/GameBanana/Domain/GameBananaModDetails.cs b/WheelWizard/Features/GameBanana/Domain/GameBananaModDetails.cs
index e2f210c0..0f7a9199 100644
--- a/WheelWizard/Features/GameBanana/Domain/GameBananaModDetails.cs
+++ b/WheelWizard/Features/GameBanana/Domain/GameBananaModDetails.cs
@@ -63,5 +63,8 @@ public class GameBananaModDetails
public required int DownloadCount { get; set; }
[JsonPropertyName("_aFiles")]
- public required List Files { get; set; }
+ public List? Files { get; set; }
+
+ [JsonPropertyName("_aArchivedFiles")]
+ public List? ArchivedFiles { get; set; }
}
diff --git a/WheelWizard/Features/GameBanana/Domain/GameBananaModPreview.cs b/WheelWizard/Features/GameBanana/Domain/GameBananaModPreview.cs
index ed38982e..2473767c 100644
--- a/WheelWizard/Features/GameBanana/Domain/GameBananaModPreview.cs
+++ b/WheelWizard/Features/GameBanana/Domain/GameBananaModPreview.cs
@@ -25,6 +25,9 @@ public class GameBananaModPreview
[JsonPropertyName("_aPreviewMedia")]
public required GameBananaPreviewMedia PreviewMedia { get; set; }
+ [JsonPropertyName("_bHasContentRatings")]
+ public required bool HasContentRatings { get; set; }
+
[JsonPropertyName("_nLikeCount")]
public int LikeCount { get; set; }
diff --git a/WheelWizard/Features/GameBanana/GameBananaSingletonService.cs b/WheelWizard/Features/GameBanana/GameBananaSingletonService.cs
index c8af8100..8535dc9c 100644
--- a/WheelWizard/Features/GameBanana/GameBananaSingletonService.cs
+++ b/WheelWizard/Features/GameBanana/GameBananaSingletonService.cs
@@ -70,6 +70,7 @@ public GameBananaModPreview GetLoadingPreview()
AvatarUrl = "",
},
PreviewMedia = new(),
+ HasContentRatings = false,
};
}
}
diff --git a/WheelWizard/Services/Endpoints.cs b/WheelWizard/Services/Endpoints.cs
index 47debccb..87202e6a 100644
--- a/WheelWizard/Services/Endpoints.cs
+++ b/WheelWizard/Services/Endpoints.cs
@@ -15,7 +15,7 @@ public static class Endpoints
///
/// The base address for accessing the GameBanana API
///
- public const string GameBananaBaseAddress = "https://gamebanana.com/apiv11";
+ public const string GameBananaBaseAddress = "https://gamebanana.com/apiv12";
///
/// The address for the GitHub API
@@ -48,7 +48,4 @@ public static class Endpoints
// Other
public const string MiiChannelWAD = "-";
-
- //GameBanana
- public const string GameBananaBaseUrl = "https://gamebanana.com/apiv11";
}
diff --git a/WheelWizard/Views/Popups/ModManagement/ModBrowserWindow.axaml.cs b/WheelWizard/Views/Popups/ModManagement/ModBrowserWindow.axaml.cs
index 0511ed61..41162b61 100644
--- a/WheelWizard/Views/Popups/ModManagement/ModBrowserWindow.axaml.cs
+++ b/WheelWizard/Views/Popups/ModManagement/ModBrowserWindow.axaml.cs
@@ -87,7 +87,7 @@ private async Task LoadMods(int page, string searchTerm = "", bool ensurePatchRe
}
var metadata = result.Value.MetaData;
- var newMods = result.Value.Records.Where(mod => mod.ModelName == "Mod").ToList();
+ var newMods = result.Value.Records.Where(mod => mod.ModelName == "Mod" && !mod.HasContentRatings).ToList();
foreach (var mod in newMods)
{
diff --git a/WheelWizard/Views/Popups/ModManagement/ModContent.axaml.cs b/WheelWizard/Views/Popups/ModManagement/ModContent.axaml.cs
index d5ce47b9..d22c4b77 100644
--- a/WheelWizard/Views/Popups/ModManagement/ModContent.axaml.cs
+++ b/WheelWizard/Views/Popups/ModManagement/ModContent.axaml.cs
@@ -1,4 +1,4 @@
-using Avalonia.Interactivity;
+using Avalonia.Interactivity;
using Avalonia.Media.Imaging;
using WheelWizard.GameBanana;
using WheelWizard.GameBanana.Domain;
@@ -216,8 +216,13 @@ private async Task DownloadAndInstallCurrentModAsync()
if (prepareResult.IsFailure)
return prepareResult.Error;
- var downloadUrls = OverrideDownloadUrl != null ? [OverrideDownloadUrl] : CurrentMod.Files.Select(f => f.DownloadUrl).ToList();
- if (!downloadUrls.Any())
+ var downloadUrls =
+ OverrideDownloadUrl != null
+ ? [OverrideDownloadUrl]
+ : CurrentMod.Files?.Select(f => f.DownloadUrl).ToList()
+ ?? CurrentMod.ArchivedFiles?.Select(f => f.DownloadUrl).ToList()
+ ?? [];
+ if (downloadUrls.Count == 0)
return Fail("No downloadable files were found for this mod.");
var progressWindow = new ProgressWindow(t("progress.downloading_mod", CurrentMod.Name)!);
From 922c2e1734beaa391af98a08c789ec6f32482209 Mon Sep 17 00:00:00 2001
From: matellush <202132988+matellush@users.noreply.github.com>
Date: Sat, 4 Jul 2026 22:39:46 +0200
Subject: [PATCH 5/6] fix: Improve installation and settings UX
---
.../Features/LinuxDolphinInstallerTests.cs | 84 ++++++++++++++++---
.../Features/Settings/SettingsTests.cs | 23 +++--
.../DolphinInstaller/LinuxDolphinInstaller.cs | 42 ++++++++--
.../DolphinInstaller/LinuxProcessService.cs | 18 +++-
.../Features/Settings/SettingsManager.cs | 11 +--
WheelWizard/Resources/Languages/cs.yml | 8 +-
WheelWizard/Resources/Languages/de.yml | 48 ++++++++---
WheelWizard/Resources/Languages/en.yml | 48 ++++++++---
WheelWizard/Resources/Languages/es.yml | 26 ++++--
WheelWizard/Resources/Languages/fi.yml | 32 +++++--
WheelWizard/Resources/Languages/fr.yml | 28 +++++--
WheelWizard/Resources/Languages/it.yml | 30 +++++--
WheelWizard/Resources/Languages/ja.yml | 30 +++++--
WheelWizard/Resources/Languages/ko.yml | 30 +++++--
WheelWizard/Resources/Languages/nl.yml | 30 +++++--
WheelWizard/Resources/Languages/pt.yml | 30 +++++--
WheelWizard/Resources/Languages/ru.yml | 21 +++--
WheelWizard/Resources/Languages/tr.yml | 30 +++++--
.../Launcher/Helpers/DolphinLaunchHelper.cs | 56 ++++++++-----
WheelWizard/Services/PathManager.cs | 25 +-----
WheelWizard/Views/Layout.axaml | 5 +-
WheelWizard/Views/Layout.axaml.cs | 7 +-
.../Pages/Settings/WhWzSettings.axaml.cs | 16 ++--
23 files changed, 477 insertions(+), 201 deletions(-)
diff --git a/WheelWizard.Test/Features/LinuxDolphinInstallerTests.cs b/WheelWizard.Test/Features/LinuxDolphinInstallerTests.cs
index 8cef2545..fb95aa3b 100644
--- a/WheelWizard.Test/Features/LinuxDolphinInstallerTests.cs
+++ b/WheelWizard.Test/Features/LinuxDolphinInstallerTests.cs
@@ -17,9 +17,9 @@ public LinuxDolphinInstallerTests()
}
[Fact]
- public void IsDolphinInstalledInFlatpak_ReturnsTrue_WhenFlatpakInfoExitCodeIsZero()
+ public void IsDolphinInstalledInFlatpak_ReturnsTrue_WhenFlatpakListHasDolphin()
{
- _processService.Run("flatpak", "info org.DolphinEmu.dolphin-emu").Returns(Ok(0));
+ _processService.Run("flatpak", "list --app --columns=application", out var stdOut, out _).Returns(Ok(0)).AndDoes(callInfo => callInfo[2] = "Application ID\norg.DolphinEmu.dolphin-emu\n");
var result = _installer.IsDolphinInstalledInFlatpak();
@@ -27,9 +27,19 @@ public void IsDolphinInstalledInFlatpak_ReturnsTrue_WhenFlatpakInfoExitCodeIsZer
}
[Fact]
- public void IsDolphinInstalledInFlatpak_ReturnsFalse_WhenFlatpakInfoExitCodeIsNonZero()
+ public void IsDolphinInstalledInFlatpak_ReturnsFalse_WhenFlatpakListHasNoDolphin()
{
- _processService.Run("flatpak", "info org.DolphinEmu.dolphin-emu").Returns(Ok(1));
+ _processService.Run("flatpak", "list --app --columns=application", out var stdOut, out _).Returns(Ok(0)).AndDoes(callInfo => callInfo[2] = "Application ID\n");
+
+ var result = _installer.IsDolphinInstalledInFlatpak();
+
+ Assert.False(result);
+ }
+
+ [Fact]
+ public void IsDolphinInstalledInFlatpak_ReturnsFalse_WhenFlatpakListFails()
+ {
+ _processService.Run("flatpak", "list --app --columns=application", out _, out _).Returns(Ok(1));
var result = _installer.IsDolphinInstalledInFlatpak();
@@ -77,13 +87,53 @@ public async Task InstallFlatpak_ReturnsSuccess_WhenInstallCompletesAndCommandBe
Assert.True(result.IsSuccess);
}
+ [Fact]
+ public async Task InstallFlatpakDolphin_ReturnsFailure_WhenDolphinRemoteCommandFails()
+ {
+ _commandEnvironment.IsCommandAvailable("flatpak").Returns(true);
+ _processService
+ .Run("flatpak", "remote-add --if-not-exists --user dolphin https://flatpak.dolphin-emu.org/releases.flatpakrepo")
+ .Returns(Ok(1));
+ _processService
+ .Run("flatpak", "remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo")
+ .Returns(Ok(0));
+
+ var result = await _installer.InstallFlatpakDolphin();
+
+ Assert.True(result.IsFailure);
+ Assert.Contains("exit code 1", result.Error.Message);
+ }
+
+ [Fact]
+ public async Task InstallFlatpakDolphin_ReturnsFailure_WhenFlathubRemoteCommandFails()
+ {
+ _commandEnvironment.IsCommandAvailable("flatpak").Returns(true);
+ _processService
+ .Run("flatpak", "remote-add --if-not-exists --user dolphin https://flatpak.dolphin-emu.org/releases.flatpakrepo")
+ .Returns(Ok(0));
+ _processService
+ .Run("flatpak", "remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo")
+ .Returns(Ok(1));
+
+ var result = await _installer.InstallFlatpakDolphin();
+
+ Assert.True(result.IsFailure);
+ Assert.Contains("exit code 1", result.Error.Message);
+ }
+
[Fact]
public async Task InstallFlatpakDolphin_ReturnsFailure_WhenDolphinInstallCommandFails()
{
_commandEnvironment.IsCommandAvailable("flatpak").Returns(true);
_processService
- .RunWithProgressAsync("pkexec", "flatpak --system install -y org.DolphinEmu.dolphin-emu", Arg.Any?>())
- .Returns(Task.FromResult>(Ok(1)));
+ .Run("flatpak", "remote-add --if-not-exists --user dolphin https://flatpak.dolphin-emu.org/releases.flatpakrepo")
+ .Returns(Ok(0));
+ _processService
+ .Run("flatpak", "remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo")
+ .Returns(Ok(0));
+ _processService
+ .RunWithProgressAsync("flatpak", "install --user -y dolphin org.DolphinEmu.dolphin-emu", Arg.Any?>())
+ .Returns(Task.FromResult(Ok(1)));
var result = await _installer.InstallFlatpakDolphin();
@@ -96,8 +146,14 @@ public async Task InstallFlatpakDolphin_ReturnsFailure_WhenWarmupLaunchFails()
{
_commandEnvironment.IsCommandAvailable("flatpak").Returns(true);
_processService
- .RunWithProgressAsync("pkexec", "flatpak --system install -y org.DolphinEmu.dolphin-emu", Arg.Any?>())
- .Returns(Task.FromResult>(Ok(0)));
+ .Run("flatpak", "remote-add --if-not-exists --user dolphin https://flatpak.dolphin-emu.org/releases.flatpakrepo")
+ .Returns(Ok(0));
+ _processService
+ .Run("flatpak", "remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo")
+ .Returns(Ok(0));
+ _processService
+ .RunWithProgressAsync("flatpak", "install --user -y dolphin org.DolphinEmu.dolphin-emu", Arg.Any?>())
+ .Returns(Task.FromResult(Ok(0)));
_processService
.LaunchAndStopAsync("flatpak", "run org.DolphinEmu.dolphin-emu", TimeSpan.FromSeconds(4))
.Returns(Task.FromResult(Fail("Launch failed")));
@@ -113,11 +169,17 @@ public async Task InstallFlatpakDolphin_ReturnsSuccess_WhenInstallAndWarmupSucce
{
_commandEnvironment.IsCommandAvailable("flatpak").Returns(true);
_processService
- .RunWithProgressAsync("pkexec", "flatpak --system install -y org.DolphinEmu.dolphin-emu", Arg.Any?>())
- .Returns(Task.FromResult>(Ok(0)));
+ .Run("flatpak", "remote-add --if-not-exists --user dolphin https://flatpak.dolphin-emu.org/releases.flatpakrepo")
+ .Returns(Ok(0));
+ _processService
+ .Run("flatpak", "remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo")
+ .Returns(Ok(0));
+ _processService
+ .RunWithProgressAsync("flatpak", "install --user -y dolphin org.DolphinEmu.dolphin-emu", Arg.Any?>())
+ .Returns(Task.FromResult(Ok(0)));
_processService
.LaunchAndStopAsync("flatpak", "run org.DolphinEmu.dolphin-emu", TimeSpan.FromSeconds(4))
- .Returns(Task.FromResult(Ok()));
+ .Returns(Task.FromResult(Ok()));
var result = await _installer.InstallFlatpakDolphin();
diff --git a/WheelWizard.Test/Features/Settings/SettingsTests.cs b/WheelWizard.Test/Features/Settings/SettingsTests.cs
index adc21e8c..80dd7fb3 100644
--- a/WheelWizard.Test/Features/Settings/SettingsTests.cs
+++ b/WheelWizard.Test/Features/Settings/SettingsTests.cs
@@ -20,7 +20,7 @@ public class SettingsManagerTests
[Fact]
public void Get_Throws_WhenRequestedTypeDoesNotMatchSettingType()
{
- var manager = CreateManager(new MockFileSystem(), out _, out _, out _);
+ var manager = CreateManager(new MockFileSystem(), out _, out _);
Assert.Throws(() => manager.Get(manager.WW_LANGUAGE));
}
@@ -28,7 +28,7 @@ public void Get_Throws_WhenRequestedTypeDoesNotMatchSettingType()
[Fact]
public void Set_Throws_WhenProvidedValueIsNull()
{
- var manager = CreateManager(new MockFileSystem(), out _, out _, out _);
+ var manager = CreateManager(new MockFileSystem(), out _, out _);
Assert.Throws(() => manager.Set(manager.WW_LANGUAGE, null!));
}
@@ -36,7 +36,7 @@ public void Set_Throws_WhenProvidedValueIsNull()
[Fact]
public void Set_ReturnsFalse_WhenValidationFails()
{
- var manager = CreateManager(new MockFileSystem(), out _, out _, out _);
+ var manager = CreateManager(new MockFileSystem(), out _, out _);
var result = manager.Set(manager.FOCUSED_USER, 99, skipSave: true);
@@ -49,7 +49,7 @@ public void Set_ReturnsFalse_WhenValidationFails()
[InlineData(2.01)]
public void SavedWindowScale_RejectsValuesOutsideBounds(double scale)
{
- var manager = CreateManager(new MockFileSystem(), out _, out _, out _);
+ var manager = CreateManager(new MockFileSystem(), out _, out _);
var result = manager.Set(manager.SAVED_WINDOW_SCALE, scale, skipSave: true);
@@ -62,7 +62,7 @@ public void SavedWindowScale_RejectsValuesOutsideBounds(double scale)
[InlineData(2.01)]
public void WindowScalePreview_RejectsValuesOutsideBounds(double scale)
{
- var manager = CreateManager(new MockFileSystem(), out _, out _, out _);
+ var manager = CreateManager(new MockFileSystem(), out _, out _);
var result = manager.Set(manager.WINDOW_SCALE, scale, skipSave: true);
@@ -73,7 +73,7 @@ public void WindowScalePreview_RejectsValuesOutsideBounds(double scale)
[Fact]
public void ValidateCorePathSettings_ReturnsAllExpectedIssues_WhenDefaultsAreInvalid()
{
- var manager = CreateManager(new RealFileSystem(), out _, out _, out _);
+ var manager = CreateManager(new RealFileSystem(), out _, out _);
#pragma warning disable CS0618
SettingsRuntime.Initialize(manager);
#pragma warning restore CS0618
@@ -91,7 +91,7 @@ public void ValidateCorePathSettings_ReturnsAllExpectedIssues_WhenDefaultsAreInv
public void PathsSetupCorrectly_ReturnsTrue_WhenCorePathsAreValid()
{
var fileSystem = new MockFileSystem();
- var manager = CreateManager(fileSystem, out _, out _, out _);
+ var manager = CreateManager(fileSystem, out _, out _);
var userFolderPath = $"/wheelwizard-user-{Guid.NewGuid():N}";
var gameFilePath = Path.Combine(userFolderPath, "game.iso");
var dolphinLocation = SettingsTestUtils.GetValidDolphinLocation(fileSystem);
@@ -110,7 +110,7 @@ public void PathsSetupCorrectly_ReturnsTrue_WhenCorePathsAreValid()
[Fact]
public void LoadSettings_CallsUnderlyingManagersOnlyOnce()
{
- var manager = CreateManager(new MockFileSystem(), out var whWzManager, out var dolphinManager, out _);
+ var manager = CreateManager(new MockFileSystem(), out var whWzManager, out var dolphinManager);
manager.LoadSettings();
manager.LoadSettings();
@@ -122,16 +122,13 @@ public void LoadSettings_CallsUnderlyingManagersOnlyOnce()
private static SettingsManager CreateManager(
IFileSystem fileSystem,
out IWhWzSettingManager whWzSettingManager,
- out IDolphinSettingManager dolphinSettingManager,
- out ILinuxDolphinInstaller linuxDolphinInstaller
+ out IDolphinSettingManager dolphinSettingManager
)
{
whWzSettingManager = Substitute.For();
dolphinSettingManager = Substitute.For();
- linuxDolphinInstaller = Substitute.For();
- linuxDolphinInstaller.IsDolphinInstalledInFlatpak().Returns(true);
- return new SettingsManager(whWzSettingManager, dolphinSettingManager, linuxDolphinInstaller, fileSystem);
+ return new SettingsManager(whWzSettingManager, dolphinSettingManager, fileSystem);
}
}
diff --git a/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs b/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs
index c2b3a9be..46ea14ee 100644
--- a/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs
+++ b/WheelWizard/Features/DolphinInstaller/LinuxDolphinInstaller.cs
@@ -14,13 +14,22 @@ public sealed class LinuxDolphinInstaller(ILinuxCommandEnvironment commandEnviro
{
public bool IsDolphinInstalledInFlatpak()
{
- var processResult = processService.Run("flatpak", "info org.DolphinEmu.dolphin-emu");
- return processResult.IsSuccess && processResult.Value == 0;
+ const string dolphinAppId = "org.DolphinEmu.dolphin-emu";
+ var processResult = processService.Run("flatpak", "list --app --columns=application", out var stdOut, out _);
+
+ return processResult.IsSuccess && processResult.Value == 0 && stdOut
+ .Split('\n')
+ .Any(line => line == dolphinAppId);
}
public bool IsDolphinInstalledNative()
{
- return commandEnvironment.IsCommandAvailable("dolphin-emu");
+ if (!commandEnvironment.IsCommandAvailable("dolphin-emu"))
+ {
+ return false;
+ }
+ var processResult = processService.Run("dolphin-emu", "--version");
+ return processResult.IsSuccess && processResult.Value == 0;
}
public bool IsFlatpakInstalled()
@@ -62,17 +71,34 @@ public async Task InstallFlatpakDolphin(IProgress? progres
return installFlatpakResult;
}
+ var addRemoteResult = processService.Run(
+ "flatpak",
+ "remote-add --if-not-exists --user dolphin https://flatpak.dolphin-emu.org/releases.flatpakrepo"
+ );
+ if (addRemoteResult.IsFailure)
+ return addRemoteResult.Error;
+
+ if (addRemoteResult.Value != 0)
+ return Fail($"Adding the Dolphin Flatpak remote failed with exit code {addRemoteResult.Value}.");
+
+ addRemoteResult = processService.Run(
+ "flatpak",
+ "remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo"
+ );
+ if (addRemoteResult.IsFailure)
+ return addRemoteResult.Error;
+
+ if (addRemoteResult.Value != 0)
+ return Fail($"Adding the Flathub Flatpak remote failed with exit code {addRemoteResult.Value}.");
+
var installDolphinResult = await processService.RunWithProgressAsync(
- "pkexec",
- "flatpak --system install -y org.DolphinEmu.dolphin-emu",
+ "flatpak",
+ "install --user -y dolphin org.DolphinEmu.dolphin-emu",
progress
);
if (installDolphinResult.IsFailure)
return installDolphinResult.Error;
- if (installDolphinResult.Value is 126 or 127)
- return Fail("You need to be an administrator to install Dolphin via Flatpak.");
-
if (installDolphinResult.Value != 0)
return Fail($"Dolphin installation failed with exit code {installDolphinResult.Value}.");
diff --git a/WheelWizard/Features/DolphinInstaller/LinuxProcessService.cs b/WheelWizard/Features/DolphinInstaller/LinuxProcessService.cs
index f1c53112..12455c16 100644
--- a/WheelWizard/Features/DolphinInstaller/LinuxProcessService.cs
+++ b/WheelWizard/Features/DolphinInstaller/LinuxProcessService.cs
@@ -5,6 +5,7 @@ namespace WheelWizard.DolphinInstaller;
public interface ILinuxProcessService
{
+ OperationResult Run(string fileName, string arguments, out string stdOut, out string stdErr);
OperationResult Run(string fileName, string arguments);
Task> RunWithProgressAsync(string fileName, string arguments, IProgress? progress = null);
Task LaunchAndStopAsync(string fileName, string arguments, TimeSpan duration);
@@ -12,9 +13,11 @@ public interface ILinuxProcessService
public sealed class LinuxProcessService : ILinuxProcessService
{
- public OperationResult Run(string fileName, string arguments)
+ public OperationResult Run(string fileName, string arguments, out string stdOut, out string stdErr)
{
- return TryCatch(
+ var localStdOut = "";
+ var localStdErr = "";
+ var result = TryCatch(
() =>
{
var processInfo = new ProcessStartInfo
@@ -31,11 +34,22 @@ public OperationResult Run(string fileName, string arguments)
if (process == null)
return -1;
+ localStdOut = process.StandardOutput.ReadToEnd();
+ localStdErr = process.StandardError.ReadToEnd();
process.WaitForExit();
return process.ExitCode;
},
$"Failed to run process: {fileName} {arguments}"
);
+
+ stdOut = localStdOut;
+ stdErr = localStdErr;
+ return result;
+ }
+
+ public OperationResult Run(string fileName, string arguments)
+ {
+ return Run(fileName, arguments, out _, out _);
}
public async Task> RunWithProgressAsync(string fileName, string arguments, IProgress? progress = null)
diff --git a/WheelWizard/Features/Settings/SettingsManager.cs b/WheelWizard/Features/Settings/SettingsManager.cs
index 02c131fa..7f2f929a 100644
--- a/WheelWizard/Features/Settings/SettingsManager.cs
+++ b/WheelWizard/Features/Settings/SettingsManager.cs
@@ -12,7 +12,6 @@ public class SettingsManager : ISettingsManager
{
private readonly IWhWzSettingManager _whWzSettingManager;
private readonly IDolphinSettingManager _dolphinSettingManager;
- private readonly ILinuxDolphinInstaller _linuxDolphinInstaller;
private readonly IFileSystem _fileSystem;
private readonly Setting _dolphinCompilationMode;
@@ -27,13 +26,11 @@ public class SettingsManager : ISettingsManager
public SettingsManager(
IWhWzSettingManager whWzSettingManager,
IDolphinSettingManager dolphinSettingManager,
- ILinuxDolphinInstaller linuxDolphinInstaller,
IFileSystem fileSystem
)
{
_whWzSettingManager = whWzSettingManager;
_dolphinSettingManager = dolphinSettingManager;
- _linuxDolphinInstaller = linuxDolphinInstaller;
_fileSystem = fileSystem;
#region WhWz settings
@@ -48,12 +45,6 @@ IFileSystem fileSystem
if (Environment.OSVersion.Platform == PlatformID.Unix || Environment.OSVersion.Platform == PlatformID.MacOSX)
{
- if (!RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
- return EnvHelper.IsValidUnixCommand(pathOrCommand);
-
- if (PathManager.IsFlatpakDolphinFilePath(pathOrCommand) && !_linuxDolphinInstaller.IsDolphinInstalledInFlatpak())
- return false;
-
return EnvHelper.IsValidUnixCommand(pathOrCommand);
}
@@ -99,7 +90,7 @@ IFileSystem fileSystem
return false;
// `~/.dolphin-emu` would be used if it exists
- if (!PathManager.IsFlatpakDolphinFilePath() && _fileSystem.Directory.Exists(PathManager.LinuxDolphinLegacyFolderPath))
+ if (!PathManager.IsFlatpakDolphinFilePath(dolphinLocation) && _fileSystem.Directory.Exists(PathManager.LinuxDolphinLegacyFolderPath))
return false;
return true;
diff --git a/WheelWizard/Resources/Languages/cs.yml b/WheelWizard/Resources/Languages/cs.yml
index a976b7df..b0a3f440 100644
--- a/WheelWizard/Resources/Languages/cs.yml
+++ b/WheelWizard/Resources/Languages/cs.yml
@@ -161,7 +161,9 @@ cs:
rooms: "Místnosti"
miis: "Miiy"
text:
- made_by_string: "Vytvořili: {$1} \\n a {$2}"
+ made_by_string: |
+ Vytvořili: {$1}
+ a {$2}
thanks_translators: "Díky moc všem překladatelům:"
wh_wz_translation_percentage: "Překlady pro tento jazyk jsou z {$1}% kompletní"
powered_gamebanana: "Poháněno společností GameBanana"
@@ -241,10 +243,10 @@ cs:
rr_to_old:
extra: "Tvoje verze Retro Rewind je moc stará na aktualizaci. Chtěl bys znovu nainstalovat Retro Rewind?"
title: "Verze Retro Rewind je moc stará."
- rr_not_determent:
+ rr_not_determined:
title: "Stáhnout Retro Rewind"
extra: "Tvojí verzi Retro Rewind se nepodařilo určit. Chtěl bys si stáhnout Retro Rewind?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Instalace Dolphin Flatpak"
install_mod:
title: "Chceš stáhnout a nainstalovat mod: {$1}?"
diff --git a/WheelWizard/Resources/Languages/de.yml b/WheelWizard/Resources/Languages/de.yml
index bdc74448..42de2ea9 100644
--- a/WheelWizard/Resources/Languages/de.yml
+++ b/WheelWizard/Resources/Languages/de.yml
@@ -167,7 +167,9 @@ de:
mii_editor: "Mii Maker"
mii_carousel: "Mii Preview"
text:
- made_by_string: "Erstellt von: {$1} \\n und {$2}"
+ made_by_string: |
+ Erstellt von: {$1}
+ und {$2}
thanks_translators: "Vielen Dank an alle Übersetzer:"
wh_wz_translation_percentage: "Übersetzungen für diese Sprache sind {$1}% abgeschlossen"
powered_gamebanana: "Von GameBanana unterstützt"
@@ -242,10 +244,24 @@ de:
extra: "Diese Änderung wird in {$1} zurückgesetzt, außer du wendest die Änderung an."
move_data:
title: "Wheel Wizard Daten verschieben?"
- extra: "Wheel Wizard wird seine Datein nach\\n{$1}\\nverschieben. Das könnte eine Weile dauern."
+ extra: |
+ Wheel Wizard wird seine Dateien nach
+
+ {$1}
+
+ verschieben. Das könnte eine Weile dauern.
dolphin_found:
title: "Dolphin Emulator Ordner gefunden"
- extra: "Wenn du nicht weißt, was das alles bedeutet, klick einfach auf „Ja“ :) \\nDolphin Emulator-Ordner gefunden. Möchtest du diesen Ordner verwenden?"
+ extra: |
+ Wenn du nicht weißt, was das alles bedeutet, klick einfach auf „Ja“ :)
+
+ Dolphin Emulator-Ordner gefunden. Möchtest du diesen Ordner verwenden?
+ dolphin_program_found:
+ title: "Dolphin Emulator gefunden"
+ extra: |
+ Wenn du nicht weißt, was das alles bedeutet, klick einfach auf „Ja“ :)
+
+ Dolphin Emulator gefunden. Möchtest du Folgendes verwenden?
new_version_wh_wz:
title: "Wheel Wizard Update verfügbar"
extra: "Version {$1} von Wheel Wizard ist verfügbar (derzeit für {$2}). Möchtest du jetzt updaten?"
@@ -261,12 +277,12 @@ de:
rr_to_old:
extra: "Deine Version von Retro Rewind ist zu alt zum Aktualisieren. Möchtest du Retro Rewind neu installieren?"
title: "Retro Rewind-Version ist zu alt."
- rr_not_determent:
+ rr_not_determined:
title: "Installiere Retro Rewind"
extra: "Deine Version von Retro Rewind konnte nicht ermittelt werden. Möchtest du Retro Rewind herunterladen?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Dolphin Flatpak Installation"
- extra: "Die Flatpak Dolphin Version scheint nicht installiert zu sein. Möchtest du sie von uns installieren lassen (ganzes System)?"
+ extra: "Die Flatpak Dolphin Version scheint nicht installiert zu sein. Möchtest du sie von uns installieren lassen (für deinen eigenen Benutzer)?"
install_mod:
title: "Du bist dabei das Spiel ohne Mods zu starten. Möchtest du deinen My-Stuff Ordner leeren?"
search_mod: "Nach Mods suchen..."
@@ -301,8 +317,14 @@ de:
extra: "Es ist nicht möglich gerade nach Updates zu suchen. Du bist vielleicht nicht mit dem Internet verbunden oder der Server hat gerade Schwierigkeiten."
unable_update_wh_wz:
extra:
- reason_network: "Es kann nicht überprüft werden, ob Wheel Wizard auf dem neuesten Stand ist. \\nMöglicherweise treten derzeit Netzwerkprobleme auf."
- reason_location: "Wheel Wizard kann nicht aktualisiert werden. Bitte stelle sicher, dass sich die Anwendung in einem Ordner befindet, in den geschrieben werden kann.\\n Der aktuelle Ordner konnte nicht gefunden werden."
+ reason_network: |
+ Es kann nicht überprüft werden, ob Wheel Wizard auf dem neuesten Stand ist.
+
+ Möglicherweise treten derzeit Netzwerkprobleme auf.
+ reason_location: |
+ Wheel Wizard kann nicht aktualisiert werden. Bitte stelle sicher, dass sich die Anwendung in einem Ordner befindet, in den geschrieben werden kann.
+
+ Der aktuelle Ordner konnte nicht gefunden werden.
title: "Wheel Wizard konnte nicht aktualisiert werden."
no_connect_server:
extra: "Es konnte keine Verbindung zum Server hergestellt werden. Bitte versuche es später noch einmal."
@@ -340,7 +362,10 @@ de:
extra:
failed_update_delete: "Dateien für das Update konnten nicht gelöscht werden. Abbruch."
failed_update_apply: "Das Update konnte nicht installiert werden. Abbruch."
- invalid_file_path: "Ungültiger Dateipfad wurde erkannt. Bitte kontaktiere die Entwickler. \\n Server-Fehler: {$1}"
+ invalid_file_path: |
+ Ungültiger Dateipfad wurde erkannt. Bitte kontaktiere die Entwickler.
+
+ Server-Fehler: {$1}
title: "Über das RR Update"
restart_admin_fail:
extra: "Neustart mit Admin-Rechten fehlgeschlagen."
@@ -365,7 +390,10 @@ de:
title: "Einstellungen erfolgreich gespeichert!"
data_folder_moved:
title: "Datenordner aktualisiert."
- extra: "Wheel WIzard's Daten sind jetzt gespeichert in:\\n{$1}"
+ extra: |
+ Wheel Wizard's Daten sind jetzt gespeichert in:
+
+ {$1}
rr_up_to_date:
title: "Retro Rewind ist auf dem neuesten Stand."
mii_changed: "Mii erfolgreich geändert."
diff --git a/WheelWizard/Resources/Languages/en.yml b/WheelWizard/Resources/Languages/en.yml
index 8fb59e52..35b91dea 100644
--- a/WheelWizard/Resources/Languages/en.yml
+++ b/WheelWizard/Resources/Languages/en.yml
@@ -171,7 +171,9 @@ en:
mii_editor: "Mii Editor"
mii_carousel: "Mii Carousel"
text:
- made_by_string: "Made by: {$1} \\n And {$2}"
+ made_by_string: |
+ Made by: {$1}
+ and {$2}
thanks_translators: "Thanks a lot to all the translators:"
wh_wz_translation_percentage: "Translations for this language are {$1}% complete"
powered_gamebanana: "Powered By GameBanana"
@@ -261,10 +263,24 @@ en:
extra: "This change will revert in {$1} unless you decide to keep the change."
move_data:
title: "Move Wheel Wizard data?"
- extra: "Wheel Wizard will move its files to:\\n{$1}\\nThis may take a while depending on the amount of data."
+ extra: |
+ Wheel Wizard will move its files to:
+
+ {$1}
+
+ This may take a while depending on the amount of data.
dolphin_found:
title: "Dolphin Emulator Folder Found"
- extra: "If you dont know what all of this means, just click yes :) \\nDolphin Emulator folder found. Would you like to use this folder?"
+ extra: |
+ If you don't know what all of this means, just click yes :)
+
+ Dolphin Emulator folder found. Would you like to use this folder?
+ dolphin_program_found:
+ title: "Dolphin Emulator Found"
+ extra: |
+ If you don't know what all of this means, just click yes :)
+
+ Dolphin Emulator found. Would you like to use this?
new_version_wh_wz:
title: "Wheel Wizard Update Available"
extra: "Version {$1} of Wheel Wizard is available (currently on {$2}). Do you want to update now?"
@@ -280,12 +296,12 @@ en:
rr_to_old:
extra: "Your version of Retro Rewind is too old to update. Would you like to reinstall Retro Rewind?"
title: "The Retro Rewind version is too old."
- rr_not_determent:
+ rr_not_determined:
title: "Download Retro Rewind"
extra: "Your version of Retro Rewind could not be determined. Would you like to download Retro Rewind?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Dolphin Flatpak Installation"
- extra: "The Flatpak version of Dolphin Emulator does not appear to be installed. Would you like us to install it (system-wide)?"
+ extra: "The Flatpak version of Dolphin Emulator does not appear to be installed. Would you like us to install it (for your own user)?"
install_mod:
title: "Do you want to donwload and install the mod: {$1}?"
search_mod: "Search for mods..."
@@ -324,8 +340,14 @@ en:
extra: "Can't check for updates right now. You might not be connected to the internet or the server might be down."
unable_update_wh_wz:
extra:
- reason_network: "Unable to check if Wheel Wizard is up to date. \\nYou might be experiencing network issues."
- reason_location: "Unable to update Wheel Wizard. Please ensure the application is located in a folder that can be written to.\\n Could not find current folder."
+ reason_network: |
+ Unable to check if Wheel Wizard is up to date.
+
+ You might be experiencing network issues.
+ reason_location: |
+ Unable to update Wheel Wizard. Please ensure the application is located in a folder that can be written to.
+
+ Could not find current folder.
title: "Unable to update Wheel Wizard."
no_connect_server:
extra: "Could not connect to the server. Please try again later."
@@ -365,7 +387,10 @@ en:
extra:
failed_update_delete: "Failed to delete files for the update. Aborting."
failed_update_apply: "Failed to apply an update. Aborting."
- invalid_file_path: "Invalid file path detected. Please contact the developers.\\n Server error: {$1}"
+ invalid_file_path: |
+ Invalid file path detected. Please contact the developers.
+
+ Server error: {$1}
title: "Aborting RR Update"
restart_admin_fail:
extra: "Failed to restart with administrator rights."
@@ -390,7 +415,10 @@ en:
title: "Settings saved successfully!"
data_folder_moved:
title: "Data folder updated"
- extra: "Wheel Wizard data is now stored in:\\n{$1}"
+ extra: |
+ Wheel Wizard data is now stored in:
+
+ {$1}
rr_up_to_date:
title: "Retro Rewind is up to date."
mii_changed: "Mii changed successfully"
diff --git a/WheelWizard/Resources/Languages/es.yml b/WheelWizard/Resources/Languages/es.yml
index 6bfb5a33..2ae4e778 100644
--- a/WheelWizard/Resources/Languages/es.yml
+++ b/WheelWizard/Resources/Languages/es.yml
@@ -155,7 +155,9 @@ es:
rooms: "Salas"
miis: "Miis"
text:
- made_by_string: "Hecho por: {$1} y {$2}"
+ made_by_string: |
+ Hecho por: {$1}
+ y {$2}
thanks_translators: "Muchas gracias a todos los traductores:"
wh_wz_translation_percentage: "La traducción de este idioma está a un {$1}%."
hover:
@@ -222,7 +224,10 @@ es:
extra: "Este cambio se revertira en {$1} a menos de que decidas de quedarte con este cambio."
dolphin_found:
title: "Carpeta del Emulador Dolphin encontrado"
- extra: "Ante la duda, solo marque si\\n. Carpeta del emulador Dolphin encontrado. ¿Desea usar esta carpeta?"
+ extra: |
+ Ante la duda, solo marque si.
+
+ Carpeta del emulador Dolphin encontrado. ¿Desea usar esta carpeta?
new_version_wh_wz:
title: "Actualización de Wheel Wizard disponible"
extra: "La version {$1} de WheelWizzard está disponible (Actualmente en {$2}). ¿Desea actualizar ahora?"
@@ -238,7 +243,7 @@ es:
rr_to_old:
extra: "Tu versión de Retro Rewind es muy antigua para actualizar. ¿Desea reinstalar Retro Rewind?"
title: "La version de Retro Rewind es muy antigua."
- rr_not_determent:
+ rr_not_determined:
title: "Instalar Retro Rewind"
extra: "No se pudo determinar tu versión de Retro Rewind. ¿Desea instalar Retro Rewind?"
message_warning:
@@ -263,8 +268,14 @@ es:
extra: "No se pueden buscar actualizaciones en este momento. Es posible que no tengas conexión a internet o que el servidor esté inactivo."
unable_update_wh_wz:
extra:
- reason_network: "Incapaz de confirmar la actualidad de su versión de Wheel Wizard.\\n Podrías estar experimentando problemas de conexión."
- reason_location: "Incapaz de actualizar Wheel Wizard. Asegurate que la aplicación esta ubicada en una carpeta que se puede editar.\\n No se encontró la carpeta actual."
+ reason_network: |
+ Incapaz de confirmar la actualidad de su versión de Wheel Wizard.
+
+ Podrías estar experimentando problemas de conexión.
+ reason_location: |
+ Incapaz de actualizar Wheel Wizard. Asegurate que la aplicación esta ubicada en una carpeta que se puede editar.
+
+ No se encontró la carpeta actual.
title: "No se pudo actualizar Wheel Wizard."
no_connect_server:
extra: "No se pudo conectar al servidor. Intente de nuevo más tarde"
@@ -289,7 +300,10 @@ es:
extra:
failed_update_delete: "Error al borrar archivos para la actualización. Cancelando"
failed_update_apply: "Error al aplicar una actualización. Cancelando."
- invalid_file_path: "Se detectó una ruta de archivo no válida. Contacte a los desarrolladores.\\n Error del servidor: {$1}"
+ invalid_file_path: |
+ Se detectó una ruta de archivo no válida. Contacte a los desarrolladores.
+
+ Error del servidor: {$1}
title: "Abortando actualización de RR"
restart_admin_fail:
extra: "Error al reinstalar con derechos de administrador."
diff --git a/WheelWizard/Resources/Languages/fi.yml b/WheelWizard/Resources/Languages/fi.yml
index 4cc0c7be..6cc031b1 100644
--- a/WheelWizard/Resources/Languages/fi.yml
+++ b/WheelWizard/Resources/Languages/fi.yml
@@ -167,7 +167,9 @@ fi:
mii_editor: "Mii-editori"
mii_carousel: "Miin katselu"
text:
- made_by_string: "Tehnyt: {$1}\\n ja {$2}"
+ made_by_string: |
+ Tehnyt: {$1}
+ ja {$2}
thanks_translators: "Suuret kiitokset kaikille kääntäjille:"
wh_wz_translation_percentage: "Tämän kielen käännökset ovat {$1} % valmiita."
powered_gamebanana: "Palvelun tarjoaa GameBanana"
@@ -244,7 +246,10 @@ fi:
extra: "Muutos perutaan {$1} kuluttua, ellet aio pitää muutosta."
dolphin_found:
title: "Dolphin-emulaattorin kansio löytyi"
- extra: "Jos et tiedä, mitä kaikki tarkoittaa, paina vain 'Kyllä' :)\\nDolphin-emulaattorin kansio löytyi. Haluatko käyttää tätä kansiota?"
+ extra: |
+ Jos et tiedä, mitä kaikki tarkoittaa, paina vain 'Kyllä' :)
+
+ Dolphin-emulaattorin kansio löytyi. Haluatko käyttää tätä kansiota?
new_version_wh_wz:
title: "Wheel Wizard -päivitys saatavilla"
extra: "Wheel Wizardin versio {$1} on saatavilla (nykyinen versio: {$2}). Haluatko päivittää heti?"
@@ -260,14 +265,14 @@ fi:
rr_to_old:
extra: |-
Retro Rewind -versiosi on liian vanha päivittämiseen. Haluatko asentaa Retro Rewindin uudelleen?
-
+
title: "Retro Rewind -versio on liian vanha."
- rr_not_determent:
+ rr_not_determined:
title: "Lataa Retro Rewind"
extra: "Retro Rewind -versiotasi ei voitu määrittää. Haluatko ladata Retro Rewindin?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Dolphin Flatpakin asennus"
- extra: "Dolphin-emulaattorin Flatpak-versio ei näytä olevan asennettuna. Haluatko, että asennamme sen järjestelmällesi?"
+ extra: "Dolphin-emulaattorin Flatpak-versio ei näytä olevan asennettuna. Haluatko, että asennamme sen vain omalle käyttäjätilillesi?"
install_mod:
title: "Haluatko ladata ja asentaa modin: {$1}?"
search_mod: "Haetaan modeja..."
@@ -296,8 +301,14 @@ fi:
extra: "Päivityksiä ei voi tarkistaa juuri nyt. Internet-yhteyttä ei ole tai palvelimessa on ongelma."
unable_update_wh_wz:
extra:
- reason_network: "Ei voitu tarkistaa, onko Wheel Wizard ajan tasalla.\\nSyynä saattaa olla verkkoyhteysongelmat."
- reason_location: "Wheel Wizardia ei voi päivittää. Varmista, että sovellus sijaitsee kansiossa, johon voi kirjoittaa tietoja.\\nNykyistä kansiota ei löytynyt."
+ reason_network: |
+ Ei voitu tarkistaa, onko Wheel Wizard ajan tasalla.
+
+ Syynä saattaa olla verkkoyhteysongelmat.
+ reason_location: |
+ Wheel Wizardia ei voi päivittää. Varmista, että sovellus sijaitsee kansiossa, johon voi kirjoittaa tietoja.
+
+ Nykyistä kansiota ei löytynyt.
title: "Wheel Wizardia ei voi päivittää."
no_connect_server:
extra: "Yhdistäminen palvelimelle epäonnistui. Yritä myöhemmin uudelleen."
@@ -333,7 +344,10 @@ fi:
extra:
failed_update_delete: "Tiedostojen poistaminen päivitystä varten epäonnistui. Perutaan."
failed_update_apply: "Päivityksen käyttöönotto epäonnistui. Perutaan."
- invalid_file_path: "Virheellinen polku. Ota yhteyttä kehittäjiin.\\n Palvelinvirhe: {$1}"
+ invalid_file_path: |
+ Virheellinen polku. Ota yhteyttä kehittäjiin.
+
+ Palvelinvirhe: {$1}
title: "Perutaan RR-päivitys"
restart_admin_fail:
extra: "Käynnistäminen järjestelmänvalvojan oikeuksilla epäonnistui."
diff --git a/WheelWizard/Resources/Languages/fr.yml b/WheelWizard/Resources/Languages/fr.yml
index 950d71e3..2ea9a36f 100644
--- a/WheelWizard/Resources/Languages/fr.yml
+++ b/WheelWizard/Resources/Languages/fr.yml
@@ -167,7 +167,9 @@ fr:
mii_editor: "Éditeur de Mii"
mii_carousel: "Vue d'ensemble du Mii"
text:
- made_by_string: "Fait par: {$1} \\n et {$2}"
+ made_by_string: |
+ Fait par: {$1}
+ et {$2}
thanks_translators: "Merci à tous les traducteurs:"
wh_wz_translation_percentage: "La traduction pour cette langue est fini à {$1}%"
powered_gamebanana: "Contribué par GameBanana"
@@ -244,7 +246,10 @@ fr:
extra: "Cette modification va être rétablie dans {$1} sauf si vous choisissez de garder cette modification."
dolphin_found:
title: "Dossier Dolphin Emulator trouvé"
- extra: "Si vous ne savez pas ce que tous cela veut dire, juste cliquez sur oui :) \\nDossier Dolphin Emulator trouvé. Voulez-vous utilser ce dossier ? "
+ extra: |
+ Si vous ne savez pas ce que tous cela veut dire, juste cliquez sur oui :)
+
+ Dossier Dolphin Emulator trouvé. Voulez-vous utilser ce dossier ?
new_version_wh_wz:
title: "Mise à jour Wheel Wizard disponible !"
extra: "La version {$1} de Wheel Wizard est disponible (Version actuelle: {$2}). Voulez-vous mettre à jour maintenant ? "
@@ -262,12 +267,12 @@ fr:
Votre version de Retro Rewind est trop vieille pour être mis à jour.
Voulez-vous réinstaller Retro Rewind ?
title: "Votre version de Retro Rewind est trop vieille."
- rr_not_determent:
+ rr_not_determined:
title: "Télécharger Retro Rewind "
extra: |-
Votre version de Retro Rewind n'a pas pu être déterminée.
Voulez-vous installer Retro Rewind ?
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Installation de Dolphin Flatpak..."
extra: "La version Flatpak de Dolphin Emulator ne semble pas être installée. Veuillez-vous qu'on vous l'installe ?"
install_mod:
@@ -298,8 +303,14 @@ fr:
extra: "Impossibilité de vérifier les mises à jour actuellement. Vous n'êtes probablement pas connecté à internet ou le serveur est probablement en maintenance"
unable_update_wh_wz:
extra:
- reason_network: "Impossible de vérifier si Wheel Wizard est mis à jour. \\nVous pourrez expérimenter des problèmes d'internet."
- reason_location: "Impossible de mettre à jour Wheel Wizard. Veuillez bien vérifier que l'application se trouve dans un dossier qui peut être écrit. \\n N'a pas pu trouver le dossier actuel."
+ reason_network: |
+ Impossible de vérifier si Wheel Wizard est mis à jour.
+
+ Vous pourrez expérimenter des problèmes d'internet.
+ reason_location: |
+ Impossible de mettre à jour Wheel Wizard. Veuillez bien vérifier que l'application se trouve dans un dossier qui peut être écrit.
+
+ N'a pas pu trouver le dossier actuel.
title: "Impossible de mettre à jour Wheel Wizard. "
no_connect_server:
extra: "N'a pas pu de se connecter au serveur. Veuillez réessayer plus tard."
@@ -335,7 +346,10 @@ fr:
extra:
failed_update_delete: "Échec de la désinstallation de fichiers pour la mise à jour. Annulation"
failed_update_apply: "Échec d'application de la mise à jour. Annulation."
- invalid_file_path: "Chemin vers un fichier incorrect. Veuillez contacter les développeurs de Wheel Wizard.\\n Erreur Serveur: {$1}"
+ invalid_file_path: |
+ Chemin vers un fichier incorrect. Veuillez contacter les développeurs de Wheel Wizard.
+
+ Erreur Serveur: {$1}
title: "Anuller la mise à jour de RR"
restart_admin_fail:
extra: "Échec du redémarrage avec les droits d'administrateur."
diff --git a/WheelWizard/Resources/Languages/it.yml b/WheelWizard/Resources/Languages/it.yml
index 56ef1157..7dd4dbfa 100644
--- a/WheelWizard/Resources/Languages/it.yml
+++ b/WheelWizard/Resources/Languages/it.yml
@@ -167,7 +167,9 @@ it:
mii_editor: "Creatore Mii"
mii_carousel: "Visualizzatore Mii"
text:
- made_by_string: "Fatto da: {$1} \\n e {$2}"
+ made_by_string: |
+ Fatto da: {$1}
+ e {$2}
thanks_translators: "Grazie a tutti i traduttori:"
wh_wz_translation_percentage: "Traduzioni per questa lingua sono complete al {$1}%"
powered_gamebanana: "Offerto da GameBanana"
@@ -244,7 +246,10 @@ it:
extra: "Questa modifica si ripristinerà in {$1} a meno che tu decida di mantenerla."
dolphin_found:
title: "Cartella dell'Emulatore Dolphin trovata"
- extra: "Se non sai cosa ciò vuol dire, clicca su sì :) \\nCartella dell'Emulatore Dolphin trovata. Vuoi usare questa cartella?"
+ extra: |
+ Se non sai cosa ciò vuol dire, clicca su sì :)
+
+ Cartella dell'Emulatore Dolphin trovata. Vuoi usare questa cartella?
new_version_wh_wz:
title: "Aggiornamento di Wheel Wizard disponibile"
extra: "La versione {$1} di Wheel Wizard è disponibile (al momento è {$2}). Vuoi aggiornare ora?"
@@ -260,12 +265,12 @@ it:
rr_to_old:
extra: "La tua versione di Retro Rewind è troppo vecchia per essere aggiornata. Vuoi reinstallare Retro Rewind?"
title: "La versione di Retro Rewind è datata."
- rr_not_determent:
+ rr_not_determined:
title: "Scarica Retro Rewind"
extra: "La tua versione di Retro Rewind non può essere determinata. Vuoi scaricare Retro Rewind?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Installazione di Dolphin tramite Flatpak"
- extra: "La versione Flatpak dell'emulatore Dolphin non sembra essere installata. Vuoi che venga installata nel tuo sistema?"
+ extra: "La versione Flatpak dell'emulatore Dolphin non sembra essere installata. Vuoi che venga installata per il tuo account?"
install_mod:
title: "Vuoi scaricare ed installare la mod: {$1}?"
search_mod: "Cercando delle mod..."
@@ -294,8 +299,14 @@ it:
extra: "Impossibile verificare gli aggiornamenti in questo momento. Potresti non avere una connessione ad internet oppure il server potrebbe essere offline."
unable_update_wh_wz:
extra:
- reason_network: "Impossibile verificare se Wheel Wizard è aggiornato. \\nPotresti avere problemi di connessione."
- reason_location: "Impossibile aggiornare Wheel Wizard. Assicurati che l'applicazione si trovi in una cartella con diritti di scrittura. \\nNon è possibile trovare la cartella attuale."
+ reason_network: |
+ Impossibile verificare se Wheel Wizard è aggiornato.
+
+ Potresti avere problemi di connessione.
+ reason_location: |
+ Impossibile aggiornare Wheel Wizard. Assicurati che l'applicazione si trovi in una cartella con diritti di scrittura.
+
+ Non è possibile trovare la cartella attuale.
title: "Impossibile aggiornare Wheel Wizard."
no_connect_server:
extra: "Impossibile connettersi al server. Riprova più tardi."
@@ -331,7 +342,10 @@ it:
extra:
failed_update_delete: "Fallito il cancellamento dei file dell'aggiornamento. Annullamento."
failed_update_apply: "Fallita l'applicazione di un aggiornamento. Annullamento."
- invalid_file_path: "Incontrato un percorso file invalido. Contatta gli sviluppatori.\\n Errore server: {$1}"
+ invalid_file_path: |
+ Incontrato un percorso file invalido. Contatta gli sviluppatori.
+
+ Errore server: {$1}
title: "Annullando l'aggiornamento di RR"
restart_admin_fail:
extra: "Errore riavviando con diritti di amministratore."
diff --git a/WheelWizard/Resources/Languages/ja.yml b/WheelWizard/Resources/Languages/ja.yml
index 85e4e0a3..4cf52a9c 100644
--- a/WheelWizard/Resources/Languages/ja.yml
+++ b/WheelWizard/Resources/Languages/ja.yml
@@ -167,7 +167,9 @@ ja:
mii_editor: "Miiエディター"
mii_carousel: "Miiスライダー"
text:
- made_by_string: "作成者: {$1} \\nと {$2}"
+ made_by_string: |
+ 作成者: {$1}
+ と {$2}
thanks_translators: "すべての翻訳者さんに感謝します:"
wh_wz_translation_percentage: "この言語の翻訳は{$1}%完了しています"
powered_gamebanana: "GameBananaによって提供されています"
@@ -244,7 +246,10 @@ ja:
extra: "変更の保存を選択しないと、この変更は{$1}で変更前に戻ります"
dolphin_found:
title: "Dolphinエミュレーターのフォルダーが見つかりました"
- extra: "意味がよく分からなければ、「はい」をクリックしてください。\\nDolphinエミュレーターのフォルダーが見つかりました。このフォルダーを使用しますか?"
+ extra: |
+ 意味がよく分からなければ、「はい」をクリックしてください。
+
+ Dolphinエミュレーターのフォルダーが見つかりました。このフォルダーを使用しますか?
new_version_wh_wz:
title: "Wheel Wizardのアップデートがあります"
extra: "Wheel Wizardのバージョン{$1} (現在のバージョンは{$2}) が利用できます。すぐにアップデートしますか?"
@@ -260,12 +265,12 @@ ja:
rr_to_old:
extra: "Retro Rewindのバージョンが古すぎるため更新できません。Retro Rewindを再インストールしますか?"
title: "Retro Rewindのバージョンが古すぎます"
- rr_not_determent:
+ rr_not_determined:
title: "Retro Rewindをダウンロードする"
extra: "Retro Rewindのバージョンを判別できませんでした。Retro Rewindを再インストールしますか?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Dolphin flatpakバージョンのインストール"
- extra: "Dolphinエミュレーターのflatpakバージョンがインストールされていないようです。システム全体にインストールしますか?"
+ extra: "Dolphinエミュレーターのflatpakバージョンがインストールされていないようです。私たちが(あなたのアカウントのみに)インストールしてもよろしいですか?"
install_mod:
title: "Modのダウンロードとインストールを行いますか: {$1}?"
search_mod: "Modを検索しています..."
@@ -296,8 +301,14 @@ ja:
extra: "現在アップデートを確認できません。インターネットに接続されていないか、サーバーがダウンしている可能性があります"
unable_update_wh_wz:
extra:
- reason_network: "Wheel Wizardが最新かどうか確認できません。\\nネットワークの問題が発生している可能性があります。"
- reason_location: "Wheel Wizardが更新できません。アプリが書き込み可能なフォルダーにあることを確認してください。\\n現在のフォルダーが見つかりません。"
+ reason_network: |
+ Wheel Wizardが最新かどうか確認できません。
+
+ ネットワークの問題が発生している可能性があります。
+ reason_location: |
+ Wheel Wizardが更新できません。アプリが書き込み可能なフォルダーにあることを確認してください。
+
+ 現在のフォルダーが見つかりません。
title: "Wheel Wizardのアップデートを無効にする"
no_connect_server:
extra: "サーバーに接続できませんでした。後でもう一度試してください。"
@@ -333,7 +344,10 @@ ja:
extra:
failed_update_delete: "アップデートファイルの削除に失敗しました。中止しています。"
failed_update_apply: "アップデートの適用に失敗しました。中止しています。"
- invalid_file_path: "無効なファイルパスが検知されました。開発者に連絡してください。\\n サーバーエラー: {$1}"
+ invalid_file_path: |
+ 無効なファイルパスが検知されました。開発者に連絡してください。
+
+ サーバーエラー: {$1}
title: "Retro Rewindのアップデートを中止"
restart_admin_fail:
extra: "管理者権限で再起動するのに失敗しました。"
diff --git a/WheelWizard/Resources/Languages/ko.yml b/WheelWizard/Resources/Languages/ko.yml
index 22c44e14..900254dd 100644
--- a/WheelWizard/Resources/Languages/ko.yml
+++ b/WheelWizard/Resources/Languages/ko.yml
@@ -167,7 +167,9 @@ ko:
mii_editor: "Mii 에디터"
mii_carousel: "Mii 슬라이더"
text:
- made_by_string: "만든이: {$1} \\n 과 {$2}"
+ made_by_string: |
+ 만든이: {$1}
+ 과 {$2}
thanks_translators: "모든 번역가 분들에게 감사드립니다:"
wh_wz_translation_percentage: "해당 언어의 번역은 {$1}% 완료됐습니다."
powered_gamebanana: "GameBanana 제공"
@@ -242,7 +244,10 @@ ko:
extra: "변경 사항 저장을 선택하지 않으면 변경 전인 {$1}로 돌아갑니다"
dolphin_found:
title: "돌핀 에뮬레이터 폴더를 찾았습니다"
- extra: "돌핀 에뮬레이터 폴더를 찾았습니다. 해당 폴더를 사용하시겠습니까? \\n뭔 소린지 모르겠다면 그냥 \"네\"를 누르세요 ^_^"
+ extra: |
+ 돌핀 에뮬레이터 폴더를 찾았습니다. 해당 폴더를 사용하시겠습니까?
+
+ 뭔 소린지 모르겠다면 그냥 \"네\"를 누르세요 ^_^
new_version_wh_wz:
title: "휠 위저드의 새로운 업데이트가 있습니다."
extra: "휠 위저드 최신 버전 {$1}이 있습니다.(현재 버전 {$2}). 업데이트 하시겠습니까?"
@@ -258,12 +263,12 @@ ko:
rr_to_old:
extra: "설치된 레트로 리와인드가 너무 구버전입니다. 레트로 리와인드를 재설치하시겠습니까?"
title: "레트로 리와인드의 버전이 너무 구버전입니다"
- rr_not_determent:
+ rr_not_determined:
title: "레트로 리와인드 다운로드"
extra: "설치된 레트로 리와인드 버전을 확인 할 수 없습니다. 레트로 리와인드를 다운로드 하시겠습니까?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "돌핀 Flatpak을 설치했습니다"
- extra: "돌핀 에뮬레이터의 Flatpak 버전이 설치되지 않은 것 같습니다. 시스템에 설치하시겠습니까?"
+ extra: "돌핀 에뮬레이터의 Flatpak 버전이 설치되지 않은 것 같습니다. 본인 계정에만 설치하시겠습니까?"
install_mod:
title: "모드를 다운로드하고 설치하시겠습니까: {$1}?"
search_mod: "모드를 검색합니다..."
@@ -292,8 +297,14 @@ ko:
extra: "업데이트를 확인 할 수 없습니다. 인터넷 연결이 끊어졌거나 서버가 다운된 상태일 수 있습니다"
unable_update_wh_wz:
extra:
- reason_network: "휠 위저드의 버전을 확인할 수 없습니다. \\n네트워크 문제가 발생했을 수 있습니다."
- reason_location: "휠 위저드를 업데이트할 수 없습니다. 프로그램이 쓰기 가능한 폴더에 있는지 확인하십시오.\\n현재 폴더를 찾을 수 없습니다."
+ reason_network: |
+ 휠 위저드의 버전을 확인할 수 없습니다.
+
+ 네트워크 문제가 발생했을 수 있습니다.
+ reason_location: |
+ 휠 위저드를 업데이트할 수 없습니다. 프로그램이 쓰기 가능한 폴더에 있는지 확인하십시오.
+
+ 현재 폴더를 찾을 수 없습니다.
title: "휠 위저드를 업데이트 할 수 없습니다"
no_connect_server:
extra: "서버에 연결할 수 없습니다. 잠시 후 다시 시도해 주십시오."
@@ -329,7 +340,10 @@ ko:
extra:
failed_update_delete: "업데이트 파일 삭제 실패, 중단합니다."
failed_update_apply: "업데이트 적용 실패, 중단합니다."
- invalid_file_path: "잘못된 파일 경로가 감지됐습니다. 개발자에게 연락하세요.\\n 서버 에러: {$1}"
+ invalid_file_path: |
+ 잘못된 파일 경로가 감지됐습니다. 개발자에게 연락하세요.
+
+ 서버 에러: {$1}
title: "레트로 리와인드 업데이트 중단"
restart_admin_fail:
extra: "관리자 권한으로 재시작하는 데 실패했습니다."
diff --git a/WheelWizard/Resources/Languages/nl.yml b/WheelWizard/Resources/Languages/nl.yml
index 8a04a3cc..6b3525f1 100644
--- a/WheelWizard/Resources/Languages/nl.yml
+++ b/WheelWizard/Resources/Languages/nl.yml
@@ -167,7 +167,9 @@ nl:
mii_editor: "Mii-editor"
mii_carousel: "Mii-carrousel"
text:
- made_by_string: "Gemaakt door {$1} \\n en {$2}"
+ made_by_string: |
+ Gemaakt door {$1}
+ en {$2}
thanks_translators: "Hartelijk dank aan alle vertalers:"
wh_wz_translation_percentage: "Vertalingen voor deze taal zijn {$1}% voltooid."
powered_gamebanana: "Mogelijk gemaakt door GameBanana."
@@ -242,7 +244,10 @@ nl:
extra: "Deze wijziging wordt over {$1} teruggedraaid, tenzij je ervoor kiest om de wijziging te behouden."
dolphin_found:
title: "Dolphin-emulator-map gevonden"
- extra: "Als je niet weet wat dit allemaal betekent, druk op ja :) \\nDolphin-emulator-map gevonden. Wil je deze gebruiken?"
+ extra: |
+ Als je niet weet wat dit allemaal betekent, druk op ja :)
+
+ Dolphin-emulator-map gevonden. Wil je deze gebruiken?
new_version_wh_wz:
title: "Wheel Wizard-update beschikbaar"
extra: "Versie {$1} van Wheel Wizard is beschikbaar (momenteel op {$2}). Wil je nu updaten?"
@@ -258,12 +263,12 @@ nl:
rr_to_old:
extra: "Je versie van Retro Rewind is te oud om te updaten. Wil je Retro Rewind opnieuw installeren?"
title: "Retro Rewind versie is te oud."
- rr_not_determent:
+ rr_not_determined:
title: "Retro Rewind downloaden"
extra: "Je versie van Retro Rewind kon niet worden bepaald. Wil je Retro Rewind downloaden?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Dolphin-Flatpak installeren"
- extra: "De Flatpak-versie van de Dolphin-emulator is niet geïnstalleerd. Installeer dit voor het hele systeem?"
+ extra: "De Flatpak-versie van de Dolphin-emulator is niet geïnstalleerd. Installeer dit voor je eigen account?"
install_mod:
title: "Wil je de mod \"{$1}\" downloaden en installeren?"
search_mod: "Zoeken naar mods..."
@@ -292,8 +297,14 @@ nl:
extra: "Kan momenteel niet op updates controleren. Mogelijk heb je geen internetverbinding of de server is offline."
unable_update_wh_wz:
extra:
- reason_network: "Kan niet controleren of Wheel Wizard up-to-date is. \\nEr zijn mogelijk netwerkproblemen."
- reason_location: "Wheel Wizard kan niet worden geüpdatet. Zorg ervoor dat de applicatie zich in een map bevindt waarnaar kan worden geschreven.\\n Kan de huidige map niet vinden."
+ reason_network: |
+ Kan niet controleren of Wheel Wizard up-to-date is.
+
+ Er zijn mogelijk netwerkproblemen.
+ reason_location: |
+ Wheel Wizard kan niet worden geüpdatet. Zorg ervoor dat de applicatie zich in een map bevindt waarnaar kan worden geschreven.
+
+ Kan de huidige map niet vinden.
title: "Wheel Wizard kan niet worden geüpdatet."
no_connect_server:
extra: "Kan geen verbinding maken met de server. Probeer het later opnieuw."
@@ -329,7 +340,10 @@ nl:
extra:
failed_update_delete: "Het is niet gelukt om bestanden te verwijderen voor de update. Proces word afgebroken."
failed_update_apply: "Het is niet gelukt om te updaten. Proces word afgebroken."
- invalid_file_path: "Ongeldige bestandslocatie gedetecteerd. Neem contact op met de ontwikkelaars.\\n Serverfout: {$1}"
+ invalid_file_path: |
+ Ongeldige bestandslocatie gedetecteerd. Neem contact op met de ontwikkelaars.
+
+ Serverfout: {$1}
title: "RR-update afgebroken."
restart_admin_fail:
extra: "Het is niet gelukt om opnieuw op te starten met administratorrechten."
diff --git a/WheelWizard/Resources/Languages/pt.yml b/WheelWizard/Resources/Languages/pt.yml
index 2bc0e733..6cd13417 100644
--- a/WheelWizard/Resources/Languages/pt.yml
+++ b/WheelWizard/Resources/Languages/pt.yml
@@ -167,7 +167,9 @@ pt:
mii_editor: "Editor Mii"
mii_carousel: "Carrosel Mii"
text:
- made_by_string: "Feito por: {$1} \\n e {$2}"
+ made_by_string: |
+ Feito por: {$1}
+ e {$2}
thanks_translators: "Muito obrigado a todos os tradutores:"
wh_wz_translation_percentage: "Traduções para esta língua estão {$1}% completas"
powered_gamebanana: "Contribuido pelo GameBanana"
@@ -240,7 +242,10 @@ pt:
extra: "Esta alteração será revertida em {$1} a menos que decida manter a alteração."
dolphin_found:
title: "Pasta Do Dolphin Emulator Encontrada"
- extra: "Se não sabes o que isto significa, clica só que sim :) \\nPasta do Dolphin Emulator encontrada. Gostarias de usar esta pasta?"
+ extra: |
+ Se não sabes o que isto significa, clica só que sim :)
+
+ Pasta do Dolphin Emulator encontrada. Gostarias de usar esta pasta?
new_version_wh_wz:
title: "Atualização do Wheel Wizard Disponível"
extra: "Versão {$1} do Wheel Wizard está disponível (de momento encontra-se na versão {$2}). Queres atualizar agora?"
@@ -256,12 +261,12 @@ pt:
rr_to_old:
extra: "A tua versão do Retro Rewind é demasiado antiga par atualizar. Gostarias de reinstalar o Retro Rewind"
title: "A versão do Retro Rewind é muito antiga."
- rr_not_determent:
+ rr_not_determined:
title: "Descarrega o Retro Rewind"
extra: "A tua versão do Retro Rewind não pode ser determinada. Gostarias de instalar o Retro Rewind"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Instalação do Dolphin Flatpak"
- extra: "A versão Flatpak do Dolphin Emulator parece não estar instalada. Deseja que a instalemos (em todo o sistema)?"
+ extra: "A versão Flatpak do Dolphin Emulator parece não estar instalada. Deseja que a instalemos (para a tua conta)?"
install_mod:
title: "Pretende transferir e instalar o mod: {$1}?"
search_mod: "Procura por mods..."
@@ -290,8 +295,14 @@ pt:
extra: "Não é possível verificar se há atualizações no momento. Pode não estar conectado à internet ou o servidor pode estar indisponível ou em baixo."
unable_update_wh_wz:
extra:
- reason_network: "Impossível verificar se o Wheel Wizard está atualizado. \\nTalvez estejas a experienciar problemas de net"
- reason_location: "Incapaz de atualizar o Wheel Wizard. Garante que a aplicação se encontra numa pasta que pode ser localizada.\\n Falha a encontar a pasta atual"
+ reason_network: |
+ Impossível verificar se o Wheel Wizard está atualizado.
+
+ Talvez estejas a experienciar problemas de net.
+ reason_location: |
+ Incapaz de atualizar o Wheel Wizard. Garante que a aplicação se encontra numa pasta que pode ser localizada.
+
+ Falha a encontar a pasta atual.
title: "Não é possível atualizar o Wheel Wizard"
no_connect_server:
extra: "Falha ao conectar ao servidor. Tente de novo mais tarde"
@@ -327,7 +338,10 @@ pt:
extra:
failed_update_delete: "Falha a apagar ficheiros para a atualização. Abortando."
failed_update_apply: "Falha a aplicar a atualização. Abortando."
- invalid_file_path: "Caminho de arquivo inválido detectado. Entra em contato com os desenvolvedores.\\nErro do servidor: {$1}"
+ invalid_file_path: |
+ Caminho de arquivo inválido detectado. Entra em contato com os desenvolvedores.
+
+ Erro do servidor: {$1}
title: "A abortar o Update do RR."
restart_admin_fail:
extra: "Falha ao reiniciar com direitos de administrador"
diff --git a/WheelWizard/Resources/Languages/ru.yml b/WheelWizard/Resources/Languages/ru.yml
index f2271621..20a8faff 100644
--- a/WheelWizard/Resources/Languages/ru.yml
+++ b/WheelWizard/Resources/Languages/ru.yml
@@ -167,7 +167,9 @@ ru:
mii_editor: "Редактор Mii"
mii_carousel: "Карусель Mii"
text:
- made_by_string: "Создатели: {$1}\\nи {$2}"
+ made_by_string: |
+ Создатели: {$1}
+ и {$2}
thanks_translators: "Низкий поклон и спасибо переводчикам:"
wh_wz_translation_percentage: "Перевод на этот язык завершён на {$1}%"
powered_gamebanana: "Моды из GameBanana"
@@ -235,7 +237,10 @@ ru:
title: "Хотите применить новый масштаб?"
dolphin_found:
title: "Папка эмулятора Dolphin найдена"
- extra: "Если ты понятия не имеешь что это значит, просто нажми да :D \\nПапка эмулятора Dolphin найдена. Хотите её использовать?"
+ extra: |
+ Если ты понятия не имеешь что это значит, просто нажми да :D
+
+ Папка эмулятора Dolphin найдена. Хотите её использовать?
new_version_wh_wz:
title: "Доступно обновление Wheel Wizard"
extra: "Версия {$1} Wheel Wizard'а доступна (прямо сейчас. вы на {$2}). Хотите произвести обновление?"
@@ -251,7 +256,7 @@ ru:
rr_to_old:
extra: "Ваша версия Retro Rewind слишком устарела для обновлений. Хотите переустановить Retro Rewind?"
title: "Версия Retro Rewind слишком стара"
- rr_not_determent:
+ rr_not_determined:
title: "Скачать Retro Rewind"
extra: "Не удалось определить вашу версию Retro Rewind. Хотите установить Retro Rewind?"
install_mod:
@@ -278,8 +283,14 @@ ru:
title: "Не удалось проверить обновления"
unable_update_wh_wz:
extra:
- reason_network: "Не удалось проверить, обновлён ли Wheel Wizard до последней версии? \\nВы возможно испытываете проблемы с подключеним."
- reason_location: "Не удалось обновить Wheel Wizard. Пожалуйста убедитесь, что исполняемый файл находится в папке куда можно добавлять файлы.\\n Не удалось найти текущую папку."
+ reason_network: |
+ Не удалось проверить, обновлён ли Wheel Wizard до последней версии?
+
+ Вы возможно испытываете проблемы с подключеним.
+ reason_location: |
+ Не удалось обновить Wheel Wizard. Пожалуйста убедитесь, что исполняемый файл находится в папке куда можно добавлять файлы.
+
+ Не удалось найти текущую папку.
title: "Не удалось обновить Wheel Wizard."
no_connect_server:
extra: "Не удалось подключиться к серверу. Попробуйте чуть позже."
diff --git a/WheelWizard/Resources/Languages/tr.yml b/WheelWizard/Resources/Languages/tr.yml
index fc5cbf06..6d13e2f6 100644
--- a/WheelWizard/Resources/Languages/tr.yml
+++ b/WheelWizard/Resources/Languages/tr.yml
@@ -167,7 +167,9 @@ tr:
mii_editor: "Mii Düzenleyicisi"
mii_carousel: "Mii Görüntüleyicisi"
text:
- made_by_string: "Yapımcı: {$1} \\n Ve {$2}"
+ made_by_string: |
+ Yapımcı: {$1}
+ ve {$2}
thanks_translators: "Tüm çevirmenlere çok teşekkür ederiz:"
wh_wz_translation_percentage: "Bu dilin çevirileri {$1}% tamamlandı"
powered_gamebanana: "GameBanana tarafından"
@@ -242,7 +244,10 @@ tr:
extra: "Bu değişiklik onaylamadığınız takdirde {$1} içinde eski haline dönecek."
dolphin_found:
title: "Dolphin Emulator Klasörü Bulundu"
- extra: "Eğer bunların ne anlama geldiğini bilmiyorsanız, evet diyebilirsiniz :) \\nDolphin Emulator klasörü bulundu. Bu klasörü kullanmak ister misiniz?"
+ extra: |
+ Eğer bunların ne anlama geldiğini bilmiyorsanız, evet diyebilirsiniz :)
+
+ Dolphin Emulator klasörü bulundu. Bu klasörü kullanmak ister misiniz?
new_version_wh_wz:
title: "Wheel Wizard Güncellemesi Mevcut"
extra: "Wheel Wizard'ın {$1} sürümü mevcut (şu anda {$2}'de). Şimdi güncellemek ister misiniz?"
@@ -258,12 +263,12 @@ tr:
rr_to_old:
extra: "Retro Rewind sürümünüz güncellemeye çok eski. Retro Rewind'ı yeniden yüklemek ister misiniz?"
title: "Retro Rewind sürümü çok eski."
- rr_not_determent:
+ rr_not_determined:
title: "Retro Rewind İndir"
extra: "Retro Rewind sürümünüz belirlenemedi. Retro Rewind'ı indirmek ister misiniz?"
- dolphin_flatpack:
+ dolphin_flatpak:
title: "Dolphin Flatpak Yüklemesi"
- extra: "Bilgisayarınızda Dolphin Emulator'ın Flatpak sürümü bulunamadı. Yüklememizi ister misiniz? (tüm kullanıcılar için)"
+ extra: "Bilgisayarınızda Dolphin Emulator'ın Flatpak sürümü bulunamadı. Yüklememizi ister misiniz? (kendi hesabın için)"
install_mod:
title: "Modu indirip kurmak ister misiniz: {$1}?"
search_mod: "Modları ara..."
@@ -292,8 +297,14 @@ tr:
extra: "Şu an güncellemeler kontrol edilemiyor. İnternete bağlı olmayabilirsiniz veya sunucular çalışmıyor olabilir."
unable_update_wh_wz:
extra:
- reason_network: "Wheel Wizard'ın güncel olup olmadığını kontrol edilemedi. \\nAğ sorunları yaşıyor olabilirsiniz."
- reason_location: "Wheel Wizard güncellenemedi. Uygulamanın erişilebilir bir klasörde bulunduğundan emin olun. \\n İstenilen klasör bulunamadı."
+ reason_network: |
+ Wheel Wizard'ın güncel olup olmadığını kontrol edilemedi.
+
+ Ağ sorunları yaşıyor olabilirsiniz.
+ reason_location: |
+ Wheel Wizard güncellenemedi. Uygulamanın erişilebilir bir klasörde bulunduğundan emin olun.
+
+ İstenilen klasör bulunamadı.
title: "Wheel Wizard güncellenemedi."
no_connect_server:
extra: "Sunucuya bağlanılamadı. Lütfen daha sonra tekrar deneyin."
@@ -329,7 +340,10 @@ tr:
extra:
failed_update_delete: "Güncelleme dosyalarını silmek başarısız oldu. İşlem iptal ediliyor."
failed_update_apply: "Güncellemeyi uygulamak başarısız oldu. İşlem iptal ediliyor."
- invalid_file_path: "Yanlış dosya yolu tespit edildi. Lütfen geliştiricilere bildirin.\\n Sunucu hatası: {$1}"
+ invalid_file_path: |
+ Yanlış dosya yolu tespit edildi. Lütfen geliştiricilere bildirin.
+
+ Sunucu hatası: {$1}
title: "Retro Rewind güncellemesi iptal ediliyor"
restart_admin_fail:
extra: "Yöneticilik haklarıyla yeniden başlatılamadı."
diff --git a/WheelWizard/Services/Launcher/Helpers/DolphinLaunchHelper.cs b/WheelWizard/Services/Launcher/Helpers/DolphinLaunchHelper.cs
index ac2135d2..e921d909 100644
--- a/WheelWizard/Services/Launcher/Helpers/DolphinLaunchHelper.cs
+++ b/WheelWizard/Services/Launcher/Helpers/DolphinLaunchHelper.cs
@@ -26,27 +26,23 @@ public static void KillDolphin() //dont tell PETA
private static bool IsFixableFlatpakGamePath(string gameFilePath)
{
- if (PathManager.IsFlatpakDolphinFilePath())
+ // Because with the file picker on a Flatpak build, we get XDG portal paths like these...
+ // We can fix Flatpak Dolphin to gain access to this game file path though.
+ var xdgRuntimeDir = Environment.GetEnvironmentVariable("XDG_RUNTIME_DIR") ?? string.Empty;
+ if (EnvHelper.IsRelativeLinuxPath(xdgRuntimeDir))
{
- // Because with the file picker on a Flatpak build, we get XDG portal paths like these...
- // We can fix Flatpak Dolphin to gain access to this game file path though.
- var xdgRuntimeDir = Environment.GetEnvironmentVariable("XDG_RUNTIME_DIR") ?? string.Empty;
- if (EnvHelper.IsRelativeLinuxPath(xdgRuntimeDir))
- {
- var fixablePattern = @"^/run/user/(\d+)/doc";
- var fixablePatternRegex = new Regex(fixablePattern);
- return fixablePatternRegex.IsMatch(gameFilePath);
- }
- else
- {
- var xdgRuntimeDirDocPath = Path.Combine(xdgRuntimeDir, "doc");
- return gameFilePath.StartsWith(xdgRuntimeDirDocPath);
- }
+ var fixablePattern = @"^/run/user/(\d+)/doc";
+ var fixablePatternRegex = new Regex(fixablePattern);
+ return fixablePatternRegex.IsMatch(gameFilePath);
+ }
+ else
+ {
+ var xdgRuntimeDirDocPath = Path.Combine(xdgRuntimeDir, "doc");
+ return gameFilePath.StartsWith(xdgRuntimeDirDocPath);
}
- return false;
}
- private static bool TryFixFlatpakPortalAccess(string path, string additionalFlag = "")
+ private static bool TryFixFlatpakPortalAccess(string path, string dolphinAppId, string additionalFlag = "")
{
if (IsFixableFlatpakGamePath(path))
{
@@ -60,7 +56,7 @@ private static bool TryFixFlatpakPortalAccess(string path, string additionalFlag
ArgumentList =
{
"document-export",
- "--app=org.DolphinEmu.dolphin-emu",
+ $"--app={dolphinAppId}",
// Default to a flag that is on by default
string.IsNullOrWhiteSpace(additionalFlag)
? "-r"
@@ -85,8 +81,22 @@ private static bool TryFixFlatpakPortalAccess(string path, string additionalFlag
return false;
}
+ private static string ExtractDolphinAppId(string flatpakDolphinLocation)
+ {
+ var defaultAppId = "org.DolphinEmu.dolphin-emu";
+
+ if (string.IsNullOrWhiteSpace(flatpakDolphinLocation))
+ {
+ return defaultAppId;
+ }
+
+ var matches = Regex.Matches(flatpakDolphinLocation, @"(?i)\b[a-z][a-z0-9]*(?:\.[a-z_][a-z0-9_]*){1,}\.[a-z_][a-z0-9_-]*\b");
+ return matches.Count == 0 ? defaultAppId : matches[^1].Value;
+ }
+
private static string FixFlatpakDolphinPermissions(string flatpakDolphinLocation)
{
+ var dolphinAppId = ExtractDolphinAppId(flatpakDolphinLocation);
var fixedFlatpakDolphinLocation = flatpakDolphinLocation;
void AddFilesystemPerm(string newFilesystemPerm, string mode = "")
{
@@ -101,7 +111,7 @@ void AddFilesystemPerm(string newFilesystemPerm, string mode = "")
// Try to export all portal-based paths to the Dolphin Flatpak so there are no issues.
// We are going to try to fix all user-configurable paths (excluding the Dolphin executable).
- if (!TryFixFlatpakPortalAccess(PathManager.UserFolderPath, "-w"))
+ if (!TryFixFlatpakPortalAccess(PathManager.UserFolderPath, dolphinAppId, "-w"))
AddFilesystemPerm(PathManager.UserFolderPath, ":rw");
// It doesn't seem viable to always enforce read-only Riivolution folder access
// while granting read-write to the save subdirectory,
@@ -109,15 +119,15 @@ void AddFilesystemPerm(string newFilesystemPerm, string mode = "")
// The Dolphin Flatpak itself would have write access to the entire Riivolution folder
// anyway in the default configuration, so we will only use read-only permissions on
// launch files if possible, not folders.
- if (!TryFixFlatpakPortalAccess(PathManager.RiivolutionWhWzFolderPath, "-w"))
+ if (!TryFixFlatpakPortalAccess(PathManager.RiivolutionWhWzFolderPath, dolphinAppId, "-w"))
AddFilesystemPerm(PathManager.RiivolutionWhWzFolderPath, ":rw");
// Read-only permissions on files where possible
- if (!TryFixFlatpakPortalAccess(PathManager.GameFilePath, "-r"))
+ if (!TryFixFlatpakPortalAccess(PathManager.GameFilePath, dolphinAppId, "-r"))
AddFilesystemPerm(PathManager.GameFilePath, ":ro");
// We need to provide the directory where the `RR.json` is located in for portal access!
- if (!TryFixFlatpakPortalAccess(Path.GetDirectoryName(PathManager.RrLaunchJsonFilePath) ?? "", "-r"))
+ if (!TryFixFlatpakPortalAccess(Path.GetDirectoryName(PathManager.RrLaunchJsonFilePath) ?? "", dolphinAppId, "-r"))
AddFilesystemPerm(PathManager.RrLaunchJsonFilePath, ":ro");
return fixedFlatpakDolphinLocation;
@@ -150,7 +160,7 @@ public static void LaunchDolphin(string arguments = "", bool shellExecute = fals
startInfo.ArgumentList.Add("--");
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
- if (PathManager.IsFlatpakDolphinFilePath())
+ if (PathManager.IsFlatpakDolphinFilePath(dolphinLocation))
dolphinLocation = FixFlatpakDolphinPermissions(dolphinLocation);
else
startInfo.EnvironmentVariables["QT_QPA_PLATFORM"] = "xcb";
diff --git a/WheelWizard/Services/PathManager.cs b/WheelWizard/Services/PathManager.cs
index ff6610c9..0651f955 100644
--- a/WheelWizard/Services/PathManager.cs
+++ b/WheelWizard/Services/PathManager.cs
@@ -604,7 +604,7 @@ public static string SplitLinuxDolphinConfigDir
{
get
{
- if (IsFlatpakDolphinFilePath())
+ if (IsFlatpakDolphinFilePath(DolphinFilePath))
{
if (LinuxDolphinFlatpakDataDir.Equals(Path.GetFullPath(UserFolderPath), StringComparison.Ordinal))
return LinuxDolphinFlatpakConfigDir;
@@ -676,28 +676,9 @@ public static bool IsFlatpakDolphinFilePath(string filePath)
// Prioritize Flatpak Dolphin installation if no file path has been saved yet, so return true
return true;
}
+ // Because we need this prefix for the permission workarounds, we just expect it to start with "flatpak run"
var flatpakRunCommand = "flatpak run";
- var dolphinAppId = "org.DolphinEmu.dolphin-emu";
- string[] possibleFlatpakDolphinCommands =
- [
- $"{flatpakRunCommand} {dolphinAppId}",
- $"{flatpakRunCommand} --system {dolphinAppId}",
- $"{flatpakRunCommand} --user {dolphinAppId}",
- $"{flatpakRunCommand} -p {dolphinAppId}",
- $"{flatpakRunCommand} --system -p {dolphinAppId}",
- $"{flatpakRunCommand} --user -p {dolphinAppId}",
- ];
- foreach (var possibleFlatpakDolphinCommand in possibleFlatpakDolphinCommands)
- {
- if (possibleFlatpakDolphinCommand.Equals(filePath, StringComparison.Ordinal))
- return true;
- }
- return false;
- }
-
- public static bool IsFlatpakDolphinFilePath()
- {
- return IsFlatpakDolphinFilePath(DolphinFilePath);
+ return filePath.StartsWith(flatpakRunCommand, StringComparison.Ordinal);
}
private static string GetContainingBaseDirectorySafe(string path)
diff --git a/WheelWizard/Views/Layout.axaml b/WheelWizard/Views/Layout.axaml
index 7f880645..08c95d95 100644
--- a/WheelWizard/Views/Layout.axaml
+++ b/WheelWizard/Views/Layout.axaml
@@ -56,7 +56,7 @@
x:Name="ContentArea"
Margin="{StaticResource EdgeGap}" />
-
+
-
-
+
diff --git a/WheelWizard/Views/Layout.axaml.cs b/WheelWizard/Views/Layout.axaml.cs
index 1e4c283b..84a81c57 100644
--- a/WheelWizard/Views/Layout.axaml.cs
+++ b/WheelWizard/Views/Layout.axaml.cs
@@ -137,12 +137,7 @@ private void OnLanguageChanged(object? sender, EventArgs e)
private void UpdateMadeByText()
{
var completeString = t("text.made_by_string", "Patchzy", "WantToBeeMe");
- if (!completeString.Contains("\\n"))
- return;
-
- var split = completeString.Split("\\n");
- MadeBy_Part1.Text = split[0];
- MadeBy_Part2.Text = split[1];
+ MadeBy.Text = completeString;
}
private void ModManager_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
diff --git a/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs b/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
index 96ef795a..b231d435 100644
--- a/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
+++ b/WheelWizard/Views/Pages/Settings/WhWzSettings.axaml.cs
@@ -160,8 +160,8 @@ private async void DolphinExeBrowse_OnClick(object sender, RoutedEventArgs e)
if (isInstalled())
{
var result = await new YesNoWindow()
- .SetMainText(t("question.dolphin_found.title"))
- .SetExtraText($"{t("question.dolphin_found.extra")}\n{path}")
+ .SetMainText(t("question.dolphin_program_found.title"))
+ .SetExtraText($"{t("question.dolphin_program_found.extra")}\n{path}")
.AwaitAnswer();
if (result)
@@ -172,11 +172,11 @@ private async void DolphinExeBrowse_OnClick(object sender, RoutedEventArgs e)
}
}
- if (!EnvHelper.IsFlatpakSandboxed() && !IsFlatpakDolphinInstalled())
+ if (!IsFlatpakDolphinInstalled())
{
var wantsAutomaticInstall = await new YesNoWindow()
- .SetMainText(t("question.dolphin_flatpack.title"))
- .SetExtraText(t("question.dolphin_flatpack.extra"))
+ .SetMainText(t("question.dolphin_flatpak.title"))
+ .SetExtraText(t("question.dolphin_flatpak.extra"))
.SetButtonText(t("action.install"), t("action.do_manually"))
.AwaitAnswer();
if (wantsAutomaticInstall)
@@ -205,6 +205,12 @@ private async void DolphinExeBrowse_OnClick(object sender, RoutedEventArgs e)
}
}
+ if (EnvHelper.IsFlatpakSandboxed())
+ {
+ // Having a picker does not make sense if Wheel Wizard is sandboxed.
+ return;
+ }
+
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
var dolphinAppPath = PathManager.TryToFindApplicationPath();
From 1a03b9d8c01f492218679d95810fdcce032f722a Mon Sep 17 00:00:00 2001
From: patchzyy <64382339+patchzyy@users.noreply.github.com>
Date: Thu, 9 Jul 2026 16:38:44 +0200
Subject: [PATCH 6/6] Release 2.4.11
---
...b.TeamWheelWizard.WheelWizard.metainfo.xml | 1 +
WheelWizard/WheelWizard.csproj | 222 +++++++++---------
2 files changed, 112 insertions(+), 111 deletions(-)
diff --git a/Flatpak/io.github.TeamWheelWizard.WheelWizard.metainfo.xml b/Flatpak/io.github.TeamWheelWizard.WheelWizard.metainfo.xml
index 0f13c57d..2d98b792 100644
--- a/Flatpak/io.github.TeamWheelWizard.WheelWizard.metainfo.xml
+++ b/Flatpak/io.github.TeamWheelWizard.WheelWizard.metainfo.xml
@@ -55,6 +55,7 @@
+
diff --git a/WheelWizard/WheelWizard.csproj b/WheelWizard/WheelWizard.csproj
index 4ea9cc26..887fa05a 100644
--- a/WheelWizard/WheelWizard.csproj
+++ b/WheelWizard/WheelWizard.csproj
@@ -1,111 +1,111 @@
-
-
-
- WheelWizard.Program
- WinExe
- net8.0
- WheelWizard
- enable
- true
-
- true
- $(NoWarn);AVLN3001
-
-
- 2.4.10
- This program will manage RetroRewind and mods :)
- GNU v3.0
- https://github.com/patchzyy/WheelWizard
- car-wheel.ico
-
-
-
- $(DefineConstants);WINDOWS
-
-
-
- $(DefineConstants);LINUX
-
-
-
- $(DefineConstants);MACOS
-
-
-
-
-
-
-
-
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
- PopupListButton.axaml
- Code
-
-
- EditorEmpty.axaml
- Code
-
-
- MemeNumberState.axaml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ WheelWizard.Program
+ WinExe
+ net8.0
+ WheelWizard
+ enable
+ true
+
+ true
+ $(NoWarn);AVLN3001
+
+
+ 2.4.11
+ This program will manage RetroRewind and mods :)
+ GNU v3.0
+ https://github.com/patchzyy/WheelWizard
+ car-wheel.ico
+
+
+
+ $(DefineConstants);WINDOWS
+
+
+
+ $(DefineConstants);LINUX
+
+
+
+ $(DefineConstants);MACOS
+
+
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+ PopupListButton.axaml
+ Code
+
+
+ EditorEmpty.axaml
+ Code
+
+
+ MemeNumberState.axaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+