Startup-Splash (petrol-gruen) waehrend Plugin-Init

Verdeckt visuell die 3+ Sekunden Wartezeit beim Cold-Start (Panel-
Registration + WindowLayout-Apply). Stilistisch identisch zum
Launcher-Splash: petrol-gruener Verlauf mit "DOSSIER."-Logo, pulsierendem
Dot, animierter Progress-Bar.

Architektur:
- _startup_splash.py: zentrale show() / hide() Helpers
  - Borderless Eto.Forms.Form (420x160), Topmost, kein Taskbar-Eintrag
  - WebView mit Inline-HTML (gleicher Stil wie launcher/public/splash.html)
  - Sticky-Key _dossier_startup_splash haelt die Form-Referenz
  - Safety-Timeout 8s falls hide() vergessen wird

- startup.py _load_all: show() ganz am Anfang (bevor Imports laufen)
- oberleiste._on_ready: hide() via 200ms-Timer NACH window-layout-apply
  (bzw. nach skip) — Layout-Animation ist auf Panels in Finalposition
  kurz sichtbar bevor Splash verschwindet

Effekt: User sieht sofort einen schoenen Branded-Loading-Screen statt
3s grauer Rhino-UI mit halb-geladenen Panels.
This commit is contained in:
2026-05-27 19:31:00 +02:00
parent edaf83229b
commit 6a13ede6b7
3 changed files with 172 additions and 0 deletions
+9
View File
@@ -1380,6 +1380,15 @@ class OberleisteBridge(panel_base.BaseBridge):
sc.sticky["_dossier_view_colors_applied"] = True
except Exception as ex:
print("[OBERLEISTE] auto-apply (layout/colors):", ex)
# Splash-Screen (falls noch offen) jetzt wegmachen — Layout-Apply ist
# durch, Panels sind in finaler Position. Lazy via Timer 200ms damit
# die Layout-Animation kurz auf den finalen Panels sichtbar wird.
try:
import threading
import _startup_splash as _ss
threading.Timer(0.2, _ss.hide).start()
except Exception as ex:
print("[OBERLEISTE] splash hide:", ex)
self._send_state(force=True)
def handle(self, data):