From 8c13b307d6dd969fd2e433bb48c278440fc86fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Thu, 27 Aug 2026 21:06:09 +0200 Subject: [PATCH] fix: replace checkbox with numbered list + text input for package removal --- euri_mklive/tui.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/euri_mklive/tui.py b/euri_mklive/tui.py index 0885449..6045f8e 100644 --- a/euri_mklive/tui.py +++ b/euri_mklive/tui.py @@ -346,17 +346,24 @@ def select_packages() -> list[str]: seen.add(p) deduped.append(p) - # let user deselect individual packages + # let user remove individual packages if deduped: - console.print(f"\n [dim]{len(deduped)} packages from groups. Deselect any:[/]") - deselected = questionary.checkbox( - "Uncheck packages to remove (space=remove, enter=done):", - choices=deduped, + console.print(f"\n [dim]{len(deduped)} packages selected:[/]") + for i, p in enumerate(deduped, 1): + console.print(f" [cyan]{i:3}.[/] {p}") + console.print() + remove_input = questionary.text( + "Remove packages? Enter numbers comma-separated (or empty to keep all):", + default="", ).ask() - if deselected is None: + if remove_input is None: sys.exit(0) - deselected_set = set(deselected) - deduped = [p for p in deduped if p not in deselected_set] + if remove_input.strip(): + try: + remove_idx = {int(x.strip()) - 1 for x in remove_input.split(",")} + deduped = [p for i, p in enumerate(deduped) if i not in remove_idx] + except ValueError: + console.print(" [yellow]Invalid input, keeping all packages.[/]") # custom packages console.print()