Add quick folder open menu item

Closes #1137
allows loading of tab separated value text file "savpaths.txt" which can
also be used to 'favorite' locations (ie, the program checks for
duplicate paths and only adds the first).
folder availability checked on form creation

shortcut: press ctrl-F on main window

Thanks @sora10pls !
This commit is contained in:
Kurt 2017-05-16 16:27:43 -07:00
parent f3ca370087
commit 1659405dc4
17 changed files with 489 additions and 285 deletions

View file

@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = Importiere Set aus Zwischenablage
Menu_ShowdownExportPKM = Exportiere Set in Zwischenablage Menu_ShowdownExportPKM = Exportiere Set in Zwischenablage
Menu_ShowdownExportParty = Exportiere Team in Zwischenablage Menu_ShowdownExportParty = Exportiere Team in Zwischenablage
Menu_ShowdownExportBattleBox = Exportiere Kampf-Box 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_Data = Daten
Menu_LoadBoxes = Lade Boxen Menu_LoadBoxes = Lade Boxen
Menu_DumpBoxes = Dumpe Boxen Menu_DumpBoxes = Dumpe Boxen
@ -40,9 +37,7 @@ Menu_Report = Box-Datenreport
Menu_Database = PKM Datenbank Menu_Database = PKM Datenbank
Menu_MGDatabase = Wunderkarten Datenbank Menu_MGDatabase = Wunderkarten Datenbank
Menu_BatchEditor = Batch Editor Menu_BatchEditor = Batch Editor
Menu_Other = Andere Menu_Folder = Öffne Ordner
Menu_OpenSDF = Öffne SaveDataFiler Ordner
Menu_OpenSDB = Öffne SaveDataBackup Ordner
-- --
Menu_Options = Optionen Menu_Options = Optionen
Menu_Language = Sprache Menu_Language = Sprache

View file

@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box 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_Data = Data
Menu_LoadBoxes = Load Boxes Menu_LoadBoxes = Load Boxes
Menu_DumpBoxes = Dump Boxes Menu_DumpBoxes = Dump Boxes
@ -40,9 +37,7 @@ Menu_Report = Box Data Report
Menu_Database = PKM Database Menu_Database = PKM Database
Menu_MGDatabase = Mystery Gift Database Menu_MGDatabase = Mystery Gift Database
Menu_BatchEditor = Batch Editor Menu_BatchEditor = Batch Editor
Menu_Other = Other Menu_Folder = Open Folder
Menu_OpenSDF = Open SaveDataFiler Folder
Menu_OpenSDB = Open SaveDataBackup Folder
-- --
Menu_Options = Options Menu_Options = Options
Menu_Language = Language Menu_Language = Language

View file

@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = Importar set desde el portapapeles
Menu_ShowdownExportPKM = Exportar set desde el portapapeles Menu_ShowdownExportPKM = Exportar set desde el portapapeles
Menu_ShowdownExportParty = Exportar equipo desde el portapapeles Menu_ShowdownExportParty = Exportar equipo desde el portapapeles
Menu_ShowdownExportBattleBox = Exportar caja de combate 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_Data = Data
Menu_LoadBoxes = Cargar Cajas Menu_LoadBoxes = Cargar Cajas
Menu_DumpBoxes = Exportar Cajas Menu_DumpBoxes = Exportar Cajas
@ -40,9 +37,7 @@ Menu_Report = Informe de la caja
Menu_Database = Base de datos de PKM Menu_Database = Base de datos de PKM
Menu_MGDatabase = Base de datos de regalo misterioso Menu_MGDatabase = Base de datos de regalo misterioso
Menu_BatchEditor = Editor por lotes Menu_BatchEditor = Editor por lotes
Menu_Other = Otro Menu_Folder = Abrir carpeta
Menu_OpenSDF = Abrir carpeta SaveDataFiler
Menu_OpenSDB = Abrir carpeta SaveDataBackup
-- --
Menu_Options = Opciones Menu_Options = Opciones
Menu_Language = Idioma Menu_Language = Idioma

View file

@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box 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_Data = Données
Menu_LoadBoxes = Charger Boîtes Menu_LoadBoxes = Charger Boîtes
Menu_DumpBoxes = Dumper Boîtes Menu_DumpBoxes = Dumper Boîtes
Menu_Report = Rapport de données Box Menu_Report = Rapport de données Box
Menu_Database = Base de données PKM Menu_Database = Base de données PKM
Menu_Other = Autre Menu_MGDatabase = Base de données de cadeaux de mystère
Menu_OpenSDF = Ouvrir le dossier SaveDataFiler Menu_BatchEditor = Éditeur en vrac
Menu_OpenSDB = Ouvrir le dossier SaveDataBackup Menu_Folder = Ouvrir le dossier
-- --
Menu_Options = Options Menu_Options = Options
Menu_Language = Langue Menu_Language = Langue

