diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
index 53f3210357..a589af03f5 100644
--- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
+++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
@@ -495,6 +495,9 @@
QuickProgressPopup.cs
+
+ Component
+
Component
diff --git a/BizHawk.Client.EmuHawk/CustomControls/RepeatButton.cs b/BizHawk.Client.EmuHawk/CustomControls/RepeatButton.cs
new file mode 100644
index 0000000000..91a03a8b4c
--- /dev/null
+++ b/BizHawk.Client.EmuHawk/CustomControls/RepeatButton.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Data;
+using System.Windows.Forms;
+
+namespace BizHawk.Client.EmuHawk
+{
+ // http://www.codeproject.com/Articles/2130/NET-port-of-Joe-s-AutoRepeat-Button-class
+ public class RepeatButton : Button
+ {
+ private Timer m_timer;
+ private bool down = false;
+ private bool once = false;
+ private int m_initdelay = 1000;
+ private int m_repdelay = 400;
+
+ public RepeatButton()
+ {
+ this.MouseUp +=
+ new MouseEventHandler(RepeatButton_MouseUp);
+ this.MouseDown +=
+ new MouseEventHandler(RepeatButton_MouseDown);
+
+ m_timer = new Timer();
+ m_timer.Tick += new EventHandler(timerproc);
+ m_timer.Enabled = false;
+ }
+
+ private void timerproc(object o1, EventArgs e1)
+ {
+ m_timer.Interval = m_repdelay;
+ if (down)
+ {
+ once = true;
+ this.PerformClick();
+ }
+
+ }
+
+ protected override void OnClick(EventArgs e)
+ {
+ if (!once || down)
+ base.OnClick(e);
+ }
+
+
+
+ private void RepeatButton_MouseDown(object sender,
+ System.Windows.Forms.MouseEventArgs e)
+ {
+ m_timer.Interval = m_initdelay;
+ m_timer.Enabled = true;
+ down = true;
+ }
+
+ private void RepeatButton_MouseUp(object sender,
+ System.Windows.Forms.MouseEventArgs e)
+ {
+ m_timer.Enabled = false;
+ down = false;
+ }
+
+ public int InitialDelay
+ {
+ get
+ {
+ return m_initdelay;
+ }
+ set
+ {
+ m_initdelay = value;
+ if (m_initdelay < 10)
+ m_initdelay = 10;
+ }
+ }
+
+ public int RepeatDelay
+ {
+ get
+ {
+ return m_repdelay;
+ }
+ set
+ {
+ m_repdelay = value;
+ if (m_repdelay < 10)
+ m_repdelay = 10;
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.Designer.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.Designer.cs
index 20bd79fbb6..d64348af48 100644
--- a/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.Designer.cs
+++ b/BizHawk.Client.EmuHawk/tools/TAStudio/PlaybackBox.Designer.cs
@@ -33,10 +33,10 @@
this.TurboSeekCheckbox = new System.Windows.Forms.CheckBox();
this.FollowCursorCheckbox = new System.Windows.Forms.CheckBox();
this.NextMarkerButton = new System.Windows.Forms.Button();
- this.FrameAdvanceButton = new System.Windows.Forms.Button();
this.PauseButton = new System.Windows.Forms.Button();
- this.RewindButton = new System.Windows.Forms.Button();
this.PreviousMarkerButton = new System.Windows.Forms.Button();
+ this.FrameAdvanceButton = new BizHawk.Client.EmuHawk.RepeatButton();
+ this.RewindButton = new BizHawk.Client.EmuHawk.RepeatButton();
this.PlaybackGroupBox.SuspendLayout();
this.SuspendLayout();
//
@@ -103,16 +103,6 @@
this.NextMarkerButton.UseVisualStyleBackColor = true;
this.NextMarkerButton.Click += new System.EventHandler(this.NextMarkerButton_Click);
//
- // FrameAdvanceButton
- //
- this.FrameAdvanceButton.Location = new System.Drawing.Point(117, 19);
- this.FrameAdvanceButton.Name = "FrameAdvanceButton";
- this.FrameAdvanceButton.Size = new System.Drawing.Size(38, 23);
- this.FrameAdvanceButton.TabIndex = 3;
- this.FrameAdvanceButton.Text = ">";
- this.FrameAdvanceButton.UseVisualStyleBackColor = true;
- this.FrameAdvanceButton.Click += new System.EventHandler(this.FrameAdvanceButton_Click);
- //
// PauseButton
//
this.PauseButton.Location = new System.Drawing.Point(80, 19);
@@ -123,16 +113,6 @@
this.PauseButton.UseVisualStyleBackColor = true;
this.PauseButton.Click += new System.EventHandler(this.PauseButton_Click);
//
- // RewindButton
- //
- this.RewindButton.Location = new System.Drawing.Point(43, 19);
- this.RewindButton.Name = "RewindButton";
- this.RewindButton.Size = new System.Drawing.Size(38, 23);
- this.RewindButton.TabIndex = 1;
- this.RewindButton.Text = "<";
- this.RewindButton.UseVisualStyleBackColor = true;
- this.RewindButton.Click += new System.EventHandler(this.RewindButton_Click);
- //
// PreviousMarkerButton
//
this.PreviousMarkerButton.Location = new System.Drawing.Point(6, 19);
@@ -143,6 +123,30 @@
this.PreviousMarkerButton.UseVisualStyleBackColor = true;
this.PreviousMarkerButton.Click += new System.EventHandler(this.PreviousMarkerButton_Click);
//
+ // FrameAdvanceButton
+ //
+ this.FrameAdvanceButton.InitialDelay = 500;
+ this.FrameAdvanceButton.Location = new System.Drawing.Point(117, 19);
+ this.FrameAdvanceButton.Name = "FrameAdvanceButton";
+ this.FrameAdvanceButton.RepeatDelay = 50;
+ this.FrameAdvanceButton.Size = new System.Drawing.Size(38, 23);
+ this.FrameAdvanceButton.TabIndex = 3;
+ this.FrameAdvanceButton.Text = ">";
+ this.FrameAdvanceButton.UseVisualStyleBackColor = true;
+ this.FrameAdvanceButton.Click += new System.EventHandler(this.FrameAdvanceButton_Click);
+ //
+ // RewindButton
+ //
+ this.RewindButton.InitialDelay = 1000;
+ this.RewindButton.Location = new System.Drawing.Point(43, 19);
+ this.RewindButton.Name = "RewindButton";
+ this.RewindButton.RepeatDelay = 100;
+ this.RewindButton.Size = new System.Drawing.Size(38, 23);
+ this.RewindButton.TabIndex = 1;
+ this.RewindButton.Text = "<";
+ this.RewindButton.UseVisualStyleBackColor = true;
+ this.RewindButton.Click += new System.EventHandler(this.RewindButton_Click);
+ //
// PlaybackBox
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
@@ -159,9 +163,9 @@
private System.Windows.Forms.GroupBox PlaybackGroupBox;
private System.Windows.Forms.Button NextMarkerButton;
- private System.Windows.Forms.Button FrameAdvanceButton;
+ private RepeatButton FrameAdvanceButton;
private System.Windows.Forms.Button PauseButton;
- private System.Windows.Forms.Button RewindButton;
+ private RepeatButton RewindButton;
private System.Windows.Forms.Button PreviousMarkerButton;
private System.Windows.Forms.CheckBox AutoRestoreCheckbox;
private System.Windows.Forms.CheckBox TurboSeekCheckbox;