From aad612593bdce42af222b65f01ed603d66ea1747 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Tue, 1 Dec 2020 03:10:33 +1000 Subject: [PATCH] Add and use helper method DoWithTempMute (void and generic flavours) --- .../Extensions/ControlExtensions.cs | 15 ++++ .../Extensions/ToolExtensions.cs | 30 +++---- .../tools/HexEditor/HexEditor.cs | 4 +- .../tools/Lua/LuaConsole.cs | 4 +- .../tools/TAStudio/BookmarksBranchesBox.cs | 4 +- .../tools/TAStudio/MarkerControl.cs | 8 +- .../tools/TAStudio/TAStudio.IToolForm.cs | 7 +- .../tools/TAStudio/TAStudio.MenuItems.cs | 52 +++++------ .../tools/TAStudio/TAStudio.cs | 88 ++++++++++--------- .../tools/TraceLogger.cs | 8 +- .../tools/Watch/RamSearch.cs | 4 +- .../tools/Watch/RamWatch.cs | 8 +- 12 files changed, 106 insertions(+), 126 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs index ea06515c68..b351e7630c 100644 --- a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs +++ b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs @@ -175,6 +175,21 @@ namespace BizHawk.Client.EmuHawk Sound.Instance.StartSound(); return result; } + + public static void DoWithTempMute(this IDialogController dialogController, Action action) + { + dialogController.StopSound(); + action(); + dialogController.StartSound(); + } + + public static T DoWithTempMute(this IDialogController dialogController, Func action) + { + dialogController.StopSound(); + var ret = action(); + dialogController.StartSound(); + return ret; + } } public static class ListViewExtensions diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs index 1babbc8db4..09bc4e841d 100644 --- a/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs +++ b/src/BizHawk.Client.EmuHawk/Extensions/ToolExtensions.cs @@ -199,9 +199,7 @@ namespace BizHawk.Client.EmuHawk.ToolExtensions Message = "Number of recent files to track", InitialValue = recent.MAX_RECENT_FILES.ToString() }; - mainForm.StopSound(); - var result = prompt.ShowDialog(); - mainForm.StartSound(); + var result = mainForm.DoWithTempMute(() => prompt.ShowDialog()); if (result == DialogResult.OK) { int val = int.Parse(prompt.PromptText); @@ -216,22 +214,22 @@ namespace BizHawk.Client.EmuHawk.ToolExtensions public static void HandleLoadError(this RecentFiles recent, IMainFormForTools mainForm, string path, string encodedPath = null) { - mainForm.StopSound(); - if (recent.Frozen) + mainForm.DoWithTempMute(() => { - MessageBox.Show($"Could not open {path}", "File not found", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - else - { - // ensure topmost, not to have to minimize everything to see and use our modal window, if it somehow got covered - var result = MessageBox.Show(new Form { TopMost = true }, $"Could not open {path}\nRemove from list?", "File not found", MessageBoxButtons.YesNo, MessageBoxIcon.Error); - if (result == DialogResult.Yes) + if (recent.Frozen) { - recent.Remove(encodedPath ?? path); + MessageBox.Show($"Could not open {path}", "File not found", MessageBoxButtons.OK, MessageBoxIcon.Error); } - } - - mainForm.StartSound(); + else + { + // ensure topmost, not to have to minimize everything to see and use our modal window, if it somehow got covered + var result = MessageBox.Show(new Form { TopMost = true }, $"Could not open {path}\nRemove from list?", "File not found", MessageBoxButtons.YesNo, MessageBoxIcon.Error); + if (result == DialogResult.Yes) + { + recent.Remove(encodedPath ?? path); + } + } + }); } public static IEnumerable MenuItems(this IMemoryDomains domains, Action setCallback, string selected = "", int? maxSize = null) diff --git a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs index 75e236e05f..41e4b6d003 100644 --- a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs +++ b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs @@ -1605,9 +1605,7 @@ namespace BizHawk.Client.EmuHawk Message = "Enter a hexadecimal value" }; - MainForm.StopSound(); - var result = inputPrompt.ShowHawkDialog(this); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(this)); if (result == DialogResult.OK && inputPrompt.PromptText.IsHex()) { diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs index 506ec4d947..2663b03e8f 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs @@ -738,9 +738,7 @@ namespace BizHawk.Client.EmuHawk { if (LuaImp.ScriptList.Changes && !string.IsNullOrEmpty(LuaImp.ScriptList.Filename)) { - MainForm.StopSound(); - var result = MessageBox.Show("Save changes to session?", "Lua Console", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => MessageBox.Show("Save changes to session?", "Lua Console", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3)); if (result == DialogResult.Yes) { SaveOrSaveAs(); diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs index 7d1e515908..fb97e19920 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs @@ -577,9 +577,7 @@ namespace BizHawk.Client.EmuHawk var point = Cursor.Position; point.Offset(i.Width / -2, i.Height / -2); - MainForm.StopSound(); - var result = i.ShowHawkDialog(this, position: point); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point)); if (result.IsOk()) { branch.UserText = i.PromptText; diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs index f5c2d4ea12..ece06ba438 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs @@ -196,9 +196,7 @@ namespace BizHawk.Client.EmuHawk var point = Cursor.Position; point.Offset(i.Width / -2, i.Height / -2); - Tastudio.MainForm.StopSound(); - var result = i.ShowHawkDialog(this, position: point); - Tastudio.MainForm.StartSound(); + var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point)); if (!result.IsOk()) { return; @@ -253,9 +251,7 @@ namespace BizHawk.Client.EmuHawk point.Offset(i.Width / -2, i.Height / -2); } - Tastudio.MainForm.StopSound(); - var result = i.ShowHawkDialog(this, position: point); - Tastudio.MainForm.StartSound(); + var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point)); if (result == DialogResult.OK) { diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs index 1ff746f53d..96ee34dcb4 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.IToolForm.cs @@ -106,15 +106,12 @@ namespace BizHawk.Client.EmuHawk if (CurrentTasMovie != null && CurrentTasMovie.Changes) { - MainForm.StopSound(); - var result = MessageBox.Show( + var result = MainForm.DoWithTempMute(() => MessageBox.Show( "Save Changes?", "Tastudio", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, - MessageBoxDefaultButton.Button3); - - MainForm.StartSound(); + MessageBoxDefaultButton.Button3)); if (result == DialogResult.Yes) { _exiting = true; // Asking to save changes should only ever be called when closing something diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index 5aaa905707..966d1177c5 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -182,20 +182,21 @@ namespace BizHawk.Client.EmuHawk else { _autosaveTimer.Stop(); - MainForm.StopSound(); - MessageStatusLabel.Text = "Saving..."; - Cursor = Cursors.WaitCursor; - Update(); - CurrentTasMovie.SaveBackup(); - if (Settings.AutosaveInterval > 0) + MainForm.DoWithTempMute(() => { - _autosaveTimer.Start(); - } + MessageStatusLabel.Text = "Saving..."; + Cursor = Cursors.WaitCursor; + Update(); + CurrentTasMovie.SaveBackup(); + if (Settings.AutosaveInterval > 0) + { + _autosaveTimer.Start(); + } - MessageStatusLabel.Text = "Backup .tasproj saved to \"Movie backups\" path."; - Settings.RecentTas.Add(CurrentTasMovie.Filename); - Cursor = Cursors.Default; - MainForm.StartSound(); + MessageStatusLabel.Text = "Backup .tasproj saved to \"Movie backups\" path."; + Settings.RecentTas.Add(CurrentTasMovie.Filename); + Cursor = Cursors.Default; + }); } } @@ -283,15 +284,12 @@ namespace BizHawk.Client.EmuHawk var file = new FileInfo(bk2.Filename); if (file.Exists) { - MainForm.StopSound(); - var result = MessageBox.Show( + var result = MainForm.DoWithTempMute(() => MessageBox.Show( "Overwrite Existing File?", "Tastudio", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, - MessageBoxDefaultButton.Button3); - - MainForm.StartSound(); + MessageBoxDefaultButton.Button3)); if (result == DialogResult.Yes) { bk2.Save(); @@ -829,9 +827,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = CurrentTasMovie.ChangeLog.MaxSteps.ToString() }; - MainForm.StopSound(); - var result = prompt.ShowDialog(); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => prompt.ShowDialog()); if (result.IsOk()) { int val = 0; @@ -860,9 +856,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = Settings.BranchCellHoverInterval.ToString() }; - MainForm.StopSound(); - var result = prompt.ShowDialog(); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => prompt.ShowDialog()); if (result.IsOk()) { int val = int.Parse(prompt.PromptText); @@ -883,9 +877,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = Settings.SeekingCutoffInterval.ToString() }; - MainForm.StopSound(); - var result = prompt.ShowDialog(); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => prompt.ShowDialog()); if (result.IsOk()) { int val = int.Parse(prompt.PromptText); @@ -906,9 +898,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = (Settings.AutosaveInterval / 1000).ToString() }; - MainForm.StopSound(); - var result = prompt.ShowDialog(); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => prompt.ShowDialog()); if (result.IsOk()) { uint val = uint.Parse(prompt.PromptText) * 1000; @@ -1188,9 +1178,7 @@ namespace BizHawk.Client.EmuHawk Message = "Frames per tick:", InitialValue = TasView.ScrollSpeed.ToString() }; - MainForm.StopSound(); - var result = inputPrompt.ShowDialog(); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => inputPrompt.ShowDialog()); if (result == DialogResult.OK) { TasView.ScrollSpeed = int.Parse(inputPrompt.PromptText); diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 655a156995..ac8f4854d8 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -791,63 +791,65 @@ namespace BizHawk.Client.EmuHawk else { _autosaveTimer?.Stop(); - MainForm.StopSound(); - MessageStatusLabel.Text = "Saving..."; - Cursor = Cursors.WaitCursor; - Update(); - CurrentTasMovie.Save(); - if (Settings.AutosaveInterval > 0) + MainForm.DoWithTempMute(() => { - _autosaveTimer?.Start(); - } + MessageStatusLabel.Text = "Saving..."; + Cursor = Cursors.WaitCursor; + Update(); + CurrentTasMovie.Save(); + if (Settings.AutosaveInterval > 0) + { + _autosaveTimer?.Start(); + } - MessageStatusLabel.Text = "File saved."; - Settings.RecentTas.Add(CurrentTasMovie.Filename); - Cursor = Cursors.Default; - MainForm.StartSound(); + MessageStatusLabel.Text = "File saved."; + Settings.RecentTas.Add(CurrentTasMovie.Filename); + Cursor = Cursors.Default; + }); } } private void SaveAsTas() { _autosaveTimer.Stop(); - MainForm.StopSound(); - ClearLeftMouseStates(); - var filename = CurrentTasMovie.Filename; - if (string.IsNullOrWhiteSpace(filename) || filename == DefaultTasProjName()) + MainForm.DoWithTempMute(() => { - filename = SuggestedTasProjName(); - } + ClearLeftMouseStates(); + var filename = CurrentTasMovie.Filename; + if (string.IsNullOrWhiteSpace(filename) || filename == DefaultTasProjName()) + { + filename = SuggestedTasProjName(); + } - var file = SaveFileDialog( - filename, - Config.PathEntries.MovieAbsolutePath(), - "Tas Project Files", - "tasproj", - this + var file = SaveFileDialog( + filename, + Config.PathEntries.MovieAbsolutePath(), + "Tas Project Files", + "tasproj", + this ); - if (file != null) - { - CurrentTasMovie.Filename = file.FullName; - MessageStatusLabel.Text = "Saving..."; - Cursor = Cursors.WaitCursor; - Update(); - CurrentTasMovie.Save(); - Settings.RecentTas.Add(CurrentTasMovie.Filename); - UpdateWindowTitle(); - MessageStatusLabel.Text = "File saved."; - Cursor = Cursors.Default; - } + if (file != null) + { + CurrentTasMovie.Filename = file.FullName; + MessageStatusLabel.Text = "Saving..."; + Cursor = Cursors.WaitCursor; + Update(); + CurrentTasMovie.Save(); + Settings.RecentTas.Add(CurrentTasMovie.Filename); + UpdateWindowTitle(); + MessageStatusLabel.Text = "File saved."; + Cursor = Cursors.Default; + } - // keep insisting - if (Settings.AutosaveInterval > 0) - { - _autosaveTimer.Start(); - } + // keep insisting + if (Settings.AutosaveInterval > 0) + { + _autosaveTimer.Start(); + } - MainForm.SetWindowText(); - MainForm.StartSound(); + MainForm.SetWindowText(); + }); } protected override string WindowTitle diff --git a/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs b/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs index 0b62b3ccda..7f3ac79278 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs @@ -351,9 +351,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = MaxLines.ToString() }; - MainForm.StopSound(); - var result = prompt.ShowHawkDialog(this); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this)); if (result == DialogResult.OK) { var max = int.Parse(prompt.PromptText); @@ -374,9 +372,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = FileSizeCap.ToString() }; - MainForm.StopSound(); - var result = prompt.ShowHawkDialog(this); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this)); if (result == DialogResult.OK) { FileSizeCap = int.Parse(prompt.PromptText); diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs index 7ae2361d13..e92691d5a9 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs @@ -898,9 +898,7 @@ namespace BizHawk.Client.EmuHawk Message = "Enter a hexadecimal value" }; - MainForm.StopSound(); - var result = prompt.ShowHawkDialog(this); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this)); while (result.IsOk()) { try diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs index 14e0eb7c38..52ec049959 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs @@ -153,9 +153,7 @@ namespace BizHawk.Client.EmuHawk { if (_watches.Changes) { - MainForm.StopSound(); - var result = MessageBox.Show("Save Changes?", "RAM Watch", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => MessageBox.Show("Save Changes?", "RAM Watch", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3)); if (result == DialogResult.Yes) { if (string.IsNullOrWhiteSpace(_watches.CurrentFileName)) @@ -428,9 +426,7 @@ namespace BizHawk.Client.EmuHawk TextInputType = InputPrompt.InputType.Text }; - MainForm.StopSound(); - var result = inputPrompt.ShowHawkDialog(); - MainForm.StartSound(); + var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog()); if (result == DialogResult.OK) {