Files
jail-launcher/jlauncher/__main__.py
T
JailDesigner e0a93a9c28 Estil targeta tipus web a les files + tema seleccionable (system/clar/fosc)
UI:
- Files amb estil de targeta: icona arrodonida, títol gran, subtítol atenuat i
  'pills' amb estat, versió, data de llançament, jugadors, autor i topics. Els
  pills envolten amb un FlowLayout nou quan no caben.
- Submenú Opcions > Tema amb Sistema/Clar/Fosc; persisteix a settings.json
  (theme) i s'aplica a l'instant. El watcher del SO només actua en mode Sistema.

Dades:
- GameMeta guarda topics i created_at, llegits de la resposta de Gitea que ja
  demanàvem (gratis, auto-sincronitzats).
- games.toml: camps opcionals players i author per joc (la resta surt de Gitea).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 10:13:32 +02:00

40 lines
1.1 KiB
Python

"""Punto de entrada: arranca la QApplication y la ventana principal."""
from __future__ import annotations
import sys
from PySide6.QtWidgets import QApplication, QMessageBox
from .config import load_config
from .paths import 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("jlauncher")
# 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())