#!/usr/bin/env python
"""
Horizontal align demo with HSplit.
"""
from prompt_toolkit.application import Application
from prompt_toolkit.formatted_text import HTML
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit.layout.containers import (
HorizontalAlign,
HSplit,
VerticalAlign,
VSplit,
Window,
WindowAlign,
)
from prompt_toolkit.layout.controls import FormattedTextControl
from prompt_toolkit.layout.layout import Layout
from prompt_toolkit.widgets import Frame
TITLE = HTML(
""" HSplit HorizontalAlign example.
Press 'q' to quit."""
)
LIPSUM = """\
Lorem ipsum dolor
sit amet, consectetur
adipiscing elit.
Maecenas quis
interdum enim."""
# 1. The layout
body = HSplit(
[
Frame(
Window(FormattedTextControl(TITLE), height=2), style="bg:#88ff88 #000000"
),
HSplit(
[
# Left alignment.
VSplit(
[
Window(
FormattedTextControl(HTML("LEFT")),
width=10,
ignore_content_width=True,
style="bg:#ff3333 ansiblack",
align=WindowAlign.CENTER,
),
VSplit(
[
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
],
padding=1,
padding_style="bg:#888888",
align=HorizontalAlign.LEFT,
height=5,
padding_char="|",
),
]
),
# Center alignment.
VSplit(
[
Window(
FormattedTextControl(HTML("CENTER")),
width=10,
ignore_content_width=True,
style="bg:#ff3333 ansiblack",
align=WindowAlign.CENTER,
),
VSplit(
[
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
],
padding=1,
padding_style="bg:#888888",
align=HorizontalAlign.CENTER,
height=5,
padding_char="|",
),
]
),
# Right alignment.
VSplit(
[
Window(
FormattedTextControl(HTML("RIGHT")),
width=10,
ignore_content_width=True,
style="bg:#ff3333 ansiblack",
align=WindowAlign.CENTER,
),
VSplit(
[
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
Window(
FormattedTextControl(LIPSUM),
height=4,
style="bg:#444488",
),
],
padding=1,
padding_style="bg:#888888",
align=HorizontalAlign.RIGHT,
height=5,
padding_char="|",
),
]
),
# Justify
VSplit(
[
Window(
FormattedTextControl(HTML("JUSTIFY")),
width=10,
ignore_content_width=True,
style="bg:#ff3333 ansiblack",
align=WindowAlign.CENTER,
),
VSplit(
[
Window(
FormattedTextControl(LIPSUM), style="bg:#444488"
),
Window(
FormattedTextControl(LIPSUM), style="bg:#444488"
),
Window(
FormattedTextControl(LIPSUM), style="bg:#444488"
),
],
padding=1,
padding_style="bg:#888888",
align=HorizontalAlign.JUSTIFY,
height=5,
padding_char="|",
),
]
),
],
padding=1,
padding_style="bg:#ff3333 #ffffff",
padding_char=".",
align=VerticalAlign.TOP,
),
]
)
# 2. Key bindings
kb = KeyBindings()
@kb.add("q")
def _(event):
"Quit application."
event.app.exit()
# 3. The `Application`
application = Application(layout=Layout(body), key_bindings=kb, full_screen=True)
def run():
application.run()
if __name__ == "__main__":
run()