#!/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))))