temperature: select the device that was selected in job_status (#1025)

This commit is contained in:
Alfredo Monclus 2023-06-30 17:43:00 -03:00 committed by GitHub
parent 4f86de8c80
commit b5abd3d7b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 19 deletions

View File

@ -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}")

View File

@ -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

View File

@ -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):

View File

@ -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: