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()