| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using Gtk;
- using Ryujinx.HLE.FileSystem;
- using System;
- using System.Diagnostics;
- using System.IO;
- using System.Reflection;
- using GUI = Gtk.Builder.ObjectAttribute;
- namespace Ryujinx.Ui
- {
- public class GameTableContextMenu : Menu
- {
- private static ListStore _gameTableStore;
- private static TreeIter _rowIter;
- #pragma warning disable CS0649
- #pragma warning disable IDE0044
- [GUI] MenuItem _openSaveDir;
- #pragma warning restore CS0649
- #pragma warning restore IDE0044
- public GameTableContextMenu(ListStore gameTableStore, TreeIter rowIter) : this(new Builder("Ryujinx.Ui.GameTableContextMenu.glade"), gameTableStore, rowIter) { }
- private GameTableContextMenu(Builder builder, ListStore gameTableStore, TreeIter rowIter) : base(builder.GetObject("_contextMenu").Handle)
- {
- builder.Autoconnect(this);
- _openSaveDir.Activated += OpenSaveDir_Clicked;
- _gameTableStore = gameTableStore;
- _rowIter = rowIter;
- }
- //Events
- private void OpenSaveDir_Clicked(object sender, EventArgs args)
- {
- string titleName = _gameTableStore.GetValue(_rowIter, 2).ToString().Split("\n")[0];
- string titleId = _gameTableStore.GetValue(_rowIter, 2).ToString().Split("\n")[1].ToLower();
- string saveDir = System.IO.Path.Combine(new VirtualFileSystem().GetNandPath(), "user", "save", "0000000000000000", "00000000000000000000000000000001", titleId, "0");
- if (!Directory.Exists(saveDir))
- {
- MessageDialog messageDialog = new MessageDialog(null, DialogFlags.Modal, MessageType.Question, ButtonsType.YesNo, null)
- {
- Title = "Ryujinx",
- Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.Ui.assets.Icon.png"),
- Text = $"Could not find save directory for {titleName} [{titleId}]",
- SecondaryText = "Would you like to create the directory?",
- WindowPosition = WindowPosition.Center
- };
- if (messageDialog.Run() == (int)ResponseType.Yes)
- {
- Directory.CreateDirectory(saveDir);
- }
- else
- {
- messageDialog.Dispose();
- return;
- }
- messageDialog.Dispose();
- }
- Process.Start(new ProcessStartInfo()
- {
- FileName = saveDir,
- UseShellExecute = true,
- Verb = "open"
- });
- }
- }
- }
|