From 8a6585aceb00a2644155d08ec6a422fe128eb987 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 13 Apr 2014 12:40:30 +0000 Subject: [PATCH] CD CDL - drag and drop, implement save menu item, prevent some more nags --- BizHawk.Client.EmuHawk/MainForm.Events.cs | 6 ++ .../tools/PCE/PCECDL.Designer.cs | 3 + BizHawk.Client.EmuHawk/tools/PCE/PCECDL.cs | 80 ++++++++++++++----- 3 files changed, 68 insertions(+), 21 deletions(-) diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index c478499acf..ae0ca84991 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -2165,6 +2165,12 @@ namespace BizHawk.Client.EmuHawk (GlobalWin.Tools.Get() as RamWatch).LoadWatchFile(new FileInfo(filePaths[0]), false); } + else if (ext.ToUpper() == ".CDL" && Global.Emulator is PCEngine) + { + GlobalWin.Tools.Load(); + (GlobalWin.Tools.Get() as PCECDL).LoadFile(filePaths[0]); + } + else if (MovieImport.IsValidMovieExtension(Path.GetExtension(filePaths[0]))) { //tries to open a legacy movie format as if it were a BKM, by importing it diff --git a/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.Designer.cs b/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.Designer.cs index 0404f2510c..8f8b05d0c3 100644 --- a/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.Designer.cs @@ -248,6 +248,7 @@ // // PCECDL // + this.AllowDrop = true; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 273); @@ -260,6 +261,8 @@ this.Name = "PCECDL"; this.Text = "Code Data Logger"; this.Load += new System.EventHandler(this.PCECDL_Load); + this.DragDrop += new System.Windows.Forms.DragEventHandler(this.PCECDL_DragDrop); + this.DragEnter += new System.Windows.Forms.DragEventHandler(this.PCECDL_DragEnter); this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); this.ResumeLayout(false); diff --git a/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.cs b/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.cs index 1b56781848..b4fb35e2d1 100644 --- a/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.cs +++ b/BizHawk.Client.EmuHawk/tools/PCE/PCECDL.cs @@ -14,11 +14,9 @@ namespace BizHawk.Client.EmuHawk { // TODO // Loading doesn't work - // Save - // Drag and drop cdl files - // Drag and drop cdl files onto Main window? private PCEngine _emu; private CodeDataLog _cdl; + private string _currentFileName = string.Empty; private int _defaultWidth; private int _defaultHeight; @@ -36,16 +34,6 @@ namespace BizHawk.Client.EmuHawk Restart(); } - private void PCECDL_Load(object sender, EventArgs e) - { - LoadConfigSettings(); - - if (Global.Config.RecentPceCdlFiles.AutoLoad) - { - LoadFileFromRecent(Global.Config.RecentPceCdlFiles.MostRecent); - } - } - public void UpdateValues() { UpdateDisplay(); @@ -114,7 +102,7 @@ namespace BizHawk.Client.EmuHawk get { return false; } } - private void LoadFileFromRecent(string path) + public void LoadFile(string path) { using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read)) { @@ -159,16 +147,23 @@ namespace BizHawk.Client.EmuHawk #region Events + #region File + private void FileSubMenu_DropDownOpened(object sender, EventArgs e) { - SaveAsMenuItem.Enabled = _cdl != null; + SaveMenuItem.Enabled = !string.IsNullOrWhiteSpace(_currentFileName); + SaveAsMenuItem.Enabled = + AppendMenuItem.Enabled = + ClearMenuItem.Enabled = + DisassembleMenuItem.Enabled = + _cdl != null; } private void RecentSubMenu_DropDownOpened(object sender, EventArgs e) { RecentSubMenu.DropDownItems.Clear(); RecentSubMenu.DropDownItems.AddRange( - ToolHelpers.GenerateRecentMenu(Global.Config.RecentPceCdlFiles, LoadFileFromRecent)); + ToolHelpers.GenerateRecentMenu(Global.Config.RecentPceCdlFiles, LoadFile)); RecentSubMenu.DropDownItems.Add( ToolHelpers.GenerateAutoLoadItem(Global.Config.RecentPceCdlFiles)); } @@ -189,7 +184,7 @@ namespace BizHawk.Client.EmuHawk var result = MessageBox.Show(this, "OK to load new CDL?", "Query", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { - var file = ToolHelpers.GetCdlFileFromUser(string.Empty /*TODO*/); + var file = ToolHelpers.GetCdlFileFromUser(_currentFileName); if (file != null) { using (var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read)) @@ -205,6 +200,7 @@ namespace BizHawk.Client.EmuHawk _emu.Cpu.CDL = _cdl; UpdateDisplay(); Global.Config.RecentPceCdlFiles.Add(file.FullName); + _currentFileName = file.FullName; } } } @@ -213,7 +209,13 @@ namespace BizHawk.Client.EmuHawk private void SaveMenuItem_Click(object sender, EventArgs e) { - // TODO + if (!string.IsNullOrWhiteSpace(_currentFileName)) + { + using (var fs = new FileStream(_currentFileName, FileMode.Create, FileAccess.Write)) + { + _cdl.Save(fs); + } + } } private void SaveAsMenuItem_Click(object sender, EventArgs e) @@ -224,13 +226,14 @@ namespace BizHawk.Client.EmuHawk } else { - var file = ToolHelpers.GetCdlSaveFileFromUser(string.Empty /* TODO */); + var file = ToolHelpers.GetCdlSaveFileFromUser(_currentFileName); if (file != null) { using (var fs = new FileStream(file.FullName, FileMode.Create, FileAccess.Write)) { _cdl.Save(fs); Global.Config.RecentPceCdlFiles.Add(file.FullName); + _currentFileName = file.FullName; } } } @@ -240,11 +243,11 @@ namespace BizHawk.Client.EmuHawk { if (_cdl == null) { - MessageBox.Show(this, "Cannot union with no CDL loaded!", "Alert"); + MessageBox.Show(this, "Cannot append with no CDL loaded!", "Alert"); } else { - var file = ToolHelpers.GetCdlFileFromUser(string.Empty /*TODO*/); + var file = ToolHelpers.GetCdlFileFromUser(_currentFileName); if (file != null) { using (var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read)) @@ -299,6 +302,10 @@ namespace BizHawk.Client.EmuHawk Close(); } + #endregion + + #region Options + private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e) { SaveWindowPositionMenuItem.Checked = Global.Config.PceCdlSettings.SaveWindowPosition; @@ -330,6 +337,21 @@ namespace BizHawk.Client.EmuHawk Global.Config.PceCdlSettings.FloatingWindow = false; } + #endregion + + #region Dialog Events + + private void PCECDL_Load(object sender, EventArgs e) + { + LoadConfigSettings(); + + if (Global.Config.RecentPceCdlFiles.AutoLoad) + { + LoadFile(Global.Config.RecentPceCdlFiles.MostRecent); + _currentFileName = Global.Config.RecentPceCdlFiles.MostRecent; + } + } + private void LoggingActiveCheckbox_CheckedChanged(object sender, EventArgs e) { if (LoggingActiveCheckbox.Checked && _cdl == null) @@ -341,6 +363,22 @@ namespace BizHawk.Client.EmuHawk _emu.Cpu.CDLLoggingActive = LoggingActiveCheckbox.Checked; } + private void PCECDL_DragEnter(object sender, DragEventArgs e) + { + e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None; + } + + private void PCECDL_DragDrop(object sender, DragEventArgs e) + { + var filePaths = (string[])e.Data.GetData(DataFormats.FileDrop); + if (Path.GetExtension(filePaths[0]) == ".cdl") + { + LoadFile(filePaths[0]); + } + } + + #endregion + #endregion } }