From a8d574dd802a682c3c3f29ef99bcb00032e876f4 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sun, 24 Jun 2018 11:15:26 -0700 Subject: [PATCH] Use consistent RunOnIdle pattern with .2s delay to ensure popup close --- SlicerConfiguration/SliceSettingsWidget.cs | 87 ++++++++++------------ 1 file changed, 40 insertions(+), 47 deletions(-) diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index 8b90afa0b..08eebd79b 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -89,73 +89,66 @@ namespace MatterHackers.MatterControl.SlicerConfiguration PopupMenu.MenuItem menuItem; menuItem = popupMenu.CreateMenuItem("Import Presets".Localize()); - menuItem.Click += (s, e) => + menuItem.Click += (s, e) => UiThread.RunOnIdle(() => { - UiThread.RunOnIdle(() => - { - AggContext.FileDialogs.OpenFileDialog( - new OpenFileDialogParams("settings files|*.printer"), - (dialogParams) => + AggContext.FileDialogs.OpenFileDialog( + new OpenFileDialogParams("settings files|*.printer"), + (dialogParams) => + { + if (!string.IsNullOrEmpty(dialogParams.FileName)) { - if (!string.IsNullOrEmpty(dialogParams.FileName)) - { - DialogWindow.Show(new ImportSettingsPage(dialogParams.FileName, printer)); - } - }); - }); - }; + DialogWindow.Show(new ImportSettingsPage(dialogParams.FileName, printer)); + } + }); + }, .2); popupMenu.CreateHorizontalLine(); menuItem = popupMenu.CreateMenuItem("Restore Settings".Localize()); - menuItem.Click += (s, e) => + menuItem.Click += (s, e) => UiThread.RunOnIdle(() => { DialogWindow.Show(); - }; + }, .2); menuItem.Enabled = !string.IsNullOrEmpty(AuthenticationData.Instance.ActiveSessionUsername); menuItem = popupMenu.CreateMenuItem("Reset to Defaults".Localize()); - menuItem.Click += (s, e) => + menuItem.Click += (s, e) => UiThread.RunOnIdle(() => { - UiThread.RunOnIdle(() => - { - StyledMessageBox.ShowMessageBox( - revertSettings => + StyledMessageBox.ShowMessageBox( + (revertSettings) => + { + if (revertSettings) { - if (revertSettings) + bool onlyReloadSliceSettings = true; + if (printer.Settings.GetValue(SettingsKey.print_leveling_required_to_print) + && printer.Settings.GetValue(SettingsKey.print_leveling_enabled)) { - bool onlyReloadSliceSettings = true; - if (printer.Settings.GetValue(SettingsKey.print_leveling_required_to_print) - && printer.Settings.GetValue(SettingsKey.print_leveling_enabled)) - { - onlyReloadSliceSettings = false; - } - - printer.Settings.ClearUserOverrides(); - printer.Settings.Save(); - - if (onlyReloadSliceSettings) - { - printer?.Bed.GCodeRenderer?.Clear3DGCode(); - } - else - { - ApplicationController.Instance.ReloadAll(); - } + onlyReloadSliceSettings = false; } - }, - "Resetting to default values will remove your current overrides and restore your original printer settings.\nAre you sure you want to continue?".Localize(), - "Revert Settings".Localize(), - StyledMessageBox.MessageType.YES_NO); - }); - }; + printer.Settings.ClearUserOverrides(); + printer.Settings.Save(); + + if (onlyReloadSliceSettings) + { + printer?.Bed.GCodeRenderer?.Clear3DGCode(); + } + else + { + ApplicationController.Instance.ReloadAll(); + } + } + }, + "Resetting to default values will remove your current overrides and restore your original printer settings.\nAre you sure you want to continue?".Localize(), + "Revert Settings".Localize(), + StyledMessageBox.MessageType.YES_NO); + }, .2); menuItem = popupMenu.CreateMenuItem("Export".Localize()); - menuItem.Click += (s, e) => + menuItem.Click += (s, e) => UiThread.RunOnIdle(() => { ActiveSliceSettings.Instance.Helpers.ExportAsMatterControlConfig(); - }; + }, .2); } // TODO: This should just proxy to settingsControlBar.Visible. Having local state and pushing values on event listeners seems off