1
0
Fork 1
mirror of https://github.com/thatmattlove/hyperglass.git synced 2026-01-17 08:48:05 +00:00
thatmattlove-hyperglass/hyperglass/models/ui.py

64 lines
1.4 KiB
Python

"""UI Configuration models."""
# Standard Library
import typing as t
# Local
from .main import HyperglassModel
from .config.web import WebPublic
from .config.cache import Cache
from .config.params import ParamsPublic
from .config.messages import Messages
Alignment = t.Union[t.Literal["left"], t.Literal["center"], t.Literal["right"], None]
StructuredDataField = t.Tuple[str, str, Alignment]
class UIDirective(HyperglassModel):
"""UI: Directive."""
id: str
name: str
field_type: t.Union[str, None]
groups: t.List[str]
description: str
info: t.Optional[str] = None
options: t.Optional[t.List[t.Dict[str, t.Any]]] = None
class UILocation(HyperglassModel):
"""UI: Location (Device)."""
id: str
name: str
group: t.Optional[str] = None
avatar: t.Optional[str] = None
description: t.Optional[str] = None
directives: t.List[UIDirective] = []
class UIDevices(HyperglassModel):
"""UI: Devices."""
group: t.Optional[str] = None
locations: t.List[UILocation] = []
class UIContent(HyperglassModel):
"""UI: Content."""
credit: str
greeting: str
class UIParameters(ParamsPublic, HyperglassModel):
"""UI Configuration Parameters."""
cache: Cache
web: WebPublic
messages: Messages
version: str
devices: t.List[UIDevices] = []
parsed_data_fields: t.Tuple[StructuredDataField, ...]
content: UIContent
developer_mode: bool