screen_panel: share ks_printer_cfg between panels

This commit is contained in:
alfrix 2022-11-20 12:23:56 -03:00
parent 1ca950c1fc
commit dbd1474d63
9 changed files with 33 additions and 42 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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'])

View File

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