From f223332cd8a1e08bc1bf051e719a078b63861438 Mon Sep 17 00:00:00 2001 From: Jordan <31575189+jordanruthe@users.noreply.github.com> Date: Mon, 21 Dec 2020 09:40:26 -0500 Subject: [PATCH] job_status: updates to show active extruder --- ks_includes/printer.py | 1 + panels/job_status.py | 34 ++++++++++++++++++++++++---------- screen.py | 4 +++- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ks_includes/printer.py b/ks_includes/printer.py index 1da9eae7..f9848373 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -31,6 +31,7 @@ class Printer: "target": 0 } self.tools.append(x) + self.tools = sorted(self.tools) if "shared_heater" in self.config[x]: self.toolcount += 1 continue diff --git a/panels/job_status.py b/panels/job_status.py index bb455a9a..9919f8cf 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -93,12 +93,17 @@ class JobStatusPanel(ScreenPanel): self.labels['thumbnail'] = self._gtk.Image("file.svg", False, 1.6, 1.6) - extruder = self._gtk.Image("extruder-1.svg", None, .6, .6) - self.labels['extruder'] = Gtk.Label(label="") - self.labels['extruder'].get_style_context().add_class("printing-info") - extruder_box = Gtk.Box(spacing=0) - extruder_box.add(extruder) - extruder_box.add(self.labels['extruder']) + i = 1 + for extruder in self._printer.get_tools(): + self.labels[extruder + '_box'] = Gtk.Box(spacing=0) + self.labels[extruder] = Gtk.Label(label="") + self.labels[extruder].get_style_context().add_class("printing-info") + if i <= 4: + ext_img = self._gtk.Image("extruder-%s.svg" % i, None, .6, .6) + self.labels[extruder + '_box'].add(ext_img) + self.labels[extruder + '_box'].add(self.labels[extruder]) + i += 1 + heater_bed = self._gtk.Image("bed.svg", None, .6, .6) self.labels['heater_bed'] = Gtk.Label(label="") self.labels['heater_bed'].get_style_context().add_class("printing-info") @@ -106,7 +111,8 @@ class JobStatusPanel(ScreenPanel): heater_bed_box.add(heater_bed) heater_bed_box.add(self.labels['heater_bed']) temp_grid = self._gtk.HomogeneousGrid() - temp_grid.attach(extruder_box, 0, 0, 1, 1) + self.current_extruder = self._printer.get_stat("toolhead","extruder") + temp_grid.attach(self.labels[self.current_extruder + '_box'], 0, 0, 1, 1) temp_grid.attach(heater_bed_box, 1, 0, 1, 1) self.labels['temp_grid'] = temp_grid @@ -352,9 +358,17 @@ class JobStatusPanel(ScreenPanel): ) - if "toolhead" in data and "position" in data["toolhead"]: - self.labels['pos_x'].set_text("X: %.2f" % (data["toolhead"]["position"][0])) - self.labels['pos_y'].set_text("Y: %.2f" % (data["toolhead"]["position"][1])) + if "toolhead" in data: + if "extruder" in data["toolhead"]: + if data["toolhead"]["extruder"] != self.current_extruder: + self.labels['temp_grid'].remove_column(0) + self.labels['temp_grid'].insert_column(0) + self.current_extruder = data["toolhead"]["extruder"] + self.labels['temp_grid'].attach(self.labels[self.current_extruder + '_box'], 0, 0, 1, 1) + self._screen.show_all() + if "position" in data["toolhead"]: + self.labels['pos_x'].set_text("X: %.2f" % (data["toolhead"]["position"][0])) + self.labels['pos_y'].set_text("Y: %.2f" % (data["toolhead"]["position"][1])) if "gcode_move" in data and "gcode_position" in data["gcode_move"]: self.labels['pos_z'].set_text("Z: %.2f" % (data["gcode_move"]["gcode_position"][2])) diff --git a/screen.py b/screen.py index a4f0efb6..7f4cffeb 100644 --- a/screen.py +++ b/screen.py @@ -135,7 +135,6 @@ class KlipperScreen(Gtk.Window): "objects": { "bed_mesh": ["profile_name","mesh_max","mesh_min","probed_matrix"], "configfile": ["config"], - "extruder": ["target","temperature","pressure_advance","smooth_time"], "fan": ["speed"], "gcode_move": ["extrude_factor","gcode_position","homing_origin","speed_factor"], "heater_bed": ["target","temperature"], @@ -146,6 +145,9 @@ class KlipperScreen(Gtk.Window): "webhooks": ["state","state_message"] } } + for extruder in self.printer.get_tools(): + requested_updates['objects'][extruder] = ["target","temperature","pressure_advance","smooth_time"] + self._ws.klippy.object_subscription(requested_updates) def _load_panel(self, panel, *args):