diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs index b3ceaa0d1..91aa4026f 100644 --- a/PKHeX.WinForms/MainWindow/Main.cs +++ b/PKHeX.WinForms/MainWindow/Main.cs @@ -129,6 +129,9 @@ private void FormLoadInitialSettings(string[] args, out bool showChangelog, out } FormLoadPlugins(); + var exts = Path.Combine(WorkingDirectory, "savexts.txt"); + if (File.Exists(exts)) + WinFormsUtil.AddSaveFileExtensions(File.ReadLines(exts)); PKME_Tabs.InitializeFields(); PKME_Tabs.TemplateFields(LoadTemplate(C_SAV.SAV)); diff --git a/PKHeX.WinForms/Util/WinFormsUtil.cs b/PKHeX.WinForms/Util/WinFormsUtil.cs index a5f3a9e04..a9f3da5f1 100644 --- a/PKHeX.WinForms/Util/WinFormsUtil.cs +++ b/PKHeX.WinForms/Util/WinFormsUtil.cs @@ -112,6 +112,20 @@ public static IEnumerable GetAllControlsOfType(Control control, Type ty public static bool IsClickonceDeployed => false; #endif + public static void AddSaveFileExtensions(IEnumerable exts) => CustomSaveExtensions.AddRange(exts); + private static readonly List CustomSaveExtensions = new List + { + // THESE ARE SAVE FILE EXTENSION TYPES. SAVE STATE (RAM SNAPSHOT) EXTENSIONS DO NOT GO HERE. + "sav", // standard + "dat", // VC data + "gci", // Dolphin GameCubeImage + "dsv", // DeSmuME + "srm", // RetroArch save files + "fla", // flashcard + "SaveRAM", // BizHawk + }; + private static string ExtraSaveExtensions => ";" + string.Join(";", CustomSaveExtensions.Select(z => $"*.{z}")); + /// /// Opens a dialog to open a , file, or any other supported file. /// @@ -124,10 +138,9 @@ public static bool OpenSAVPKMDialog(IEnumerable Extensions, out string p OpenFileDialog ofd = new OpenFileDialog { Filter = "All Files|*.*" + - $"|Supported Files|main;*.sav;*.dat;*.gci;*.bin;{supported};*.bak" + - "|3DS Main Files|main" + - "|Save Files|*.sav;*.dat;*.gci" + - "|Decrypted PKM File|" + supported + + $"|Supported Files (*.*)|main;*.bin;{supported};*.bak" + ExtraSaveExtensions + + "|Save Files (*.sav)|main" + ExtraSaveExtensions + + "|Decrypted PKM File (*.pkm)|" + supported + "|Binary File|*.bin" + "|Backup File|*.bak" }; @@ -211,6 +224,7 @@ public static bool SaveSAVDialog(SaveFile SAV, int CurrentBox = 0) { Filter = SAV.Filter, FileName = SAV.FileName, + FilterIndex = 1000, // default to last, All Files RestoreDirectory = true }; if (Directory.Exists(SAV.FilePath))