View file

@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box 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_Data = Data
Menu_LoadBoxes = Load Boxes Menu_LoadBoxes = Load Boxes
Menu_DumpBoxes = Dump Boxes Menu_DumpBoxes = Dump Boxes
Menu_Report = Box Data Report Menu_Report = Box Data Report
Menu_Database = PKM Database Menu_Database = PKM Database
Menu_Other = Other Menu_MGDatabase = Mystery Gift Database
Menu_OpenSDF = Open SaveDataFiler Folder Menu_BatchEditor = Batch Editor
Menu_OpenSDB = Open SaveDataBackup Folder Menu_Folder = Open Folder
-- --
Menu_Options = Options Menu_Options = Options
Menu_Language = Language Menu_Language = Language

View file

@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
Menu_CyberGadget = CyberGadget
Menu_OpenTemp = オープンTempフォルダ
Menu_OpenCache = オープンCacheフォルダ
Menu_Data = データ Menu_Data = データ
Menu_LoadBoxes = ロードボックス Menu_LoadBoxes = ロードボックス
Menu_DumpBoxes = ダンプボックス Menu_DumpBoxes = ダンプボックス
Menu_Report = ボックスデータレポート Menu_Report = ボックスデータレポート
Menu_Database = PKMデータベース Menu_Database = PKMデータベース
Menu_Other = その他 Menu_MGDatabase = 奇妙なカードデータベース
Menu_OpenSDF = オープンSaveDataFilerフォルダ Menu_BatchEditor = バルクエディタ
Menu_OpenSDB = オープンSaveDataBackupフォルダ Menu_Folder = オープンフォルダ
-- --
Menu_Options = 設定 Menu_Options = 設定
Menu_Language = 言語 Menu_Language = 言語

View file

@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = 클립보드에서 세트 가져오기
Menu_ShowdownExportPKM = 클립보드로 세트 내보내기 Menu_ShowdownExportPKM = 클립보드로 세트 내보내기
Menu_ShowdownExportParty = 클립보드로 파티 내보내기 Menu_ShowdownExportParty = 클립보드로 파티 내보내기
Menu_ShowdownExportBattleBox = 클립보드로 배틀 박스 내보내기 Menu_ShowdownExportBattleBox = 클립보드로 배틀 박스 내보내기
Menu_CyberGadget = CyberGadget
Menu_OpenTemp = 임시 폴더 열기
Menu_OpenCache = 캐시 폴더 열기
Menu_Data = 데이터 Menu_Data = 데이터
Menu_LoadBoxes = 박스 불러오기 Menu_LoadBoxes = 박스 불러오기
Menu_DumpBoxes = 박스 덤프 Menu_DumpBoxes = 박스 덤프
@ -40,9 +37,7 @@ Menu_Report = 박스 데이터 보고서
Menu_Database = 포켓몬 데이터베이스 Menu_Database = 포켓몬 데이터베이스
Menu_MGDatabase = 이상한 카드 데이터베이스 Menu_MGDatabase = 이상한 카드 데이터베이스
Menu_BatchEditor = 일괄 수정 Menu_BatchEditor = 일괄 수정
Menu_Other = 기타 Menu_Folder = 폴더 열기
Menu_OpenSDF = SaveDataFiler 폴더 열기
Menu_OpenSDB = SaveDataBackup 폴더 열기
-- --
Menu_Options = 옵션 Menu_Options = 옵션
Menu_Language = 언어 Menu_Language = 언어

View file

@ -30,17 +30,14 @@ Menu_ShowdownImportPKM = Import Set from Clipboard
Menu_ShowdownExportPKM = Export Set to Clipboard Menu_ShowdownExportPKM = Export Set to Clipboard
Menu_ShowdownExportParty = Export Party to Clipboard Menu_ShowdownExportParty = Export Party to Clipboard
Menu_ShowdownExportBattleBox = Export Battle Box 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_Data = Dados
Menu_LoadBoxes = Carregar Boxes Menu_LoadBoxes = Carregar Boxes
Menu_DumpBoxes = Despejar Boxes Menu_DumpBoxes = Despejar Boxes
Menu_Report = Relatório de Dados das Boxes Menu_Report = Relatório de Dados das Boxes
Menu_Database = PKM Database Menu_Database = PKM Database
Menu_Other = Outro Menu_MGDatabase = Mystery Gift Database
Menu_OpenSDF = Abrir pasta SaveDataFiler Menu_BatchEditor = Editor de lote
Menu_OpenSDB = Abrir pasta SaveDataBackup Menu_Folder = Abrir pasta
-- --
Menu_Options = Opções Menu_Options = Opções
Menu_Language = Idioma Menu_Language = Idioma

