From b5abd3d7b967212e278df569666c3e0bd02865e9 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 30 Jun 2023 17:43:00 -0300 Subject: [PATCH] temperature: select the device that was selected in job_status (#1025) --- ks_includes/screen_panel.py | 7 +++++-- panels/job_status.py | 10 ++++++---- panels/temperature.py | 21 ++++++++------------- screen.py | 3 +++ 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index 259e77b5..989256aa 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -60,8 +60,11 @@ class ScreenPanel: return self._gtk.PixbufFromHttp(loc[1], width, height) return None - def menu_item_clicked(self, widget, panel, item): - self._screen.show_panel(panel, item['panel'], item['name'], 1, False) + def menu_item_clicked(self, widget, panel_type, item): + if 'extra' in item: + self._screen.show_panel(panel_type, item['panel'], item['name'], 1, False, extra=item['extra']) + return + self._screen.show_panel(panel_type, item['panel'], item['name'], 1, False) def load_menu(self, widget, name, title=None): logging.info(f"loading menu {name}") diff --git a/panels/job_status.py b/panels/job_status.py index 425013b7..8054045b 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -160,15 +160,16 @@ class JobStatusPanel(ScreenPanel): n = 0 self.buttons['extruder'] = {} if self._printer.get_tools(): + self.current_extruder = self._printer.get_stat("toolhead", "extruder") for i, extruder in enumerate(self._printer.get_tools()): self.labels[extruder] = Gtk.Label("-") self.buttons['extruder'][extruder] = self._gtk.Button(f"extruder-{i}", "", None, self.bts, Gtk.PositionType.LEFT, 1) self.buttons['extruder'][extruder].set_label(self.labels[extruder].get_text()) self.buttons['extruder'][extruder].connect("clicked", self.menu_item_clicked, "temperature", - {"panel": "temperature", "name": _("Temperature")}) + {"panel": "temperature", "name": _("Temperature"), + 'extra': self.current_extruder}) self.buttons['extruder'][extruder].set_halign(Gtk.Align.START) - self.current_extruder = self._printer.get_stat("toolhead", "extruder") self.labels['temp_grid'].attach(self.buttons['extruder'][self.current_extruder], n, 0, 1, 1) n += 1 else: @@ -179,7 +180,8 @@ class JobStatusPanel(ScreenPanel): self.labels['heater_bed'] = Gtk.Label("-") self.buttons['heater']['heater_bed'].set_label(self.labels['heater_bed'].get_text()) self.buttons['heater']['heater_bed'].connect("clicked", self.menu_item_clicked, "temperature", - {"panel": "temperature", "name": _("Temperature")}) + {"panel": "temperature", "name": _("Temperature"), + 'extra': 'heater_bed'}) self.buttons['heater']['heater_bed'].set_halign(Gtk.Align.START) self.labels['temp_grid'].attach(self.buttons['heater']['heater_bed'], n, 0, 1, 1) n += 1 @@ -191,7 +193,7 @@ class JobStatusPanel(ScreenPanel): self.labels[dev] = Gtk.Label("-") self.buttons['heater'][dev].set_label(self.labels[dev].get_text()) self.buttons['heater'][dev].connect("clicked", self.menu_item_clicked, "temperature", - {"panel": "temperature", "name": _("Temperature")}) + {"panel": "temperature", "name": _("Temperature"), "extra": dev}) self.buttons['heater'][dev].set_halign(Gtk.Align.START) self.labels['temp_grid'].attach(self.buttons['heater'][dev], n, 0, 1, 1) n += 1 diff --git a/panels/temperature.py b/panels/temperature.py index 675d2f51..8e84d7e2 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -11,15 +11,15 @@ from ks_includes.widgets.heatergraph import HeaterGraph from ks_includes.widgets.keypad import Keypad -def create_panel(*args): - return TemperaturePanel(*args) +def create_panel(*args, **kwargs): + return TemperaturePanel(*args, **kwargs) class TemperaturePanel(ScreenPanel): graph_update = None active_heater = None - def __init__(self, screen, title): + def __init__(self, screen, title, extra=None): super().__init__(screen, title) self.popover_timeout = None self.left_panel = None @@ -34,18 +34,13 @@ class TemperaturePanel(ScreenPanel): self.grid.attach(self.create_left_panel(), 0, 0, 1, 1) # When printing start in temp_delta mode and only select tools - state = self._printer.state - logging.info(state) selection = [] - if state not in ["printing", "paused"]: - for extruder in self._printer.get_tools(): - selection.append(extruder) + if self._printer.state not in ["printing", "paused"]: + selection.extend(iter(self._printer.get_tools())) self.show_preheat = True selection.extend(self._printer.get_heaters()) - else: - current_extruder = self._printer.get_stat("toolhead", "extruder") - if current_extruder: - selection.append(current_extruder) + elif extra: + selection.append(extra) # Select heaters for h in selection: @@ -224,7 +219,7 @@ class TemperaturePanel(ScreenPanel): self.active_heaters.append(device) self.devices[device]['name'].get_style_context().add_class("button_active") self.devices[device]['select'].set_label(_("Deselect")) - logging.info(f"Seselecting {device}") + logging.info(f"Selecting {device}") return def set_temperature(self, widget, setting): diff --git a/screen.py b/screen.py index 580b6fe6..d95ee936 100755 --- a/screen.py +++ b/screen.py @@ -293,6 +293,9 @@ class KlipperScreen(Gtk.Window): del self.panels[panel_name] self.show_error_modal(f"Unable to load panel {panel_type}", f"{e}") return + elif 'extra' in kwargs: + logging.info(f"extra: {kwargs['extra']}") + self.panels[panel_name].__init__(self, title, **kwargs) self._cur_panels.append(panel_name) if panel_name in self.panels_reinit: