What's On v2: Home as a stacked, numbered category menu (design only)
pauljd/davidson-ci: Davidson CI / quality (push) Failing after 2m14s
pauljd/davidson-ci: Davidson CI / ai-review (push) Failing after 1m33s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-11-04 17:06:50 +00:00
co-authored by Claude Opus 5.5
parent 4adb402dd2
commit 0c3ac45db0
4 changed files with 16 additions and 10 deletions
+16 -10
View File
@@ -69,22 +69,28 @@ def home():
s.text(960, 290, "What would you like to watch?", 40, WHITE, HEAD, anchor="middle")
cats = [("all", "All Channels"), ("entertainment", "Entertainment"), ("movies", "Movies"), ("comedy", "Comedy"),
("cartoons", "Cartoons"), ("kids", "Kids"), ("documentaries", "Documentaries"), ("sport", "Sport")]
# A stacked, numbered menu after the classic satellite guide's category list (Paul, 17:06): one row per category,
# the focused row filled gold, and the remote's number keys jump straight to a row.
x, w, h, gap = 560, 800, 62, 8
top = 330
for i, (key, label) in enumerate(cats):
col, row = i % 4, i // 4
x, y = 270 + col * 352, 350 + row * 262
focused = i == 2
s.group(f"Category {label}")
s.rect(x, y, 328, 238, GOLD if focused else PANEL, rx=14)
s.img(x + 124, y + 46, 80, 80, icon(key, NAVY if focused else WHITE), f"{label} icon")
s.text(x + 164, y + 176, label, 30, NAVY if focused else WHITE, BODY, 600, "middle")
y = top + i * (h + gap)
focused = i == 0
s.group(f"Category {i + 1} {label}")
s.rect(x, y, w, h, GOLD if focused else PANEL, rx=6)
s.rect(x, y, 76, h, NAVY if focused else BLUE, rx=6, opacity=0.18 if focused else 1)
s.text(x + 38, y + 43, str(i + 1), 32, NAVY if focused else MUTED, COND, 500, "middle")
s.img(x + 98, y + 13, 36, 36, icon(key, NAVY if focused else WHITE), f"{label} icon")
s.text(x + 152, y + 43, label.upper(), 30, NAVY if focused else WHITE, BODY, 600, spacing=1)
if focused:
s.focus(x, y, 328, 238, 14)
s.text(x + w - 26, y + 43, "▶", 26, NAVY, BODY, 600, "end")
s.focus(x, y, w, h, 6)
s.end()
s.end()
s.group("Gentle pointer to What's On")
s.text(960, 930, "Tonight's Pick and the evening's highlights are in What's On", 22, MUTED, anchor="middle")
s.text(960, top + 8 * (h + gap) + 44, "Tonight's Pick and the evening's highlights are in What's On", 22, MUTED, anchor="middle")
s.end()
s.hints([("OK", "Open the category's channels"), ("◀ ▶ ▲ ▼", "Move"), ("▲", "Top bar"), ("Back", "Close Orbit")])
s.hints([("OK", "Open the category's channels"), ("1 – 8", "Jump to a category"), ("▲ ▼", "Move"), ("▲ at the top", "Top bar"), ("Back", "Close Orbit")])
s.save()
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 143 KiB