| """Module contains the main message window :class:`~prompt_toolkit.container.Container`.""" |
|
|
| from typing import TYPE_CHECKING |
|
|
| from prompt_toolkit.layout.containers import ConditionalContainer, Window |
| from prompt_toolkit.layout.controls import FormattedTextControl |
| from prompt_toolkit.layout.dimension import LayoutDimension |
|
|
| if TYPE_CHECKING: |
| from prompt_toolkit.filters.base import FilterOrBool |
| from prompt_toolkit.formatted_text.base import AnyFormattedText |
|
|
|
|
| class MessageWindow(ConditionalContainer): |
| """Main window to display question to the user. |
| |
| Args: |
| message: The message to display in the terminal. |
| filter: Condition that this message window should be displayed. |
| Use a loading condition to only display this window while its not loading. |
| wrap_lines: Enable line wrapping if the message is too long. |
| show_cursor: Display cursor. |
| """ |
|
|
| def __init__( |
| self, |
| message: "AnyFormattedText", |
| filter: "FilterOrBool", |
| wrap_lines: bool = True, |
| show_cursor: bool = True, |
| **kwargs |
| ) -> None: |
| super().__init__( |
| content=Window( |
| height=LayoutDimension.exact(1) if not wrap_lines else None, |
| content=FormattedTextControl(message, show_cursor=show_cursor), |
| wrap_lines=wrap_lines, |
| dont_extend_height=True, |
| **kwargs |
| ), |
| filter=filter, |
| ) |
|
|