| """Module contains :class:`.ValidationWindow` which can be used to display error.""" | |
| from typing import Optional | |
| from prompt_toolkit.filters.base import FilterOrBool | |
| from prompt_toolkit.formatted_text.base import AnyFormattedText | |
| from prompt_toolkit.layout.containers import ConditionalContainer, Float, Window | |
| from prompt_toolkit.layout.controls import FormattedTextControl | |
| class ValidationWindow(ConditionalContainer): | |
| """Conditional `prompt_toolkit` :class:`~prompt_toolkit.layout.Window` that displays error. | |
| Args: | |
| invalid_message: Error message to display when error occured. | |
| filter: Condition to display the error window. | |
| """ | |
| def __init__( | |
| self, invalid_message: AnyFormattedText, filter: FilterOrBool, **kwargs | |
| ) -> None: | |
| super().__init__( | |
| Window( | |
| FormattedTextControl(invalid_message), dont_extend_height=True, **kwargs | |
| ), | |
| filter=filter, | |
| ) | |
| class ValidationFloat(Float): | |
| """:class:`~prompt_toolkit.layout.Float` wrapper around :class:`.ValidationWindow`. | |
| Args: | |
| invalid_message: Error message to display when error occured. | |
| filter: Condition to display the error window. | |
| left: Distance to left. | |
| right: Distance to right. | |
| bottom: Distance to bottom. | |
| top: Distance to top. | |
| """ | |
| def __init__( | |
| self, | |
| invalid_message: AnyFormattedText, | |
| filter: FilterOrBool, | |
| left: Optional[int] = None, | |
| right: Optional[int] = None, | |
| bottom: Optional[int] = None, | |
| top: Optional[int] = None, | |
| **kwargs | |
| ) -> None: | |
| super().__init__( | |
| content=ValidationWindow( | |
| invalid_message=invalid_message, filter=filter, **kwargs | |
| ), | |
| left=left, | |
| right=right, | |
| bottom=bottom, | |
| top=top, | |
| ) | |