GUI-Identität und Anwendungsmenüs ================================= Die aktiven MPyLab-Gerätetestprogramme und der Grenzwerteditor verwenden ein kleines Anwendungsicon sowie native About-/Quit-Menüaktionen. About ist nichtmodal, zeigt die installierte Version und Dokumentationslinks und passt das Logo an die Fensterpalette an. Die Messbedienung erhält keinen Logo-Kopf. Installieren Sie ``mpylab[gui]`` für die Qt-Helfer. Die Basisinstallation und ``ApplicationIdentity`` bleiben ohne PySide6 und Shiboken verwendbar. Gemeinsames Muster verwenden ---------------------------- ``mpylab.gui.ApplicationIdentity`` enthält projektspezifische Metadaten. Der Import dieses Moduls lädt kein Qt. Qt-Anwendungen importieren die Helfer explizit aus ``mpylab.gui.qt``: .. code-block:: python from mpylab.gui.qt import create_application, install_branding app = create_application(["example-tool"]) window = build_window() # zuerst Fenster und Layout erstellen branding = install_branding(window) window.show() app.exec() Standard ist die MPyLab-Identität. Begleitprogramme übergeben beiden Helfern eine eigene ``ApplicationIdentity`` mit installierter Version, Beschreibung, URLs, Autor/Lizenz und Paketressourcenpfad. Dort müssen ``icon.png``, ``logo.svg`` und ``logo-inverse.svg`` liegen. Herkunftscommit und Lizenz werden daneben mitgeliefert; Ressourcen müssen sowohl im Wheel als auch im sdist enthalten sein. ``importlib.resources`` lädt sie unabhängig vom Arbeitsverzeichnis und von einem Quellcheckout. ``install_branding`` akzeptiert vorhandene Menüleisten und About-/Quit-Aktionen. Ein bisheriger About-Callback muss zuvor getrennt werden. Eine vorhandene Quit-Aktion behält ihre Verbindung zum normalen Schließpfad. Wiederholte Installation liefert denselben Controller und fügt keine weiteren Menüs hinzu. Beenden und macOS ----------------- Neue Quit-Aktionen rufen ``window.close()`` auf. Der vorhandene Schließpfad bleibt für RF-Off, Worker-Abschaltung, ungespeicherte Ergebnisse und Rückfragen verantwortlich. Lehnt er das Schließen ab, bleiben Fenster und About verfügbar. Nach angenommenem Schließen wird About geschlossen. About greift nicht auf Hardware zu. ``create_application`` muss vor den GUI-Fenstern aufgerufen werden. Unter macOS setzt es die Cocoa-Bundle-Namen nur im Prozessspeicher, bevor Qt das native Menü erzeugt; Python-Installation und plist-Dateien werden nicht verändert. Eine neu erzeugte macOS-Anwendung verwendet Qt-Dialoge, um den mit Qt 6.11.2 auf dem Entwicklungs-Mac beobachteten Absturz beim Rendern nativer NSAlerts zu vermeiden. Native Menüs bleiben aktiv. Auch die Dateiauswahl verwendet dadurch unter macOS Qt-Dialoge. Identität und Dialogeinstellungen eines bereits laufenden Hostprogramms bleiben unverändert. Das Qt-Standardkürzel für Quit ist Command-Q unter macOS und Ctrl-Q auf den anderen unterstützten Desktop-Plattformen. macOS ordnet About/Quit dem nativen Anwendungsmenü zu; sonst bleiben File/Quit und Help/About sichtbar. Prüfung und Übernahme --------------------- Tests verwenden virtuelle Geräte und prüfen Ressourcen, Farbwechsel, wiederholtes About, abgelehntes/angenommenes Schließen und Geräteabschaltung. Zusätzliche native macOS-Prüfungen sind erforderlich: Qt-Offscreen-Tests prüfen keine Cocoa-Menüs oder -Alerts. Vor Veröffentlichung wird ein installiertes Wheel außerhalb des Checkouts geprüft. GUI-Branding ist keine Hardwarefreigabe. Begleitprogramme dürfen die Helfer erst mit einer veröffentlichten MPyLab-Version, die diese enthält, als Mindestabhängigkeit übernehmen. Zunächst die editierbaren Checkouts lokal testen, dann MPyLab vor den abhängigen Programmen veröffentlichen. Die API steht unter :doc:`../../api/ui`, Sicherheit und Worker unter :doc:`ui-workers`.