diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index 5f6eafc2..9c7ddfdf 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -31,10 +31,6 @@ class ScreenPanel: self._show_heater_power = self._config.get_main_config().getboolean('show_heater_power', False) - def initialize(self, panel_name): - # Create gtk items here - return - def emergency_stop(self, widget): if self._config.get_main_config().getboolean('confirm_estop', False): self._screen._confirm_send_action(widget, _("Are you sure you want to run Emergency Stop?"), diff --git a/panels/base_panel.py b/panels/base_panel.py index ed39ae42..5a7a8ccc 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -112,10 +112,7 @@ class BasePanel(ScreenPanel): # Layout is and content are on screen_panel self.layout.add(self.main_grid) - - def initialize(self, panel_name): self.update_time() - return def show_heaters(self, show=True): try: diff --git a/panels/bed_level.py b/panels/bed_level.py index 7dae3bb0..c73cfd49 100644 --- a/panels/bed_level.py +++ b/panels/bed_level.py @@ -18,16 +18,12 @@ class BedLevelPanel(ScreenPanel): def __init__(self, screen, title, back=True): super().__init__(screen, title, back) self.response_count = 0 - self.panel_name = "" self.screw_dict = {} self.screws = [] self.y_cnt = 0 self.x_cnt = 0 self.x_offset = 0 self.y_offset = 0 - - def initialize(self, panel_name): - self.panel_name = panel_name self.labels['dm'] = self._gtk.ButtonImage("motor-off", _("Disable XY"), "color3") self.labels['dm'].connect("clicked", self.disable_motors) screw_positions = [] diff --git a/panels/bed_mesh.py b/panels/bed_mesh.py index 844cf5a9..996e8047 100644 --- a/panels/bed_mesh.py +++ b/panels/bed_mesh.py @@ -22,9 +22,6 @@ class BedMeshPanel(ScreenPanel): self.profiles = {} self.show_create = False self.active_mesh = None - - def initialize(self, panel_name): - addprofile = self._gtk.ButtonImage("increase", " " + _("Add profile"), "color1", .66, Gtk.PositionType.LEFT, 1) addprofile.connect("clicked", self.show_create_profile) addprofile.set_hexpand(True) diff --git a/panels/console.py b/panels/console.py index c11274c0..5fbc861a 100644 --- a/panels/console.py +++ b/panels/console.py @@ -27,8 +27,6 @@ class ConsolePanel(ScreenPanel): super().__init__(screen, title, back) self.autoscroll = True self.hidetemps = True - - def initialize(self, panel_name): self._screen._ws.send_method("server.gcode_store", {"count": 100}, self.gcode_response) o1_lbl = Gtk.Label(_("Auto-scroll")) diff --git a/panels/example.py b/panels/example.py index dc6d0074..1c3f319a 100644 --- a/panels/example.py +++ b/panels/example.py @@ -11,7 +11,8 @@ def create_panel(*args): class ExamplePanel(ScreenPanel): - def initialize(self, panel_name): + def __init__(self, screen, title, back=True): + super().__init__(screen, title, back) # Create gtk items here diff --git a/panels/exclude.py b/panels/exclude.py index 498c5bde..fae205ec 100644 --- a/panels/exclude.py +++ b/panels/exclude.py @@ -29,8 +29,6 @@ class ExcludeObjectPanel(ScreenPanel): logging.info(f'Excluded: {self.excluded_objects}') self.objects = self._printer.get_stat("exclude_object", "objects") self.labels['map'] = None - - def initialize(self, panel_name): for obj in self.objects: logging.info(f"Adding {obj['name']}") self.add_object(obj["name"]) diff --git a/panels/extrude.py b/panels/extrude.py index 561810d0..d3f2d134 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -18,7 +18,6 @@ class ExtrudePanel(ScreenPanel): def __init__(self, screen, title, back=True): super().__init__(screen, title, back) self.current_extruder = self._printer.get_stat("toolhead", "extruder") - macros = self._screen.printer.get_gcode_macros() self.load_filament = any("LOAD_FILAMENT" in macro.upper() for macro in macros) self.unload_filament = any("UNLOAD_FILAMENT" in macro.upper() for macro in macros) @@ -40,8 +39,6 @@ class ExtrudePanel(ScreenPanel): self.distance = int(self.distances[1]) self.speed = int(self.speeds[1]) - - def initialize(self, panel_name): self.labels['extrude'] = self._gtk.ButtonImage("extrude", _("Extrude"), "color4") self.labels['extrude'].connect("clicked", self.extrude, "+") self.labels['load'] = self._gtk.ButtonImage("arrow-down", _("Load"), "color3") diff --git a/panels/fan.py b/panels/fan.py index b1e212bd..fb6e5918 100644 --- a/panels/fan.py +++ b/panels/fan.py @@ -16,8 +16,8 @@ CHANGEABLE_FANS = ["fan", "fan_generic"] class FanPanel(ScreenPanel): - - def initialize(self, panel_name): + def __init__(self, screen, title, back=True): + super().__init__(screen, title, back) self.fan_speed = {} self.user_selecting = False self.devices = {} diff --git a/panels/fine_tune.py b/panels/fine_tune.py index 4b149ee3..7bb5f317 100644 --- a/panels/fine_tune.py +++ b/panels/fine_tune.py @@ -21,10 +21,8 @@ class FineTunePanel(ScreenPanel): percent_delta = percent_deltas[-2] speed = extrusion = 100 - def initialize(self, panel_name): - - logging.debug("FineTunePanel") - + 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") diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index f20aa777..4d88ceba 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -23,8 +23,6 @@ class MacroPanel(ScreenPanel): self.loaded_macros = [] self.macros = {} self.menu = ['macros_menu'] - - def initialize(self, panel_name): sort = Gtk.Label(_("Sort:")) sort.set_hexpand(False) diff --git a/panels/input_shaper.py b/panels/input_shaper.py index 9dbcca45..d4881c06 100644 --- a/panels/input_shaper.py +++ b/panels/input_shaper.py @@ -35,10 +35,6 @@ class InputShaperPanel(ScreenPanel): self.status.set_ellipsize(Pango.EllipsizeMode.END) self.calibrating_axis = None self.has_sensor = False - - def initialize(self, panel_name): - - self.has_sensor = False self.calibrating_axis = None auto_calibration_label = Gtk.Label() diff --git a/panels/job_status.py b/panels/job_status.py index 878a534e..059235f1 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -19,6 +19,14 @@ def create_panel(*args): class JobStatusPanel(ScreenPanel): def __init__(self, screen, title, back=False): super().__init__(screen, title, False) + self.extrusion_button = None + self.elapsed_button = None + self.left_button = None + self.fan_button = None + self.speed_button = None + self.z_button = None + self.heater_button = None + self.extruder_button = None self.grid = self._gtk.HomogeneousGrid() self.grid.set_row_homogeneous(False) self.pos_z = 0 @@ -30,7 +38,7 @@ class JobStatusPanel(ScreenPanel): self.oheight = 0 self.current_extruder = None self.fila_section = 0 - self.buttons = None + self.buttons = {} self.filename_label = self.filename = self.prev_pos = self.prev_gpos = None self.close_timeout = self.vel_timeout = self.animation_timeout = None self.file_metadata = self.fans = {} @@ -40,8 +48,6 @@ class JobStatusPanel(ScreenPanel): self.main_status_displayed = True self.velstore = self.flowstore = [] - def initialize(self, panel_name): - data = ['pos_x', 'pos_y', 'pos_z', 'time_left', 'duration', 'slicer_time', 'file_time', 'filament_time', 'est_time', 'speed_factor', 'req_speed', 'max_accel', 'extrude_factor', 'zoffset', 'zoffset', 'filament_used', 'filament_total', 'advance', 'fan', 'layer', 'total_layers', 'height', diff --git a/panels/limits.py b/panels/limits.py index d914c775..a5924555 100644 --- a/panels/limits.py +++ b/panels/limits.py @@ -16,14 +16,9 @@ class LimitsPanel(ScreenPanel): def __init__(self, screen, title, back=True): super().__init__(screen, title, back) self.limits = {} - self.grid = Gtk.Grid() self.options = None self.values = {} - - def initialize(self, panel_name): - - scroll = self._gtk.ScrolledWindow() - scroll.add(self.grid) + self.grid = Gtk.Grid() conf = self._printer.get_config_section("printer") self.options = [ @@ -42,6 +37,8 @@ class LimitsPanel(ScreenPanel): for opt in self.options: self.add_option(opt['option'], opt['name'], opt['units'], opt['max']) + scroll = self._gtk.ScrolledWindow() + scroll.add(self.grid) self.content.add(scroll) self.content.show_all() diff --git a/panels/main_menu.py b/panels/main_menu.py index 11601195..5507c613 100644 --- a/panels/main_menu.py +++ b/panels/main_menu.py @@ -18,15 +18,15 @@ class MainPanel(MenuPanel): super().__init__(screen, title, False) self.left_panel = None self.items = None - self.grid = self._gtk.HomogeneousGrid() - self.grid.set_hexpand(True) - self.grid.set_vexpand(True) self.devices = {} self.graph_update = None self.active_heater = None self.h = 1 + self.grid = self._gtk.HomogeneousGrid() + self.grid.set_hexpand(True) + self.grid.set_vexpand(True) - def initialize(self, panel_name, items): + def initialize(self, items): logging.info("### Making MainMenu") self.items = items diff --git a/panels/menu.py b/panels/menu.py index 82deea2d..bc7cb588 100644 --- a/panels/menu.py +++ b/panels/menu.py @@ -16,17 +16,17 @@ class MenuPanel(ScreenPanel): i = 0 j2_data = None - def initialize(self, panel_name, display_name, items): - - self.items = items - self.create_menu_items() - + def __init__(self, screen, title, back=True): + super().__init__(screen, title, back) + self.items = None self.grid = self._gtk.HomogeneousGrid() + def initialize(self, items): + self.items = items + self.create_menu_items() scroll = self._gtk.ScrolledWindow() scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) scroll.add(self.grid) - self.content.add(scroll) def activate(self): diff --git a/panels/move.py b/panels/move.py index 28c345a5..3d2cf5e9 100644 --- a/panels/move.py +++ b/panels/move.py @@ -21,21 +21,6 @@ class MovePanel(ScreenPanel): self.settings = {} self.menu = ['move_menu'] - def home(self, widget): - self._screen._ws.klippy.gcode_script(KlippyGcodes.HOME) - - def homexy(self, widget): - self._screen._ws.klippy.gcode_script(KlippyGcodes.HOME_XY) - - def z_tilt(self, widget): - self._screen._ws.klippy.gcode_script(KlippyGcodes.Z_TILT) - - def quad_gantry_level(self, widget): - self._screen._ws.klippy.gcode_script(KlippyGcodes.QUAD_GANTRY_LEVEL) - - def initialize(self, panel_name): - grid = self._gtk.HomogeneousGrid() - self.labels['x+'] = self._gtk.ButtonImage("arrow-right", _("X+"), "color1") self.labels['x+'].connect("clicked", self.move, "X", "+") self.labels['x-'] = self._gtk.ButtonImage("arrow-left", _("X-"), "color1") @@ -69,6 +54,7 @@ class MovePanel(ScreenPanel): _("Are you sure you wish to disable motors?"), "printer.gcode.script", script) + grid = self._gtk.HomogeneousGrid() if self._screen.vertical_mode: if self._screen.lang_ltr: grid.attach(self.labels['x+'], 2, 1, 1, 1) @@ -282,3 +268,15 @@ class MovePanel(ScreenPanel): self.unload_menu() return True return False + + def home(self, widget): + self._screen._ws.klippy.gcode_script(KlippyGcodes.HOME) + + def homexy(self, widget): + self._screen._ws.klippy.gcode_script(KlippyGcodes.HOME_XY) + + def z_tilt(self, widget): + self._screen._ws.klippy.gcode_script(KlippyGcodes.Z_TILT) + + def quad_gantry_level(self, widget): + self._screen._ws.klippy.gcode_script(KlippyGcodes.QUAD_GANTRY_LEVEL) diff --git a/panels/network.py b/panels/network.py index 70030fee..aa7f54ba 100644 --- a/panels/network.py +++ b/panels/network.py @@ -30,10 +30,6 @@ class NetworkPanel(ScreenPanel): logging.info(f"Found wireless interfaces: {self.wireless_interfaces}") self.wifi = WifiManager(self.wireless_interfaces[0]) - def initialize(self, menu): - grid = self._gtk.HomogeneousGrid() - grid.set_hexpand(True) - # Get IP Address gws = netifaces.gateways() if "default" in gws and netifaces.AF_INET in gws["default"]: diff --git a/panels/pins.py b/panels/pins.py index 876f33fa..fc5f4c15 100644 --- a/panels/pins.py +++ b/panels/pins.py @@ -13,8 +13,8 @@ def create_panel(*args): class OutputPinPanel(ScreenPanel): - def initialize(self, panel_name): - + def __init__(self, screen, title, back=True): + super().__init__(screen, title, back) self.devices = {} # Create a grid for all devices self.labels['devices'] = Gtk.Grid() diff --git a/panels/power.py b/panels/power.py index 61f1542c..566edcf4 100644 --- a/panels/power.py +++ b/panels/power.py @@ -12,8 +12,8 @@ def create_panel(*args): class PowerPanel(ScreenPanel): - def initialize(self, panel_name): - + def __init__(self, screen, title, back=True): + super().__init__(screen, title, back) self.devices = {} # Create a grid for all devices diff --git a/panels/print.py b/panels/print.py index 071838ad..e91e531b 100644 --- a/panels/print.py +++ b/panels/print.py @@ -36,8 +36,6 @@ class PrintPanel(ScreenPanel): self.directories = {} self.labels['directories'] = {} self.labels['files'] = {} - - def initialize(self, panel_name): sort = Gtk.Label(_("Sort:")) sbox = Gtk.Box(spacing=0) sbox.set_vexpand(False) diff --git a/panels/printer_select.py b/panels/printer_select.py index 312864f5..ad77e2de 100644 --- a/panels/printer_select.py +++ b/panels/printer_select.py @@ -15,8 +15,6 @@ def create_panel(*args): class PrinterSelect(ScreenPanel): def __init__(self, screen, title, back=True): super().__init__(screen, title, False) - - def initialize(self, panel_name): printers = self._config.get_printers() grid = self._gtk.HomogeneousGrid() diff --git a/panels/retraction.py b/panels/retraction.py index 1a6e46c4..cf29daca 100644 --- a/panels/retraction.py +++ b/panels/retraction.py @@ -20,9 +20,6 @@ class FWRetractionPanel(ScreenPanel): self.grid = Gtk.Grid() self.values = {} self.list = {} - - def initialize(self, panel_name): - conf = self._printer.get_config_section("firmware_retraction") retract_length = float(conf['retract_length']) if 'retract_length' in conf else 0 diff --git a/panels/settings.py b/panels/settings.py index daa86e7e..1920bc37 100644 --- a/panels/settings.py +++ b/panels/settings.py @@ -16,8 +16,6 @@ class SettingsPanel(ScreenPanel): super().__init__(screen, title, back) self.printers = self.settings = {} self.menu = ['settings_menu'] - - def initialize(self, panel_name): options = self._config.get_configurable_options().copy() options.append({"printers": { "name": _("Printer Connections"), diff --git a/panels/splash_screen.py b/panels/splash_screen.py index 777fb427..a9b9fa09 100644 --- a/panels/splash_screen.py +++ b/panels/splash_screen.py @@ -16,8 +16,6 @@ class SplashScreenPanel(ScreenPanel): def __init__(self, screen, title, back=True): super().__init__(screen, title, back) - - def initialize(self, panel_name): image = self._gtk.Image("klipper", self._screen.width / 5, self._screen.height * .5) self.labels['text'] = Gtk.Label(_("Initializing printer...")) self.labels['text'].set_line_wrap(True) diff --git a/panels/system.py b/panels/system.py index caf705dc..9c3b185c 100644 --- a/panels/system.py +++ b/panels/system.py @@ -33,9 +33,6 @@ class SystemPanel(ScreenPanel): self.update_status = None self.update_dialog = None self.update_prog = None - - def initialize(self, panel_name): - grid = self._gtk.HomogeneousGrid() grid.set_row_homogeneous(False) diff --git a/panels/temperature.py b/panels/temperature.py index 5d9e2349..ede93dc6 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -30,8 +30,6 @@ class TemperaturePanel(ScreenPanel): self.preheat_options = self._screen._config.get_preheat_options() logging.debug(f"Preheat options: {self.preheat_options}") self.grid = self._gtk.HomogeneousGrid() - - def initialize(self, panel_name): self._gtk.reset_temp_color() self.grid.attach(self.create_left_panel(), 0, 0, 1, 1) diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py index 8d2a22a2..ecdf8644 100644 --- a/panels/zcalibrate.py +++ b/panels/zcalibrate.py @@ -23,9 +23,6 @@ class ZCalibratePanel(ScreenPanel): def __init__(self, screen, title, back=True): super().__init__(screen, title, False) self.z_offset = None - - def initialize(self, panel_name): - for probe_type in self.probe_types: if self._printer.config_section_exists(probe_type): self.z_offset = float(self._screen.printer.get_config_section(probe_type)['z_offset']) diff --git a/screen.py b/screen.py index cd27ff2e..6022319e 100644 --- a/screen.py +++ b/screen.py @@ -309,7 +309,8 @@ class KlipperScreen(Gtk.Window): if panel_name not in self.panels: try: self.panels[panel_name] = self._load_panel(panel_type, self, title) - self.panels[panel_name].initialize(panel_name, **kwargs) + if hasattr(self.panels[panel_name], "initialize"): + self.panels[panel_name].initialize(**kwargs) except Exception as e: if panel_name in self.panels: del self.panels[panel_name] @@ -526,8 +527,7 @@ class KlipperScreen(Gtk.Window): logging.info("No items in menu, returning.") return - self.show_panel(f'{self._cur_panels[-1]}_{name}', - "menu", disname, 1, False, display_name=disname, items=menuitems) + self.show_panel(f'{self._cur_panels[-1]}_{name}', "menu", disname, 1, False, items=menuitems) def _remove_all_panels(self): self.subscriptions = []