The DVD control bar has to look like the dock, which is best guaranteed by drawing it from the same template with the same measurements rather than by keeping two stylesheets in step by hand. Co-Authored-By: Claude Opus 5 <[email protected]>
36 lines
913 B
Python
36 lines
913 B
Python
"""The classroom stylesheet, resolved at the room's UI scale.
|
|
|
|
The dock and the DVD control bar share this so they cannot drift apart:
|
|
one template, one set of measurements, one look.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
from classroom_config import scaled
|
|
|
|
TEMPLATE = Path("/etc/ekklesia-classroom/dock/style.css.in")
|
|
|
|
# Every measurement in the template, at UI_SCALE=1.0.
|
|
MEASUREMENTS = {
|
|
"dock-radius": 24,
|
|
"dock-padding-v": 8,
|
|
"dock-padding-h": 10,
|
|
"button-radius": 16,
|
|
"button-padding": 6,
|
|
"button-size": 44,
|
|
"clock-radius": 16,
|
|
"clock-padding-v": 7,
|
|
"clock-padding-h": 12,
|
|
"clock-font": 17,
|
|
}
|
|
|
|
|
|
def render(scale, template=None):
|
|
"""Resolve the measurement tokens in the stylesheet template."""
|
|
css = (template or TEMPLATE).read_text()
|
|
|
|
for token, value in MEASUREMENTS.items():
|
|
css = css.replace(f"@{token}@", str(scaled(value, scale)))
|
|
|
|
return css
|