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 as e: print(f"Error during preload: {e}") 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())