forked from CreatBot/CreatBotKlipperScreen
panels: simplificate panel sub-menu system
This commit is contained in:
@@ -15,7 +15,7 @@ class ScreenPanel:
|
|||||||
ks_printer_cfg = None
|
ks_printer_cfg = None
|
||||||
|
|
||||||
def __init__(self, screen, title, **kwargs):
|
def __init__(self, screen, title, **kwargs):
|
||||||
self.menu = None
|
self.menu = []
|
||||||
ScreenPanel._screen = screen
|
ScreenPanel._screen = screen
|
||||||
ScreenPanel._config = screen._config
|
ScreenPanel._config = screen._config
|
||||||
ScreenPanel._files = screen.files
|
ScreenPanel._files = screen.files
|
||||||
@@ -74,22 +74,29 @@ class ScreenPanel:
|
|||||||
self.content.remove(child)
|
self.content.remove(child)
|
||||||
|
|
||||||
self.menu.append(f'{name}_menu')
|
self.menu.append(f'{name}_menu')
|
||||||
|
logging.debug(f"self.menu: {self.menu}")
|
||||||
self.content.add(self.labels[self.menu[-1]])
|
self.content.add(self.labels[self.menu[-1]])
|
||||||
self.content.show_all()
|
self.content.show_all()
|
||||||
if title:
|
if title:
|
||||||
self._screen.base_panel.set_title(f"{self.title} | {title}")
|
self._screen.base_panel.set_title(f"{self.title} | {title}")
|
||||||
|
|
||||||
def unload_menu(self, widget=None):
|
def unload_menu(self, widget=None):
|
||||||
logging.debug(f"self.menu: {self.menu}")
|
|
||||||
if len(self.menu) <= 1 or self.menu[-2] not in self.labels:
|
if len(self.menu) <= 1 or self.menu[-2] not in self.labels:
|
||||||
return
|
return
|
||||||
self._screen.base_panel.set_title(self._screen.panels[self._screen._cur_panels[-1]].title)
|
self._screen.base_panel.set_title(self._screen.panels[self._screen._cur_panels[-1]].title)
|
||||||
self.menu.pop()
|
self.menu.pop()
|
||||||
|
logging.debug(f"self.menu: {self.menu}")
|
||||||
for child in self.content.get_children():
|
for child in self.content.get_children():
|
||||||
self.content.remove(child)
|
self.content.remove(child)
|
||||||
self.content.add(self.labels[self.menu[-1]])
|
self.content.add(self.labels[self.menu[-1]])
|
||||||
self.content.show_all()
|
self.content.show_all()
|
||||||
|
|
||||||
|
def back(self):
|
||||||
|
if len(self.menu) > 1:
|
||||||
|
self.unload_menu()
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def on_dropdown_change(self, combo, section, option, callback=None):
|
def on_dropdown_change(self, combo, section, option, callback=None):
|
||||||
tree_iter = combo.get_active_iter()
|
tree_iter = combo.get_active_iter()
|
||||||
if tree_iter is not None:
|
if tree_iter is not None:
|
||||||
|
@@ -162,12 +162,6 @@ class Panel(ScreenPanel):
|
|||||||
self.labels['extrude_menu'] = grid
|
self.labels['extrude_menu'] = grid
|
||||||
self.content.add(self.labels['extrude_menu'])
|
self.content.add(self.labels['extrude_menu'])
|
||||||
|
|
||||||
def back(self):
|
|
||||||
if len(self.menu) > 1:
|
|
||||||
self.unload_menu()
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def enable_buttons(self, enable):
|
def enable_buttons(self, enable):
|
||||||
for button in self.buttons:
|
for button in self.buttons:
|
||||||
if button in ("temperature", "spoolman"):
|
if button in ("temperature", "spoolman"):
|
||||||
|
@@ -42,8 +42,6 @@ class Panel(ScreenPanel):
|
|||||||
self.labels['options_menu'].add(self.labels['options'])
|
self.labels['options_menu'].add(self.labels['options'])
|
||||||
|
|
||||||
def activate(self):
|
def activate(self):
|
||||||
while len(self.menu) > 1:
|
|
||||||
self.unload_menu()
|
|
||||||
self.reload_macros()
|
self.reload_macros()
|
||||||
|
|
||||||
def add_gcode_macro(self, macro):
|
def add_gcode_macro(self, macro):
|
||||||
|
@@ -24,7 +24,7 @@ class Panel(ScreenPanel):
|
|||||||
self.distance = self.distances[-2]
|
self.distance = self.distances[-2]
|
||||||
|
|
||||||
self.settings = {}
|
self.settings = {}
|
||||||
self.menu = ["move_menu"]
|
self.menu.append("move_menu")
|
||||||
self.buttons = {
|
self.buttons = {
|
||||||
"x+": self._gtk.Button("arrow-right", "X+", "color1"),
|
"x+": self._gtk.Button("arrow-right", "X+", "color1"),
|
||||||
"x-": self._gtk.Button("arrow-left", "X-", "color1"),
|
"x-": self._gtk.Button("arrow-left", "X-", "color1"),
|
||||||
@@ -200,14 +200,13 @@ class Panel(ScreenPanel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def reinit_panels(self, value):
|
def reinit_panels(self, value):
|
||||||
logging.info(self._screen.panels)
|
|
||||||
self._screen.panels_reinit.append("bed_level")
|
self._screen.panels_reinit.append("bed_level")
|
||||||
self._screen.panels_reinit.append("bed_mesh")
|
self._screen.panels_reinit.append("bed_mesh")
|
||||||
|
|
||||||
def reinit_move(self, widget):
|
def reinit_move(self, widget):
|
||||||
self._screen.panels_reinit.append("move")
|
self._screen.panels_reinit.append("move")
|
||||||
self._screen.panels_reinit.append("zcalibrate")
|
self._screen.panels_reinit.append("zcalibrate")
|
||||||
self._screen._menu_go_back(home=True)
|
self.menu.clear()
|
||||||
|
|
||||||
def process_update(self, action, data):
|
def process_update(self, action, data):
|
||||||
if action != "notify_status_update":
|
if action != "notify_status_update":
|
||||||
@@ -263,12 +262,6 @@ class Panel(ScreenPanel):
|
|||||||
if self._printer.get_stat("gcode_move", "absolute_coordinates"):
|
if self._printer.get_stat("gcode_move", "absolute_coordinates"):
|
||||||
self._screen._ws.klippy.gcode_script("G90")
|
self._screen._ws.klippy.gcode_script("G90")
|
||||||
|
|
||||||
def back(self):
|
|
||||||
if len(self.menu) > 1:
|
|
||||||
self.unload_menu()
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def home(self, widget):
|
def home(self, widget):
|
||||||
if "delta" in self._printer.get_config_section("printer")["kinematics"]:
|
if "delta" in self._printer.get_config_section("printer")["kinematics"]:
|
||||||
self._screen._send_action(widget, "printer.gcode.script", {"script": "G28"})
|
self._screen._send_action(widget, "printer.gcode.script", {"script": "G28"})
|
||||||
|
@@ -54,13 +54,3 @@ class Panel(ScreenPanel):
|
|||||||
self.add_option("printers", self.printers, pname, self.printers[pname])
|
self.add_option("printers", self.printers, pname, self.printers[pname])
|
||||||
|
|
||||||
self.content.add(self.labels['settings_menu'])
|
self.content.add(self.labels['settings_menu'])
|
||||||
|
|
||||||
def activate(self):
|
|
||||||
while len(self.menu) > 1:
|
|
||||||
self.unload_menu()
|
|
||||||
|
|
||||||
def back(self):
|
|
||||||
if len(self.menu) > 1:
|
|
||||||
self.unload_menu()
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
@@ -323,6 +323,8 @@ class KlipperScreen(Gtk.Window):
|
|||||||
def attach_panel(self, panel):
|
def attach_panel(self, panel):
|
||||||
self.base_panel.add_content(self.panels[panel])
|
self.base_panel.add_content(self.panels[panel])
|
||||||
logging.debug(f"Current panel hierarchy: {' > '.join(self._cur_panels)}")
|
logging.debug(f"Current panel hierarchy: {' > '.join(self._cur_panels)}")
|
||||||
|
while len(self.panels[panel].menu) > 1:
|
||||||
|
self.panels[panel].unload_menu()
|
||||||
if hasattr(self.panels[panel], "process_update"):
|
if hasattr(self.panels[panel], "process_update"):
|
||||||
self.process_update("notify_status_update", self.printer.data)
|
self.process_update("notify_status_update", self.printer.data)
|
||||||
if hasattr(self.panels[panel], "activate"):
|
if hasattr(self.panels[panel], "activate"):
|
||||||
|
Reference in New Issue
Block a user