0.6.6: dalla Home si aprono le regolazioni dell'oggetto toccato, non di tutto l'impianto
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Controlla che la Home apra le regolazioni dell'oggetto toccato.
|
||||
|
||||
La UI non e' eseguibile senza il kit Silica, quindi il controllo e' statico:
|
||||
|
||||
1. ogni push verso SetpointsPage.qml dichiara una sezione (chi tocca "Casa"
|
||||
non deve trovarsi davanti le regolazioni di tutto l'impianto);
|
||||
2. la sezione dichiarata e' fra quelle che la pagina conosce;
|
||||
3. ogni sezione della pagina e' legata a una visibilita' (mostraCasa /
|
||||
mostraAcqua), altrimenti "solo quelle dell'oggetto" resta una promessa.
|
||||
|
||||
Esce 0 se tutto regge, 1 con l'elenco dei problemi.
|
||||
"""
|
||||
import pathlib
|
||||
import re
|
||||
import sys
|
||||
|
||||
QML = pathlib.Path(__file__).resolve().parent.parent / "qml"
|
||||
HOME = QML / "pages" / "MainPage.qml"
|
||||
PAGINA = QML / "pages" / "SetpointsPage.qml"
|
||||
|
||||
problemi = []
|
||||
|
||||
home = HOME.read_text(encoding="utf-8")
|
||||
pagina = PAGINA.read_text(encoding="utf-8")
|
||||
|
||||
# 1. le chiamate dalla Home, con l'eventuale sezione subito dopo
|
||||
chiamate = re.findall(
|
||||
r'SetpointsPage\.qml"\)\s*(?:,\s*\{\s*"section"\s*:\s*"([^"]+)"\s*\})?',
|
||||
home,
|
||||
)
|
||||
if not chiamate:
|
||||
problemi.append("MainPage: nessun push verso SetpointsPage.qml (rinominato?)")
|
||||
|
||||
senza_sezione = chiamate.count("")
|
||||
if senza_sezione:
|
||||
problemi.append(
|
||||
"%d push verso SetpointsPage.qml senza sezione: la pagina si apre intera"
|
||||
% senza_sezione
|
||||
)
|
||||
|
||||
# 2. le sezioni che la pagina conosce, lette dai confronti su page.section
|
||||
conosciute = set(re.findall(r'page\.section\s*!==\s*"([^"]+)"', pagina))
|
||||
if not conosciute:
|
||||
problemi.append("SetpointsPage: nessuna sezione dichiarata (page.section)")
|
||||
|
||||
for sezione in chiamate:
|
||||
if sezione and sezione not in conosciute:
|
||||
problemi.append(
|
||||
"MainPage chiede la sezione %r, che SetpointsPage non conosce (%s)"
|
||||
% (sezione, ", ".join(sorted(conosciute)) or "nessuna")
|
||||
)
|
||||
|
||||
# 3. ogni sezione deve nascondere l'altra: entrambe le visibilita' usate
|
||||
for proprieta in ("mostraCasa", "mostraAcqua"):
|
||||
if ("visible: page.%s" % proprieta) not in pagina:
|
||||
problemi.append(
|
||||
"SetpointsPage: nessun blocco legato a %s: la sezione non si nasconde"
|
||||
% proprieta
|
||||
)
|
||||
|
||||
if problemi:
|
||||
print("ESITO: problemi trovati")
|
||||
for p in problemi:
|
||||
print(" -", p)
|
||||
sys.exit(1)
|
||||
|
||||
print("ESITO: sezioni OK (%d chiamate dalla Home, sezioni %s)"
|
||||
% (len(chiamate), ", ".join(sorted(conosciute))))
|
||||
Reference in New Issue
Block a user