You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.2 KiB
107 lines
3.2 KiB
"""
|
|
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 unicode_literals
|
|
from .containers import Container, HSplit, VSplit, FloatContainer, Float, Window, WindowAlign, WindowRenderInfo, ConditionalContainer, ScrollOffsets, ColorColumn, to_container, to_window, is_container, HorizontalAlign, VerticalAlign, DynamicContainer
|
|
from .controls import BufferControl, SearchBufferControl, DummyControl, FormattedTextControl, UIControl, UIContent
|
|
from .dimension import Dimension, D, sum_layout_dimensions, max_layout_dimensions, to_dimension, is_dimension
|
|
from .layout import Layout, InvalidLayoutError, walk
|
|
from .margins import Margin, NumberedMargin, ScrollbarMargin, ConditionalMargin, PromptMargin
|
|
from .menus import CompletionsMenu, MultiColumnCompletionsMenu
|
|
|
|
__all__ = [
|
|
# Layout.
|
|
'Layout',
|
|
'InvalidLayoutError',
|
|
'walk',
|
|
|
|
# Dimensions.
|
|
'Dimension',
|
|
'D',
|
|
'sum_layout_dimensions',
|
|
'max_layout_dimensions',
|
|
'to_dimension',
|
|
'is_dimension',
|
|
|
|
# Containers.
|
|
'Container',
|
|
'HorizontalAlign',
|
|
'VerticalAlign',
|
|
'HSplit',
|
|
'VSplit',
|
|
'FloatContainer',
|
|
'Float',
|
|
'WindowAlign',
|
|
'Window',
|
|
'WindowRenderInfo',
|
|
'ConditionalContainer',
|
|
'ScrollOffsets',
|
|
'ColorColumn',
|
|
'to_container',
|
|
'to_window',
|
|
'is_container',
|
|
'DynamicContainer',
|
|
|
|
# Controls.
|
|
'BufferControl',
|
|
'SearchBufferControl',
|
|
'DummyControl',
|
|
'FormattedTextControl',
|
|
'UIControl',
|
|
'UIContent',
|
|
|
|
# Margins.
|
|
'Margin',
|
|
'NumberedMargin',
|
|
'ScrollbarMargin',
|
|
'ConditionalMargin',
|
|
'PromptMargin',
|
|
|
|
# Menus.
|
|
'CompletionsMenu',
|
|
'MultiColumnCompletionsMenu',
|
|
]
|