From 3ea0b09863b55742de8d3266082f4e715afae849 Mon Sep 17 00:00:00 2001 From: Julien Kohler Date: Mon, 11 Apr 2022 13:25:07 +0200 Subject: [PATCH] Add possibility to define custom code for cooling (#579) These changes allow to define custom code to be run when using the cooldown preset. Here an example in the configuration: ``` [preheat cooldown] gcode: M107 ``` --- panels/temperature.py | 64 +++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/panels/temperature.py b/panels/temperature.py index 69200e31..35e70251 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -83,9 +83,10 @@ class TemperaturePanel(ScreenPanel): def preheat(self): self.labels["preheat_grid"] = self._gtk.HomogeneousGrid() for i, option in enumerate(self.preheat_options): - self.labels[option] = self._gtk.Button(option, "color%d" % ((i % 4)+1)) - self.labels[option].connect("clicked", self.set_temperature, option) - self.labels['preheat_grid'].attach(self.labels[option], (i % 2), int(i/2), 1, 1) + if option != "cooldown": + self.labels[option] = self._gtk.Button(option, "color%d" % ((i % 4)+1)) + self.labels[option].connect("clicked", self.set_temperature, option) + self.labels['preheat_grid'].attach(self.labels[option], (i % 2), int(i/2), 1, 1) scroll = Gtk.ScrolledWindow() scroll.set_property("overlay-scrolling", False) scroll.set_hexpand(True) @@ -226,35 +227,34 @@ class TemperaturePanel(ScreenPanel): self._screen._ws.klippy.set_heater_temp(" ".join(heater.split(" ")[1:]), 0) logging.info("Setting %s to %d" % (heater, 0)) self._printer.set_dev_stat(heater, "target", 0) - return - - for heater in self.active_heaters: - MAX_TEMP = int(float(self._printer.get_config_section(heater)['max_temp'])) - if heater.startswith('extruder'): - target = self.preheat_options[setting]["extruder"] - if target > 0 and target <= MAX_TEMP: - self._screen._ws.klippy.set_tool_temp(self._printer.get_tool_number(heater), target) - elif heater.startswith('heater_bed'): - target = self.preheat_options[setting]["bed"] - if target > 0 and target <= MAX_TEMP: - self._screen._ws.klippy.set_bed_temp(target) - elif heater.startswith('heater_generic '): - target = self.preheat_options[setting]["heater_generic"] - if target > 0 and target <= MAX_TEMP: - self._screen._ws.klippy.set_heater_temp(" ".join(heater.split(" ")[1:]), target) - elif heater.startswith('temperature_fan '): - target = self.preheat_options[setting]["temperature_fan"] - if target > 0 and target <= MAX_TEMP: - self._screen._ws.klippy.set_temp_fan_temp(" ".join(heater.split(" ")[1:]), target) - else: - logging.info("Unknown heater: %s" % heater) - self._screen.show_popup_message(_("Unknown Heater") + " " + heater) - if target <= MAX_TEMP: - if target > 0: - self._printer.set_dev_stat(heater, "target", int(target)) - logging.info("Setting %s to %d" % (heater, target)) - else: - self._screen.show_popup_message(_("Can't set above the maximum:") + (" %s" % MAX_TEMP)) + else: + for heater in self.active_heaters: + MAX_TEMP = int(float(self._printer.get_config_section(heater)['max_temp'])) + if heater.startswith('extruder'): + target = self.preheat_options[setting]["extruder"] + if target > 0 and target <= MAX_TEMP: + self._screen._ws.klippy.set_tool_temp(self._printer.get_tool_number(heater), target) + elif heater.startswith('heater_bed'): + target = self.preheat_options[setting]["bed"] + if target > 0 and target <= MAX_TEMP: + self._screen._ws.klippy.set_bed_temp(target) + elif heater.startswith('heater_generic '): + target = self.preheat_options[setting]["heater_generic"] + if target > 0 and target <= MAX_TEMP: + self._screen._ws.klippy.set_heater_temp(" ".join(heater.split(" ")[1:]), target) + elif heater.startswith('temperature_fan '): + target = self.preheat_options[setting]["temperature_fan"] + if target > 0 and target <= MAX_TEMP: + self._screen._ws.klippy.set_temp_fan_temp(" ".join(heater.split(" ")[1:]), target) + else: + logging.info("Unknown heater: %s" % heater) + self._screen.show_popup_message(_("Unknown Heater") + " " + heater) + if target <= MAX_TEMP: + if target > 0: + self._printer.set_dev_stat(heater, "target", int(target)) + logging.info("Setting %s to %d" % (heater, target)) + else: + self._screen.show_popup_message(_("Can't set above the maximum:") + (" %s" % MAX_TEMP)) if self.preheat_options[setting]['gcode']: # This small delay is needed to properly update the target if the user configured something above # and then changed the target again using the preheat gcode