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) {