mirror of
https://github.com/dw-0/kiauh.git
synced 2025-12-24 00:03:42 +05:00
fix: use of lambdas breaks the menu refactoring
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
@@ -39,7 +39,7 @@ class KlipperFlashMethodMenu(BaseMenu):
|
||||
self.options = {
|
||||
"1": self.select_regular,
|
||||
"2": self.select_sdcard,
|
||||
"h": lambda: KlipperFlashMethodHelpMenu(self).run(),
|
||||
"h": self.help_menu,
|
||||
}
|
||||
self.input_label_txt = "Select flash method"
|
||||
self.footer_type = FooterType.BACK_HELP
|
||||
@@ -78,6 +78,9 @@ class KlipperFlashMethodMenu(BaseMenu):
|
||||
def goto_next_menu(self, **kwargs):
|
||||
KlipperFlashCommandMenu(previous_menu=self).run()
|
||||
|
||||
def help_menu(self, **kwargs):
|
||||
KlipperFlashMethodHelpMenu(previous_menu=self).run()
|
||||
|
||||
|
||||
# noinspection PyUnusedLocal
|
||||
# noinspection PyMethodMayBeStatic
|
||||
@@ -89,7 +92,7 @@ class KlipperFlashCommandMenu(BaseMenu):
|
||||
self.options = {
|
||||
"1": self.select_flash,
|
||||
"2": self.select_serialflash,
|
||||
"h": lambda: KlipperFlashCommandHelpMenu(previous_menu=self).run(),
|
||||
"h": self.help_menu,
|
||||
}
|
||||
self.default_option = self.select_flash
|
||||
self.input_label_txt = "Select flash command"
|
||||
@@ -121,6 +124,9 @@ class KlipperFlashCommandMenu(BaseMenu):
|
||||
def goto_next_menu(self, **kwargs):
|
||||
KlipperSelectMcuConnectionMenu(previous_menu=self).run()
|
||||
|
||||
def help_menu(self, **kwargs):
|
||||
KlipperFlashCommandHelpMenu(previous_menu=self).run()
|
||||
|
||||
|
||||
# noinspection PyUnusedLocal
|
||||
# noinspection PyMethodMayBeStatic
|
||||
@@ -133,7 +139,7 @@ class KlipperSelectMcuConnectionMenu(BaseMenu):
|
||||
"1": self.select_usb,
|
||||
"2": self.select_dfu,
|
||||
"3": self.select_usb_dfu,
|
||||
"h": lambda: KlipperMcuConnectionHelpMenu(previous_menu=self).run(),
|
||||
"h": self.help_menu,
|
||||
}
|
||||
self.input_label_txt = "Select connection type"
|
||||
self.footer_type = FooterType.BACK_HELP
|
||||
@@ -193,6 +199,9 @@ class KlipperSelectMcuConnectionMenu(BaseMenu):
|
||||
def goto_next_menu(self, **kwargs):
|
||||
KlipperSelectMcuIdMenu(previous_menu=self).run()
|
||||
|
||||
def help_menu(self, **kwargs):
|
||||
KlipperMcuConnectionHelpMenu(previous_menu=self).run()
|
||||
|
||||
|
||||
# noinspection PyUnusedLocal
|
||||
# noinspection PyMethodMayBeStatic
|
||||
|
||||
@@ -17,6 +17,7 @@ from core.menus.base_menu import BaseMenu
|
||||
from utils.constants import COLOR_YELLOW, RESET_FORMAT
|
||||
|
||||
|
||||
# noinspection PyUnusedLocal
|
||||
class AdvancedMenu(BaseMenu):
|
||||
def __init__(self, previous_menu: BaseMenu):
|
||||
super().__init__()
|
||||
@@ -26,9 +27,9 @@ class AdvancedMenu(BaseMenu):
|
||||
"1": None,
|
||||
"2": None,
|
||||
"3": None,
|
||||
"4": lambda: KlipperFlashMethodMenu(previous_menu=self).run(),
|
||||
"4": self.flash,
|
||||
"5": None,
|
||||
"6": lambda: KlipperSelectMcuConnectionMenu(previous_menu=self).run(),
|
||||
"6": self.get_id,
|
||||
}
|
||||
|
||||
def print_menu(self):
|
||||
@@ -52,3 +53,9 @@ class AdvancedMenu(BaseMenu):
|
||||
"""
|
||||
)[1:]
|
||||
print(menu, end="")
|
||||
|
||||
def flash(self, **kwargs):
|
||||
KlipperFlashMethodMenu(previous_menu=self).run()
|
||||
|
||||
def get_id(self, **kwargs):
|
||||
KlipperSelectMcuConnectionMenu(previous_menu=self).run()
|
||||
|
||||
@@ -13,7 +13,7 @@ import subprocess
|
||||
import sys
|
||||
import textwrap
|
||||
from abc import abstractmethod, ABC
|
||||
from typing import Dict, Union, Callable, Type
|
||||
from typing import Dict, Union, Callable, Type, Tuple
|
||||
|
||||
from core.menus import FooterType, NAVI_OPTIONS, ExitAppException, GoBackException
|
||||
from utils.constants import (
|
||||
@@ -129,7 +129,7 @@ class BaseMenu(ABC):
|
||||
self.print_menu()
|
||||
self.print_footer()
|
||||
|
||||
def validate_user_input(self, usr_input: str) -> Callable:
|
||||
def validate_user_input(self, usr_input: str) -> Tuple[Callable, str]:
|
||||
"""
|
||||
Validate the user input and either return an Option, a string or None
|
||||
:param usr_input: The user input in form of a string
|
||||
@@ -148,16 +148,16 @@ class BaseMenu(ABC):
|
||||
elif usr_input == "b":
|
||||
raise GoBackException()
|
||||
elif usr_input == "h":
|
||||
return option
|
||||
return option, usr_input
|
||||
|
||||
# if usr_input is None or an empty string, we execute the menues default option if specified
|
||||
if usr_input == "" and self.default_option is not None:
|
||||
return self.default_option
|
||||
return self.default_option, usr_input
|
||||
|
||||
# user selected a regular option
|
||||
return option
|
||||
return option, usr_input
|
||||
|
||||
def handle_user_input(self) -> Callable:
|
||||
def handle_user_input(self) -> Tuple[Callable, str]:
|
||||
"""Handle the user input, return the validated input or print an error."""
|
||||
while True:
|
||||
print(f"{COLOR_CYAN}###### {self.input_label_txt}: {RESET_FORMAT}", end="")
|
||||
@@ -173,7 +173,8 @@ class BaseMenu(ABC):
|
||||
while True:
|
||||
try:
|
||||
self.display_menu()
|
||||
self.handle_user_input()()
|
||||
option = self.handle_user_input()
|
||||
option[0](opt_index=option[1])
|
||||
except GoBackException:
|
||||
return
|
||||
except ExitAppException:
|
||||
|
||||
@@ -36,21 +36,21 @@ from utils.constants import (
|
||||
)
|
||||
|
||||
|
||||
# noinspection PyUnusedLocal
|
||||
# noinspection PyMethodMayBeStatic
|
||||
class MainMenu(BaseMenu):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self.options = {
|
||||
"0": lambda: LogUploadMenu(previous_menu=self).run(),
|
||||
"1": lambda: InstallMenu(previous_menu=self).run(),
|
||||
"2": lambda: UpdateMenu(previous_menu=self).run(),
|
||||
"3": lambda: RemoveMenu(previous_menu=self).run(),
|
||||
"4": lambda: AdvancedMenu(previous_menu=self).run(),
|
||||
"5": lambda: BackupMenu(previous_menu=self).run(),
|
||||
"6": None,
|
||||
"e": lambda: ExtensionsMenu(previous_menu=self).run(),
|
||||
"s": lambda: SettingsMenu(previous_menu=self).run(),
|
||||
"0": self.log_upload_menu,
|
||||
"1": self.install_menu,
|
||||
"2": self.update_menu,
|
||||
"3": self.remove_menu,
|
||||
"4": self.advanced_menu,
|
||||
"5": self.backup_menu,
|
||||
"e": self.extension_menu,
|
||||
"s": self.settings_menu,
|
||||
}
|
||||
self.header = True
|
||||
self.footer_type = FooterType.QUIT
|
||||
@@ -141,3 +141,27 @@ class MainMenu(BaseMenu):
|
||||
"""
|
||||
)[1:]
|
||||
print(menu, end="")
|
||||
|
||||
def log_upload_menu(self, **kwargs):
|
||||
LogUploadMenu(previous_menu=self).run()
|
||||
|
||||
def install_menu(self, **kwargs):
|
||||
InstallMenu(previous_menu=self).run()
|
||||
|
||||
def update_menu(self, **kwargs):
|
||||
UpdateMenu(previous_menu=self).run()
|
||||
|
||||
def remove_menu(self, **kwargs):
|
||||
RemoveMenu(previous_menu=self).run()
|
||||
|
||||
def advanced_menu(self, **kwargs):
|
||||
AdvancedMenu(previous_menu=self).run()
|
||||
|
||||
def backup_menu(self, **kwargs):
|
||||
BackupMenu(previous_menu=self).run()
|
||||
|
||||
def settings_menu(self, **kwargs):
|
||||
SettingsMenu(previous_menu=self).run()
|
||||
|
||||
def extension_menu(self, **kwargs):
|
||||
ExtensionsMenu(previous_menu=self).run()
|
||||
|
||||
@@ -27,14 +27,10 @@ class RemoveMenu(BaseMenu):
|
||||
|
||||
self.previous_menu: BaseMenu = previous_menu
|
||||
self.options = {
|
||||
"1": lambda: KlipperRemoveMenu(previous_menu=self).run(),
|
||||
"2": lambda: MoonrakerRemoveMenu(previous_menu=self).run(),
|
||||
"3": lambda: ClientRemoveMenu(
|
||||
previous_menu=self, client=load_client_data("mainsail")
|
||||
).run(),
|
||||
"4": lambda: ClientRemoveMenu(
|
||||
previous_menu=self, client=load_client_data("fluidd")
|
||||
).run(),
|
||||
"1": self.remove_klipper,
|
||||
"2": self.remove_moonraker,
|
||||
"3": self.remove_mainsail,
|
||||
"4": self.remove_fluidd,
|
||||
"5": None,
|
||||
"6": None,
|
||||
"7": None,
|
||||
@@ -72,3 +68,15 @@ class RemoveMenu(BaseMenu):
|
||||
"""
|
||||
)[1:]
|
||||
print(menu, end="")
|
||||
|
||||
def remove_klipper(self, **kwargs):
|
||||
KlipperRemoveMenu(previous_menu=self).run()
|
||||
|
||||
def remove_moonraker(self, **kwargs):
|
||||
MoonrakerRemoveMenu(previous_menu=self).run()
|
||||
|
||||
def remove_mainsail(self, **kwargs):
|
||||
ClientRemoveMenu(previous_menu=self, client=load_client_data("mainsail")).run()
|
||||
|
||||
def remove_fluidd(self, **kwargs):
|
||||
ClientRemoveMenu(previous_menu=self, client=load_client_data("fluidd")).run()
|
||||
|
||||
Reference in New Issue
Block a user