0.6.8: icone dei tasti alla misura del tema (iconSizeExtraSmall), etichette che ci stanno

Le icone della 0.6.7 erano disegnate a piena misura e il pulsante Silica le
portava a Theme.iconSizeMedium (64 px, misurato sullo screenshot del telefono):
in un tasto largo un terzo di schermo restavano 41 px di testo e le etichette
uscivano tagliate. Ora il tasto dichiara icon.width/height:
Theme.iconSizeExtraSmall e i glifi riempiono il loro riquadro.

Con la geometria vera (tasto 161 px, rientri 16, distacco 24) le etichette
Assenza/Torna/Altro e Away/Home/More ci stanno con margine; "Comandi" (8
lettere) no: il tasto dice Altro, la pagina resta Comandi impianto.

Il pulsante Silica non espone il carattere, quindi il testo non si puo'
rimpicciolire: l'unica leva e' l'icona. Prova ripetibile con i numeri misurati
in docs/icona/tasti-alla-misura-vera.png.
This commit is contained in:
Carlo
2026-10-11 11:27:51 +02:00
parent f1fdc9dfdb
commit 92f179186a
17 changed files with 1103 additions and 63 deletions
+7 -5
View File
@@ -18,7 +18,7 @@ import pathlib
from PIL import Image, ImageDraw
BASE = 688 # si disegna grande e si riduce: bordi puliti a ogni taglia
OUT = 172 # come l'icona piu' grande dell'app, abbondante per il tasto
OUT = 64 # il riquadro vero lo decide il tema (iconSizeExtraSmall)
DEST = pathlib.Path(__file__).resolve().parent.parent / "qml" / "icons"
BIANCO = (255, 255, 255, 255)
VUOTO = (0, 0, 0, 0)
@@ -75,11 +75,13 @@ def comandi(d, cx, cy, w, h):
def main():
DEST.mkdir(parents=True, exist_ok=True)
disegni = (
("quick-boost.png", fiamma, 0.58),
("quick-away.png", casa, 0.74),
("quick-commands.png", comandi, 0.82),
("quick-boost.png", fiamma, 0.62),
("quick-away.png", casa, 0.80),
("quick-commands.png", comandi, 0.90),
)
lato = BASE * 0.72 # margine generoso: il tasto ha il suo
# il glifo riempie il suo riquadro (un filo di margine): la misura sul
# telefono la decide Theme.iconSizeExtraSmall nel pulsante, non il file
lato = BASE * 0.80
for nome, disegno, strettezza in disegni:
img = nuova()
d = ImageDraw.Draw(img)
+10 -8
View File
@@ -343,9 +343,9 @@ TEXTS["en"].update({
"tap_adjust": "Tap a value to adjust it",
"quick_actions": "Quick actions",
"boost": "Boost",
"away_btn": "Away mode",
"back_home": "Back home",
"commands": "Commands",
"away_btn": "Away",
"back_home": "Home",
"commands": "More",
"contorno": "Outside {a} · Thermostat {b} · Zones 1",
"setpoints": "Setpoints",
"current_target": "Current target",
@@ -386,8 +386,8 @@ TEXTS["it"].update({
"quick_actions": "Azioni rapide",
"boost": "Boost",
"away_btn": "Assenza",
"back_home": "Torna a casa",
"commands": "Comandi",
"back_home": "Torna",
"commands": "Altro",
"contorno": "Esterno {a} · Termostato {b} · Zone 1",
"setpoints": "Regolazioni",
"current_target": "Obiettivo attuale",
@@ -510,13 +510,15 @@ def main_screen() -> Image.Image:
d.rounded_rectangle([x, y, x + bw, y + 74], radius=18, fill=BTN_BG,
outline=BTN_EDGE, width=2)
icona = Image.open(OUT.parent.parent / "qml" / "icons" / glifi[i]).convert("RGBA")
# stessa proporzione del telefono: icona piccola del tema (32 su 540)
# riportata alla larghezza di questa anteprima
lato = 42
icona = icona.resize((lato, lato), Image.LANCZOS)
tw = d.textlength(testo, font=font(24))
blocco = lato + 12 + tw
tw = d.textlength(testo, font=font(26))
blocco = lato + 20 + tw
x0 = x + (bw - blocco) / 2
img.paste(icona, (int(x0), int(y + (74 - lato) / 2)), icona)
d.text((x0 + lato + 12, y + 23), testo, font=font(24), fill=PRIMARY)
d.text((x0 + lato + 20, y + 22), testo, font=font(26), fill=PRIMARY)
y += 104
# ---- letture di contorno ----------------------------------------------- #