From 5b301ae042c108dad79831009fc5afe2609c4ae9 Mon Sep 17 00:00:00 2001 From: "motty.mio2" Date: Mon, 7 Feb 2022 20:55:36 +0900 Subject: [PATCH 1/4] add default values option for dialog --- prompt_toolkit/shortcuts/dialogs.py | 6 ++++-- prompt_toolkit/widgets/base.py | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/prompt_toolkit/shortcuts/dialogs.py b/prompt_toolkit/shortcuts/dialogs.py index a91bb3142..a5cd4c087 100644 --- a/prompt_toolkit/shortcuts/dialogs.py +++ b/prompt_toolkit/shortcuts/dialogs.py @@ -175,6 +175,7 @@ def radiolist_dialog( ok_text: str = "Ok", cancel_text: str = "Cancel", values: Optional[List[Tuple[_T, AnyFormattedText]]] = None, + default_values :List[_T] = [], style: Optional[BaseStyle] = None, ) -> Application[_T]: """ @@ -189,7 +190,7 @@ def radiolist_dialog( def ok_handler() -> None: get_app().exit(result=radio_list.current_value) - radio_list = RadioList(values) + radio_list = RadioList(values=values, default_values = default_values) dialog = Dialog( title=title, @@ -213,6 +214,7 @@ def checkboxlist_dialog( ok_text: str = "Ok", cancel_text: str = "Cancel", values: Optional[List[Tuple[_T, AnyFormattedText]]] = None, + default_values: List[_T] = [], style: Optional[BaseStyle] = None, ) -> Application[List[_T]]: """ @@ -227,7 +229,7 @@ def checkboxlist_dialog( def ok_handler() -> None: get_app().exit(result=cb_list.current_values) - cb_list = CheckboxList(values) + cb_list = CheckboxList(values = values, default_values = default_values) dialog = Dialog( title=title, diff --git a/prompt_toolkit/widgets/base.py b/prompt_toolkit/widgets/base.py index 728190b54..123bf18f8 100644 --- a/prompt_toolkit/widgets/base.py +++ b/prompt_toolkit/widgets/base.py @@ -686,14 +686,27 @@ class _DialogList(Generic[_T]): multiple_selection: bool = False show_scrollbar: bool = True - def __init__(self, values: Sequence[Tuple[_T, AnyFormattedText]]) -> None: + def __init__( + self, + values: Sequence[Tuple[_T, AnyFormattedText]], + default_values: List[_T] + ) -> None: assert len(values) > 0 self.values = values # current_values will be used in multiple_selection, # current_value will be used otherwise. - self.current_values: List[_T] = [] - self.current_value: _T = values[0][0] + candidate: List[_T] = [value for (value, _) in values] + self.current_values: List[_T] = [ + default_value + for default_value in default_values + if (default_value in candidate) + ] + self.current_value: _T = ( + default_values[0] + if len(default_values) and default_values[0] in candidate + else values[0][0] + ) self._selected_index = 0 # Key bindings. From c185b2e7d13cc6b7c7e4b3c6b436d59c74dc1abc Mon Sep 17 00:00:00 2001 From: "motty.mio2" Date: Mon, 7 Feb 2022 21:45:32 +0900 Subject: [PATCH 2/4] fix format on base.py --- prompt_toolkit/widgets/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prompt_toolkit/widgets/base.py b/prompt_toolkit/widgets/base.py index 123bf18f8..289fa4b4d 100644 --- a/prompt_toolkit/widgets/base.py +++ b/prompt_toolkit/widgets/base.py @@ -697,13 +697,13 @@ def __init__( # current_values will be used in multiple_selection, # current_value will be used otherwise. candidate: List[_T] = [value for (value, _) in values] - self.current_values: List[_T] = [ + self.current_values: List[_T] = [ default_value for default_value in default_values if (default_value in candidate) ] self.current_value: _T = ( - default_values[0] + default_values[0] if len(default_values) and default_values[0] in candidate else values[0][0] ) From a3a5671533aa6341f1b8ebdfd91a4aa3ee5b7b28 Mon Sep 17 00:00:00 2001 From: "motty.mio2" Date: Mon, 7 Feb 2022 21:54:13 +0900 Subject: [PATCH 3/4] add default_values in class Checkbox --- prompt_toolkit/widgets/base.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prompt_toolkit/widgets/base.py b/prompt_toolkit/widgets/base.py index 289fa4b4d..091075646 100644 --- a/prompt_toolkit/widgets/base.py +++ b/prompt_toolkit/widgets/base.py @@ -872,7 +872,8 @@ class Checkbox(CheckboxList[str]): def __init__(self, text: AnyFormattedText = "", checked: bool = False) -> None: values = [("value", text)] - CheckboxList.__init__(self, values) + default_values = ["value"] + CheckboxList.__init__(self, values=values, default_values=default_values) self.checked = checked @property From 1b6867896ac95ef1b3fff860b71ba4f3a4440aef Mon Sep 17 00:00:00 2001 From: "motty.mio2" Date: Tue, 8 Feb 2022 01:23:13 +0900 Subject: [PATCH 4/4] update format for black --- prompt_toolkit/shortcuts/dialogs.py | 6 +++--- prompt_toolkit/widgets/base.py | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/prompt_toolkit/shortcuts/dialogs.py b/prompt_toolkit/shortcuts/dialogs.py index a5cd4c087..bfb29b984 100644 --- a/prompt_toolkit/shortcuts/dialogs.py +++ b/prompt_toolkit/shortcuts/dialogs.py @@ -175,7 +175,7 @@ def radiolist_dialog( ok_text: str = "Ok", cancel_text: str = "Cancel", values: Optional[List[Tuple[_T, AnyFormattedText]]] = None, - default_values :List[_T] = [], + default_values: List[_T] = [], style: Optional[BaseStyle] = None, ) -> Application[_T]: """ @@ -190,7 +190,7 @@ def radiolist_dialog( def ok_handler() -> None: get_app().exit(result=radio_list.current_value) - radio_list = RadioList(values=values, default_values = default_values) + radio_list = RadioList(values=values, default_values=default_values) dialog = Dialog( title=title, @@ -229,7 +229,7 @@ def checkboxlist_dialog( def ok_handler() -> None: get_app().exit(result=cb_list.current_values) - cb_list = CheckboxList(values = values, default_values = default_values) + cb_list = CheckboxList(values=values, default_values=default_values) dialog = Dialog( title=title, diff --git a/prompt_toolkit/widgets/base.py b/prompt_toolkit/widgets/base.py index 091075646..7b5ffec36 100644 --- a/prompt_toolkit/widgets/base.py +++ b/prompt_toolkit/widgets/base.py @@ -687,9 +687,7 @@ class _DialogList(Generic[_T]): show_scrollbar: bool = True def __init__( - self, - values: Sequence[Tuple[_T, AnyFormattedText]], - default_values: List[_T] + self, values: Sequence[Tuple[_T, AnyFormattedText]], default_values: List[_T] ) -> None: assert len(values) > 0