View file

@ -30,9 +30,6 @@ Menu_ShowdownImportPKM = 从剪贴板导入组合
Menu_ShowdownExportPKM = 导出组合到剪贴板 Menu_ShowdownExportPKM = 导出组合到剪贴板
Menu_ShowdownExportParty = 导出同行队伍到剪贴板 Menu_ShowdownExportParty = 导出同行队伍到剪贴板
Menu_ShowdownExportBattleBox = 导出战斗盒子到剪贴板 Menu_ShowdownExportBattleBox = 导出战斗盒子到剪贴板
Menu_CyberGadget = CyberGadget
Menu_OpenTemp = 打开临时文件夹(Temp)
Menu_OpenCache = 打开缓存文件夹(Cache)
Menu_Data = 数据 Menu_Data = 数据
Menu_LoadBoxes = 加载盒子信息 Menu_LoadBoxes = 加载盒子信息
Menu_DumpBoxes = 导出盒子信息 Menu_DumpBoxes = 导出盒子信息
@ -40,9 +37,7 @@ Menu_Report = 盒子数据报告
Menu_Database = PKM数据库 Menu_Database = PKM数据库
Menu_MGDatabase = 神秘礼物数据库 Menu_MGDatabase = 神秘礼物数据库
Menu_BatchEditor = 批量编辑器 Menu_BatchEditor = 批量编辑器
Menu_Other = 其他 Menu_Folder = 打开文件夹
Menu_OpenSDF = 打开SaveDataFiler文件夹
Menu_OpenSDB = 打开SaveDataBackup文件夹
-- --
Menu_Options = 设置 Menu_Options = 设置
Menu_Language = 语言 Menu_Language = 语言

View file

