From dbd1474d63c059958009c040fecbe6462921230c Mon Sep 17 00:00:00 2001 From: alfrix Date: Sun, 20 Nov 2022 12:23:56 -0300 Subject: [PATCH] screen_panel: share ks_printer_cfg between panels --- ks_includes/screen_panel.py | 22 ++++++++++++---------- panels/base_panel.py | 2 +- panels/bed_level.py | 8 +++----- panels/extrude.py | 7 +++---- panels/fine_tune.py | 5 ++--- panels/job_status.py | 5 ++--- panels/move.py | 3 +-- panels/splash_screen.py | 15 ++++++--------- panels/zcalibrate.py | 8 +++----- 9 files changed, 33 insertions(+), 42 deletions(-) diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index c69bedd9..5512e48b 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -7,29 +7,31 @@ from gi.repository import Gtk class ScreenPanel: + _screen = None + _config = None + _files = None + _printer = None + _gtk = None + ks_printer_cfg = None def __init__(self, screen, title, back=True): self.menu = None - self._screen = screen - self._config = screen._config - self._files = screen.files - self._printer = screen.printer + ScreenPanel._screen = screen + ScreenPanel._config = screen._config + ScreenPanel._files = screen.files + ScreenPanel._printer = screen.printer + ScreenPanel._gtk = screen.gtk self.labels = {} - self._gtk = screen.gtk self.control = {} self.title = title self.devices = {} self.active_heaters = [] - self.ks_printer_cfg = None - self.layout = Gtk.Layout() - self.layout.set_size(self._screen.width, self._screen.height) - + self.layout.set_size(screen.width, screen.height) self.content = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.content.get_style_context().add_class("content") self.content.set_hexpand(True) self.content.set_vexpand(True) - self._show_heater_power = self._config.get_main_config().getboolean('show_heater_power', False) def emergency_stop(self, widget): diff --git a/panels/base_panel.py b/panels/base_panel.py index ba7fbf96..a872e2ac 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -310,7 +310,7 @@ class BasePanel(ScreenPanel): self.buttons_showing['estop'] = False def set_ks_printer_cfg(self, printer): - self.ks_printer_cfg = self._config.get_printer_config(printer) + ScreenPanel.ks_printer_cfg = self._config.get_printer_config(printer) if self.ks_printer_cfg is not None: self.titlebar_name_type = self.ks_printer_cfg.get("titlebar_name_type", None) titlebar_items = self.ks_printer_cfg.get("titlebar_items", None) diff --git a/panels/bed_level.py b/panels/bed_level.py index a376ca2c..f7c96aab 100644 --- a/panels/bed_level.py +++ b/panels/bed_level.py @@ -103,10 +103,8 @@ class BedLevelPanel(ScreenPanel): self.labels['bm'] = self._gtk.ButtonImage("bed-level-t-m", scale=2.5) valid_positions = True - printer_cfg = self._config.get_printer_config(self._screen.connected_printer) - if printer_cfg is not None: - logging.info(f"printer {printer_cfg}") - screw_positions = printer_cfg.get("screw_positions", "") + if self.ks_printer_cfg is not None: + screw_positions = self.ks_printer_cfg.get("screw_positions", "") screw_positions = [str(i.strip()) for i in screw_positions.split(',')] logging.info(f"Positions: {screw_positions}") for screw in screw_positions: @@ -116,7 +114,7 @@ class BedLevelPanel(ScreenPanel): valid_positions = False if not (3 <= len(screw_positions) <= 8): valid_positions = False - rotation = printer_cfg.getint("screw_rotation", 0) + rotation = self.ks_printer_cfg.getint("screw_rotation", 0) logging.info(f"Rotation: {rotation}") else: valid_positions = False diff --git a/panels/extrude.py b/panels/extrude.py index e9504672..057c63a0 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -25,14 +25,13 @@ class ExtrudePanel(ScreenPanel): self.speeds = ['1', '2', '5', '25'] self.distances = ['5', '10', '15', '25'] - print_cfg = self._config.get_printer_config(self._screen.connected_printer) - if print_cfg is not None: - dis = print_cfg.get("extrude_distances", '5, 10, 15, 25') + if self.ks_printer_cfg is not None: + dis = self.ks_printer_cfg.get("extrude_distances", '5, 10, 15, 25') if re.match(r'^[0-9,\s]+$', dis): dis = [str(i.strip()) for i in dis.split(',')] if 1 < len(dis) < 5: self.distances = dis - vel = print_cfg.get("extrude_speeds", '1, 2, 5, 25') + vel = self.ks_printer_cfg.get("extrude_speeds", '1, 2, 5, 25') if re.match(r'^[0-9,\s]+$', vel): vel = [str(i.strip()) for i in vel.split(',')] if 1 < len(vel) < 5: diff --git a/panels/fine_tune.py b/panels/fine_tune.py index f081d3f9..44b17d74 100644 --- a/panels/fine_tune.py +++ b/panels/fine_tune.py @@ -24,9 +24,8 @@ class FineTunePanel(ScreenPanel): def __init__(self, screen, title, back=True): super().__init__(screen, title, back) - print_cfg = self._config.get_printer_config(self._screen.connected_printer) - if print_cfg is not None: - bs = print_cfg.get("z_babystep_values", "0.01, 0.05") + if self.ks_printer_cfg is not None: + bs = self.ks_printer_cfg.get("z_babystep_values", "0.01, 0.05") if re.match(r'^[0-9,\.\s]+$', bs): bs = [str(i.strip()) for i in bs.split(',')] if 1 < len(bs) < 3: diff --git a/panels/job_status.py b/panels/job_status.py index 4736b63e..6ba9c4eb 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -188,9 +188,8 @@ class JobStatusPanel(ScreenPanel): self.labels['temp_grid'].attach(self.heater_button[device], n, 0, 1, 1) n += 1 extra_item = not self._show_heater_power - printer_cfg = self._config.get_printer_config(self._screen.connected_printer) - if printer_cfg is not None: - titlebar_items = printer_cfg.get("titlebar_items", "") + if self.ks_printer_cfg is not None: + titlebar_items = self.ks_printer_cfg.get("titlebar_items", "") if titlebar_items is not None: titlebar_items = [str(i.strip()) for i in titlebar_items.split(',')] logging.info(f"Titlebar items: {titlebar_items}") diff --git a/panels/move.py b/panels/move.py index cfdf2f1d..2c7b1f7f 100644 --- a/panels/move.py +++ b/panels/move.py @@ -199,8 +199,7 @@ class MovePanel(ScreenPanel): dist = f"{direction}{self.distance}" config_key = "move_speed_z" if axis == "Z" else "move_speed_xy" - printer_cfg = self._config.get_printer_config(self._screen.connected_printer) - speed = None if printer_cfg is None else printer_cfg.getint(config_key, None) + speed = None if self.ks_printer_cfg is None else self.ks_printer_cfg.getint(config_key, None) if speed is None: speed = self._config.get_config()['main'].getint(config_key, 20) speed = 60 * max(1, speed) diff --git a/panels/splash_screen.py b/panels/splash_screen.py index a90c667d..c450a78c 100644 --- a/panels/splash_screen.py +++ b/panels/splash_screen.py @@ -72,15 +72,12 @@ class SplashScreenPanel(ScreenPanel): def show_restart_buttons(self): self.clear_action_bar() - printer = self._screen.connected_printer - if printer is not None and self._screen._ws.connected: - printer_cfg = self._config.get_printer_config(printer) - if printer_cfg is not None: - power_devices = printer_cfg.get("power_devices", "") - power_devices = [str(i.strip()) for i in power_devices.split(',')] - if power_devices[0]: - logging.info(f"Associated power devices: {power_devices}") - self.add_power_button(self._screen.search_power_devices(power_devices)) + if self.ks_printer_cfg is not None and self._screen._ws.connected: + power_devices = self.ks_printer_cfg.get("power_devices", "") + power_devices = [str(i.strip()) for i in power_devices.split(',')] + if power_devices[0]: + logging.info(f"Associated power devices: {power_devices}") + self.add_power_button(self._screen.search_power_devices(power_devices)) if self._screen._ws and self._screen._ws.connected: self.labels['actions'].add(self.labels['restart']) diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py index 13ba0091..70d77232 100644 --- a/panels/zcalibrate.py +++ b/panels/zcalibrate.py @@ -14,7 +14,6 @@ def create_panel(*args): class ZCalibratePanel(ScreenPanel): - _screen = None widgets = {} distances = ['.01', '.05', '.1', '.5', '1', '5'] distance = distances[-2] @@ -152,10 +151,9 @@ class ZCalibratePanel(ScreenPanel): x_position = y_position = None z_hop = speed = None # Get position from config - printer_cfg = self._config.get_printer_config(self._screen.connected_printer) - if printer_cfg is not None: - x_position = printer_cfg.getfloat("calibrate_x_position", None) - y_position = printer_cfg.getfloat("calibrate_y_position", None) + if self.ks_printer_cfg is not None: + x_position = self.ks_printer_cfg.getfloat("calibrate_x_position", None) + y_position = self.ks_printer_cfg.getfloat("calibrate_y_position", None) elif 'z_calibrate_position' in self._config.get_config(): # OLD global way, this should be deprecated x_position = self._config.get_config()['z_calibrate_position'].getfloat("calibrate_x_position", None)