0.7.1: i tasti delle azioni rapide dichiarano la loro altezza

In Silica il tasto piglia l'altezza dal tema (itemSizeExtraSmall, ~56 px) e non
dal contenuto: con icona e etichetta (~110) il testo usciva dalla scatola e la
riga di contorno della colonna finiva sopra le etichette. Ora height:
Theme.itemSizeMedium. Aggiunto il controllo in tests/label_fit_check.py e il
registro di posizione e altezza di ogni riga della Home.
This commit is contained in:
Carlo
2026-10-11 12:26:20 +02:00
parent e8937dc1ea
commit 2b397b6c3a
7 changed files with 100 additions and 13 deletions
+21 -6
View File
@@ -31,7 +31,7 @@ FONT = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
def testi_dei_tasti(qml: str):
"""I testi dei tasti che hanno un'icona, nell'ordine in cui appaiono."""
"""I tasti con icona: (testo, altezza dichiarata o None), in ordine."""
fuori = []
for blocco in re.finditer(r"Button\s*\{(.*?)\n\s*\}", qml, re.S):
corpo = blocco.group(1)
@@ -40,7 +40,11 @@ def testi_dei_tasti(qml: str):
riga = re.search(r"text:\s*(.+)", corpo)
if not riga:
continue
fuori.extend(re.findall(r'qsTr\("([^"]+)"\)', riga.group(1)))
testo = re.findall(r'qsTr\("([^"]+)"\)', riga.group(1))
if not testo:
continue
alt = re.search(r"^\s*height:\s*(.+)$", corpo, re.M)
fuori.append((testo[0], alt.group(1).strip() if alt else None))
return fuori
@@ -62,13 +66,24 @@ def main():
qml = (RADICE / "qml" / "pages" / "MainPage.qml").read_text(encoding="utf-8")
ts = (RADICE / "translations" / "harbour-aira-it.ts").read_text(encoding="utf-8")
it = traduzioni(ts)
sorgenti = testi_dei_tasti(qml)
if len(sorgenti) < 3:
print("ESITO: trovati %d testi con icona, ne servono 3" % len(sorgenti))
origine = testi_dei_tasti(qml)
if len(origine) < 3:
print("ESITO: trovati %d testi con icona, ne servono 3" % len(origine))
return 1
sorgenti = [t for t, _ in origine]
disponibile = TASTO - 2 * RIENTRO - ICONA - DISTACCO
problema = 0
# 1. L'altezza. In Silica il tasto la piglia dal tema
# (Theme.itemSizeExtraSmall, ~56 px) e non dal contenuto: con icona E
# etichetta il contenuto ne occupa ~110, esce dalla scatola, e la riga
# successiva della colonna viene messa sopra la scatola -- cioe' sopra
# l'etichetta che sporge. Chi ha entrambi deve dichiarare l'altezza.
for testo, alt in origine:
if not alt:
print(" %-9s nessuna altezza dichiarata: il tema ne da' ~56 px, il contenuto ~110" % testo)
problema += 1
disponibile = TASTO - 2 * RIENTRO - ICONA - DISTACCO
f = ImageFont.truetype(FONT, CARATTERE)
def largo(testo):