From 2d2e80c3fd61baca8d05e9175efd68f34115388d Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 4 Jun 2024 11:16:50 -0300 Subject: [PATCH] panels: allow to call them without name --- ks_includes/screen_panel.py | 8 +++++--- panels/base_panel.py | 3 --- panels/bed_level.py | 1 + panels/bed_mesh.py | 1 + panels/camera.py | 1 + panels/console.py | 1 + panels/example.py | 1 + panels/exclude.py | 1 + panels/extrude.py | 3 +-- panels/fan.py | 1 + panels/fine_tune.py | 1 + panels/gcode_macros.py | 1 + panels/gcodes.py | 1 + panels/input_shaper.py | 1 + panels/job_status.py | 14 +++++++------- panels/led.py | 1 + panels/limits.py | 1 + panels/move.py | 1 + panels/network.py | 1 + panels/notifications.py | 1 + panels/pins.py | 1 + panels/power.py | 1 + panels/printer_select.py | 1 + panels/retraction.py | 1 + panels/settings.py | 1 + panels/shutdown.py | 1 + panels/spoolman.py | 1 + panels/system.py | 1 + panels/temperature.py | 1 + panels/updater.py | 1 + panels/zcalibrate.py | 1 + screen.py | 16 ++++++++-------- 32 files changed, 48 insertions(+), 23 deletions(-) diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index b1a81f737..1ff4dc265 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -59,10 +59,12 @@ def get_file_image(self, filename, width=None, height=None, small=False): return None def menu_item_clicked(self, widget, item): + panel_args = {} + if 'name' in item: + panel_args['title'] = item['name'] if 'extra' in item: - self._screen.show_panel(item['panel'], item['name'], extra=item['extra']) - return - self._screen.show_panel(item['panel'], item['name']) + panel_args['extra'] = item['extra'] + self._screen.show_panel(item['panel'], **panel_args) def load_menu(self, widget, name, title=None): logging.info(f"loading menu {name}") diff --git a/panels/base_panel.py b/panels/base_panel.py index b767b9bf6..f3a1aa7f4 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -35,9 +35,7 @@ def __init__(self, screen, title=None): self.control['estop'].connect("clicked", self.emergency_stop) self.control['estop'].set_no_show_all(True) self.shutdown = { - "name": None, "panel": "shutdown", - "icon": "shutdown", } self.control['shutdown'] = self._gtk.Button('shutdown', scale=abscale) self.control['shutdown'].connect("clicked", self.menu_item_clicked, self.shutdown) @@ -47,7 +45,6 @@ def __init__(self, screen, title=None): self.control['printer_select'].set_no_show_all(True) self.shorcut = { - "name": "Macros", "panel": "gcode_macros", "icon": "custom-script", } diff --git a/panels/bed_level.py b/panels/bed_level.py index 2666ac621..9820b8890 100644 --- a/panels/bed_level.py +++ b/panels/bed_level.py @@ -33,6 +33,7 @@ def find_closest(screws, point, max_distance): class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Bed Level") super().__init__(screen, title) self.screw_positions = {} self.screws = [] diff --git a/panels/bed_mesh.py b/panels/bed_mesh.py index a0039e920..ee13015b3 100644 --- a/panels/bed_mesh.py +++ b/panels/bed_mesh.py @@ -12,6 +12,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Bed Mesh") super().__init__(screen, title) self.show_create = False self.active_mesh = None diff --git a/panels/camera.py b/panels/camera.py index 0d3696f17..e1e8bd65c 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -10,6 +10,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Camera") super().__init__(screen, title) self.mpv = None box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) diff --git a/panels/console.py b/panels/console.py index f026564c0..0dbdb9d48 100644 --- a/panels/console.py +++ b/panels/console.py @@ -19,6 +19,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Console") super().__init__(screen, title) self.autoscroll = True self.hidetemps = True diff --git a/panels/example.py b/panels/example.py index 5a2bb98db..3d83eada4 100644 --- a/panels/example.py +++ b/panels/example.py @@ -7,6 +7,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Example") super().__init__(screen, title) # Create gtk items here diff --git a/panels/exclude.py b/panels/exclude.py index 040c8f161..93c89acd8 100644 --- a/panels/exclude.py +++ b/panels/exclude.py @@ -9,6 +9,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Exclude Object") super().__init__(screen, title) self._screen = screen self.object_list = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, hexpand=True, vexpand=True) diff --git a/panels/extrude.py b/panels/extrude.py index 1f0939f1e..255a851e6 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -12,6 +12,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Extrude") super().__init__(screen, title) self.current_extruder = self._printer.get_stat("toolhead", "extruder") macros = self._printer.get_config_section_list("gcode_macro ") @@ -47,11 +48,9 @@ def __init__(self, screen, title): self.buttons['unload'].connect("clicked", self.load_unload, "-") self.buttons['retract'].connect("clicked", self.extrude, "-") self.buttons['temperature'].connect("clicked", self.menu_item_clicked, { - "name": "Temperature", "panel": "temperature" }) self.buttons['spoolman'].connect("clicked", self.menu_item_clicked, { - "name": "Spoolman", "panel": "spoolman" }) diff --git a/panels/fan.py b/panels/fan.py index ec1671701..8e1abe321 100644 --- a/panels/fan.py +++ b/panels/fan.py @@ -11,6 +11,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Fan") super().__init__(screen, title) self.fan_speed = {} self.devices = {} diff --git a/panels/fine_tune.py b/panels/fine_tune.py index 9f4641e61..7d48f2c3a 100644 --- a/panels/fine_tune.py +++ b/panels/fine_tune.py @@ -19,6 +19,7 @@ class Panel(ScreenPanel): z_offset = 0.0 def __init__(self, screen, title): + title = title or _("Fine Tuning") super().__init__(screen, title) if self.ks_printer_cfg is not None: bs = self.ks_printer_cfg.get("z_babystep_values", "") diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index 0aa94b271..9465d6459 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -9,6 +9,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Macros") super().__init__(screen, title) self.sort_reverse = False self.sort_btn = self._gtk.Button("arrow-up", _("Name"), "color1", self.bts, Gtk.PositionType.RIGHT, 1) diff --git a/panels/gcodes.py b/panels/gcodes.py index 07e482466..1ce9fcf6b 100644 --- a/panels/gcodes.py +++ b/panels/gcodes.py @@ -21,6 +21,7 @@ def format_label(widget): class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or (_("Print") if self._printer.extrudercount > 0 else _("Gcodes")) super().__init__(screen, title) sortdir = self._config.get_main_config().get("print_sort_dir", "name_asc") sortdir = sortdir.split('_') diff --git a/panels/input_shaper.py b/panels/input_shaper.py index e152d5ad3..e5c3bd7d1 100644 --- a/panels/input_shaper.py +++ b/panels/input_shaper.py @@ -16,6 +16,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Input Shaper") super().__init__(screen, title) self.freq_xy_adj = {} self.freq_xy_combo = {} diff --git a/panels/job_status.py b/panels/job_status.py index b7341d337..a4149ede3 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -14,6 +14,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or (_("Printing") if self._printer.extrudercount > 0 else _("Job Status")) super().__init__(screen, title) self.grid = Gtk.Grid(column_homogeneous=True) self.pos_z = 0.0 @@ -143,7 +144,7 @@ def create_status_grid(self, widget=None): } for button in buttons: buttons[button].set_halign(Gtk.Align.START) - buttons['fan'].connect("clicked", self.menu_item_clicked, {"panel": "fan", "name": _("Fan")}) + buttons['fan'].connect("clicked", self.menu_item_clicked, {"panel": "fan"}) self.buttons.update(buttons) self.buttons['extruder'] = {} @@ -153,7 +154,7 @@ def create_status_grid(self, widget=None): 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, - {"panel": "temperature", "name": _("Temperature"), + {"panel": "temperature", 'extra': extruder}) self.buttons['extruder'][extruder].set_halign(Gtk.Align.START) @@ -181,7 +182,7 @@ def create_status_grid(self, widget=None): self.buttons['heater'][dev].set_label(self.labels[dev].get_text()) self.buttons['heater'][dev].connect("clicked", self.menu_item_clicked, - {"panel": "temperature", "name": _("Temperature"), "extra": dev}) + {"panel": "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 @@ -205,8 +206,7 @@ def create_status_grid(self, widget=None): self.labels[device] = Gtk.Label(label="-") self.buttons['heater'][device].set_label(self.labels[device].get_text()) self.buttons['heater'][device].connect("clicked", self.menu_item_clicked, - {"panel": "temperature", - "name": _("Temperature")}) + {"panel": "temperature"}) self.buttons['heater'][device].set_halign(Gtk.Align.START) self.labels['temp_grid'].attach(self.buttons['heater'][device], n, 0, 1, 1) n += 1 @@ -354,7 +354,7 @@ def create_buttons(self): self.buttons['cancel'].connect("clicked", self.cancel) self.buttons['control'].connect("clicked", self._screen._go_to_submenu, "") self.buttons['fine_tune'].connect("clicked", self.menu_item_clicked, { - "panel": "fine_tune", "name": _("Fine Tuning")}) + "panel": "fine_tune"}) self.buttons['menu'].connect("clicked", self.close_panel) self.buttons['pause'].connect("clicked", self.pause) self.buttons['restart'].connect("clicked", self.restart) @@ -430,7 +430,7 @@ def cancel(self, widget): def cancel_confirm(self, dialog, response_id): self._gtk.remove_dialog(dialog) if response_id == Gtk.ResponseType.APPLY: - self.menu_item_clicked(None, {"panel": "exclude", "name": _("Exclude Object")}) + self.menu_item_clicked(None, {"panel": "exclude"}) return if response_id == Gtk.ResponseType.CANCEL: self.enable_button("pause", "cancel") diff --git a/panels/led.py b/panels/led.py index 5b89f447f..ee7d5e592 100644 --- a/panels/led.py +++ b/panels/led.py @@ -11,6 +11,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Leds") super().__init__(screen, title) self.da_size = self._gtk.img_scale * 2 self.preview = Gtk.DrawingArea(width_request=self.da_size, height_request=self.da_size) diff --git a/panels/limits.py b/panels/limits.py index 36da3c295..91501b8c1 100644 --- a/panels/limits.py +++ b/panels/limits.py @@ -9,6 +9,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Limits") super().__init__(screen, title) self.limits = {} self.options = None diff --git a/panels/move.py b/panels/move.py index ca4924311..b7fa3b96c 100644 --- a/panels/move.py +++ b/panels/move.py @@ -13,6 +13,7 @@ class Panel(ScreenPanel): distance = distances[-2] def __init__(self, screen, title): + title = title or _("Move") super().__init__(screen, title) if self.ks_printer_cfg is not None: diff --git a/panels/network.py b/panels/network.py index 84b1d2a40..395a01bfc 100644 --- a/panels/network.py +++ b/panels/network.py @@ -12,6 +12,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Network") super().__init__(screen, title) try: self.sdbus_nm = SdbusNm(self.popup_callback) diff --git a/panels/notifications.py b/panels/notifications.py index 38a40e0cd..7785e2f71 100644 --- a/panels/notifications.py +++ b/panels/notifications.py @@ -19,6 +19,7 @@ def remove_newlines(msg: str) -> str: class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Notifications") super().__init__(screen, title) self.empty = _("Notification log empty") self.tb = Gtk.TextBuffer(text=self.empty) diff --git a/panels/pins.py b/panels/pins.py index 494662d00..0e2cef3b8 100644 --- a/panels/pins.py +++ b/panels/pins.py @@ -10,6 +10,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Pins") super().__init__(screen, title) self.devices = {} # Create a grid for all devices diff --git a/panels/power.py b/panels/power.py index d550c06c3..a1c9255b3 100644 --- a/panels/power.py +++ b/panels/power.py @@ -8,6 +8,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Power") super().__init__(screen, title) self.devices = {} diff --git a/panels/printer_select.py b/panels/printer_select.py index 35ae2def2..cce2c4e9b 100644 --- a/panels/printer_select.py +++ b/panels/printer_select.py @@ -10,6 +10,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Printer Select") super().__init__(screen, title) printers = self._config.get_printers() diff --git a/panels/retraction.py b/panels/retraction.py index 194ca1448..ddefc43bb 100644 --- a/panels/retraction.py +++ b/panels/retraction.py @@ -9,6 +9,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Retraction") super().__init__(screen, title) self.options = None self.grid = Gtk.Grid() diff --git a/panels/settings.py b/panels/settings.py index 54b955223..d05d661dd 100644 --- a/panels/settings.py +++ b/panels/settings.py @@ -7,6 +7,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Settings") super().__init__(screen, title) self.printers = self.settings = self.langs = {} self.menu = ['settings_menu'] diff --git a/panels/shutdown.py b/panels/shutdown.py index 524c6bdaf..ca02bc422 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -9,6 +9,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Shutdown") super().__init__(screen, title) estop = self._gtk.Button("emergency", _("Emergency Stop"), "color2") diff --git a/panels/spoolman.py b/panels/spoolman.py index e93682f32..1174b7207 100644 --- a/panels/spoolman.py +++ b/panels/spoolman.py @@ -148,6 +148,7 @@ def _on_material_filter_changed(self, sender): self._filterable.refilter() def __init__(self, screen, title): + title = title or "Spoolman" super().__init__(screen, title) self.apiClient = screen.apiclient if self._config.get_main_config().getboolean("24htime", True): diff --git a/panels/system.py b/panels/system.py index 747d55b38..a5a42ed23 100644 --- a/panels/system.py +++ b/panels/system.py @@ -8,6 +8,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("System") super().__init__(screen, title) self.current_row = 0 self.mem_multiplier = None diff --git a/panels/temperature.py b/panels/temperature.py index 8c2fbaf66..5429c8d1b 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -15,6 +15,7 @@ class Panel(ScreenPanel): active_heater = None def __init__(self, screen, title, extra=None): + title = title or _("Temperature") super().__init__(screen, title) self.left_panel = None self.devices = {} diff --git a/panels/updater.py b/panels/updater.py index 3ddcff5c2..cf3b4cde6 100644 --- a/panels/updater.py +++ b/panels/updater.py @@ -10,6 +10,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): + title = title or _("Update") super().__init__(screen, title) self.labels = {} self.update_status = None diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py index 8ad1ea122..26ab3a36d 100644 --- a/panels/zcalibrate.py +++ b/panels/zcalibrate.py @@ -12,6 +12,7 @@ class Panel(ScreenPanel): distance = distances[-2] def __init__(self, screen, title): + title = title or _("Z Calibrate") super().__init__(screen, title) self.mesh_min = [] self.mesh_max = [] diff --git a/screen.py b/screen.py index 2007c3f10..344540a6b 100755 --- a/screen.py +++ b/screen.py @@ -304,7 +304,7 @@ def _load_panel(panel): raise FileNotFoundError(os.strerror(2), "\n" + panel_path) return import_module(f"panels.{panel}") - def show_panel(self, panel, title, remove_all=False, panel_name=None, **kwargs): + def show_panel(self, panel, title=None, remove_all=False, panel_name=None, **kwargs): if panel_name is None: panel_name = panel try: @@ -700,7 +700,7 @@ def set_screenblanking_timeout(self, time): def show_printer_select(self, widget=None): self.base_panel.show_heaters(False) - self.show_panel("printer_select", _("Printer Select"), remove_all=True) + self.show_panel("printer_select", remove_all=True) def websocket_connection_cancel(self): self.printer_initializing( @@ -749,12 +749,12 @@ def state_error(self): def state_paused(self): self.state_printing() if self._config.get_main_config().getboolean("auto_open_extrude", fallback=True): - self.show_panel("extrude", _("Extrude")) + self.show_panel("extrude") def state_printing(self): for dialog in self.dialogs: self.gtk.remove_dialog(dialog) - self.show_panel("job_status", _("Printing"), remove_all=True) + self.show_panel("job_status", remove_all=True) def state_ready(self, wait=True): # Do not return to main menu if completing a job, timeouts/user input will return @@ -765,7 +765,7 @@ def state_ready(self, wait=True): self.printer.state = "not ready" return self.files.refresh_files() - self.show_panel("main_menu", None, remove_all=True, items=self._config.get_menu_items("__main")) + self.show_panel("main_menu", remove_all=True, items=self._config.get_menu_items("__main")) def state_startup(self): self.printer_initializing(_("Klipper is attempting to start")) @@ -822,9 +822,9 @@ def _websocket_callback(self, action, data): elif action == "notify_status_update" and self.printer.state != "shutdown": self.printer.process_update(data) if 'manual_probe' in data and data['manual_probe']['is_active'] and 'zcalibrate' not in self._cur_panels: - self.show_panel("zcalibrate", _('Z Calibrate')) + self.show_panel("zcalibrate") if "screws_tilt_adjust" in data and 'bed_level' not in self._cur_panels: - self.show_panel("bed_level", _('Bed Level')) + self.show_panel("bed_level") elif action == "notify_filelist_changed": if self.files is not None: self.files.process_update(data) @@ -917,7 +917,7 @@ def enable_widget(self, *args): def printer_initializing(self, msg, go_to_splash=False): if 'splash_screen' not in self.panels or go_to_splash: - self.show_panel("splash_screen", None, remove_all=True) + self.show_panel("splash_screen", remove_all=True) self.panels['splash_screen'].update_text(msg) self.log_notification(msg, 0)