more beauty

This commit is contained in:
2026-01-10 13:31:11 +01:00
parent 1855810c14
commit 8739455231
2 changed files with 130 additions and 33 deletions

72
main.py
View File

@@ -1,14 +1,15 @@
# main.py
import sys
import os
import time
from PyQt6.QtWidgets import QApplication
from PyQt6.QtGui import QPixmap, QFont, QIcon
from PyQt6.QtCore import qInstallMessageHandler, QTimer, Qt
# Config zuerst!
from config import qt_message_handler, LOG_FILE
from PyQt6.QtWidgets import QApplication, QSplashScreen
from PyQt6.QtGui import QPixmap, QFont
from PyQt6.QtCore import qInstallMessageHandler
from ui import UffWindow
from ui import UffWindow, ModernSplashScreen, ModelLoaderThread
qInstallMessageHandler(qt_message_handler)
os.environ["QT_LOGGING_RULES"] = "qt.text.font.db=false;qt.qpa.fonts=false"
@@ -18,18 +19,61 @@ if __name__ == "__main__":
app = QApplication(sys.argv)
app.setFont(QFont("Segoe UI", 10))
splash = None
if os.path.exists("assets/uff_banner.jpeg"):
try:
splash = QSplashScreen(QPixmap("assets/uff_banner.jpeg"))
splash.show()
except: pass
# 1. ICON SETZEN (Für die ganze App)
# Wenn assets/icon.png existiert, wird es genutzt.
if os.path.exists("assets/icon.png"):
app_icon = QIcon("assets/icon.png")
app.setWindowIcon(app_icon)
# 2. SPLASH SCREEN ERSTELLEN
splash_pix = QPixmap("assets/uff_banner.jpeg")
# Falls kein Bild da ist, nehmen wir ein leeres (damit es nicht crasht)
if splash_pix.isNull():
splash_pix = QPixmap(600, 400)
splash_pix.fill(Qt.GlobalColor.white)
splash = ModernSplashScreen(splash_pix)
splash.show()
window = UffWindow(splash)
window.show()
window.start_model_loading()
# 3. LADEN SIMULIEREN & STARTEN
# Wir nutzen einen kleinen Trick, um den Start visuell zu "begleiten"
splash.set_progress(10, "Lade Konfiguration...")
app.processEvents()
time.sleep(0.3) # Nur für den Effekt
splash.set_progress(30, "Verbinde Datenbank...")
app.processEvents()
# Hauptfenster erstellen (aber noch versteckt lassen)
window = UffWindow()
splash.set_progress(50, "Lade Benutzeroberfläche...")
app.processEvents()
time.sleep(0.2)
# 4. DAS SCHWERE KI-MODELL LADEN
splash.set_progress(60, "Lade KI-Modell (das dauert kurz)...")
app.processEvents()
# Wir starten den Thread, aber wir müssen warten bis er fertig ist,
# bevor wir den Splash schließen.
loader = ModelLoaderThread()
def on_loaded(model):
splash.set_progress(100, "Fertig!")
app.processEvents()
time.sleep(0.5) # Kurz warten bei 100%
window.on_model_loaded(model) # Modell an Fenster übergeben
window.show() # Fenster zeigen
splash.finish(window) # Splash schließen
loader.model_loaded.connect(on_loaded)
loader.start()
sys.exit(app.exec())
except Exception as e:
import traceback
print("CRITICAL MAIN CRASH:")