47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
"""Punto de entrada: arranca la QApplication y la ventana principal."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
|
|
from PySide6.QtGui import QIcon
|
|
from PySide6.QtWidgets import QApplication, QMessageBox
|
|
|
|
from .config import load_config
|
|
from .paths import app_icon_path, config_file, data_root
|
|
from .ui.main_window import MainWindow
|
|
from .ui.theme import apply_theme
|
|
|
|
|
|
def main() -> int:
|
|
app = QApplication(sys.argv)
|
|
app.setApplicationName("jail-launcher")
|
|
# No fixem applicationDisplayName: a Windows/X11 Qt l'afegeix al títol de la
|
|
# finestra ("títol - displayName") i duplicaria «Jail Launcher», que ja surt
|
|
# a WINDOW_TITLE. El nom de l'app al menú de macOS ve del bundle (Nuitka).
|
|
icon_path = app_icon_path()
|
|
if icon_path is not None:
|
|
app.setWindowIcon(QIcon(str(icon_path)))
|
|
# Tema del sistema para el posible diálogo de error previo a la ventana;
|
|
# MainWindow re-aplica el modo guardado (system/light/dark) y vigila los cambios.
|
|
apply_theme(app)
|
|
|
|
cfg_path = config_file()
|
|
try:
|
|
config = load_config(cfg_path)
|
|
except Exception as exc: # noqa: BLE001 - mostrar cualquier error de carga al usuario
|
|
QMessageBox.critical(
|
|
None,
|
|
"Error carregant games.toml",
|
|
f"No s'ha pogut llegir la configuració a:\n{cfg_path}\n\n{exc}",
|
|
)
|
|
return 1
|
|
|
|
window = MainWindow(config, data_root(config.data_dir))
|
|
window.show()
|
|
return app.exec()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|