diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index dbe311b2..4c68fbc1 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -291,6 +291,11 @@ class KlippyGtk: return text def formatTemperatureString(self, temp, target): + if temp is None: + logging.debug("Temp is none") + return + if target is None: + target = 0 if (temp - 2 < target < temp + 2) or round(target, 0) == 0: return str(round(temp, 1)) + "°C" # °C →" return str(round(temp)) + " °C\n(" + str(round(target)) + ")" diff --git a/ks_includes/printer.py b/ks_includes/printer.py index ef900865..6f4a4551 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -19,7 +19,6 @@ class Printer: "shutdown": None } tools = [] - toolcount = 0 extrudercount = 0 tempdevcount = 0 fancount = 0 @@ -38,7 +37,6 @@ class Printer: self.power_devices = None self.state_callbacks = None self.tools = None - self.toolcount = None self.extrudercount = None self.tempdevcount = None self.fancount = None @@ -51,7 +49,6 @@ class Printer: def reinit(self, printer_info, data): logging.debug("Moonraker object status: %s" % data) self.config = data['configfile']['config'] - self.toolcount = 0 self.extrudercount = 0 self.tempdevcount = 0 self.fancount = 0 @@ -69,19 +66,15 @@ class Printer: for x in self.config.keys(): if x[0:8] == "extruder": + self.tools.append(x) + self.tools = sorted(self.tools) + self.extrudercount += 1 if x.startswith('extruder_stepper'): continue - self.devices[x] = { "temperature": 0, "target": 0 } - self.tools.append(x) - self.tools = sorted(self.tools) - self.toolcount += 1 - if "shared_heater" in self.config[x]: - continue - self.extrudercount += 1 if x == 'heater_bed' or x.startswith('heater_generic ') or x.startswith('temperature_sensor ') \ or x.startswith('temperature_fan '): self.devices[x] = { @@ -104,7 +97,6 @@ class Printer: self.process_update(data) logging.info("Klipper version: %s", self.klipper['version']) - logging.info("# Toolcount: %s", str(self.toolcount)) logging.info("# Extruders: %s", str(self.extrudercount)) logging.info("# Temperature devices: %s", str(self.tempdevcount)) logging.info("# Fans: %s", str(self.fancount)) diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index bbed8e8b..11aaef27 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -116,7 +116,7 @@ class ScreenPanel: self.labels[label]['l'].set_text(text) def update_temp(self, dev, temp, target, name=None): - if dev in self.labels: + if dev in self.labels and temp is not None: if name is None: self.labels[dev].set_label(self._gtk.formatTemperatureString(temp, target)) else: diff --git a/panels/extrude.py b/panels/extrude.py index 0b9389a3..c9a48f44 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -49,9 +49,9 @@ class ExtrudePanel(ScreenPanel): limit = 5 for i, extruder in enumerate(self._printer.get_tools()): if self._printer.extrudercount > 1: - self.labels[extruder] = self._gtk.ButtonImage("extruder-%s" % i, _("Tool") + " %s" % str(i)) + self.labels[extruder] = self._gtk.ButtonImage("extruder-%s" % i, "") else: - self.labels[extruder] = self._gtk.ButtonImage("extruder", _("Tool")) + self.labels[extruder] = self._gtk.ButtonImage("extruder", "") self.labels[extruder].connect("clicked", self.change_extruder, extruder) if extruder == self.current_extruder: self.labels[extruder].get_style_context().add_class("button_active") @@ -218,8 +218,10 @@ class ExtrudePanel(ScreenPanel): self.labels["dist" + str(i)].set_active(False) def change_extruder(self, widget, extruder): - if extruder == self.current_extruder: - return + logging.info("Changing extruder to %s", extruder) + for tool in self._printer.get_tools(): + self.labels[tool].get_style_context().remove_class("button_active") + self.labels[extruder].get_style_context().add_class("button_active") self._screen._ws.klippy.gcode_script("T%s" % self._printer.get_tool_number(extruder)) diff --git a/panels/temperature.py b/panels/temperature.py index 431450ae..21c83632 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -27,12 +27,14 @@ class TemperaturePanel(ScreenPanel): # When printing start in temp_delta mode and only select tools state = self._printer.get_state() logging.info(state) + selection = [] + if "extruder" in self._printer.get_tools(): + selection.append("extruder") if state not in ["printing", "paused"]: self.show_preheat = True - selection = self._printer.get_tools() + self._printer.get_heaters() + selection.extend(self._printer.get_heaters()) else: self.show_preheat = False - selection = self._printer.get_tools() # Select heaters for h in selection: