refactor: share the stylesheet renderer
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]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
35dd742211
commit
3e69f3f05c
@@ -0,0 +1,35 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user