From eb7296dcd589ad7c1adc94655dd0a86c2a2f2aa6 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Wed, 9 Apr 2025 21:12:19 +1000 Subject: [PATCH] Add rewind indicator to status bar (resolves #2308) --- src/BizHawk.Client.EmuHawk/MainForm.cs | 15 +++++++++++++++ .../Properties/Resources.cs | 1 + .../images/RewindRecord.png | Bin 0 -> 848 bytes 3 files changed, 16 insertions(+) create mode 100644 src/BizHawk.Client.EmuHawk/images/RewindRecord.png diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 338d6596c7..5464882c4e 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -57,6 +57,12 @@ namespace BizHawk.Client.EmuHawk private readonly ToolStripMenuItemEx NullHawkVSysSubmenu = new() { Enabled = false, Text = "—" }; + private readonly StatusLabelEx StatusBarRewindIndicator = new() + { + Image = Properties.Resources.RewindRecord, + ToolTipText = "Rewinder is capturing states", + }; + private void MainForm_Load(object sender, EventArgs e) { UpdateWindowTitle(); @@ -177,6 +183,11 @@ namespace BizHawk.Client.EmuHawk // Hide Status bar icons and general StatusBar prep MainStatusBar.Padding = new Padding(MainStatusBar.Padding.Left, MainStatusBar.Padding.Top, MainStatusBar.Padding.Left, MainStatusBar.Padding.Bottom); // Workaround to remove extra padding on right PlayRecordStatusButton.Visible = false; + + StatusBarRewindIndicator.Click += RewindOptionsMenuItem_Click; + MainStatusBar.Items.InsertAfter(PlayRecordStatusButton, insert: StatusBarRewindIndicator); + UpdateStatusBarRewindIndicator(); + AVStatusLabel.Visible = false; SetPauseStatusBarIcon(); Tools.UpdateCheatRelatedTools(null, null); @@ -1189,6 +1200,7 @@ namespace BizHawk.Client.EmuHawk ? new ZeldaWinder(Emulator.AsStatable(), Config.Rewind) : new Zwinder(Emulator.AsStatable(), Config.Rewind) : null; + UpdateStatusBarRewindIndicator(); AddOnScreenMessage(Rewinder?.Active == true ? "Rewind started" : "Rewind disabled"); } @@ -2810,6 +2822,9 @@ namespace BizHawk.Client.EmuHawk } } + private void UpdateStatusBarRewindIndicator() + => StatusBarRewindIndicator.Visible = Rewinder?.Active is true; + private void UpdateKeyPriorityIcon() { switch (Config.InputHotkeyOverrideOptions) diff --git a/src/BizHawk.Client.EmuHawk/Properties/Resources.cs b/src/BizHawk.Client.EmuHawk/Properties/Resources.cs index 8ac1e95714..45d0854613 100644 --- a/src/BizHawk.Client.EmuHawk/Properties/Resources.cs +++ b/src/BizHawk.Client.EmuHawk/Properties/Resources.cs @@ -165,6 +165,7 @@ namespace BizHawk.Client.EmuHawk.Properties internal static readonly Bitmap Refresh = ReadEmbeddedBitmap("Refresh"); internal static readonly Bitmap Restart = ReadEmbeddedBitmap("restart"); internal static readonly Bitmap RetroQuestion = ReadEmbeddedBitmap("RetroQuestion"); + internal static readonly Bitmap RewindRecord = ReadEmbeddedBitmap("RewindRecord"); internal static readonly Bitmap Save = ReadEmbeddedBitmap("Save"); internal static readonly Bitmap SaveAs = ReadEmbeddedBitmap("SaveAs"); internal static readonly Bitmap SaveConfig = ReadEmbeddedBitmap("SaveConfig"); diff --git a/src/BizHawk.Client.EmuHawk/images/RewindRecord.png b/src/BizHawk.Client.EmuHawk/images/RewindRecord.png new file mode 100644 index 0000000000000000000000000000000000000000..686bb1a869d9c93a2a817a2b6c12886f180bd95f GIT binary patch literal 848 zcmV-W1F!svP)u> zEo`i{wXhWg!2`rzuu`;(%M7C#tf!HNU}axA_gw>{HB z2VL|bDVm+14TnQCt&dwIfE%AUi~m)Rp0G8LWWcZGt%B=yV0xpF7v2R1w6vnTJ_W`t z_kynPMPIG?MK~pl2VpB3nR7h=$f*Xa4c5|@;d%-f(G62~9jjRvE(sgiqDHMGpgUnM zFNr=dOppZ@2_vIYBtw=0J~Eid*hB~tXfi*9m=9A#B})bknR#*;D2RE)ANZab zr<%V2000SaNLh0L01FcU01FcV0GgZ_0004pNkli-h(6v5CPoVH&d1OF!lO zf0LpY|5dU+{Wp$W_8*%VNG(1?Yz&f4{FhDp`d>GA-hY@_NYeiQv$J;mKa!vF|4f$m z?SpX+E!!h(rLh_!<+a>ZKlSo|4c}>S+jeJUE_*h!_5ZiklmEZ&&i#KX&gSPTU(*&8 zjsLT(m=G>m;;`Ew%|F&o{r|2z=l}Is)Bm&VwQuA0iuVd;Detv@Fh0oH zK%2pupBDQ3Kj)+Tzs*n)W&mLT@-xWUK%2pu7a5EG%v6$UA=&^?fPwrBayH0jkmevs a326XUMKr%Gl