From 204898d34f7a541a2f9564aa973453a7cf7d5916 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sat, 25 Mar 2023 16:29:42 +0200 Subject: [PATCH] (Added) better label prompt for choosing labels. --- CHANGELOG.org | 4 +++- tui_rsync/cli/groups/groups.py | 12 +----------- tui_rsync/cli/label_prompt.py | 24 +++++++++++++++++++++++- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.org b/CHANGELOG.org index 33d6688..a24cf71 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -39,6 +39,8 @@ Added *remove all* option for sources. ** 0.8.6 <2023-03-23 Thu> Added *remove all* option for groups. -** 0.8.6 <2023-03-23 Thu> +** 0.8.7 <2023-03-24 Fri> Added *update label* option for source. +** 0.8.8 <2023-03-25 Sat> + Added better label prompt for choosing labels. diff --git a/tui_rsync/cli/groups/groups.py b/tui_rsync/cli/groups/groups.py index 86ccc73..75cddbf 100644 --- a/tui_rsync/cli/groups/groups.py +++ b/tui_rsync/cli/groups/groups.py @@ -47,16 +47,6 @@ def add( question = "Would you like to change [yellow b]the group label[/]?" group_label = LabelPrompt.ask_uuid(question) - labels = [] - while True: - is_empty = count_all_labels_except(labels) == 0 - if is_empty: - break - is_fzf = Confirm.ask("Would you like to add a source to the group? ", - default=True) - if not is_fzf: - break - option = LabelPrompt.get_label_except_fzf(labels) - labels.append(option) + labels = LabelPrompt.get_labels() Group.create_save(group_label, labels) diff --git a/tui_rsync/cli/label_prompt.py b/tui_rsync/cli/label_prompt.py index 02bf9f7..f9be7d3 100644 --- a/tui_rsync/cli/label_prompt.py +++ b/tui_rsync/cli/label_prompt.py @@ -18,10 +18,11 @@ ################################################################################ from rich.console import Console -from rich.prompt import Prompt +from rich.prompt import Confirm, Prompt, IntPrompt from pyfzf import FzfPrompt import uuid from tui_rsync.models.models import all_labels, all_labels_except +from tui_rsync.models.models import count_all_labels_except console = Console() @@ -46,3 +47,24 @@ class LabelPrompt: def get_label_except_fzf(labels = None) -> str: fzf = FzfPrompt() return fzf.prompt(all_labels_except(labels).iterator())[0] + + @staticmethod + def get_labels(labels = None) -> list: + confirm_question = "Would you like to add a source/sources to the group?" + is_fzf = Confirm.ask(confirm_question, default=True) + + if not is_fzf: + return [] + + count_question = "How much would you like to add sources to the group?" + count = IntPrompt.ask(count_question, default=1) + + count_max = count_all_labels_except(labels) + count = count_max if count > count_max else count + + labels = [] + for i in range(count): + option = LabelPrompt.get_label_except_fzf(labels) + labels.append(option) + + return labels