diff --git a/PKHeX.Core/Resources/text/de/lang_de.txt b/PKHeX.Core/Resources/text/de/lang_de.txt
index 50112ad61..aed85c448 100644
--- a/PKHeX.Core/Resources/text/de/lang_de.txt
+++ b/PKHeX.Core/Resources/text/de/lang_de.txt
@@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = Importiere Set aus Zwischenablage
Menu_ShowdownExportPKM = Exportiere Set in Zwischenablage
Menu_ShowdownExportParty = Exportiere Team in Zwischenablage
Menu_ShowdownExportBattleBox = Exportiere Kampf-Box in Zwischenablage
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = Öffne Temp Ordner
-Menu_OpenCache = Öffne Cache Ordner
Menu_Data = Daten
Menu_LoadBoxes = Lade Boxen
Menu_DumpBoxes = Dumpe Boxen
@@ -40,9 +37,7 @@ Menu_Report = Box-Datenreport
Menu_Database = PKM Datenbank
Menu_MGDatabase = Wunderkarten Datenbank
Menu_BatchEditor = Batch Editor
-Menu_Other = Andere
-Menu_OpenSDF = Öffne SaveDataFiler Ordner
-Menu_OpenSDB = Öffne SaveDataBackup Ordner
+Menu_Folder = Öffne Ordner
--
Menu_Options = Optionen
Menu_Language = Sprache
diff --git a/PKHeX.Core/Resources/text/en/lang_en.txt b/PKHeX.Core/Resources/text/en/lang_en.txt
index c80dc2aaf..8ca050fef 100644
--- a/PKHeX.Core/Resources/text/en/lang_en.txt
+++ b/PKHeX.Core/Resources/text/en/lang_en.txt
@@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = Open Temp Folder
-Menu_OpenCache = Open Cache Folder
Menu_Data = Data
Menu_LoadBoxes = Load Boxes
Menu_DumpBoxes = Dump Boxes
@@ -40,9 +37,7 @@ Menu_Report = Box Data Report
Menu_Database = PKM Database
Menu_MGDatabase = Mystery Gift Database
Menu_BatchEditor = Batch Editor
-Menu_Other = Other
-Menu_OpenSDF = Open SaveDataFiler Folder
-Menu_OpenSDB = Open SaveDataBackup Folder
+Menu_Folder = Open Folder
--
Menu_Options = Options
Menu_Language = Language
diff --git a/PKHeX.Core/Resources/text/es/lang_es.txt b/PKHeX.Core/Resources/text/es/lang_es.txt
index 383e1736a..a6c06473d 100644
--- a/PKHeX.Core/Resources/text/es/lang_es.txt
+++ b/PKHeX.Core/Resources/text/es/lang_es.txt
@@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = Importar set desde el portapapeles
Menu_ShowdownExportPKM = Exportar set desde el portapapeles
Menu_ShowdownExportParty = Exportar equipo desde el portapapeles
Menu_ShowdownExportBattleBox = Exportar caja de combate desde el portapapeles
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = Abrir carpeta Temp
-Menu_OpenCache = Abrir carpeta Cache
Menu_Data = Data
Menu_LoadBoxes = Cargar Cajas
Menu_DumpBoxes = Exportar Cajas
@@ -40,9 +37,7 @@ Menu_Report = Informe de la caja
Menu_Database = Base de datos de PKM
Menu_MGDatabase = Base de datos de regalo misterioso
Menu_BatchEditor = Editor por lotes
-Menu_Other = Otro
-Menu_OpenSDF = Abrir carpeta SaveDataFiler
-Menu_OpenSDB = Abrir carpeta SaveDataBackup
+Menu_Folder = Abrir carpeta
--
Menu_Options = Opciones
Menu_Language = Idioma
diff --git a/PKHeX.Core/Resources/text/fr/lang_fr.txt b/PKHeX.Core/Resources/text/fr/lang_fr.txt
index 4564328d0..7ab1c2483 100644
--- a/PKHeX.Core/Resources/text/fr/lang_fr.txt
+++ b/PKHeX.Core/Resources/text/fr/lang_fr.txt
@@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = Ouvrir le dossier Temp
-Menu_OpenCache = Ouvrir le dossier Cache
Menu_Data = Données
Menu_LoadBoxes = Charger Boîtes
Menu_DumpBoxes = Dumper Boîtes
Menu_Report = Rapport de données Box
Menu_Database = Base de données PKM
-Menu_Other = Autre
-Menu_OpenSDF = Ouvrir le dossier SaveDataFiler
-Menu_OpenSDB = Ouvrir le dossier SaveDataBackup
+Menu_MGDatabase = Base de données de cadeaux de mystère
+Menu_BatchEditor = Éditeur en vrac
+Menu_Folder = Ouvrir le dossier
--
Menu_Options = Options
Menu_Language = Langue
diff --git a/PKHeX.Core/Resources/text/it/lang_it.txt b/PKHeX.Core/Resources/text/it/lang_it.txt
index f48dad58c..1d7335acd 100644
--- a/PKHeX.Core/Resources/text/it/lang_it.txt
+++ b/PKHeX.Core/Resources/text/it/lang_it.txt
@@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = Open Temp Folder
-Menu_OpenCache = Open Cache Folder
Menu_Data = Data
Menu_LoadBoxes = Load Boxes
Menu_DumpBoxes = Dump Boxes
Menu_Report = Box Data Report
Menu_Database = PKM Database
-Menu_Other = Other
-Menu_OpenSDF = Open SaveDataFiler Folder
-Menu_OpenSDB = Open SaveDataBackup Folder
+Menu_MGDatabase = Mystery Gift Database
+Menu_BatchEditor = Batch Editor
+Menu_Folder = Open Folder
--
Menu_Options = Options
Menu_Language = Language
diff --git a/PKHeX.Core/Resources/text/ja/lang_ja.txt b/PKHeX.Core/Resources/text/ja/lang_ja.txt
index cb2c545f6..1aecc1fc6 100644
--- a/PKHeX.Core/Resources/text/ja/lang_ja.txt
+++ b/PKHeX.Core/Resources/text/ja/lang_ja.txt
@@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = オープンTempフォルダ
-Menu_OpenCache = オープンCacheフォルダ
Menu_Data = データ
Menu_LoadBoxes = ロードボックス
Menu_DumpBoxes = ダンプボックス
Menu_Report = ボックスデータレポート
Menu_Database = PKMデータベース
-Menu_Other = その他
-Menu_OpenSDF = オープンSaveDataFilerフォルダ
-Menu_OpenSDB = オープンSaveDataBackupフォルダ
+Menu_MGDatabase = 奇妙なカードデータベース
+Menu_BatchEditor = バルクエディタ
+Menu_Folder = オープンフォルダ
--
Menu_Options = 設定
Menu_Language = 言語
diff --git a/PKHeX.Core/Resources/text/ko/lang_ko.txt b/PKHeX.Core/Resources/text/ko/lang_ko.txt
index c02f0dca6..e2f9282cd 100644
--- a/PKHeX.Core/Resources/text/ko/lang_ko.txt
+++ b/PKHeX.Core/Resources/text/ko/lang_ko.txt
@@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = 클립보드에서 세트 가져오기
Menu_ShowdownExportPKM = 클립보드로 세트 내보내기
Menu_ShowdownExportParty = 클립보드로 파티 내보내기
Menu_ShowdownExportBattleBox = 클립보드로 배틀 박스 내보내기
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = 임시 폴더 열기
-Menu_OpenCache = 캐시 폴더 열기
Menu_Data = 데이터
Menu_LoadBoxes = 박스 불러오기
Menu_DumpBoxes = 박스 덤프
@@ -40,9 +37,7 @@ Menu_Report = 박스 데이터 보고서
Menu_Database = 포켓몬 데이터베이스
Menu_MGDatabase = 이상한 카드 데이터베이스
Menu_BatchEditor = 일괄 수정
-Menu_Other = 기타
-Menu_OpenSDF = SaveDataFiler 폴더 열기
-Menu_OpenSDB = SaveDataBackup 폴더 열기
+Menu_Folder = 폴더 열기
--
Menu_Options = 옵션
Menu_Language = 언어
diff --git a/PKHeX.Core/Resources/text/other/lang_pt.txt b/PKHeX.Core/Resources/text/other/lang_pt.txt
index b6855cac9..65d883dfd 100644
--- a/PKHeX.Core/Resources/text/other/lang_pt.txt
+++ b/PKHeX.Core/Resources/text/other/lang_pt.txt
@@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = Abrir pasta Temp
-Menu_OpenCache = Abrir pasta Cache
Menu_Data = Dados
Menu_LoadBoxes = Carregar Boxes
Menu_DumpBoxes = Despejar Boxes
Menu_Report = Relatório de Dados das Boxes
Menu_Database = PKM Database
-Menu_Other = Outro
-Menu_OpenSDF = Abrir pasta SaveDataFiler
-Menu_OpenSDB = Abrir pasta SaveDataBackup
+Menu_MGDatabase = Mystery Gift Database
+Menu_BatchEditor = Editor de lote
+Menu_Folder = Abrir pasta
--
Menu_Options = Opções
Menu_Language = Idioma
diff --git a/PKHeX.Core/Resources/text/zh/lang_zh.txt b/PKHeX.Core/Resources/text/zh/lang_zh.txt
index efd40caf2..4715147ef 100644
--- a/PKHeX.Core/Resources/text/zh/lang_zh.txt
+++ b/PKHeX.Core/Resources/text/zh/lang_zh.txt
@@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = 从剪贴板导入组合
Menu_ShowdownExportPKM = 导出组合到剪贴板
Menu_ShowdownExportParty = 导出同行队伍到剪贴板
Menu_ShowdownExportBattleBox = 导出战斗盒子到剪贴板
-Menu_CyberGadget = CyberGadget
-Menu_OpenTemp = 打开临时文件夹(Temp)
-Menu_OpenCache = 打开缓存文件夹(Cache)
Menu_Data = 数据
Menu_LoadBoxes = 加载盒子信息
Menu_DumpBoxes = 导出盒子信息
@@ -40,9 +37,7 @@ Menu_Report = 盒子数据报告
Menu_Database = PKM数据库
Menu_MGDatabase = 神秘礼物数据库
Menu_BatchEditor = 批量编辑器
-Menu_Other = 其他
-Menu_OpenSDF = 打开SaveDataFiler文件夹
-Menu_OpenSDB = 打开SaveDataBackup文件夹
+Menu_Folder = 打开文件夹
--
Menu_Options = 设置
Menu_Language = 语言
diff --git a/PKHeX.WinForms/MainWindow/Main.Designer.cs b/PKHeX.WinForms/MainWindow/Main.Designer.cs
index 83c97b510..8d76d16dd 100644
--- a/PKHeX.WinForms/MainWindow/Main.Designer.cs
+++ b/PKHeX.WinForms/MainWindow/Main.Designer.cs
@@ -300,9 +300,7 @@
this.Menu_ShowdownExportPKM = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_ShowdownExportParty = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_ShowdownExportBattleBox = new System.Windows.Forms.ToolStripMenuItem();
- this.Menu_CyberGadget = new System.Windows.Forms.ToolStripMenuItem();
- this.Menu_OpenTemp = new System.Windows.Forms.ToolStripMenuItem();
- this.Menu_OpenCache = new System.Windows.Forms.ToolStripMenuItem();
+ this.Menu_Folder = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_Data = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_LoadBoxes = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_DumpBoxes = new System.Windows.Forms.ToolStripMenuItem();
@@ -311,9 +309,6 @@
this.Menu_Database = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_MGDatabase = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_BatchEditor = new System.Windows.Forms.ToolStripMenuItem();
- this.Menu_Other = new System.Windows.Forms.ToolStripMenuItem();
- this.Menu_OpenSDF = new System.Windows.Forms.ToolStripMenuItem();
- this.Menu_OpenSDB = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_Options = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_Language = new System.Windows.Forms.ToolStripMenuItem();
this.CB_MainLanguage = new System.Windows.Forms.ToolStripComboBox();
@@ -3794,9 +3789,8 @@
//
this.Menu_Tools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.Menu_Showdown,
- this.Menu_CyberGadget,
this.Menu_Data,
- this.Menu_Other});
+ this.Menu_Folder});
this.Menu_Tools.Name = "Menu_Tools";
this.Menu_Tools.Size = new System.Drawing.Size(47, 20);
this.Menu_Tools.Text = "Tools";
@@ -3810,7 +3804,7 @@
this.Menu_ShowdownExportBattleBox});
this.Menu_Showdown.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Showdown.Image")));
this.Menu_Showdown.Name = "Menu_Showdown";
- this.Menu_Showdown.Size = new System.Drawing.Size(143, 22);
+ this.Menu_Showdown.Size = new System.Drawing.Size(152, 22);
this.Menu_Showdown.Text = "Showdown";
//
// Menu_ShowdownImportPKM
@@ -3850,31 +3844,15 @@
this.Menu_ShowdownExportBattleBox.Text = "Export Battle Box to Clipboard";
this.Menu_ShowdownExportBattleBox.Click += new System.EventHandler(this.clickShowdownExportBattleBox);
//
- // Menu_CyberGadget
+ // Menu_Folder
//
- this.Menu_CyberGadget.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.Menu_OpenTemp,
- this.Menu_OpenCache});
- this.Menu_CyberGadget.Image = ((System.Drawing.Image)(resources.GetObject("Menu_CyberGadget.Image")));
- this.Menu_CyberGadget.Name = "Menu_CyberGadget";
- this.Menu_CyberGadget.Size = new System.Drawing.Size(143, 22);
- this.Menu_CyberGadget.Text = "CyberGadget";
- //
- // Menu_OpenTemp
- //
- this.Menu_OpenTemp.Image = ((System.Drawing.Image)(resources.GetObject("Menu_OpenTemp.Image")));
- this.Menu_OpenTemp.Name = "Menu_OpenTemp";
- this.Menu_OpenTemp.Size = new System.Drawing.Size(175, 22);
- this.Menu_OpenTemp.Text = "Open Temp Folder";
- this.Menu_OpenTemp.Click += new System.EventHandler(this.clickOpenTempFolder);
- //
- // Menu_OpenCache
- //
- this.Menu_OpenCache.Image = ((System.Drawing.Image)(resources.GetObject("Menu_OpenCache.Image")));
- this.Menu_OpenCache.Name = "Menu_OpenCache";
- this.Menu_OpenCache.Size = new System.Drawing.Size(175, 22);
- this.Menu_OpenCache.Text = "Open Cache Folder";
- this.Menu_OpenCache.Click += new System.EventHandler(this.clickOpenCacheFolder);
+ this.Menu_Folder.Image = global::PKHeX.WinForms.Properties.Resources.folder;
+ this.Menu_Folder.Name = "Menu_Folder";
+ this.Menu_Folder.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
+ this.Menu_Folder.ShowShortcutKeys = false;
+ this.Menu_Folder.Size = new System.Drawing.Size(152, 22);
+ this.Menu_Folder.Text = "Open Folder";
+ this.Menu_Folder.Click += new System.EventHandler(this.Menu_Folder_Click);
//
// Menu_Data
//
@@ -3888,7 +3866,7 @@
this.Menu_BatchEditor});
this.Menu_Data.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Data.Image")));
this.Menu_Data.Name = "Menu_Data";
- this.Menu_Data.Size = new System.Drawing.Size(143, 22);
+ this.Menu_Data.Size = new System.Drawing.Size(152, 22);
this.Menu_Data.Text = "Data";
//
// Menu_LoadBoxes
@@ -3955,32 +3933,6 @@
this.Menu_BatchEditor.Text = "Batch Editor";
this.Menu_BatchEditor.Click += new System.EventHandler(this.manMenuBatchEditor);
//
- // Menu_Other
- //
- this.Menu_Other.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.Menu_OpenSDF,
- this.Menu_OpenSDB});
- this.Menu_Other.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Other.Image")));
- this.Menu_Other.Name = "Menu_Other";
- this.Menu_Other.Size = new System.Drawing.Size(143, 22);
- this.Menu_Other.Text = "Other";
- //
- // Menu_OpenSDF
- //
- this.Menu_OpenSDF.Image = ((System.Drawing.Image)(resources.GetObject("Menu_OpenSDF.Image")));
- this.Menu_OpenSDF.Name = "Menu_OpenSDF";
- this.Menu_OpenSDF.Size = new System.Drawing.Size(229, 22);
- this.Menu_OpenSDF.Text = "Open SaveDataFiler Folder";
- this.Menu_OpenSDF.Click += new System.EventHandler(this.clickOpenSDFFolder);
- //
- // Menu_OpenSDB
- //
- this.Menu_OpenSDB.Image = ((System.Drawing.Image)(resources.GetObject("Menu_OpenSDB.Image")));
- this.Menu_OpenSDB.Name = "Menu_OpenSDB";
- this.Menu_OpenSDB.Size = new System.Drawing.Size(229, 22);
- this.Menu_OpenSDB.Text = "Open SaveDataBackup Folder";
- this.Menu_OpenSDB.Click += new System.EventHandler(this.clickOpenSDBFolder);
- //
// Menu_Options
//
this.Menu_Options.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -6419,16 +6371,11 @@
private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownImportPKM;
private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportParty;
private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportBattleBox;
- private System.Windows.Forms.ToolStripMenuItem Menu_CyberGadget;
- private System.Windows.Forms.ToolStripMenuItem Menu_OpenTemp;
- private System.Windows.Forms.ToolStripMenuItem Menu_OpenCache;
+ private System.Windows.Forms.ToolStripMenuItem Menu_Folder;
private System.Windows.Forms.ToolStripMenuItem Menu_Data;
private System.Windows.Forms.ToolStripMenuItem Menu_LoadBoxes;
private System.Windows.Forms.ToolStripMenuItem Menu_Report;
private System.Windows.Forms.ToolStripMenuItem Menu_Database;
- private System.Windows.Forms.ToolStripMenuItem Menu_Other;
- private System.Windows.Forms.ToolStripMenuItem Menu_OpenSDF;
- private System.Windows.Forms.ToolStripMenuItem Menu_OpenSDB;
private System.Windows.Forms.MaskedTextBox Stat_SPE;
private System.Windows.Forms.MaskedTextBox Stat_SPD;
private System.Windows.Forms.MaskedTextBox Stat_SPA;
diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs
index 4b9ab2d14..5ee887666 100644
--- a/PKHeX.WinForms/MainWindow/Main.cs
+++ b/PKHeX.WinForms/MainWindow/Main.cs
@@ -269,7 +269,7 @@ namespace PKHeX.WinForms
public static string WorkingDirectory => WinFormsUtil.IsClickonceDeployed ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX") : Application.StartupPath;
public static string DatabasePath => Path.Combine(WorkingDirectory, "pkmdb");
public static string MGDatabasePath => Path.Combine(WorkingDirectory, "mgdb");
- private static string BackupPath => Path.Combine(WorkingDirectory, "bak");
+ public static string BackupPath => Path.Combine(WorkingDirectory, "bak");
private static string TemplatePath => Path.Combine(WorkingDirectory, "template");
private const string ThreadPath = @"https://projectpokemon.org/PKHeX/";
private const string VersionPath = @"https://raw.githubusercontent.com/kwsch/PKHeX/master/PKHeX.WinForms/Resources/text/version.txt";
@@ -651,41 +651,7 @@ namespace PKHeX.WinForms
}
catch { }
}
- private void clickOpenTempFolder(object sender, EventArgs e)
- {
- string path = CyberGadgetUtil.GetTempFolder();
- if (Directory.Exists(Path.Combine(path, "root")))
- Process.Start("explorer.exe", Path.Combine(path, "root"));
- else if (Directory.Exists(path))
- Process.Start("explorer.exe", path);
- else
- WinFormsUtil.Alert("Can't find the temporary file.", "Make sure the Cyber Gadget software is paused.");
- }
- private void clickOpenCacheFolder(object sender, EventArgs e)
- {
- string path = CyberGadgetUtil.GetCacheFolder();
- if (Directory.Exists(path))
- Process.Start("explorer.exe", path);
- else
- WinFormsUtil.Alert("Can't find the cache folder.");
- }
- private void clickOpenSDFFolder(object sender, EventArgs e)
- {
- string path = Path.GetPathRoot(PathUtilWindows.get3DSLocation());
- if (path != null && Directory.Exists(path = Path.Combine(path, "filer", "UserSaveData")))
- Process.Start("explorer.exe", path);
- else
- WinFormsUtil.Alert("Can't find the SaveDataFiler folder.");
- }
- private void clickOpenSDBFolder(object sender, EventArgs e)
- {
- string path3DS = Path.GetPathRoot(PathUtilWindows.get3DSLocation());
- string path;
- if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "SaveDataBackup")))
- Process.Start("explorer.exe", path);
- else
- WinFormsUtil.Alert("Can't find the SaveDataBackup folder.");
- }
+ private void Menu_Folder_Click(object sender, EventArgs e) => new SAV_FolderList().ShowDialog();
// Main Menu Subfunctions
private void openQuick(string path, bool force = false)
diff --git a/PKHeX.WinForms/MainWindow/Main.resx b/PKHeX.WinForms/MainWindow/Main.resx
index e9118b8cf..d4600093f 100644
--- a/PKHeX.WinForms/MainWindow/Main.resx
+++ b/PKHeX.WinForms/MainWindow/Main.resx
@@ -120,41 +120,6 @@
True
-
- True
-
-
- True
-
-
- True
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
- xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
- GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
- xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
- GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
-
-
-
- True
-
-
- True
-
-
- True
-
True
@@ -167,6 +132,18 @@
True
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
True
@@ -263,6 +240,50 @@
True
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
+ xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
+ GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
+ xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
+ GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
+
+
+
+ True
+
+
+ True
+
+
+ True
+
True
@@ -287,33 +308,6 @@
True
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
-
- True
-
True
@@ -1671,32 +1665,6 @@
EwAACxMBAJqcGAAAAI5JREFUOE/tzTsKg0AUheHBDQhimcLOOrgxixS2KUUb1xIEQXApgmAhSRdSSIjo
f2UCgnmIjY0HPhju3DOjPsRCjicymJjFQ4hYK3DHGQ/IA+872TtCNZClG3qthItqMrtC9mqMAx+OPn9z
wAkvjIPVJQP2D3I/Ky3JXtLZoNThgmCBFC1UAmnLj/+wp6IB3W9Xq5yYVfMAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
- EwAACxMBAJqcGAAAAQhJREFUOE+dkTtqAlEUQEdt0igpLNxDOheQwgUIVtmASxAEU4vuIlU24QL8gI2V
- kDaNrZ0iGs8ZHBhe3ozogQPz3sz9zL1JjiZO8QdPuMcZdvEubdzhHxq4wu3trF9YxShWNviMI3zBjDdc
- o0nGXsSwbT8wOMYr/uIRW16E+M+2na8cMkCL9NNTgAPzn8vooAkm6SnA6g6sjB6a4DM9BbgqXzqwIr7R
- b+zkH+7Zl07bgYV84AU3WPEihns2idN2YFaybSsb7Lsh1jFKDd2zq/LjvFY22OclNrAQ9+yqnLYDsxPb
- trLBJllgaZIiDMqSzG/nhzHIDrIkhTMpwyQGH/Ddi2ewMsFJcgW3PELpOCYNqwAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
- EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
- DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
- RK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
- EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
- DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
- RK5CYII=
@@ -1767,32 +1735,6 @@
xArS6O3GlyPatk8Xsf8dmpNkEw+InaIz+9wiO+YJ+whjK3g6s7atJ/vJ0SPCIZZWKKuHJCOooIv0Yu08
umQ6v9r3SLOLU9ShLzKAnzxEFTWcoInC6J77BXRjS+UZc6Ot5/yNIfwBdF+Mwpmwi9MAAAAASUVORK5C
YII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
- EwAACxMBAJqcGAAAAQhJREFUOE+dkTtqAlEUQEdt0igpLNxDOheQwgUIVtmASxAEU4vuIlU24QL8gI2V
- kDaNrZ0iGs8ZHBhe3ozogQPz3sz9zL1JjiZO8QdPuMcZdvEubdzhHxq4wu3trF9YxShWNviMI3zBjDdc
- o0nGXsSwbT8wOMYr/uIRW16E+M+2na8cMkCL9NNTgAPzn8vooAkm6SnA6g6sjB6a4DM9BbgqXzqwIr7R
- b+zkH+7Zl07bgYV84AU3WPEihns2idN2YFaybSsb7Lsh1jFKDd2zq/LjvFY22OclNrAQ9+yqnLYDsxPb
- trLBJllgaZIiDMqSzG/nhzHIDrIkhTMpwyQGH/Ddi2ewMsFJcgW3PELpOCYNqwAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
- EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
- DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
- RK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
- EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
- DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
- RK5CYII=
@@ -2650,6 +2592,9 @@
True
+
+ True
+
True
@@ -2676,9 +2621,6 @@
True
-
- True
-
True
diff --git a/PKHeX.WinForms/PKHeX.WinForms.csproj b/PKHeX.WinForms/PKHeX.WinForms.csproj
index e47f353c0..14b6d97b0 100644
--- a/PKHeX.WinForms/PKHeX.WinForms.csproj
+++ b/PKHeX.WinForms/PKHeX.WinForms.csproj
@@ -467,6 +467,12 @@
SAV_Database.cs
+
+ Form
+
+
+ SAV_FolderList.cs
+
Form
@@ -627,6 +633,9 @@
SAV_Database.cs
+
+ SAV_FolderList.cs
+
SAV_MysteryGiftDB.cs
diff --git a/PKHeX.WinForms/Subforms/SAV_FolderList.Designer.cs b/PKHeX.WinForms/Subforms/SAV_FolderList.Designer.cs
new file mode 100644
index 000000000..bef8235d1
--- /dev/null
+++ b/PKHeX.WinForms/Subforms/SAV_FolderList.Designer.cs
@@ -0,0 +1,65 @@
+namespace PKHeX.WinForms
+{
+ partial class SAV_FolderList
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SAV_FolderList));
+ this.FLP_Buttons = new System.Windows.Forms.FlowLayoutPanel();
+ this.SuspendLayout();
+ //
+ // FLP_Buttons
+ //
+ this.FLP_Buttons.AutoScroll = true;
+ this.FLP_Buttons.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.FLP_Buttons.Location = new System.Drawing.Point(0, 0);
+ this.FLP_Buttons.Name = "FLP_Buttons";
+ this.FLP_Buttons.Size = new System.Drawing.Size(304, 161);
+ this.FLP_Buttons.TabIndex = 0;
+ //
+ // SAV_FolderList
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(304, 161);
+ this.Controls.Add(this.FLP_Buttons);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "SAV_FolderList";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Folder List";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.FlowLayoutPanel FLP_Buttons;
+ }
+}
\ No newline at end of file
diff --git a/PKHeX.WinForms/Subforms/SAV_FolderList.cs b/PKHeX.WinForms/Subforms/SAV_FolderList.cs
new file mode 100644
index 000000000..14fee016f
--- /dev/null
+++ b/PKHeX.WinForms/Subforms/SAV_FolderList.cs
@@ -0,0 +1,89 @@
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace PKHeX.WinForms
+{
+ public partial class SAV_FolderList : Form
+ {
+ public SAV_FolderList()
+ {
+ InitializeComponent();
+
+ // Preprogrammed folders
+ var path3DS = Path.GetPathRoot(PathUtilWindows.get3DSLocation() ?? "");
+ var locs = new List
+ {
+ new CustomFolderPath {Path = Main.BackupPath, DisplayText = "PKHeX Backups"}
+ };
+ locs.AddRange(getUserPaths());
+ foreach (var z in PathUtilWindows.get3DSBackupPaths(path3DS))
+ {
+ var di = new DirectoryInfo(z);
+ var root = di.Root.Name;
+ var folder = di.Parent.Name;
+ if (root == folder)
+ folder = di.Name;
+ locs.Add(new CustomFolderPath {Path = z, DisplayText = folder});
+ }
+ locs.Add(new CustomFolderPath {Path = CyberGadgetUtil.GetCacheFolder(), DisplayText = "CGSE Cache"});
+ locs.Add(new CustomFolderPath {Path = CyberGadgetUtil.GetTempFolder(), DisplayText = "CGSE Temp"});
+
+ foreach (var loc in locs.GroupBy(z => z.Path))
+ addButton(loc.First().DisplayText, loc.First().Path);
+
+ WinFormsUtil.TranslateInterface(this, Main.curlanguage);
+ }
+
+ private void addButton(string name, string path)
+ {
+ var button = new Button
+ {
+ Size = new Size { Height = 30, Width = 130 },
+ Text = name,
+ Name = "B_" + name,
+ Enabled = new DirectoryInfo(path).Exists,
+ };
+ button.Click += (s, e) =>
+ {
+ if (Directory.Exists(path))
+ Process.Start("explorer.exe", path);
+ else
+ WinFormsUtil.Alert("Can't find folder:", path);
+ };
+ FLP_Buttons.Controls.Add(button);
+ }
+
+ private static List getUserPaths()
+ {
+ const string loc = "savpaths.txt";
+ var list = new List();
+
+ if (!File.Exists(loc))
+ return list;
+
+ try
+ {
+ string[] lines = File.ReadAllLines(loc);
+ return (from line in lines
+ select line.Split('\t') into split
+ where split.Length == 2
+ select new CustomFolderPath { DisplayText = split[0], Path = split[1] })
+ .ToList();
+ }
+ catch
+ {
+ return list;
+ }
+ }
+
+ public struct CustomFolderPath
+ {
+ public string Path;
+ public string DisplayText;
+ }
+ }
+}
diff --git a/PKHeX.WinForms/Subforms/SAV_FolderList.resx b/PKHeX.WinForms/Subforms/SAV_FolderList.resx
new file mode 100644
index 000000000..603f660be
--- /dev/null
+++ b/PKHeX.WinForms/Subforms/SAV_FolderList.resx
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE
+ AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq
+ KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+
+ vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li
+ 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg
+ 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly
+ 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz
+ 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v//
+ //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P
+ Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA
+ Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK
+ k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF
+ Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P
+ aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N
+ pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT
+ vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV
+ yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ
+ yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq
+ rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
+ AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY
+ GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e
+ HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq
+ quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq
+ quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY
+ 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY
+ 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra
+ 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
+ 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna
+ 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
+ 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ
+ WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li
+ 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA
+ AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk
+ 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb
+ 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl
+ 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh
+ 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm
+ 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk
+ 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn
+ 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn
+ 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn
+ 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq
+ 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn
+ 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA
+ AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl
+ 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR
+ 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA
+ AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk
+ 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG
+ RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn
+ 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC
+ LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC
+ K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ
+ rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK
+ s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL
+ p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC
+ Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK
+ ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE
+ UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA
+ AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA
+ AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER
+ w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL
+ pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER
+ wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P
+ tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT
+ wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER
+ vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV
+ wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV
+ wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV
+ xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW
+ yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV
+ x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
+ zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl
+ eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX
+ zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA
+ AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ
+ zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws
+ p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb
+ ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA
+ AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
+ AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB//////
+
+
+
\ No newline at end of file
diff --git a/PKHeX.WinForms/Util/PathUtilWindows.cs b/PKHeX.WinForms/Util/PathUtilWindows.cs
index a9c0ec6d9..ef549eabd 100644
--- a/PKHeX.WinForms/Util/PathUtilWindows.cs
+++ b/PKHeX.WinForms/Util/PathUtilWindows.cs
@@ -24,6 +24,23 @@ namespace PKHeX.WinForms
return null;
}
+ ///
+ /// Gets a list of 3DS save backup paths for the storage device.
+ ///
+ /// Root location of device
+ /// List of possible 3DS save backup paths.
+ public static string[] get3DSBackupPaths(string root)
+ {
+ return new[]
+ {
+ Path.Combine(root, "saveDataBackup"),
+ Path.Combine(root, "filer", "UserSaveData"),
+ Path.Combine(root, "JKSV", "Saves"),
+ Path.Combine(root, "TWLSaveTool"),
+ Path.Combine(root, "fbi", "save"),
+ };
+ }
+
///
/// Detects a save file.
///
@@ -35,18 +52,8 @@ namespace PKHeX.WinForms
List foldersToCheck = new List(extra.Where(f => f?.Length > 0));
path = null;
- // Homebrew/CFW
- if (path3DS != null)
- {
- foldersToCheck.AddRange(new[]
- {
- Path.Combine(path3DS, "saveDataBackup"),
- Path.Combine(path3DS, "filer", "UserSaveData"),
- Path.Combine(path3DS, "JKSV", "Saves"),
- Path.Combine(path3DS, "TWLSaveTool"),
- Path.Combine(path3DS, "fbi", "save"),
- });
- }
+ if (path3DS != null) // check for Homebrew/CFW backups
+ foldersToCheck.AddRange(get3DSBackupPaths(path3DS));
foreach (var p in foldersToCheck)
{