From c71aaf4e4a4cea6010c76657c8b4348f87c267cc Mon Sep 17 00:00:00 2001 From: adelikat Date: Tue, 21 Oct 2014 13:12:12 +0000 Subject: [PATCH] Tastudio - support drag n drop of tasproj files onto the Tastudio dialog --- .../tools/TAStudio/TAStudio.Designer.cs | 3 ++ .../tools/TAStudio/TAStudio.MenuItems.cs | 16 +------- .../tools/TAStudio/TAStudio.cs | 40 +++++++++++++++++++ 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs index e42b7497ff..408f48eb2b 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.Designer.cs @@ -972,6 +972,7 @@ namespace BizHawk.Client.EmuHawk // // TAStudio // + this.AllowDrop = true; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(506, 519); @@ -988,6 +989,8 @@ namespace BizHawk.Client.EmuHawk this.Text = "TAStudio"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Tastudio_Closing); this.Load += new System.EventHandler(this.Tastudio_Load); + this.DragDrop += new System.Windows.Forms.DragEventHandler(this.TAStudio_DragDrop); + this.DragEnter += new System.Windows.Forms.DragEventHandler(this.TAStudio_DragEnter); this.TASMenu.ResumeLayout(false); this.TASMenu.PerformLayout(); this.TasStatusStrip.ResumeLayout(false); diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index 13c465dd2d..08bc6f2ddb 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -59,21 +59,7 @@ namespace BizHawk.Client.EmuHawk var file = ToolHelpers.GetTasProjFileFromUser(filename); if (file != null) { - CurrentTasMovie.Filename = file.FullName; - CurrentTasMovie.Load(); - Global.Config.RecentTas.Add(CurrentTasMovie.Filename); - - if (CurrentTasMovie.InputLogLength > 0) // TODO: this is probably reoccuring logic, break off into a function - { - CurrentTasMovie.SwitchToPlay(); - } - else - { - CurrentTasMovie.SwitchToRecord(); - } - - RefreshDialog(); - MessageStatusLabel.Text = Path.GetFileName(CurrentTasMovie.Filename) + " loaded."; + LoadFile(file); } } } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index c7000f437a..14b3768d79 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -473,6 +473,25 @@ namespace BizHawk.Client.EmuHawk } } + private void LoadFile(FileInfo file) + { + CurrentTasMovie.Filename = file.FullName; + CurrentTasMovie.Load(); + Global.Config.RecentTas.Add(CurrentTasMovie.Filename); + + if (CurrentTasMovie.InputLogLength > 0) // TODO: this is probably reoccuring logic, break off into a function + { + CurrentTasMovie.SwitchToPlay(); + } + else + { + CurrentTasMovie.SwitchToRecord(); + } + + RefreshDialog(); + MessageStatusLabel.Text = Path.GetFileName(CurrentTasMovie.Filename) + " loaded."; + } + #region Dialog Events private void Tastudio_Load(object sender, EventArgs e) @@ -587,6 +606,27 @@ namespace BizHawk.Client.EmuHawk RemoveMarkersContextMenuItem.Enabled = CurrentTasMovie.Markers.Any(m => TasView.SelectedRows.Contains(m.Frame)); // Disable the option to remove markers if no markers are selected (FCEUX does this). } + private void TAStudio_DragEnter(object sender, DragEventArgs e) + { + e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None; + } + + private void TAStudio_DragDrop(object sender, DragEventArgs e) + { + var filePaths = (string[])e.Data.GetData(DataFormats.FileDrop); + if (Path.GetExtension(filePaths[0]) == "." + TasMovie.Extension) + { + var file = new FileInfo(filePaths[0]); + if (file != null) + { + if (AskSaveChanges()) + { + LoadFile(file); + } + } + } + } + #endregion } }