|
""" |
|
Command line layout definitions |
|
------------------------------- |
|
|
|
The layout of a command line interface is defined by a Container instance. |
|
There are two main groups of classes here. Containers and controls: |
|
|
|
- A container can contain other containers or controls, it can have multiple |
|
children and it decides about the dimensions. |
|
- A control is responsible for rendering the actual content to a screen. |
|
A control can propose some dimensions, but it's the container who decides |
|
about the dimensions -- or when the control consumes more space -- which part |
|
of the control will be visible. |
|
|
|
|
|
Container classes:: |
|
|
|
- Container (Abstract base class) |
|
|- HSplit (Horizontal split) |
|
|- VSplit (Vertical split) |
|
|- FloatContainer (Container which can also contain menus and other floats) |
|
`- Window (Container which contains one actual control |
|
|
|
Control classes:: |
|
|
|
- UIControl (Abstract base class) |
|
|- FormattedTextControl (Renders formatted text, or a simple list of text fragments) |
|
`- BufferControl (Renders an input buffer.) |
|
|
|
|
|
Usually, you end up wrapping every control inside a `Window` object, because |
|
that's the only way to render it in a layout. |
|
|
|
There are some prepared toolbars which are ready to use:: |
|
|
|
- SystemToolbar (Shows the 'system' input buffer, for entering system commands.) |
|
- ArgToolbar (Shows the input 'arg', for repetition of input commands.) |
|
- SearchToolbar (Shows the 'search' input buffer, for incremental search.) |
|
- CompletionsToolbar (Shows the completions of the current buffer.) |
|
- ValidationToolbar (Shows validation errors of the current buffer.) |
|
|
|
And one prepared menu: |
|
|
|
- CompletionsMenu |
|
|
|
""" |
|
|
|
from __future__ import annotations |
|
|
|
from .containers import ( |
|
AnyContainer, |
|
ColorColumn, |
|
ConditionalContainer, |
|
Container, |
|
DynamicContainer, |
|
Float, |
|
FloatContainer, |
|
HorizontalAlign, |
|
HSplit, |
|
ScrollOffsets, |
|
VerticalAlign, |
|
VSplit, |
|
Window, |
|
WindowAlign, |
|
WindowRenderInfo, |
|
is_container, |
|
to_container, |
|
to_window, |
|
) |
|
from .controls import ( |
|
BufferControl, |
|
DummyControl, |
|
FormattedTextControl, |
|
SearchBufferControl, |
|
UIContent, |
|
UIControl, |
|
) |
|
from .dimension import ( |
|
AnyDimension, |
|
D, |
|
Dimension, |
|
is_dimension, |
|
max_layout_dimensions, |
|
sum_layout_dimensions, |
|
to_dimension, |
|
) |
|
from .layout import InvalidLayoutError, Layout, walk |
|
from .margins import ( |
|
ConditionalMargin, |
|
Margin, |
|
NumberedMargin, |
|
PromptMargin, |
|
ScrollbarMargin, |
|
) |
|
from .menus import CompletionsMenu, MultiColumnCompletionsMenu |
|
from .scrollable_pane import ScrollablePane |
|
|
|
__all__ = [ |
|
|
|
"Layout", |
|
"InvalidLayoutError", |
|
"walk", |
|
|
|
"AnyDimension", |
|
"Dimension", |
|
"D", |
|
"sum_layout_dimensions", |
|
"max_layout_dimensions", |
|
"to_dimension", |
|
"is_dimension", |
|
|
|
"AnyContainer", |
|
"Container", |
|
"HorizontalAlign", |
|
"VerticalAlign", |
|
"HSplit", |
|
"VSplit", |
|
"FloatContainer", |
|
"Float", |
|
"WindowAlign", |
|
"Window", |
|
"WindowRenderInfo", |
|
"ConditionalContainer", |
|
"ScrollOffsets", |
|
"ColorColumn", |
|
"to_container", |
|
"to_window", |
|
"is_container", |
|
"DynamicContainer", |
|
"ScrollablePane", |
|
|
|
"BufferControl", |
|
"SearchBufferControl", |
|
"DummyControl", |
|
"FormattedTextControl", |
|
"UIControl", |
|
"UIContent", |
|
|
|
"Margin", |
|
"NumberedMargin", |
|
"ScrollbarMargin", |
|
"ConditionalMargin", |
|
"PromptMargin", |
|
|
|
"CompletionsMenu", |
|
"MultiColumnCompletionsMenu", |
|
] |
|
|