Skip to content

Commit 4c2fb15

Browse files
Add 'validator' parameter to input_dialog.
1 parent 41e0c75 commit 4c2fb15

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

prompt_toolkit/shortcuts/dialogs.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from prompt_toolkit.layout.containers import AnyContainer, HSplit
1717
from prompt_toolkit.layout.dimension import Dimension as D
1818
from prompt_toolkit.styles import BaseStyle
19+
from prompt_toolkit.validation import Validator
1920
from prompt_toolkit.widgets import (
2021
Box,
2122
Button,
@@ -25,6 +26,7 @@
2526
ProgressBar,
2627
RadioList,
2728
TextArea,
29+
ValidationToolbar,
2830
)
2931

3032
__all__ = [
@@ -105,6 +107,7 @@ def input_dialog(
105107
ok_text: str = "OK",
106108
cancel_text: str = "Cancel",
107109
completer: Optional[Completer] = None,
110+
validator: Optional[Validator] = None,
108111
password: FilterOrBool = False,
109112
style: Optional[BaseStyle] = None,
110113
) -> Application[str]:
@@ -124,7 +127,11 @@ def ok_handler() -> None:
124127
cancel_button = Button(text=cancel_text, handler=_return_none)
125128

126129
textfield = TextArea(
127-
multiline=False, password=password, completer=completer, accept_handler=accept
130+
multiline=False,
131+
password=password,
132+
completer=completer,
133+
validator=validator,
134+
accept_handler=accept,
128135
)
129136

130137
dialog = Dialog(
@@ -133,6 +140,7 @@ def ok_handler() -> None:
133140
[
134141
Label(text=text, dont_extend_height=True),
135142
textfield,
143+
ValidationToolbar(),
136144
],
137145
padding=D(preferred=1, max=1),
138146
),

prompt_toolkit/widgets/base.py

+6
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
from prompt_toolkit.lexers import DynamicLexer, Lexer
7575
from prompt_toolkit.mouse_events import MouseEvent, MouseEventType
7676
from prompt_toolkit.utils import get_cwidth
77+
from prompt_toolkit.validation import DynamicValidator, Validator
7778

7879
from .toolbars import SearchToolbar
7980

@@ -139,6 +140,8 @@ class TextArea:
139140
:param focus_on_click: When `True`, focus after mouse click.
140141
:param input_processors: `None` or a list of
141142
:class:`~prompt_toolkit.layout.Processor` objects.
143+
:param validator: `None` or a :class:`~prompt_toolkit.validation.Validator`
144+
object.
142145
143146
Window attributes:
144147
@@ -173,6 +176,7 @@ def __init__(
173176
auto_suggest: Optional[AutoSuggest] = None,
174177
completer: Optional[Completer] = None,
175178
complete_while_typing: FilterOrBool = True,
179+
validator: Optional[Validator] = None,
176180
accept_handler: Optional[BufferAcceptHandler] = None,
177181
history: Optional[History] = None,
178182
focusable: FilterOrBool = True,
@@ -208,6 +212,7 @@ def __init__(
208212
self.auto_suggest = auto_suggest
209213
self.read_only = read_only
210214
self.wrap_lines = wrap_lines
215+
self.validator = validator
211216

212217
self.buffer = Buffer(
213218
document=Document(text, 0),
@@ -217,6 +222,7 @@ def __init__(
217222
complete_while_typing=Condition(
218223
lambda: is_true(self.complete_while_typing)
219224
),
225+
validator=DynamicValidator(lambda: self.validator),
220226
auto_suggest=DynamicAutoSuggest(lambda: self.auto_suggest),
221227
accept_handler=accept_handler,
222228
history=history,

0 commit comments

Comments
 (0)