123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- """
- 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.
- "Layout",
- "InvalidLayoutError",
- "walk",
- # Dimensions.
- "AnyDimension",
- "Dimension",
- "D",
- "sum_layout_dimensions",
- "max_layout_dimensions",
- "to_dimension",
- "is_dimension",
- # Containers.
- "AnyContainer",
- "Container",
- "HorizontalAlign",
- "VerticalAlign",
- "HSplit",
- "VSplit",
- "FloatContainer",
- "Float",
- "WindowAlign",
- "Window",
- "WindowRenderInfo",
- "ConditionalContainer",
- "ScrollOffsets",
- "ColorColumn",
- "to_container",
- "to_window",
- "is_container",
- "DynamicContainer",
- "ScrollablePane",
- # Controls.
- "BufferControl",
- "SearchBufferControl",
- "DummyControl",
- "FormattedTextControl",
- "UIControl",
- "UIContent",
- # Margins.
- "Margin",
- "NumberedMargin",
- "ScrollbarMargin",
- "ConditionalMargin",
- "PromptMargin",
- # Menus.
- "CompletionsMenu",
- "MultiColumnCompletionsMenu",
- ]
|