feat: Wonder Ink looks like the classroom, and its preview shows the page
The tab strip is drawn from the classroom's own palette, the one the panel, Parent Call and Presentations read: larger titles, an accent under the active tab, worksheets marked with a document icon. Its one corner widget is the lesson's size and Print — not a new-tab button. With one tab the strip stays hidden, as before; a change of size shows a moment's badge instead, and the right-click menu and keys still work. The window is named "Lesson — Wonder Ink" and carries its own icon. The print preview showed "Page 1 could not be shown" in the real session while printing correctly: poppler 25.03 does not write to stdout when asked for "-" — it writes a file called "-.png" into the current directory, which for Wonder Ink is the teacher's home. Pages are now rendered into a directory of their own, and the lab print check fails any preview that does not draw its page. The teacher's manual has lesson size and printing. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
48b3097c43
commit
1cb9fd35d2
@@ -306,7 +306,7 @@ check "the launcher names the shell's app id" ekklesia-wonderink \
|
||||
# check reads the code outside that class; anywhere else a text box in
|
||||
# this window would be an address bar.
|
||||
check "no code offers a new tab button or an address bar" 0 \
|
||||
"$(in_lab "sed '/^class PrintPreview/,/^def notify/d' /usr/local/bin/classroom-wonderink | grep -vE '^[[:space:]]*#' | grep -cE 'QLineEdit\\(|setCornerWidget|addressBar|bind\\(\"Ctrl\\+T' || true")"
|
||||
"$(in_lab "sed '/^class PrintPreview/,/^def notify/d; /setCornerWidget(self._controls/d' /usr/local/bin/classroom-wonderink | grep -vE '^[[:space:]]*#' | grep -cE 'QLineEdit\\(|setCornerWidget|addressBar|bind\\(\"Ctrl\\+T' || true")"
|
||||
# Separate from the ordinary browser, which is the whole reason the split
|
||||
# exists: a teacher's Wonder Ink sign-in and the room's shared YouTube
|
||||
# account must never be in one profile.
|
||||
|
||||
@@ -100,6 +100,13 @@ for scenario in "${scenarios[@]}"; do
|
||||
|
||||
judge "Wonder Ink did not crash, and exited by itself" exited_cleanly
|
||||
|
||||
# The preview has to SHOW the page, not merely count it. A preview
|
||||
# that printed the right thing while showing a blank was what the
|
||||
# first version of this check let through.
|
||||
if said 'PREVIEW '; then
|
||||
judge "the preview drew the page it will print" "! grep 'PREVIEW ' <<< \"\$out\" | grep -q 'shown=False'"
|
||||
fi
|
||||
|
||||
case "$scenario" in
|
||||
web)
|
||||
judge "the preview showed the lesson, 3 Letter pages, Elmer chosen" \
|
||||
|
||||
@@ -60,7 +60,7 @@ def when(cond, then, label, limit=30):
|
||||
def preview(): return window._preview
|
||||
def ready(): return preview() is not None and preview()._pdf is not None
|
||||
def describe(d):
|
||||
return f"pages={d._pages} printers={[d._printer.itemText(i) for i in range(d._printer.count())]} paper={d.paper()} colour_offered={d._colour.isVisible()} status={d._status.text()!r}"
|
||||
return f"shown={d._page in d._images} pages={d._pages} printers={[d._printer.itemText(i) for i in range(d._printer.count())]} paper={d.paper()} colour_offered={d._colour.isVisible()} status={d._status.text()!r}"
|
||||
|
||||
def finish(code=0):
|
||||
stamp(f"RESULT notes={notes} preview_open={preview() is not None} tabs={window._tabs.count()}")
|
||||
|
||||
Reference in New Issue
Block a user