diff --git a/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs b/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs index b9c0dcff20..3e6a6e03cf 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/AVSync.cs @@ -243,9 +243,9 @@ namespace BizHawk.Client.EmuHawk W.AddSamples(samples); } - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { - return W.AcquireVideoCodecToken(hwnd, config); + return W.AcquireVideoCodecToken(dialogController, hwnd, config); } public void SetMovieParameters(int fpsNum, int fpsDen) diff --git a/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs index 83db1c841d..966649b54b 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/AviWriter.cs @@ -261,7 +261,7 @@ namespace BizHawk.Client.EmuHawk /// Acquires a video codec configuration from the user. you may save it for future use, but you must dispose of it when you're done with it. /// returns null if the user canceled the dialog /// - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { var tempParams = new Parameters { diff --git a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs index 3656b9d1a9..9bf7db5ff5 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegDownloaderForm.cs @@ -110,10 +110,10 @@ namespace BizHawk.Client.EmuHawk } } - public static void Run(IWin32Window hwnd) + public static void Run(IDialogController dialogController, IWin32Window hwnd) { var form = new FFmpegDownloaderForm(); - form.ShowHawkDialog(hwnd); + form.ShowHawkDialog(dialogController, hwnd); } private void btnDownload_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs index 5ec55c4714..68e2dea4c1 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/FFmpegWriter.cs @@ -207,14 +207,14 @@ namespace BizHawk.Client.EmuHawk //ffmpeg.StandardInput.BaseStream.Write(b, 0, b.Length); } - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { if (new FFmpegService().QueryServiceAvailable()) { return FFmpegWriterForm.DoFFmpegWriterDlg(hwnd, config); } - FFmpegDownloaderForm.Run(hwnd); + FFmpegDownloaderForm.Run(dialogController, hwnd); if (new FFmpegService().QueryServiceAvailable()) { return FFmpegWriterForm.DoFFmpegWriterDlg(hwnd, config); diff --git a/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs index ddfa308043..f4c56738dd 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/GifWriter.cs @@ -195,7 +195,7 @@ namespace BizHawk.Client.EmuHawk // ignored } - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { return GifWriterForm.DoTokenForm(hwnd, config); } diff --git a/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs index 7767a84090..3d178117f5 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/IVideoWriter.cs @@ -64,7 +64,7 @@ namespace BizHawk.Client.EmuHawk /// /// hwnd to attach to if the user is shown config dialog /// codec token, dispose of it when you're done with it - IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config); + IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config); /// /// set framerate to fpsNum/fpsDen (assumed to be unchanging over the life of the stream) diff --git a/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs index 94d805249e..4829586afa 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/ImageSequenceWriter.cs @@ -73,7 +73,7 @@ namespace BizHawk.Client.EmuHawk } } - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { return new CodecToken(); } diff --git a/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs index 09ea39dcdd..30dfd29ada 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/JMDWriter.cs @@ -529,7 +529,7 @@ namespace BizHawk.Client.EmuHawk /// /// hwnd to attach to if the user is shown config dialog /// codec token, dispose of it when you're done with it - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { var ret = new CodecToken(); diff --git a/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs index 98b983b185..6e2048f0df 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/NutWriter.cs @@ -29,7 +29,7 @@ namespace BizHawk.Client.EmuHawk { // ignored } - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { return new NutWriterToken(); } diff --git a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs index 1d659654db..78682ac6b7 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecorder.cs @@ -83,7 +83,7 @@ namespace BizHawk.Client.EmuHawk } } - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { return new DummyDisposable(); } diff --git a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs index 8b345e2340..49c4c906fb 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/SynclessRecordingTools.cs @@ -16,12 +16,15 @@ namespace BizHawk.Client.EmuHawk private readonly Config _config; private readonly IGameInfo _game; + private readonly IDialogController _dialogController; + private string _mSynclessConfigFile; private string _mFramesDirectory; - public SynclessRecordingTools(Config config, IGameInfo game) + public SynclessRecordingTools(Config config, IGameInfo game, IDialogController dialogController) { _config = config; + _dialogController = dialogController; _game = game; InitializeComponent(); } @@ -123,7 +126,7 @@ namespace BizHawk.Client.EmuHawk avw.SetAudioParameters(44100, 2, 16); // hacky avw.SetMovieParameters(60, 1); // hacky avw.SetVideoParameters(width, height); - var token = avw.AcquireVideoCodecToken(this, _config); + var token = avw.AcquireVideoCodecToken(_dialogController, this, _config); avw.SetVideoCodecToken(token); avw.OpenFile(sfd.FileName); foreach (var fi in _mFrameInfos) diff --git a/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs b/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs index 386c4b9489..72df03d872 100644 --- a/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs +++ b/src/BizHawk.Client.EmuHawk/AVOut/WavWriter.cs @@ -229,7 +229,7 @@ namespace BizHawk.Client.EmuHawk public void Dispose() { } } - public IDisposable AcquireVideoCodecToken(IWin32Window hwnd, Config config) + public IDisposable AcquireVideoCodecToken(IDialogController dialogController, IWin32Window hwnd, Config config) { // don't care return new WavWriterVToken(); diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs index 153fc96708..73bd49dcac 100644 --- a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs +++ b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs @@ -148,28 +148,22 @@ namespace BizHawk.Client.EmuHawk /// /// Handles EmuHawk specific issues before showing a modal dialog /// - public static DialogResult ShowHawkDialog(this Form form, IWin32Window owner, Point position = default) + public static DialogResult ShowHawkDialog(this Form form, IDialogController dialogController, IWin32Window owner, Point position = default) { - Sound.Instance.StopSound(); if (position != default) { form.StartPosition = FormStartPosition.Manual; form.Location = position; } - var result = form.ShowDialog(owner); - Sound.Instance.StartSound(); - return result; + return dialogController.DoWithTempMute(() => form.ShowDialog(owner)); } /// /// Handles EmuHawk specific issues before showing a modal dialog /// - public static DialogResult ShowHawkDialog(this CommonDialog form, IWin32Window owner) + public static DialogResult ShowHawkDialog(this CommonDialog form, IDialogController dialogController, IWin32Window owner) { - Sound.Instance.StopSound(); - var result = form.ShowDialog(owner); - Sound.Instance.StartSound(); - return result; + return dialogController.DoWithTempMute(() => form.ShowDialog(owner)); } public static void DoWithTempMute(this IDialogController dialogController, Action action) @@ -286,7 +280,7 @@ namespace BizHawk.Client.EmuHawk Clipboard.SetImage(img); } - public static void SaveAsFile(this Bitmap bitmap, IGameInfo game, string suffix, string systemId, PathEntryCollection paths, IWin32Window owner) + public static void SaveAsFile(this Bitmap bitmap, IGameInfo game, string suffix, string systemId, PathEntryCollection paths, IDialogController dialogController, IWin32Window owner) { using var sfd = new SaveFileDialog { @@ -296,7 +290,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = true }; - var result = sfd.ShowHawkDialog(owner); + var result = sfd.ShowHawkDialog(dialogController, owner); if (result != DialogResult.OK) { return; diff --git a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs index 75a759b77f..0c9342c20e 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -246,7 +246,7 @@ namespace BizHawk.Client.EmuHawk private void OpenAdvancedMenuItem_Click(object sender, EventArgs e) { using var oac = new OpenAdvancedChooser(Config, CreateCoreComm, Game, RunLibretroCoreChooser); - if (oac.ShowHawkDialog(this) == DialogResult.Cancel) + if (oac.ShowHawkDialog(this, this) == DialogResult.Cancel) { return; } @@ -295,7 +295,7 @@ namespace BizHawk.Client.EmuHawk Title = "Open Advanced" }; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(this, this); if (!result.IsOk()) { return; @@ -444,7 +444,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = false }; - if (ofd.ShowHawkDialog(this).IsOk()) + if (ofd.ShowHawkDialog(this, this).IsOk()) { foreach (var fn in ofd.FileNames) { @@ -471,8 +471,8 @@ namespace BizHawk.Client.EmuHawk Config.PathEntries.MovieAbsolutePath(), "Movie Files", MovieSession.Movie.PreferredExtension, - this - ); + this, + this); if (file != null) { @@ -540,7 +540,7 @@ namespace BizHawk.Client.EmuHawk private void SynclessRecordingMenuItem_Click(object sender, EventArgs e) { - new SynclessRecordingTools(Config, Game).Run(); + new SynclessRecordingTools(Config, Game, this).Run(); } private void CaptureOSDMenuItem_Click(object sender, EventArgs e) @@ -564,7 +564,7 @@ namespace BizHawk.Client.EmuHawk Filter = FilesystemFilter.PNGs.ToString() }; - if (sfd.ShowHawkDialog(this).IsOk()) + if (sfd.ShowHawkDialog(this, this).IsOk()) { TakeScreenshot(sfd.FileName); } @@ -1130,7 +1130,7 @@ namespace BizHawk.Client.EmuHawk Filter = ConfigFileFSFilterString }; - if (sfd.ShowHawkDialog(this).IsOk()) + if (sfd.ShowHawkDialog(this, this).IsOk()) { SaveConfig(sfd.FileName); AddOnScreenMessage("Copied settings"); @@ -1152,7 +1152,7 @@ namespace BizHawk.Client.EmuHawk Filter = ConfigFileFSFilterString }; - if (ofd.ShowHawkDialog(this).IsOk()) + if (ofd.ShowHawkDialog(this, this).IsOk()) { LoadConfigFile(ofd.FileName); } @@ -1385,12 +1385,12 @@ namespace BizHawk.Client.EmuHawk if (Emulator is NES nes && nes.IsVS) { using var form = new NesVsSettings(this, nes.GetSyncSettings().Clone()); - form.ShowHawkDialog(this); + form.ShowHawkDialog(this, this); } else if (Emulator is SubNESHawk sub && sub.IsVs) { using var form = new NesVsSettings(this, sub.GetSyncSettings().Clone()); - form.ShowHawkDialog(this); + form.ShowHawkDialog(this, this); } } diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 82929cd4fd..8244e17b31 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -2258,7 +2258,7 @@ namespace BizHawk.Client.EmuHawk FilterIndex = _lastOpenRomFilter }; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(this, this); if (result != DialogResult.OK) { return; @@ -3221,7 +3221,7 @@ namespace BizHawk.Client.EmuHawk aw.SetDefaultVideoCodecToken(Config); } - var token = aw.AcquireVideoCodecToken(this, Config); + var token = aw.AcquireVideoCodecToken(this, this, Config); if (token == null) { AddOnScreenMessage("A/V capture canceled."); @@ -3270,7 +3270,7 @@ namespace BizHawk.Client.EmuHawk sfd.Filter = new FilesystemFilterSet(new FilesystemFilter(ext, new[] { ext })).ToString(); - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(this, this); if (result == DialogResult.Cancel) { aw.Dispose(); @@ -4257,7 +4257,7 @@ namespace BizHawk.Client.EmuHawk FileName = $"{SaveStatePrefix()}.QuickSave0.State" }; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(this, this); if (result == DialogResult.OK) { SaveState(sfd.FileName, sfd.FileName); @@ -4289,7 +4289,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = true }; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(this, this); if (result != DialogResult.OK) { return; diff --git a/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs b/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs index e38478b4c0..c60153bf22 100644 --- a/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs +++ b/src/BizHawk.Client.EmuHawk/movie/PlayMovie.cs @@ -513,7 +513,7 @@ namespace BizHawk.Client.EmuHawk InitialDirectory = _config.PathEntries.MovieAbsolutePath() }; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(_mainForm, this); if (result == DialogResult.OK) { var file = new FileInfo(ofd.FileName); diff --git a/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs b/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs index 6e0daf9d9c..76f47a0beb 100644 --- a/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs +++ b/src/BizHawk.Client.EmuHawk/movie/RecordMovie.cs @@ -194,7 +194,7 @@ namespace BizHawk.Client.EmuHawk Filter = new FilesystemFilterSet(new FilesystemFilter("Movie Files", new[] { preferredExt })).ToString() }; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(_mainForm, this); if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(sfd.FileName)) { diff --git a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs index 803cb8fadc..1c21761f7b 100644 --- a/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs +++ b/src/BizHawk.Client.EmuHawk/tools/BasicBot/BasicBot.cs @@ -366,11 +366,12 @@ namespace BizHawk.Client.EmuHawk } var file = SaveFileDialog( - fileName, - Config.PathEntries.ToolsAbsolutePath(), - "Bot files", - "bot", - this); + fileName, + Config.PathEntries.ToolsAbsolutePath(), + "Bot files", + "bot", + MainForm, + this); if (file != null) { diff --git a/src/BizHawk.Client.EmuHawk/tools/CDL.cs b/src/BizHawk.Client.EmuHawk/tools/CDL.cs index b2fd8343c7..f7ab719481 100644 --- a/src/BizHawk.Client.EmuHawk/tools/CDL.cs +++ b/src/BizHawk.Client.EmuHawk/tools/CDL.cs @@ -392,6 +392,7 @@ namespace BizHawk.Client.EmuHawk Config.PathEntries.LogAbsolutePath(), "Code Data Logger Files", "cdl", + MainForm, this); if (file == null) diff --git a/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs b/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs index e7fe4d7897..48bdc8907c 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs @@ -150,6 +150,7 @@ namespace BizHawk.Client.EmuHawk Config.PathEntries.CheatsAbsolutePath(Game.System), "Cheat Files", "cht", + MainForm, Owner ?? this); return file != null && MainForm.CheatList.SaveFile(file.FullName); diff --git a/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs b/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs index 3471a3d019..19e9b7d4fd 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Debugger/BreakpointControl.cs @@ -144,7 +144,7 @@ namespace BizHawk.Client.EmuHawk { var b = CreateAddBreakpointDialog(BreakpointOperation.Add); - if (b.ShowHawkDialog(this).IsOk()) + if (b.ShowHawkDialog(MainForm, this).IsOk()) { _breakpoints.Add(Core, MemoryDomains.SystemBus.Name, b.Address, b.AddressMask, b.BreakType); } @@ -265,7 +265,7 @@ namespace BizHawk.Client.EmuHawk { var b = CreateAddBreakpointDialog(BreakpointOperation.Duplicate, breakpoint.Type, breakpoint.Address, breakpoint.AddressMask); - if (b.ShowHawkDialog(this) == DialogResult.OK) + if (b.ShowHawkDialog(MainForm, this) == DialogResult.OK) { _breakpoints.Add(new Breakpoint(Core, MemoryDomains.SystemBus.Name, breakpoint.Callback, b.Address, b.AddressMask, b.BreakType, breakpoint.Active)); } @@ -284,7 +284,7 @@ namespace BizHawk.Client.EmuHawk { var b = CreateAddBreakpointDialog(BreakpointOperation.Edit, breakpoint.Type, breakpoint.Address, breakpoint.AddressMask); - if (b.ShowHawkDialog(this) == DialogResult.OK) + if (b.ShowHawkDialog(MainForm, this) == DialogResult.OK) { breakpoint.Type = b.BreakType; breakpoint.Address = b.Address; diff --git a/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs b/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs index 009a2944f5..5a22914c0a 100644 --- a/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs +++ b/src/BizHawk.Client.EmuHawk/tools/GB/GBGPUView.cs @@ -1022,7 +1022,7 @@ namespace BizHawk.Client.EmuHawk Color = Spriteback }; - var result = dlg.ShowHawkDialog(this); + var result = dlg.ShowHawkDialog(MainForm, this); if (result.IsOk()) { Spriteback = dlg.Color; diff --git a/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs b/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs index 5204b3a2e0..f24eb23d50 100644 --- a/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs +++ b/src/BizHawk.Client.EmuHawk/tools/GB/GBPrinterView.cs @@ -187,7 +187,7 @@ namespace BizHawk.Client.EmuHawk g.Flush(); } - toSave.Bmp.SaveAsFile(Game, "Print", Emulator.SystemId, Config.PathEntries, this); + toSave.Bmp.SaveAsFile(Game, "Print", Emulator.SystemId, Config.PathEntries, MainForm, this); } private void CopyToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs b/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs index 6a76e88285..797cb20897 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Genesis/VDPViewer.cs @@ -179,7 +179,7 @@ namespace BizHawk.Client.EmuHawk private void SaveAsFile(Bitmap bitmap, string suffix) { - bitmap.SaveAsFile(Game, suffix, Emu.SystemId, Config.PathEntries, this); + bitmap.SaveAsFile(Game, suffix, Emu.SystemId, Config.PathEntries, MainForm, this); } private void SaveBGAScreenshotToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs index 41e4b6d003..19c2e4142f 100644 --- a/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs +++ b/src/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs @@ -946,7 +946,7 @@ namespace BizHawk.Client.EmuHawk : Game.FilesystemSafeName() }; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(MainForm, this); return result == DialogResult.OK ? sfd.FileName : ""; } @@ -962,7 +962,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = true }; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(MainForm, this); return result == DialogResult.OK ? sfd.FileName : ""; } @@ -1284,7 +1284,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = true }; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(MainForm, this); if (result != DialogResult.OK) { return; @@ -1338,7 +1338,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = false }; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(MainForm, this); if (result == DialogResult.OK) { @@ -1605,7 +1605,7 @@ namespace BizHawk.Client.EmuHawk Message = "Enter a hexadecimal value" }; - var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(this)); + var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(MainForm, this)); if (result == DialogResult.OK && inputPrompt.PromptText.IsHex()) { @@ -1694,7 +1694,7 @@ namespace BizHawk.Client.EmuHawk ParentTool = this }; - poke.ShowHawkDialog(this); + poke.ShowHawkDialog(MainForm, this); GeneralUpdate(); } } @@ -1702,7 +1702,7 @@ namespace BizHawk.Client.EmuHawk private void SetColorsMenuItem_Click(object sender, EventArgs e) { using var form = new HexColorsForm(this); - form.ShowHawkDialog(this); + form.ShowHawkDialog(MainForm, this); } private void ResetColorsToDefaultMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs index 2663b03e8f..7b305fcb43 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs @@ -696,7 +696,7 @@ namespace BizHawk.Client.EmuHawk sfd.Filter = SessionsFSFilterSet.ToString(); sfd.RestoreDirectory = true; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(MainForm, this); return result.IsOk() ? new FileInfo(sfd.FileName) : null; } @@ -826,7 +826,7 @@ namespace BizHawk.Client.EmuHawk Directory.CreateDirectory(ofd.InitialDirectory); } - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(MainForm, this); if (result.IsOk() && !string.IsNullOrWhiteSpace(ofd.FileName)) { LoadLuaSession(ofd.FileName); @@ -880,7 +880,7 @@ namespace BizHawk.Client.EmuHawk Filter = new FilesystemFilterSet(FilesystemFilter.LuaScripts).ToString() }; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(MainForm, this); if (result.IsOk() && !string.IsNullOrWhiteSpace(sfd.FileName)) { string defaultTemplate = "while true do\n\temu.frameadvance();\nend"; @@ -912,7 +912,7 @@ namespace BizHawk.Client.EmuHawk Directory.CreateDirectory(ofd.InitialDirectory); } - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(MainForm, this); if (result.IsOk() && ofd.FileNames != null) { foreach (var file in ofd.FileNames) diff --git a/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs b/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs index 442f1c1762..9801879bd0 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Macros/MacroInput.cs @@ -279,7 +279,7 @@ namespace BizHawk.Client.EmuHawk create = true; } - DialogResult result = dialog.ShowHawkDialog(this); + DialogResult result = dialog.ShowHawkDialog(MainForm, this); if (result != DialogResult.OK) { if (create) @@ -304,7 +304,7 @@ namespace BizHawk.Client.EmuHawk Filter = MacrosFSFilterSet.ToString() }; - DialogResult result = dialog.ShowHawkDialog(this); + DialogResult result = dialog.ShowHawkDialog(MainForm, this); if (result != DialogResult.OK) { return null; diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs index a0fc9991fa..7ecbb38d70 100644 --- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs +++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs @@ -127,7 +127,7 @@ namespace BizHawk.Client.EmuHawk Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top }; - var mdf = new MultiDiskFileSelector(this, () => MainForm.CurrentlyOpenRom) + var mdf = new MultiDiskFileSelector(this, MainForm, () => MainForm.CurrentlyOpenRom) { Location = UIHelper.Scale(new Point(7, 12)), Width = groupBox.ClientSize.Width - UIHelper.ScaleX(13), @@ -262,7 +262,7 @@ namespace BizHawk.Client.EmuHawk Filter = new FilesystemFilterSet(new FilesystemFilter("XML Files", new[] { "xml" })).ToString() }; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(MainForm, this); if (result != DialogResult.Cancel) { NameBox.Text = sfd.FileName; diff --git a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs index b4d5c20c40..3dfd0f06b5 100644 --- a/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs +++ b/src/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs @@ -9,6 +9,8 @@ namespace BizHawk.Client.EmuHawk { public partial class MultiDiskFileSelector : UserControl { + private readonly IDialogController _dialogController; + private readonly Func _getLoadedRomNameCallback; private readonly ToolFormBase _parent; @@ -28,8 +30,9 @@ namespace BizHawk.Client.EmuHawk OnNameChanged(EventArgs.Empty); } - public MultiDiskFileSelector(ToolFormBase parent, Func getLoadedRomNameCallback) + public MultiDiskFileSelector(ToolFormBase parent, IDialogController dialogController, Func getLoadedRomNameCallback) { + _dialogController = dialogController; _getLoadedRomNameCallback = getLoadedRomNameCallback; _parent = parent; InitializeComponent(); @@ -76,7 +79,7 @@ namespace BizHawk.Client.EmuHawk }; string hawkPath = ""; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(_dialogController, this); if (result == DialogResult.OK) { hawkPath = ofd.FileName; diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs index b25c911068..9ab38fd02b 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs @@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk { NameTableView .ToBitMap() - .SaveAsFile(Game, "Nametables", "NES", Config.PathEntries, this); + .SaveAsFile(Game, "Nametables", "NES", Config.PathEntries, MainForm, this); } private void ScreenshotToClipboardMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs index 69a0beaa95..8fe8601e25 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs @@ -314,7 +314,7 @@ namespace BizHawk.Client.EmuHawk private void Screenshot(Bitmap b, string suffix) { - b.SaveAsFile(Game, suffix, "NES", Config.PathEntries, this); + b.SaveAsFile(Game, suffix, "NES", Config.PathEntries, MainForm, this); } private void SavePaletteScreenshotMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs b/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs index 54864df77a..660ff0d1e2 100644 --- a/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/PCE/PCETileViewer.cs @@ -204,7 +204,7 @@ namespace BizHawk.Client.EmuHawk private void SaveAsFile(Bitmap bmp, string suffix) { - bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, this); + bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, MainForm, this); } private void SaveBackgroundScreenshotMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs b/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs index c973de6521..3bf78b6cdd 100644 --- a/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/SMS/VDPViewer.cs @@ -197,7 +197,7 @@ namespace BizHawk.Client.EmuHawk private void SaveAsFile(Bitmap bmp, string suffix) { - bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, this); + bmp.SaveAsFile(Game, suffix, Emulator.SystemId, Config.PathEntries, MainForm, this); } private void SaveTilesScreenshotToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs index fb97e19920..c336f06ca3 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs @@ -577,7 +577,7 @@ namespace BizHawk.Client.EmuHawk var point = Cursor.Position; point.Offset(i.Width / -2, i.Height / -2); - var result = MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point)); + var result = MainForm.DoWithTempMute(() => i.ShowHawkDialog(Tastudio.MainForm, 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 ece06ba438..4719a62ed7 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs @@ -196,7 +196,7 @@ namespace BizHawk.Client.EmuHawk var point = Cursor.Position; point.Offset(i.Width / -2, i.Height / -2); - var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point)); + var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(Tastudio.MainForm, this, position: point)); if (!result.IsOk()) { return; @@ -251,7 +251,7 @@ namespace BizHawk.Client.EmuHawk point.Offset(i.Width / -2, i.Height / -2); } - var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(this, position: point)); + var result = Tastudio.MainForm.DoWithTempMute(() => i.ShowHawkDialog(Tastudio.MainForm, this, position: point)); if (result == DialogResult.OK) { diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index 966d1177c5..8cdeae1d3b 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -108,7 +108,7 @@ namespace BizHawk.Client.EmuHawk ).ToString() }; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(MainForm, this); if (result.IsOk()) { LoadMovieFile(ofd.FileName, false); diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index ac8f4854d8..5b9751a8c0 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -826,6 +826,7 @@ namespace BizHawk.Client.EmuHawk Config.PathEntries.MovieAbsolutePath(), "Tas Project Files", "tasproj", + MainForm, this ); diff --git a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs index ed1af1af22..0e4b322943 100644 --- a/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs +++ b/src/BizHawk.Client.EmuHawk/tools/ToolFormBase.cs @@ -71,7 +71,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = true }; - var result = ofd.ShowHawkDialog(this); + var result = ofd.ShowHawkDialog(MainForm, this); if (result != DialogResult.OK) { return null; @@ -80,7 +80,7 @@ namespace BizHawk.Client.EmuHawk return new FileInfo(ofd.FileName); } - public static FileInfo SaveFileDialog(string currentFile, string path, string fileType, string fileExt, IWin32Window owner) + public static FileInfo SaveFileDialog(string currentFile, string path, string fileType, string fileExt, IDialogController dialogController, IWin32Window owner) { if (!Directory.Exists(path)) { @@ -95,7 +95,7 @@ namespace BizHawk.Client.EmuHawk RestoreDirectory = true }; - var result = sfd.ShowHawkDialog(owner); + var result = sfd.ShowHawkDialog(dialogController, owner); if (result != DialogResult.OK) { return null; @@ -111,7 +111,7 @@ namespace BizHawk.Client.EmuHawk public FileInfo GetWatchSaveFileFromUser(string currentFile) { - return SaveFileDialog(currentFile, Config.PathEntries.WatchAbsolutePath(), "Watch Files", "wch", this); + return SaveFileDialog(currentFile, Config.PathEntries.WatchAbsolutePath(), "Watch Files", "wch", MainForm, this); } public void ViewInHexEditor(MemoryDomain domain, IEnumerable addresses, WatchSize size) diff --git a/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs b/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs index 7f3ac79278..fdca5a53fd 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TraceLogger.cs @@ -302,7 +302,7 @@ namespace BizHawk.Client.EmuHawk FilesystemFilter.TextFiles ).ToString(); sfd.RestoreDirectory = true; - var result = sfd.ShowHawkDialog(this); + var result = sfd.ShowHawkDialog(MainForm, this); return result.IsOk() ? new FileInfo(sfd.FileName) : null; } @@ -351,7 +351,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = MaxLines.ToString() }; - var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this)); + var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(MainForm, this)); if (result == DialogResult.OK) { var max = int.Parse(prompt.PromptText); @@ -372,7 +372,7 @@ namespace BizHawk.Client.EmuHawk InitialValue = FileSizeCap.ToString() }; - var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this)); + var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(MainForm, 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 e92691d5a9..da4b409784 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs @@ -868,7 +868,7 @@ namespace BizHawk.Client.EmuHawk InitialLocation = this.ChildPointToScreen(WatchListView) }; - poke.ShowHawkDialog(this); + poke.ShowHawkDialog(MainForm, this); UpdateList(); } } @@ -898,7 +898,7 @@ namespace BizHawk.Client.EmuHawk Message = "Enter a hexadecimal value" }; - var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(this)); + var result = MainForm.DoWithTempMute(() => prompt.ShowHawkDialog(MainForm, 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 69ae3f4c75..6a6175d3fd 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs @@ -395,7 +395,7 @@ namespace BizHawk.Client.EmuHawk we.SetWatch(SelectedWatches.First().Domain, SelectedWatches, duplicate ? WatchEditor.Mode.Duplicate : WatchEditor.Mode.Edit); - var result = we.ShowHawkDialog(this); + var result = we.ShowHawkDialog(MainForm, this); if (result == DialogResult.OK) { if (duplicate) @@ -426,7 +426,7 @@ namespace BizHawk.Client.EmuHawk TextInputType = InputPrompt.InputType.Text }; - var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(this)); + var result = MainForm.DoWithTempMute(() => inputPrompt.ShowHawkDialog(MainForm, this)); if (result == DialogResult.OK) { @@ -732,7 +732,7 @@ namespace BizHawk.Client.EmuHawk MemoryDomains = MemoryDomains }; we.SetWatch(CurrentDomain); - we.ShowHawkDialog(this); + we.ShowHawkDialog(MainForm, this); if (we.DialogResult == DialogResult.OK) { _watches.Add(we.Watches[0]); @@ -779,7 +779,7 @@ namespace BizHawk.Client.EmuHawk InitialLocation = this.ChildPointToScreen(WatchListView) }; - if (poke.ShowHawkDialog(this).IsOk()) + if (poke.ShowHawkDialog(MainForm, this).IsOk()) { GeneralUpdate(); }