UI-Adapter-Spezifikation

Dieses Dokument beschreibt die UI-Adapter-Spezifikation der Messlaufzeit in mpylab.env. Ziel ist, dass Terminal- (TUI) und GUI-Implementierungen dieselbe Messlogik nutzen können.

Primäre Methoden

  • ask(msg, buttons, level, data) -> int Zeigt eine Nutzermeldung an und gibt den Index des gewählten Buttons zurück.

  • emit_log(block, *args) -> None Sendet Log-Ereignisse an konfigurierte Log-Senken.

  • poll_key() -> int | None Nicht-blockierendes Key-Polling. Liefert ASCII-Code oder None.

  • check_interrupt() -> int | None Rückwärtskompatibler Alias, der auf poll_key() delegiert.

  • pre_user_event() / post_user_event() Hooks um blockierende Benutzerinteraktionen.

  • run_interactive(obj, banner) Startet eine interaktive Sitzung, falls unterstützt.

Integration in Measure

Measure._setup_ui_adapter() bindet Legacy-Attribute an den Adapter:

  • self.messenger -> ui.ask

  • self.UserInterruptTester -> ui.check_interrupt

  • self.PollKey -> ui.poll_key

  • self.PreUserEvent -> ui.pre_user_event

  • self.PostUserEvent -> ui.post_user_event

Zur Kompatibilität werden beide Schreibweisen für den Interrupt-Setter unterstützt:

  • set_user_interrupt_tester(...) (bevorzugt)

  • set_user_interrupt_Tester(...) (Legacy-Alias)

Hinweis zur Migration

Interner Code sollte ausschließlich set_user_interrupt_tester(...) verwenden. Der Legacy-Alias set_user_interrupt_Tester(...) bleibt für externe Skripte und bestehende Notebooks zur Wahrung der Rückwärtskompatibilität verfügbar.

Nutzung im Kernel

Messkerne verwenden poll_key() als expliziten Pfad für Tastatureingaben. Wenn ein direkter Handler nicht aufrufbar ist, kann resolve_poll_key(...) als Fallback self.PollKey aus den lokalen Variablen des Aufrufers auflösen.