38 lines
881 B
Python
38 lines
881 B
Python
from __future__ import annotations
|
|
|
|
from textual.layout import Layout
|
|
from textual.layouts.grid import GridLayout
|
|
from textual.layouts.horizontal import HorizontalLayout
|
|
from textual.layouts.stream import StreamLayout
|
|
from textual.layouts.vertical import VerticalLayout
|
|
|
|
LAYOUT_MAP: dict[str, type[Layout]] = {
|
|
"horizontal": HorizontalLayout,
|
|
"grid": GridLayout,
|
|
"vertical": VerticalLayout,
|
|
"stream": StreamLayout,
|
|
}
|
|
|
|
|
|
class MissingLayout(Exception):
|
|
pass
|
|
|
|
|
|
def get_layout(name: str) -> Layout:
|
|
"""Get a named layout object.
|
|
|
|
Args:
|
|
name: Name of the layout.
|
|
|
|
Raises:
|
|
MissingLayout: If the named layout doesn't exist.
|
|
|
|
Returns:
|
|
A layout object.
|
|
"""
|
|
|
|
layout_class = LAYOUT_MAP.get(name)
|
|
if layout_class is None:
|
|
raise MissingLayout(f"no layout called {name!r}, valid layouts")
|
|
return layout_class()
|