HoDA_Radio/main.py
2025-09-26 18:57:49 +02:00

91 lines
2.7 KiB
Python

import sys
import app.utils.paths as paths
from PyQt6.QtWidgets import QApplication
from PyQt6.QtGui import QIcon
from app.ui.main_window import MainWindow
from app.ui.windows.splash_screen import SplashScreen
from app.core.main_manager import MainManager
preloaded_window = None
def preload_application(progress_callback):
"""
Fonction de préchargement qui s'exécute pendant l'affichage du splash screen
Args:
progress_callback: Fonction pour mettre à jour le texte de progression
Returns:
bool: True si tout s'est bien passé, False sinon
"""
global preloaded_window
try:
main_manager = MainManager.get_instance()
language_manager = main_manager.get_language_manager()
update_manager = main_manager.get_update_manager()
progress_callback(language_manager.get_text("checking_updates"))
if update_manager.check_for_update():
return False
progress_callback(language_manager.get_text("initializing"))
preloaded_window = MainWindow()
progress_callback(language_manager.get_text("loading_complete"))
return True
except Exception:
return False
def main() -> int:
global preloaded_window
main_manager: MainManager = MainManager.get_instance()
theme_manager = main_manager.get_theme_manager()
settings_manager = main_manager.get_settings_manager()
app: QApplication = QApplication(sys.argv)
app.setStyleSheet(theme_manager.get_sheet())
app.setApplicationName(settings_manager.get_config("app_name"))
app.setWindowIcon(QIcon(paths.get_asset_path("icon")))
splash_image_path = paths.get_asset_path(settings_manager.get_config("splash_image"))
use_splash = splash_image_path and paths.Path(splash_image_path).exists()
if use_splash:
splash = SplashScreen(preload_function=preload_application)
splash.show_splash()
def on_splash_finished(success):
global preloaded_window
if not success:
app.quit()
return
if preloaded_window:
preloaded_window.show()
else:
window = MainWindow()
window.show()
splash.finished.connect(on_splash_finished)
else:
def dummy_progress(text):
pass
success = preload_application(dummy_progress)
if not success:
return 0
window = preloaded_window if preloaded_window else MainWindow()
window.show()
return app.exec()
if __name__ == "__main__":
sys.exit(main())