From bbb27ea25c9b274d9fe4a7d09c009bbf548d6679 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Fri, 21 Dec 2018 18:06:25 -0800 Subject: [PATCH] Added in a all on and all off temp control --- .../ControlWidgets/TemperatureControls.cs | 87 +++++++++++++++++++ Submodules/MatterSlice | 2 +- Submodules/agg-sharp | 2 +- 3 files changed, 89 insertions(+), 2 deletions(-) diff --git a/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs b/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs index ab6d374b0..961669963 100644 --- a/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs +++ b/MatterControlLib/PrinterControls/ControlWidgets/TemperatureControls.cs @@ -34,6 +34,7 @@ using MatterHackers.Agg.UI; using MatterHackers.Localizations; using MatterHackers.MatterControl.ActionBar; using MatterHackers.MatterControl.CustomWidgets; +using MatterHackers.MatterControl.PrinterCommunication; using MatterHackers.MatterControl.SlicerConfiguration; namespace MatterHackers.MatterControl.PrinterControls @@ -41,6 +42,8 @@ namespace MatterHackers.MatterControl.PrinterControls public class TemperatureControls : FlowLayoutWidget { private PrinterConfig printer; + private TextButton preHeatButton; + private TextButton offButton; private TemperatureControls(PrinterConfig printer, ThemeConfig theme) : base(FlowDirection.TopToBottom) @@ -50,6 +53,8 @@ namespace MatterHackers.MatterControl.PrinterControls this.printer = printer; int hotendCount = printer.Settings.Helpers.NumberOfHotends(); + + // add in the hotend controls for (int extruderIndex = 0; extruderIndex < hotendCount; extruderIndex++) { var settingsRow = new SettingsRow( @@ -73,11 +78,93 @@ namespace MatterHackers.MatterControl.PrinterControls this.AddChild(settingsRow); } + + // add in the all heaters section + var heatersRow = new SettingsRow( + "All Heaters".Localize(), + null, + theme); + + this.AddChild(heatersRow); + var container = new FlowLayoutWidget(); + heatersRow.AddChild(container); + + preHeatButton = new TextButton("Preheat".Localize(), theme) + { + BackgroundColor = theme.MinimalShade, + Margin = new BorderDouble(right: 10) + }; + container.AddChild(preHeatButton); + preHeatButton.Click += (s, e) => + { + // turn on the bed + printer.Connection.TargetBedTemperature = printer.Settings.GetValue(SettingsKey.bed_temperature); + for (int extruderIndex = 0; extruderIndex < hotendCount; extruderIndex++) + { + printer.Connection.SetTargetHotendTemperature(extruderIndex, printer.Settings.Helpers.ExtruderTemperature(extruderIndex)); + } + printer.Connection.TurnOffBedAndExtruders(PrinterCommunication.TurnOff.AfterDelay); + }; + + offButton = new TextButton("Off".Localize(), theme) + { + BackgroundColor = theme.MinimalShade, + }; + container.AddChild(offButton); + offButton.Click += (s, e) => + { + printer.Connection.TurnOffBedAndExtruders(PrinterCommunication.TurnOff.Now); + }; + + // Register listeners + printer.Connection.CommunicationStateChanged += onPrinterStatusChanged; + printer.Connection.EnableChanged += onPrinterStatusChanged; + SetVisibleControls(); } public static SectionWidget CreateSection(PrinterConfig printer, ThemeConfig theme) { return new SectionWidget("Temperature".Localize(), new TemperatureControls(printer, theme), theme); } + + public override void OnClosed(EventArgs e) + { + // Unregister listeners + printer.Connection.CommunicationStateChanged -= onPrinterStatusChanged; + printer.Connection.EnableChanged -= onPrinterStatusChanged; + + base.OnClosed(e); + } + + private void onPrinterStatusChanged(object sender, EventArgs e) + { + SetVisibleControls(); + UiThread.RunOnIdle(this.Invalidate); + } + + private void SetVisibleControls() + { + if (!printer.Settings.PrinterSelected) + { + offButton?.SetEnabled(false); + preHeatButton?.SetEnabled(false); + } + else // we at least have a printer selected + { + switch (printer.Connection.CommunicationState) + { + case CommunicationStates.FinishedPrint: + case CommunicationStates.Connected: + offButton?.SetEnabled(true); + preHeatButton?.SetEnabled(true); + break; + + default: + offButton?.SetEnabled(false); + preHeatButton?.SetEnabled(false); + break; + } + } + } } } \ No newline at end of file diff --git a/Submodules/MatterSlice b/Submodules/MatterSlice index 1f48b1dc6..9aea8697f 160000 --- a/Submodules/MatterSlice +++ b/Submodules/MatterSlice @@ -1 +1 @@ -Subproject commit 1f48b1dc668f730bb7e72cd1b51bd90f704370ba +Subproject commit 9aea8697ffab56c39b9c7ce009fc8e16faebc533 diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 9ae928323..738646901 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 9ae9283237f48fd4f4fe3ac050deb6575e598832 +Subproject commit 7386469011a90aa1724cbbbb97258a6f5e5fd296