@ -300,9 +300,7 @@
this.Menu_ShowdownExportPKM = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ShowdownExportPKM = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_ShowdownExportParty = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ShowdownExportParty = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_ShowdownExportBattleBox = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ShowdownExportBattleBox = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_CyberGadget = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Folder = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_OpenTemp = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_OpenCache = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_Data = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Data = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_LoadBoxes = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_LoadBoxes = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_DumpBoxes = 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_Database = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_MGDatabase = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_MGDatabase = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_BatchEditor = 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_Options = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_Language = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Language = new System.Windows.Forms.ToolStripMenuItem();
this.CB_MainLanguage = new System.Windows.Forms.ToolStripComboBox(); this.CB_MainLanguage = new System.Windows.Forms.ToolStripComboBox();
@ -3794,9 +3789,8 @@
// //
this.Menu_Tools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.Menu_Tools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.Menu_Showdown, this.Menu_Showdown,
this.Menu_CyberGadget,
this.Menu_Data, this.Menu_Data,
this.Menu_Other}); this.Menu_Folder});
this.Menu_Tools.Name = "Menu_Tools"; this.Menu_Tools.Name = "Menu_Tools";
this.Menu_Tools.Size = new System.Drawing.Size(47, 20); this.Menu_Tools.Size = new System.Drawing.Size(47, 20);
this.Menu_Tools.Text = "Tools"; this.Menu_Tools.Text = "Tools";
@ -3810,7 +3804,7 @@
this.Menu_ShowdownExportBattleBox}); this.Menu_ShowdownExportBattleBox});
this.Menu_Showdown.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Showdown.Image"))); this.Menu_Showdown.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Showdown.Image")));
this.Menu_Showdown.Name = "Menu_Showdown"; 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"; this.Menu_Showdown.Text = "Showdown";
// //
// Menu_ShowdownImportPKM // Menu_ShowdownImportPKM
@ -3850,31 +3844,15 @@
this.Menu_ShowdownExportBattleBox.Text = "Export Battle Box to Clipboard"; this.Menu_ShowdownExportBattleBox.Text = "Export Battle Box to Clipboard";
this.Menu_ShowdownExportBattleBox.Click += new System.EventHandler(this.clickShowdownExportBattleBox); 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_Folder.Image = global::PKHeX.WinForms.Properties.Resources.folder;
this.Menu_OpenTemp, this.Menu_Folder.Name = "Menu_Folder";
this.Menu_OpenCache}); this.Menu_Folder.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
this.Menu_CyberGadget.Image = ((System.Drawing.Image)(resources.GetObject("Menu_CyberGadget.Image"))); this.Menu_Folder.ShowShortcutKeys = false;
this.Menu_CyberGadget.Name = "Menu_CyberGadget"; this.Menu_Folder.Size = new System.Drawing.Size(152, 22);
this.Menu_CyberGadget.Size = new System.Drawing.Size(143, 22); this.Menu_Folder.Text = "Open Folder";
this.Menu_CyberGadget.Text = "CyberGadget"; this.Menu_Folder.Click += new System.EventHandler(this.Menu_Folder_Click);
//
// 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);
// //
// Menu_Data // Menu_Data
// //
@ -3888,7 +3866,7 @@
this.Menu_BatchEditor}); this.Menu_BatchEditor});
this.Menu_Data.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Data.Image"))); this.Menu_Data.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Data.Image")));
this.Menu_Data.Name = "Menu_Data"; 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"; this.Menu_Data.Text = "Data";
// //
// Menu_LoadBoxes // Menu_LoadBoxes
@ -3955,32 +3933,6 @@
this.Menu_BatchEditor.Text = "Batch Editor"; this.Menu_BatchEditor.Text = "Batch Editor";
this.Menu_BatchEditor.Click += new System.EventHandler(this.manMenuBatchEditor); 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 // Menu_Options
// //
this.Menu_Options.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 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_ShowdownImportPKM;
private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportParty; private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportParty;
private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportBattleBox; private System.Windows.Forms.ToolStripMenuItem Menu_ShowdownExportBattleBox;
private System.Windows.Forms.ToolStripMenuItem Menu_CyberGadget; private System.Windows.Forms.ToolStripMenuItem Menu_Folder;
private System.Windows.Forms.ToolStripMenuItem Menu_OpenTemp;
private System.Windows.Forms.ToolStripMenuItem Menu_OpenCache;
private System.Windows.Forms.ToolStripMenuItem Menu_Data; private System.Windows.Forms.ToolStripMenuItem Menu_Data;
private System.Windows.Forms.ToolStripMenuItem Menu_LoadBoxes; private System.Windows.Forms.ToolStripMenuItem Menu_LoadBoxes;
private System.Windows.Forms.ToolStripMenuItem Menu_Report; private System.Windows.Forms.ToolStripMenuItem Menu_Report;
private System.Windows.Forms.ToolStripMenuItem Menu_Database; 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_SPE;
private System.Windows.Forms.MaskedTextBox Stat_SPD; private System.Windows.Forms.MaskedTextBox Stat_SPD;
private System.Windows.Forms.MaskedTextBox Stat_SPA; private System.Windows.Forms.MaskedTextBox Stat_SPA;

View file

@ -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 WorkingDirectory => WinFormsUtil.IsClickonceDeployed ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX") : Application.StartupPath;
public static string DatabasePath => Path.Combine(WorkingDirectory, "pkmdb"); public static string DatabasePath => Path.Combine(WorkingDirectory, "pkmdb");
public static string MGDatabasePath => Path.Combine(WorkingDirectory, "mgdb"); 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 static string TemplatePath => Path.Combine(WorkingDirectory, "template");
private const string ThreadPath = @"https://projectpokemon.org/PKHeX/"; 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"; 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 { } catch { }
} }
private void clickOpenTempFolder(object sender, EventArgs e) private void Menu_Folder_Click(object sender, EventArgs e) => new SAV_FolderList().ShowDialog();
{
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.");
}
// Main Menu Subfunctions // Main Menu Subfunctions
private void openQuick(string path, bool force = false) private void openQuick(string path, bool force = false)

View file

