Use consistent RunOnIdle pattern with .2s delay to ensure popup close

This commit is contained in:
John Lewin 2018-06-24 11:15:26 -07:00
parent 486fd08fc1
commit a8d574dd80

View file

@ -89,73 +89,66 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
PopupMenu.MenuItem menuItem; PopupMenu.MenuItem menuItem;
menuItem = popupMenu.CreateMenuItem("Import Presets".Localize()); 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"),
AggContext.FileDialogs.OpenFileDialog( (dialogParams) =>
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(); popupMenu.CreateHorizontalLine();
menuItem = popupMenu.CreateMenuItem("Restore Settings".Localize()); menuItem = popupMenu.CreateMenuItem("Restore Settings".Localize());
menuItem.Click += (s, e) => menuItem.Click += (s, e) => UiThread.RunOnIdle(() =>
{ {
DialogWindow.Show<PrinterProfileHistoryPage>(); DialogWindow.Show<PrinterProfileHistoryPage>();
}; }, .2);
menuItem.Enabled = !string.IsNullOrEmpty(AuthenticationData.Instance.ActiveSessionUsername); menuItem.Enabled = !string.IsNullOrEmpty(AuthenticationData.Instance.ActiveSessionUsername);
menuItem = popupMenu.CreateMenuItem("Reset to Defaults".Localize()); 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<bool>(SettingsKey.print_leveling_required_to_print)
&& printer.Settings.GetValue<bool>(SettingsKey.print_leveling_enabled))
{ {
bool onlyReloadSliceSettings = true; onlyReloadSliceSettings = false;
if (printer.Settings.GetValue<bool>(SettingsKey.print_leveling_required_to_print)
&& printer.Settings.GetValue<bool>(SettingsKey.print_leveling_enabled))
{
onlyReloadSliceSettings = false;
}
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);
});
}; 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 = popupMenu.CreateMenuItem("Export".Localize());
menuItem.Click += (s, e) => menuItem.Click += (s, e) => UiThread.RunOnIdle(() =>
{ {
ActiveSliceSettings.Instance.Helpers.ExportAsMatterControlConfig(); ActiveSliceSettings.Instance.Helpers.ExportAsMatterControlConfig();
}; }, .2);
} }
// TODO: This should just proxy to settingsControlBar.Visible. Having local state and pushing values on event listeners seems off // TODO: This should just proxy to settingsControlBar.Visible. Having local state and pushing values on event listeners seems off