aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava')
-rw-r--r--Ryujinx.Ava/Assets/Locales/en_US.json9
-rw-r--r--Ryujinx.Ava/Program.cs50
-rw-r--r--Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs5
-rw-r--r--Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml9
-rw-r--r--Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs28
5 files changed, 47 insertions, 54 deletions
diff --git a/Ryujinx.Ava/Assets/Locales/en_US.json b/Ryujinx.Ava/Assets/Locales/en_US.json
index 3d509675..9bc6b581 100644
--- a/Ryujinx.Ava/Assets/Locales/en_US.json
+++ b/Ryujinx.Ava/Assets/Locales/en_US.json
@@ -26,6 +26,9 @@
"MenuBarToolsInstallFirmware": "Install Firmware",
"MenuBarFileToolsInstallFirmwareFromFile": "Install a firmware from XCI or ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Install a firmware from a directory",
+ "MenuBarToolsManageFileTypes": "Manage file types",
+ "MenuBarToolsInstallFileTypes": "Install file types",
+ "MenuBarToolsUninstallFileTypes": "Uninstall file types",
"MenuBarHelp": "Help",
"MenuBarHelpCheckForUpdates": "Check for Updates",
"MenuBarHelpAbout": "About",
@@ -339,6 +342,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "No installed firmware was found but Ryujinx was able to install firmware {0} from the provided game.\\nThe emulator will now start.",
"DialogFirmwareNoFirmwareInstalledMessage": "No Firmware Installed",
"DialogFirmwareInstalledMessage": "Firmware {0} was installed",
+ "DialogInstallFileTypesSuccessMessage": "Successfully installed file types!",
+ "DialogInstallFileTypesErrorMessage": "Failed to install file types.",
+ "DialogUninstallFileTypesSuccessMessage": "Successfully uninstalled file types!",
+ "DialogUninstallFileTypesErrorMessage": "Failed to uninstall file types.",
"DialogOpenSettingsWindowLabel": "Open Settings Window",
"DialogControllerAppletTitle": "Controller Applet",
"DialogMessageDialogErrorExceptionMessage": "Error displaying Message Dialog: {0}",
@@ -619,4 +626,4 @@
"UserProfilesRecoverEmptyList": "No profiles to recover",
"UserEditorTitle" : "Edit User",
"UserEditorTitleCreate" : "Create User"
-} \ No newline at end of file
+}
diff --git a/Ryujinx.Ava/Program.cs b/Ryujinx.Ava/Program.cs
index e64b6921..7f35c62a 100644
--- a/Ryujinx.Ava/Program.cs
+++ b/Ryujinx.Ava/Program.cs
@@ -14,10 +14,8 @@ using Ryujinx.Ui.Common;
using Ryujinx.Ui.Common.Configuration;
using Ryujinx.Ui.Common.Helper;
using System;
-using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
-using System.Runtime.Versioning;
using System.Threading.Tasks;
namespace Ryujinx.Ava
@@ -35,48 +33,6 @@ namespace Ryujinx.Ava
private const uint MB_ICONWARNING = 0x30;
- [SupportedOSPlatform("linux")]
- static void RegisterMimeTypes()
- {
- if (ReleaseInformation.IsFlatHubBuild())
- {
- return;
- }
-
- string mimeDbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "share", "mime");
-
- if (!File.Exists(Path.Combine(mimeDbPath, "packages", "Ryujinx.xml")))
- {
- string mimeTypesFile = Path.Combine(ReleaseInformation.GetBaseApplicationDirectory(), "mime", "Ryujinx.xml");
- using Process mimeProcess = new();
-
- mimeProcess.StartInfo.FileName = "xdg-mime";
- mimeProcess.StartInfo.Arguments = $"install --novendor --mode user {mimeTypesFile}";
-
- mimeProcess.Start();
- mimeProcess.WaitForExit();
-
- if (mimeProcess.ExitCode != 0)
- {
- Logger.Error?.PrintMsg(LogClass.Application, $"Unable to install mime types. Make sure xdg-utils is installed. Process exited with code: {mimeProcess.ExitCode}");
- return;
- }
-
- using Process updateMimeProcess = new();
-
- updateMimeProcess.StartInfo.FileName = "update-mime-database";
- updateMimeProcess.StartInfo.Arguments = mimeDbPath;
-
- updateMimeProcess.Start();
- updateMimeProcess.WaitForExit();
-
- if (updateMimeProcess.ExitCode != 0)
- {
- Logger.Error?.PrintMsg(LogClass.Application, $"Could not update local mime database. Process exited with code: {updateMimeProcess.ExitCode}");
- }
- }
- }
-
public static void Main(string[] args)
{
Version = ReleaseInformation.GetVersion();
@@ -139,12 +95,6 @@ namespace Ryujinx.Ava
// Initialize the logger system.
LoggerModule.Initialize();
- // Register mime types on linux.
- if (OperatingSystem.IsLinux())
- {
- RegisterMimeTypes();
- }
-
// Initialize Discord integration.
DiscordIntegrationModule.Initialize();
diff --git a/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs b/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs
index 6fea1844..a4ccac2d 100644
--- a/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs
+++ b/Ryujinx.Ava/UI/ViewModels/MainWindowViewModel.cs
@@ -683,6 +683,11 @@ namespace Ryujinx.Ava.UI.ViewModels
get => ConsoleHelper.SetConsoleWindowStateSupported;
}
+ public bool ManageFileTypesVisible
+ {
+ get => FileAssociationHelper.IsTypeAssociationSupported;
+ }
+
public ObservableCollection<ApplicationData> Applications
{
get => _applications;
diff --git a/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml b/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml
index bd26561a..b1d768ea 100644
--- a/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml
+++ b/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml
@@ -77,8 +77,7 @@
</MenuItem.Icon>
</MenuItem>
<Separator />
- <MenuItem Name="ChangeLanguageMenuItem" Header="{locale:Locale MenuBarOptionsChangeLanguage}">
- </MenuItem>
+ <MenuItem Name="ChangeLanguageMenuItem" Header="{locale:Locale MenuBarOptionsChangeLanguage}" />
<Separator />
<MenuItem
Click="OpenSettings"
@@ -141,6 +140,10 @@
<MenuItem Command="{ReflectionBinding InstallFirmwareFromFile}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromFile}" />
<MenuItem Command="{ReflectionBinding InstallFirmwareFromFolder}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromDirectory}" />
</MenuItem>
+ <MenuItem Header="{locale:Locale MenuBarToolsManageFileTypes}" IsVisible="{Binding ManageFileTypesVisible}">
+ <MenuItem Header="{locale:Locale MenuBarToolsInstallFileTypes}" Click="InstallFileTypes_Click"/>
+ <MenuItem Header="{locale:Locale MenuBarToolsUninstallFileTypes}" Click="UninstallFileTypes_Click"/>
+ </MenuItem>
</MenuItem>
<MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarHelp}">
<MenuItem
@@ -157,4 +160,4 @@
</MenuItem>
</Menu>
</DockPanel>
-</UserControl> \ No newline at end of file
+</UserControl>
diff --git a/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs b/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs
index 172ab6fc..11ecd0fc 100644
--- a/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs
+++ b/Ryujinx.Ava/UI/Views/Main/MainMenuBarView.axaml.cs
@@ -3,6 +3,7 @@ using Avalonia.Controls;
using Avalonia.Interactivity;
using LibHac.FsSystem;
using LibHac.Ncm;
+using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows;
@@ -10,6 +11,7 @@ using Ryujinx.Common;
using Ryujinx.Common.Utilities;
using Ryujinx.HLE.HOS;
using Ryujinx.Modules;
+using Ryujinx.Ui.Common.Helper;
using System;
using System.Collections.Generic;
using System.IO;
@@ -163,6 +165,32 @@ namespace Ryujinx.Ava.UI.Views.Main
}
}
+ private async void InstallFileTypes_Click(object sender, RoutedEventArgs e)
+ {
+ if (FileAssociationHelper.Install())
+ {
+ await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogInstallFileTypesSuccessMessage],
+ string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], string.Empty, string.Empty);
+ }
+ else
+ {
+ await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogInstallFileTypesErrorMessage]);
+ }
+ }
+
+ private async void UninstallFileTypes_Click(object sender, RoutedEventArgs e)
+ {
+ if (FileAssociationHelper.Uninstall())
+ {
+ await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUninstallFileTypesSuccessMessage],
+ string.Empty, LocaleManager.Instance[LocaleKeys.InputDialogOk], string.Empty, string.Empty);
+ }
+ else
+ {
+ await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogUninstallFileTypesErrorMessage]);
+ }
+ }
+
public async void CheckForUpdates(object sender, RoutedEventArgs e)
{
if (Updater.CanUpdate(true))