@ -120,41 +120,6 @@
<metadata name="tabMain.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="tabMain.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Label_PID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BTN_Shinytize.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_IsShiny.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="Label_IsShiny.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
</value>
</data>
<data name="Label_IsShiny.InitialImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="TB_PID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_Gender.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BTN_RerollPID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_Species.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Label_Species.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -167,6 +132,18 @@
<metadata name="Label_EXP.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Label_EXP.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="TB_EXP.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_CurLevel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TB_Level.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MT_Level.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_Nature.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Label_Nature.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -263,6 +240,50 @@
<metadata name="Label_EncryptionConstant.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Label_EncryptionConstant.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Label_PID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BTN_Shinytize.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_IsShiny.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_PID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BTN_Shinytize.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_IsShiny.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="Label_IsShiny.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
</value>
</data>
<data name="Label_IsShiny.InitialImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAHhJREFUKFNjQAf/BQQ6oEzc4L+QUOh/QcH///n5jaFCmAAoKfhPUPAuWKGg4BkM
xSCroJLYMbJT/gkIzMSmCCQOVYIAQIkzKIqAzoBKoQIk98EUvoNKIQDII2AFAgKrgGwlMA3iY3gIKAAK
GigXDIB8F3QxIgADAwC7NFU/mWb72QAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="TB_PID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_Gender.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="BTN_RerollPID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TB_PID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="TB_PID.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -287,33 +308,6 @@
<metadata name="TB_Nickname.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="TB_Nickname.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Label_EXP.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TB_EXP.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_CurLevel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TB_Level.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MT_Level.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TB_EXP.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_CurLevel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TB_Level.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="MT_Level.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label_Nature.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="Label_Nature.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -1671,32 +1665,6 @@
EwAACxMBAJqcGAAAAI5JREFUOE/tzTsKg0AUheHBDQhimcLOOrgxixS2KUUb1xIEQXApgmAhSRdSSIjo EwAACxMBAJqcGAAAAI5JREFUOE/tzTsKg0AUheHBDQhimcLOOrgxixS2KUUb1xIEQXApgmAhSRdSSIjo
f2UCgnmIjY0HPhju3DOjPsRCjicymJjFQ4hYK3DHGQ/IA+872TtCNZClG3qthItqMrtC9mqMAx+OPn9z f2UCgnmIjY0HPhju3DOjPsRCjicymJjFQ4hYK3DHGQ/IA+872TtCNZClG3qthItqMrtC9mqMAx+OPn9z
wAkvjIPVJQP2D3I/Ky3JXtLZoNThgmCBFC1UAmnLj/+wp6IB3W9Xq5yYVfMAAAAASUVORK5CYII= wAkvjIPVJQP2D3I/Ky3JXtLZoNThgmCBFC1UAmnLj/+wp6IB3W9Xq5yYVfMAAAAASUVORK5CYII=
</value>
</data>
<data name="Menu_CyberGadget.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EwAACxMBAJqcGAAAAQhJREFUOE+dkTtqAlEUQEdt0igpLNxDOheQwgUIVtmASxAEU4vuIlU24QL8gI2V
kDaNrZ0iGs8ZHBhe3ozogQPz3sz9zL1JjiZO8QdPuMcZdvEubdzhHxq4wu3trF9YxShWNviMI3zBjDdc
o0nGXsSwbT8wOMYr/uIRW16E+M+2na8cMkCL9NNTgAPzn8vooAkm6SnA6g6sjB6a4DM9BbgqXzqwIr7R
b+zkH+7Zl07bgYV84AU3WPEihns2idN2YFaybSsb7Lsh1jFKDd2zq/LjvFY22OclNrAQ9+yqnLYDsxPb
trLBJllgaZIiDMqSzG/nhzHIDrIkhTMpwyQGH/Ddi2ewMsFJcgW3PELpOCYNqwAAAABJRU5ErkJggg==
</value>
</data>
<data name="Menu_OpenTemp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
RK5CYII=
</value>
</data>
<data name="Menu_OpenCache.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
RK5CYII=
</value> </value>
</data> </data>
<data name="Menu_Data.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Menu_Data.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -1767,32 +1735,6 @@
xArS6O3GlyPatk8Xsf8dmpNkEw+InaIz+9wiO+YJ+whjK3g6s7atJ/vJ0SPCIZZWKKuHJCOooIv0Yu08 xArS6O3GlyPatk8Xsf8dmpNkEw+InaIz+9wiO+YJ+whjK3g6s7atJ/vJ0SPCIZZWKKuHJCOooIv0Yu08
umQ6v9r3SLOLU9ShLzKAnzxEFTWcoInC6J77BXRjS+UZc6Ot5/yNIfwBdF+Mwpmwi9MAAAAASUVORK5C umQ6v9r3SLOLU9ShLzKAnzxEFTWcoInC6J77BXRjS+UZc6Ot5/yNIfwBdF+Mwpmwi9MAAAAASUVORK5C
YII= YII=
</value>
</data>
<data name="Menu_Other.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EwAACxMBAJqcGAAAAQhJREFUOE+dkTtqAlEUQEdt0igpLNxDOheQwgUIVtmASxAEU4vuIlU24QL8gI2V
kDaNrZ0iGs8ZHBhe3ozogQPz3sz9zL1JjiZO8QdPuMcZdvEubdzhHxq4wu3trF9YxShWNviMI3zBjDdc
o0nGXsSwbT8wOMYr/uIRW16E+M+2na8cMkCL9NNTgAPzn8vooAkm6SnA6g6sjB6a4DM9BbgqXzqwIr7R
b+zkH+7Zl07bgYV84AU3WPEihns2idN2YFaybSsb7Lsh1jFKDd2zq/LjvFY22OclNrAQ9+yqnLYDsxPb
trLBJllgaZIiDMqSzG/nhzHIDrIkhTMpwyQGH/Ddi2ewMsFJcgW3PELpOCYNqwAAAABJRU5ErkJggg==
</value>
</data>
<data name="Menu_OpenSDF.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
RK5CYII=
</value>
</data>
<data name="Menu_OpenSDB.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EwAACxMBAJqcGAAAAFtJREFUOE+V0jsKgDAQRdHZhqXbtAqIK7TOQvyA3oBphif6Bk5zhyFNglmw40pW
DPicA/m4qygvJoyQh3+1B+TCIaNDRoeMDhkdMjpkdMSZgqN9wpixPcHBTZQbzSiwBf4Q1BwAAAAASUVO
RK5CYII=
</value> </value>
</data> </data>
<data name="Menu_Language.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Menu_Language.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -2650,6 +2592,9 @@
<metadata name="B_OpenMiscEditor.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="B_OpenMiscEditor.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="B_OpenFriendSafari.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dragout.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="dragout.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
@ -2676,9 +2621,6 @@
<metadata name="L_UpdateAvailable.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="L_UpdateAvailable.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="B_OpenFriendSafari.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>

