mirror of
https://github.com/dw-0/kiauh.git
synced 2025-12-16 12:04:29 +05:00
feat: implement completion message for klipper remove process
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
This commit is contained in:
@@ -15,6 +15,8 @@ from components.klipper.klipper import Klipper
|
|||||||
from components.klipper.klipper_dialogs import print_instance_overview
|
from components.klipper.klipper_dialogs import print_instance_overview
|
||||||
from core.instance_manager.instance_manager import InstanceManager
|
from core.instance_manager.instance_manager import InstanceManager
|
||||||
from core.logger import Logger
|
from core.logger import Logger
|
||||||
|
from core.services.message_service import Message
|
||||||
|
from core.types.color import Color
|
||||||
from utils.fs_utils import run_remove_routines
|
from utils.fs_utils import run_remove_routines
|
||||||
from utils.input_utils import get_selection_input
|
from utils.input_utils import get_selection_input
|
||||||
from utils.instance_utils import get_instances
|
from utils.instance_utils import get_instances
|
||||||
@@ -25,7 +27,11 @@ def run_klipper_removal(
|
|||||||
remove_service: bool,
|
remove_service: bool,
|
||||||
remove_dir: bool,
|
remove_dir: bool,
|
||||||
remove_env: bool,
|
remove_env: bool,
|
||||||
) -> None:
|
) -> Message:
|
||||||
|
completion_msg = Message(
|
||||||
|
title="Klipper Removal Process completed",
|
||||||
|
color=Color.GREEN,
|
||||||
|
)
|
||||||
klipper_instances: List[Klipper] = get_instances(Klipper)
|
klipper_instances: List[Klipper] = get_instances(Klipper)
|
||||||
|
|
||||||
if remove_service:
|
if remove_service:
|
||||||
@@ -33,20 +39,36 @@ def run_klipper_removal(
|
|||||||
if klipper_instances:
|
if klipper_instances:
|
||||||
instances_to_remove = select_instances_to_remove(klipper_instances)
|
instances_to_remove = select_instances_to_remove(klipper_instances)
|
||||||
remove_instances(instances_to_remove)
|
remove_instances(instances_to_remove)
|
||||||
|
instance_names = [i.service_file_path.stem for i in instances_to_remove]
|
||||||
|
txt = f"● Klipper instances removed: {', '.join(instance_names)}"
|
||||||
|
completion_msg.text.append(txt)
|
||||||
else:
|
else:
|
||||||
Logger.print_info("No Klipper Services installed! Skipped ...")
|
Logger.print_info("No Klipper Services installed! Skipped ...")
|
||||||
|
|
||||||
if (remove_dir or remove_env) and unit_file_exists("klipper", suffix="service"):
|
if (remove_dir or remove_env) and unit_file_exists("klipper", suffix="service"):
|
||||||
Logger.print_info("There are still other Klipper services installed:")
|
completion_msg.text = [
|
||||||
Logger.print_info(f"● '{KLIPPER_DIR}' was not removed.", prefix=False)
|
"Some Klipper services are still installed:",
|
||||||
Logger.print_info(f"● '{KLIPPER_ENV_DIR}' was not removed.", prefix=False)
|
f"● '{KLIPPER_DIR}' was not removed, even though selected for removal.",
|
||||||
|
f"● '{KLIPPER_ENV_DIR}' was not removed, even though selected for removal.",
|
||||||
|
]
|
||||||
else:
|
else:
|
||||||
if remove_dir:
|
if remove_dir:
|
||||||
Logger.print_status("Removing Klipper local repository ...")
|
Logger.print_status("Removing Klipper local repository ...")
|
||||||
run_remove_routines(KLIPPER_DIR)
|
if run_remove_routines(KLIPPER_DIR):
|
||||||
|
completion_msg.text.append("● Klipper local repository removed")
|
||||||
if remove_env:
|
if remove_env:
|
||||||
Logger.print_status("Removing Klipper Python environment ...")
|
Logger.print_status("Removing Klipper Python environment ...")
|
||||||
run_remove_routines(KLIPPER_ENV_DIR)
|
if run_remove_routines(KLIPPER_ENV_DIR):
|
||||||
|
completion_msg.text.append("● Klipper Python environment removed")
|
||||||
|
|
||||||
|
if completion_msg.text:
|
||||||
|
completion_msg.text.insert(0, "The following actions were performed:")
|
||||||
|
else:
|
||||||
|
completion_msg.color = Color.YELLOW
|
||||||
|
completion_msg.centered = True
|
||||||
|
completion_msg.text = ["Nothing to remove."]
|
||||||
|
|
||||||
|
return completion_msg
|
||||||
|
|
||||||
|
|
||||||
def select_instances_to_remove(instances: List[Klipper]) -> List[Klipper] | None:
|
def select_instances_to_remove(instances: List[Klipper]) -> List[Klipper] | None:
|
||||||
|
|||||||
@@ -21,14 +21,16 @@ from core.types.color import Color
|
|||||||
class KlipperRemoveMenu(BaseMenu):
|
class KlipperRemoveMenu(BaseMenu):
|
||||||
def __init__(self, previous_menu: Type[BaseMenu] | None = None):
|
def __init__(self, previous_menu: Type[BaseMenu] | None = None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.title = "Remove Klipper"
|
self.title = "Remove Klipper"
|
||||||
self.title_color = Color.RED
|
self.title_color = Color.RED
|
||||||
self.previous_menu: Type[BaseMenu] | None = previous_menu
|
self.previous_menu: Type[BaseMenu] | None = previous_menu
|
||||||
self.footer_type = FooterType.BACK
|
self.footer_type = FooterType.BACK
|
||||||
|
|
||||||
self.remove_klipper_service = False
|
self.remove_klipper_service = False
|
||||||
self.remove_klipper_dir = False
|
self.remove_klipper_dir = False
|
||||||
self.remove_klipper_env = False
|
self.remove_klipper_env = False
|
||||||
self.selection_state = False
|
self.select_state = False
|
||||||
|
|
||||||
def set_previous_menu(self, previous_menu: Type[BaseMenu] | None) -> None:
|
def set_previous_menu(self, previous_menu: Type[BaseMenu] | None) -> None:
|
||||||
from core.menus.remove_menu import RemoveMenu
|
from core.menus.remove_menu import RemoveMenu
|
||||||
@@ -50,13 +52,14 @@ class KlipperRemoveMenu(BaseMenu):
|
|||||||
o1 = checked if self.remove_klipper_service else unchecked
|
o1 = checked if self.remove_klipper_service else unchecked
|
||||||
o2 = checked if self.remove_klipper_dir else unchecked
|
o2 = checked if self.remove_klipper_dir else unchecked
|
||||||
o3 = checked if self.remove_klipper_env else unchecked
|
o3 = checked if self.remove_klipper_env else unchecked
|
||||||
|
sel_state = f"{'Select'if not self.select_state else 'Deselect'} everything"
|
||||||
menu = textwrap.dedent(
|
menu = textwrap.dedent(
|
||||||
f"""
|
f"""
|
||||||
╟───────────────────────────────────────────────────────╢
|
╟───────────────────────────────────────────────────────╢
|
||||||
║ Enter a number and hit enter to select / deselect ║
|
║ Enter a number and hit enter to select / deselect ║
|
||||||
║ the specific option for removal. ║
|
║ the specific option for removal. ║
|
||||||
╟───────────────────────────────────────────────────────╢
|
╟───────────────────────────────────────────────────────╢
|
||||||
║ a) {self._get_selection_state_str():37} ║
|
║ a) {sel_state:49} ║
|
||||||
╟───────────────────────────────────────────────────────╢
|
╟───────────────────────────────────────────────────────╢
|
||||||
║ 1) {o1} Remove Service ║
|
║ 1) {o1} Remove Service ║
|
||||||
║ 2) {o2} Remove Local Repository ║
|
║ 2) {o2} Remove Local Repository ║
|
||||||
@@ -69,10 +72,10 @@ class KlipperRemoveMenu(BaseMenu):
|
|||||||
print(menu, end="")
|
print(menu, end="")
|
||||||
|
|
||||||
def toggle_all(self, **kwargs) -> None:
|
def toggle_all(self, **kwargs) -> None:
|
||||||
self.selection_state = not self.selection_state
|
self.select_state = not self.select_state
|
||||||
self.remove_klipper_service = self.selection_state
|
self.remove_klipper_service = self.select_state
|
||||||
self.remove_klipper_dir = self.selection_state
|
self.remove_klipper_dir = self.select_state
|
||||||
self.remove_klipper_env = self.selection_state
|
self.remove_klipper_env = self.select_state
|
||||||
|
|
||||||
def toggle_remove_klipper_service(self, **kwargs) -> None:
|
def toggle_remove_klipper_service(self, **kwargs) -> None:
|
||||||
self.remove_klipper_service = not self.remove_klipper_service
|
self.remove_klipper_service = not self.remove_klipper_service
|
||||||
@@ -89,30 +92,17 @@ class KlipperRemoveMenu(BaseMenu):
|
|||||||
and not self.remove_klipper_dir
|
and not self.remove_klipper_dir
|
||||||
and not self.remove_klipper_env
|
and not self.remove_klipper_env
|
||||||
):
|
):
|
||||||
print(
|
msg = "Nothing selected! Select options to remove first."
|
||||||
Color.apply(
|
print(Color.apply(msg, Color.RED))
|
||||||
"Nothing selected! Select options to remove first.", Color.RED
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
klipper_remove.run_klipper_removal(
|
completion_msg = klipper_remove.run_klipper_removal(
|
||||||
self.remove_klipper_service,
|
self.remove_klipper_service,
|
||||||
self.remove_klipper_dir,
|
self.remove_klipper_dir,
|
||||||
self.remove_klipper_env,
|
self.remove_klipper_env,
|
||||||
)
|
)
|
||||||
|
self.message_service.set_message(completion_msg)
|
||||||
|
|
||||||
self.remove_klipper_service = False
|
self.remove_klipper_service = False
|
||||||
self.remove_klipper_dir = False
|
self.remove_klipper_dir = False
|
||||||
self.remove_klipper_env = False
|
self.remove_klipper_env = False
|
||||||
|
|
||||||
self._go_back()
|
|
||||||
|
|
||||||
def _get_selection_state_str(self) -> str:
|
|
||||||
return (
|
|
||||||
"Select everything" if not self.selection_state else "Deselect everything"
|
|
||||||
)
|
|
||||||
|
|
||||||
def _go_back(self, **kwargs) -> None:
|
|
||||||
if self.previous_menu is not None:
|
|
||||||
self.previous_menu().run()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user