Isaac Marovitz преди 2 години
родител
ревизия
18909195d1

+ 4 - 0
src/Ryujinx.Ava/Assets/Locales/en_US.json

@@ -73,6 +73,10 @@
   "GameListContextMenuCreateShortcut": "Create Application Shortcut",
   "GameListContextMenuCreateShortcutToolTip": "Create a Desktop Shortcut that launches the selected Application",
   "GameListContextMenuCreateShortcutToolTipMacOS": "Create a shortcut in macOS's Applications folder that launches the selected Application",
+  "GameListContextMenuOpenModsDirectory": "Open Mods Directory",
+  "GameListContextMenuOpenModsDirectoryToolTip": "Opens the directory which contains Application's Mods",
+  "GameListContextMenuOpenSdModsDirectory": "Open Atmosphere Mods Directory",
+  "GameListContextMenuOpenSdModsDirectoryToolTip": "Opens the alternative SD card Atmosphere directory which contains Application's Mods. Useful for mods that are packaged for real hardware.",
   "StatusBarGamesLoaded": "{0}/{1} Games Loaded",
   "StatusBarSystemVersion": "System Version: {0}",
   "LinuxVmMaxMapCountDialogTitle": "Low limit for memory mappings detected",

+ 9 - 0
src/Ryujinx.Ava/UI/Controls/ApplicationContextMenu.axaml

@@ -51,6 +51,15 @@
         Header="{locale:Locale GameListContextMenuManageMod}"
         ToolTip.Tip="{locale:Locale GameListContextMenuManageModToolTip}" />
     <Separator />
+    <MenuItem
+        Click="OpenModsDirectory_Click"
+        Header="{locale:Locale GameListContextMenuOpenModsDirectory}"
+        ToolTip.Tip="{locale:Locale GameListContextMenuOpenModsDirectoryToolTip}" />
+    <MenuItem
+        Click="OpenSdModsDirectory_Click"
+        Header="{locale:Locale GameListContextMenuOpenSdModsDirectory}"
+        ToolTip.Tip="{locale:Locale GameListContextMenuOpenSdModsDirectoryToolTip}" />
+    <Separator />
     <MenuItem Header="{locale:Locale GameListContextMenuCacheManagement}">
         <MenuItem
             Click="PurgePtcCache_Click"

+ 26 - 0
src/Ryujinx.Ava/UI/Controls/ApplicationContextMenu.axaml.cs

@@ -126,6 +126,32 @@ namespace Ryujinx.Ava.UI.Controls
             }
         }
 
+        public void OpenModsDirectory_Click(object sender, RoutedEventArgs args)
+        {
+            var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
+
+            if (viewModel?.SelectedApplication != null)
+            {
+                string modsBasePath = ModLoader.GetModsBasePath();
+                string titleModsPath = ModLoader.GetApplicationDir(modsBasePath, viewModel.SelectedApplication.TitleId);
+
+                OpenHelper.OpenFolder(titleModsPath);
+            }
+        }
+
+        public void OpenSdModsDirectory_Click(object sender, RoutedEventArgs args)
+        {
+            var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
+
+            if (viewModel?.SelectedApplication != null)
+            {
+                string sdModsBasePath = ModLoader.GetSdModsBasePath();
+                string titleModsPath = ModLoader.GetApplicationDir(sdModsBasePath, viewModel.SelectedApplication.TitleId);
+
+                OpenHelper.OpenFolder(titleModsPath);
+            }
+        }
+
         public async void OpenModManager_Click(object sender, RoutedEventArgs args)
         {
             var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;