View file

@ -467,6 +467,12 @@
<Compile Include="Subforms\SAV_Database.Designer.cs"> <Compile Include="Subforms\SAV_Database.Designer.cs">
<DependentUpon>SAV_Database.cs</DependentUpon> <DependentUpon>SAV_Database.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Subforms\SAV_FolderList.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Subforms\SAV_FolderList.Designer.cs">
<DependentUpon>SAV_FolderList.cs</DependentUpon>
</Compile>
<Compile Include="Subforms\SAV_MysteryGiftDB.cs"> <Compile Include="Subforms\SAV_MysteryGiftDB.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -627,6 +633,9 @@
<EmbeddedResource Include="Subforms\SAV_Database.resx"> <EmbeddedResource Include="Subforms\SAV_Database.resx">
<DependentUpon>SAV_Database.cs</DependentUpon> <DependentUpon>SAV_Database.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Subforms\SAV_FolderList.resx">
<DependentUpon>SAV_FolderList.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Subforms\SAV_MysteryGiftDB.resx"> <EmbeddedResource Include="Subforms\SAV_MysteryGiftDB.resx">
<DependentUpon>SAV_MysteryGiftDB.cs</DependentUpon> <DependentUpon>SAV_MysteryGiftDB.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>

View file

@ -0,0 +1,65 @@
namespace PKHeX.WinForms
{
partial class SAV_FolderList
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View file

@ -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<CustomFolderPath>
{
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<CustomFolderPath> getUserPaths()
{
const string loc = "savpaths.txt";
var list = new List<CustomFolderPath>();
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;
}
}
}

View file

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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//////
</value>
</data>
</root>

View file

@ -24,6 +24,23 @@ namespace PKHeX.WinForms
return null; return null;
} }
/// <summary>
/// Gets a list of 3DS save backup paths for the storage device.
/// </summary>
/// <param name="root">Root location of device</param>
/// <returns>List of possible 3DS save backup paths.</returns>
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"),
};
}
/// <summary> /// <summary>
/// Detects a save file. /// Detects a save file.
/// </summary> /// </summary>
@ -35,18 +52,8 @@ namespace PKHeX.WinForms
List<string> foldersToCheck = new List<string>(extra.Where(f => f?.Length > 0)); List<string> foldersToCheck = new List<string>(extra.Where(f => f?.Length > 0));
path = null; path = null;
// Homebrew/CFW if (path3DS != null) // check for Homebrew/CFW backups
if (path3DS != null) foldersToCheck.AddRange(get3DSBackupPaths(path3DS));
{
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"),
});
}
foreach (var p in foldersToCheck) foreach (var p in foldersToCheck)
{ {