From bae0bf9020a24954d46b9fc6cda606ea3b46d126 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sat, 16 Feb 2019 13:55:27 -0800 Subject: [PATCH] Add mechanism to DialogPage to start and show SetupWizards - Remove special behavior in each SetupWizard for showing Dialogs - Move initialization code in old Start method into constructors --- .../ActionBar/TemperatureWidgetExtruder.cs | 20 +++++++---------- .../ApplicationView/ApplicationController.cs | 10 +++++---- .../SetupWizards/LoadFilamentWizard.cs | 18 ++++++--------- .../SetupWizards/NozzleCalibrationWizard.cs | 7 ------ .../SetupWizards/PrintLevelingWizard.cs | 17 +++++--------- .../SetupWizards/ProbeCalibrationWizard.cs | 13 +++-------- .../SetupWizards/UnloadFilamentWizard.cs | 15 ++++--------- .../PartPreviewWindow/PrinterTabPage.cs | 11 ++++------ .../ControlWidgets/CalibrationControls.cs | 6 ++--- MatterControlLib/SetupWizard/DialogWindow.cs | 22 +++++++++++++++++++ 10 files changed, 63 insertions(+), 76 deletions(-) diff --git a/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs b/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs index 3fcdd16d9..cdffceb02 100644 --- a/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs +++ b/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs @@ -65,24 +65,20 @@ namespace MatterHackers.MatterControl.ActionBar var loadButton = theme.CreateDialogButton("Load".Localize()); loadButton.ToolTipText = "Load filament".Localize(); loadButton.Name = "Load Filament Button"; - loadButton.Click += (s, e) => + loadButton.Click += (s, e) =>UiThread.RunOnIdle(() => { - UiThread.RunOnIdle(() => - { - LoadFilamentWizard.Start(printer, theme, extruderIndex, false); - }); - }; + DialogWindow.Show( + new LoadFilamentWizard(printer, extruderIndex, showAlreadyLoadedButton: false)); + }); + loadUnloadButtonRow.AddChild(loadButton); var unloadButton = theme.CreateDialogButton("Unload".Localize()); unloadButton.ToolTipText = "Unload filament".Localize(); - unloadButton.Click += (s, e) => + unloadButton.Click += (s, e) => UiThread.RunOnIdle(() => { - UiThread.RunOnIdle(() => - { - UnloadFilamentWizard.Start(printer, theme, extruderIndex); - }); - }; + DialogWindow.Show(new UnloadFilamentWizard(printer, extruderIndex)); + }); loadUnloadButtonRow.AddChild(unloadButton); this.AddChild(new SettingsItem("Filament".Localize(), loadUnloadButtonRow, theme, enforceGutter: false)); diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index f2f7c7d2f..427afaa72 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -1630,7 +1630,7 @@ namespace MatterHackers.MatterControl { UiThread.RunOnIdle(() => { - ProbeCalibrationWizard.Start(printer, theme); + DialogWindow.Show(new ProbeCalibrationWizard(printer)); }); return true; } @@ -1640,7 +1640,7 @@ namespace MatterHackers.MatterControl { UiThread.RunOnIdle(() => { - PrintLevelingWizard.Start(printer, theme); + DialogWindow.Show(new PrintLevelingWizard(printer)); }); return true; } @@ -1650,7 +1650,8 @@ namespace MatterHackers.MatterControl { UiThread.RunOnIdle(() => { - LoadFilamentWizard.Start(printer, theme, 0, true); + DialogWindow.Show( + new LoadFilamentWizard(printer, extruderIndex: 0, showAlreadyLoadedButton: true)); }); return true; } @@ -1660,7 +1661,8 @@ namespace MatterHackers.MatterControl { UiThread.RunOnIdle(() => { - LoadFilamentWizard.Start(printer, theme, 1, true); + DialogWindow.Show( + new LoadFilamentWizard(printer, extruderIndex: 1, showAlreadyLoadedButton: true)); }); return true; } diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/LoadFilamentWizard.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/LoadFilamentWizard.cs index dfbe9b3b3..d1a5bdaf5 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/LoadFilamentWizard.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/LoadFilamentWizard.cs @@ -53,18 +53,12 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling this.showAlreadyLoadedButton = showAlreadyLoadedButton; this.WindowTitle = $"{ApplicationController.Instance.ProductName} - " + "Load Filament Wizard".Localize(); + // Initialize - store startup temp and extruder index + this.TemperatureAtStart = printer.Connection.GetTargetHotendTemperature(extruderIndex); + this.extruderIndex = extruderIndex; + pages = this.GetPages(); pages.MoveNext(); - - TemperatureAtStart = printer.Connection.GetTargetHotendTemperature(extruderIndex); - this.extruderIndex = extruderIndex; - } - - public static void Start(PrinterConfig printer, ThemeConfig theme, int extruderIndex, bool showAlreadyLoadedButton) - { - var loadFilamentWizard = new LoadFilamentWizard(printer, extruderIndex, showAlreadyLoadedButton); - - DialogWindow.Show(loadFilamentWizard.CurrentPage); } public override void Dispose() @@ -392,7 +386,9 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling loadFilament2Button.Click += (s, e) => { loadFilament2Button.Parents().First().Close(); - LoadFilamentWizard.Start(printer, theme, 1, true); + + DialogWindow.Show( + new LoadFilamentWizard(printer, extruderIndex: 1, showAlreadyLoadedButton: true)); }; theme.ApplyPrimaryActionStyle(loadFilament2Button); diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/NozzleCalibrationWizard.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/NozzleCalibrationWizard.cs index 081ea7c4c..78cbf7435 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/NozzleCalibrationWizard.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/NozzleCalibrationWizard.cs @@ -53,13 +53,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling return UsingZProbe(printer) && !printer.Settings.GetValue(SettingsKey.probe_has_been_calibrated); } - public static void Start(PrinterConfig printer, ThemeConfig theme) - { - var nozzleWizard = new NozzleCalibrationWizard(printer); - - DialogWindow.Show(nozzleWizard.CurrentPage); - } - public override void Dispose() { } diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs index 4da264648..7a4ad9597 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/PrintLevelingWizard.cs @@ -41,19 +41,18 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling { private LevelingPlan levelingPlan; - public PrintLevelingWizard(LevelingPlan levelingPlan, PrinterConfig printer) + public PrintLevelingWizard(PrinterConfig printer) : base(printer) { - this.levelingPlan = levelingPlan; this.WindowTitle = string.Format("{0} - {1}", ApplicationController.Instance.ProductName, "Print Leveling Wizard".Localize()); + this.Initialize(); + pages = this.GetPages(); pages.MoveNext(); } - public bool WindowHasBeenClosed { get; private set; } - - public static void Start(PrinterConfig printer, ThemeConfig theme) + private void Initialize() { // turn off print leveling printer.Connection.AllowLeveling = false; @@ -69,8 +68,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling printer.Connection.QueueLine("T0"); - LevelingPlan levelingPlan; - switch (levelingData.LevelingSystem) { case LevelingSystem.Probe3Points: @@ -108,12 +105,10 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling default: throw new NotImplementedException(); } - - var levelingWizard = new PrintLevelingWizard(levelingPlan, printer); - - DialogWindow.Show(levelingWizard.CurrentPage); } + public bool WindowHasBeenClosed { get; private set; } + public override void Dispose() { // If leveling was on when we started, make sure it is on when we are done. diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ProbeCalibrationWizard.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ProbeCalibrationWizard.cs index 56f46bcd4..6ae7f9752 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ProbeCalibrationWizard.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/ProbeCalibrationWizard.cs @@ -43,6 +43,9 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling { this.WindowTitle = $"{ApplicationController.Instance.ProductName} - " + "Probe Calibration Wizard".Localize(); + // Initialize - turn off print leveling + printer.Connection.AllowLeveling = false; + pages = this.GetPages(); pages.MoveNext(); } @@ -53,16 +56,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling return UsingZProbe(printer) && !printer.Settings.GetValue(SettingsKey.probe_has_been_calibrated); } - public static void Start(PrinterConfig printer, ThemeConfig theme) - { - // turn off print leveling - printer.Connection.AllowLeveling = false; - - var probeWizard = new ProbeCalibrationWizard(printer); - - DialogWindow.Show(probeWizard.CurrentPage); - } - public override void Dispose() { // If leveling was on when we started, make sure it is on when we are done. diff --git a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/UnloadFilamentWizard.cs b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/UnloadFilamentWizard.cs index 9a3fbc662..cb9ba671a 100644 --- a/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/UnloadFilamentWizard.cs +++ b/MatterControlLib/ConfigurationPage/PrintLeveling/SetupWizards/UnloadFilamentWizard.cs @@ -48,19 +48,10 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling : base(printer) { this.WindowTitle = $"{ApplicationController.Instance.ProductName} - " + "Unload Filament Wizard".Localize(); + this.extruderIndex = extruderIndex; pages = this.GetPages(); pages.MoveNext(); - - this.extruderIndex = extruderIndex; - } - - public static void Start(PrinterConfig printer, ThemeConfig theme, int extruderIndex) - { - // turn off print leveling - var unloadWizard = new UnloadFilamentWizard(printer, extruderIndex); - - DialogWindow.Show(unloadWizard.CurrentPage); } public override void Dispose() @@ -239,7 +230,9 @@ namespace MatterHackers.MatterControl.ConfigurationPage.PrintLeveling loadFilamentButton.Click += (s, e) => { loadFilamentButton.Parents().First().Close(); - LoadFilamentWizard.Start(printer, theme, extruderIndex, false); + + DialogWindow.Show( + new LoadFilamentWizard(printer, extruderIndex, showAlreadyLoadedButton: false)); }; theme.ApplyPrimaryActionStyle(loadFilamentButton); diff --git a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs index 5f567c912..474993943 100644 --- a/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs +++ b/MatterControlLib/PartPreviewWindow/PrinterTabPage.cs @@ -267,14 +267,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow Margin = new BorderDouble(10, 10, 0, 15) }; - unloadFilamentButton.Click += (s, e2) => + unloadFilamentButton.Click += (s, e2) => UiThread.RunOnIdle(() => { - UiThread.RunOnIdle(() => - { - unloadFilamentButton.Parents().First().Close(); - UnloadFilamentWizard.Start(printer, theme, 0); - }); - }; + unloadFilamentButton.Parents().First().Close(); + DialogWindow.Show(new UnloadFilamentWizard(printer, extruderIndex: 0)); + }); theme.ApplyPrimaryActionStyle(unloadFilamentButton); diff --git a/MatterControlLib/PrinterControls/ControlWidgets/CalibrationControls.cs b/MatterControlLib/PrinterControls/ControlWidgets/CalibrationControls.cs index bc170f5ce..505d69a20 100644 --- a/MatterControlLib/PrinterControls/ControlWidgets/CalibrationControls.cs +++ b/MatterControlLib/PrinterControls/ControlWidgets/CalibrationControls.cs @@ -72,7 +72,7 @@ namespace MatterHackers.MatterControl.PrinterControls { UiThread.RunOnIdle(() => { - PrintLevelingWizard.Start(printer, theme); + DialogWindow.Show(new PrintLevelingWizard(printer)); }); }; settingsRow.AddChild(runWizardButton); @@ -117,7 +117,7 @@ namespace MatterHackers.MatterControl.PrinterControls }; runCalibrateProbeButton.Click += (s, e) => UiThread.RunOnIdle(() => { - ProbeCalibrationWizard.Start(printer, theme); + DialogWindow.Show(new ProbeCalibrationWizard(printer)); }); settingsRow.BorderColor = Color.Transparent; @@ -141,7 +141,7 @@ namespace MatterHackers.MatterControl.PrinterControls calibrateButton.Click += (s, e) => UiThread.RunOnIdle(() => { - NozzleCalibrationWizard.Start(printer, theme); + DialogWindow.Show(new NozzleCalibrationWizard(printer)); }); settingsRow.BorderColor = Color.Transparent; diff --git a/MatterControlLib/SetupWizard/DialogWindow.cs b/MatterControlLib/SetupWizard/DialogWindow.cs index 3ba79cbc0..dc3729580 100644 --- a/MatterControlLib/SetupWizard/DialogWindow.cs +++ b/MatterControlLib/SetupWizard/DialogWindow.cs @@ -84,6 +84,28 @@ namespace MatterHackers.MatterControl return wizardWindow; } + public static DialogWindow Show(ISetupWizard setupWizard) + { + DialogWindow wizardWindow = GetWindow(setupWizard.GetType()); + wizardWindow.Title = setupWizard.WindowTitle; + + SetSizeAndShow(wizardWindow, setupWizard.CurrentPage); + + wizardWindow.ChangeToPage(setupWizard.CurrentPage); + + EventHandler windowClosed = null; + + windowClosed = (s, e) => + { + setupWizard.Dispose(); + wizardWindow.Closed -= windowClosed; + }; + + wizardWindow.Closed += windowClosed; + + return wizardWindow; + } + // Allow the WizardPage MinimumSize to override our MinimumSize public override Vector2 MinimumSize {