gui: Replace FileChooserDialog by FileChooserNative (#2633)

We currently use the FileChooser from GTK, which is a bit mess. Instead of it we could use the native FileChooser from all specifics OS. This is what this PR attempt to fix.

It could be nice to get a test under linux since I've only tested it under Windows without any issues.

Fixes #2584
This commit is contained in:
Ac_K 2021-09-14 23:52:08 +02:00 committed by GitHub
parent a9343c9364
commit 3f2486342b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 66 additions and 38 deletions

View file

@ -1201,15 +1201,20 @@ namespace Ryujinx.Ui
private void Load_Application_File(object sender, EventArgs args)
{
using (FileChooserDialog fileChooser = new FileChooserDialog("Choose the file to open", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept))
using (FileChooserNative fileChooser = new FileChooserNative("Choose the file to open", this, FileChooserAction.Open, "Open", "Cancel"))
{
fileChooser.Filter = new FileFilter();
fileChooser.Filter.AddPattern("*.nsp");
fileChooser.Filter.AddPattern("*.pfs0");
fileChooser.Filter.AddPattern("*.xci");
fileChooser.Filter.AddPattern("*.nca");
fileChooser.Filter.AddPattern("*.nro");
fileChooser.Filter.AddPattern("*.nso");
FileFilter filter = new FileFilter()
{
Name = "Switch Executables"
};
filter.AddPattern("*.xci");
filter.AddPattern("*.nsp");
filter.AddPattern("*.pfs0");
filter.AddPattern("*.nca");
filter.AddPattern("*.nro");
filter.AddPattern("*.nso");
fileChooser.AddFilter(filter);
if (fileChooser.Run() == (int)ResponseType.Accept)
{
@ -1220,7 +1225,7 @@ namespace Ryujinx.Ui
private void Load_Application_Folder(object sender, EventArgs args)
{
using (FileChooserDialog fileChooser = new FileChooserDialog("Choose the folder to open", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept))
using (FileChooserNative fileChooser = new FileChooserNative("Choose the folder to open", this, FileChooserAction.SelectFolder, "Open", "Cancel"))
{
if (fileChooser.Run() == (int)ResponseType.Accept)
{
@ -1318,23 +1323,28 @@ namespace Ryujinx.Ui
private void Installer_File_Pressed(object o, EventArgs args)
{
FileChooserDialog fileChooser = new FileChooserDialog("Choose the firmware file to open", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept);
FileChooserNative fileChooser = new FileChooserNative("Choose the firmware file to open", this, FileChooserAction.Open, "Open", "Cancel");
fileChooser.Filter = new FileFilter();
fileChooser.Filter.AddPattern("*.zip");
fileChooser.Filter.AddPattern("*.xci");
FileFilter filter = new FileFilter
{
Name = "Switch Firmware Files"
};
filter.AddPattern("*.zip");
filter.AddPattern("*.xci");
fileChooser.AddFilter(filter);
HandleInstallerDialog(fileChooser);
}
private void Installer_Directory_Pressed(object o, EventArgs args)
{
FileChooserDialog directoryChooser = new FileChooserDialog("Choose the firmware directory to open", this, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept);
FileChooserNative directoryChooser = new FileChooserNative("Choose the firmware directory to open", this, FileChooserAction.SelectFolder, "Open", "Cancel");
HandleInstallerDialog(directoryChooser);
}
private void HandleInstallerDialog(FileChooserDialog fileChooser)
private void HandleInstallerDialog(FileChooserNative fileChooser)
{
if (fileChooser.Run() == (int)ResponseType.Accept)
{