From 7edd746f68a5f56996106302528d7c93be6ae92c Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 23 Aug 2015 12:34:13 -0400 Subject: [PATCH] Hex Editor - when saving domains to file, account for roms in archives --- .../tools/HexEditor/HexEditor.cs | 86 +++++++++++++++---- 1 file changed, 67 insertions(+), 19 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs index 31720abe60..f1d92b7419 100644 --- a/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs +++ b/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs @@ -397,22 +397,6 @@ namespace BizHawk.Client.EmuHawk return (char)keycode; } - private static string GetSaveFileFromUser() - { - var sfd = new SaveFileDialog - { - Filter = "Text (*.txt)|*.txt|All Files|*.*", - RestoreDirectory = true - }; - - sfd.FileName = PathManager.FilesystemSafeName(Global.Game); - sfd.InitialDirectory = Path.GetDirectoryName(PathManager.MakeAbsolutePath(Global.Config.RecentRoms.MostRecent, null)); - - var result = sfd.ShowHawkDialog(); - - return result == DialogResult.OK ? sfd.FileName : string.Empty; - } - private static bool IsHexKeyCode(char key) { if (key >= '0' && key <= '9') // 0-9 @@ -806,7 +790,7 @@ namespace BizHawk.Client.EmuHawk { if (_domain.Name == "File on Disk") { - var extension = Path.GetExtension(GlobalWin.MainForm.CurrentlyOpenRom); + var extension = Path.GetExtension(RomName); return "Binary (*" + extension + ")|*" + extension + "|All Files|*.*"; } @@ -814,18 +798,82 @@ namespace BizHawk.Client.EmuHawk return "Binary (*.bin)|*.bin|All Files|*.*"; } + + private string RomDirectory + { + get + { + string path = Global.Config.RecentRoms.MostRecent; + + if (string.IsNullOrWhiteSpace(path)) + { + return path; + } + + if (path.Contains("|")) + { + path = path.Split('|').First(); + } + + return Path.GetDirectoryName(path); + } + } + + private string RomName + { + get + { + string path = Global.Config.RecentRoms.MostRecent; + + if (string.IsNullOrWhiteSpace(path)) + { + return path; + } + + if (path.Contains("|")) + { + path = path.Split('|').Last(); + } + + return Path.GetFileName(path); + } + } + private string GetBinarySaveFileFromUser() { var sfd = new SaveFileDialog { Filter = GetSaveFileFilter(), RestoreDirectory = true, - InitialDirectory = Path.GetDirectoryName(PathManager.MakeAbsolutePath(Global.Config.RecentRoms.MostRecent, null)) + InitialDirectory = RomDirectory }; if (_domain.Name == "File on Disk") { - sfd.FileName = Path.GetFileName(Global.Config.RecentRoms.MostRecent); + sfd.FileName = RomName; + } + else + { + sfd.FileName = PathManager.FilesystemSafeName(Global.Game); + } + + var result = sfd.ShowHawkDialog(); + + return result == DialogResult.OK ? sfd.FileName : string.Empty; + } + + private string GetSaveFileFromUser() + { + var sfd = new SaveFileDialog + { + Filter = "Text (*.txt)|*.txt|All Files|*.*", + RestoreDirectory = true, + InitialDirectory = RomDirectory + }; + + if (_domain.Name == "File on Disk") + { + sfd.FileName = Path.GetFileNameWithoutExtension(RomName) + ".txt"; } else {