Interfície en català, botó Esborra i botons d'icona segons l'estat
This commit is contained in:
+39
-13
@@ -8,6 +8,7 @@ from PySide6.QtCore import QThreadPool, Qt
|
||||
from PySide6.QtGui import QAction
|
||||
from PySide6.QtWidgets import (
|
||||
QMainWindow,
|
||||
QMessageBox,
|
||||
QPlainTextEdit,
|
||||
QScrollArea,
|
||||
QSplitter,
|
||||
@@ -15,6 +16,7 @@ from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
)
|
||||
|
||||
from .. import gitops
|
||||
from ..config import Config, Game
|
||||
from ..settings import load_settings, save_settings
|
||||
from ..workers import CheckUpdatesWorker, DownloadWorker, RunWorker
|
||||
@@ -53,6 +55,7 @@ class MainWindow(QMainWindow):
|
||||
row = GameRow(game, root)
|
||||
row.download_requested.connect(self._on_download)
|
||||
row.run_requested.connect(self._on_run)
|
||||
row.delete_requested.connect(self._on_delete)
|
||||
self.rows[game.id] = row
|
||||
list_layout.addWidget(row)
|
||||
list_layout.addStretch(1)
|
||||
@@ -82,14 +85,14 @@ class MainWindow(QMainWindow):
|
||||
# --------------------------------------------------------------- menú
|
||||
|
||||
def _build_menu(self) -> None:
|
||||
menu = self.menuBar().addMenu("Opciones")
|
||||
menu = self.menuBar().addMenu("Opcions")
|
||||
|
||||
self.action_hide = QAction("Ocultar juegos no descargados", self, checkable=True)
|
||||
self.action_hide = QAction("Amaga els jocs no descarregats", self, checkable=True)
|
||||
self.action_hide.setChecked(self.settings.hide_not_downloaded)
|
||||
self.action_hide.toggled.connect(self._on_toggle_hide)
|
||||
menu.addAction(self.action_hide)
|
||||
|
||||
self.action_check = QAction("Comprobar actualizaciones", self)
|
||||
self.action_check = QAction("Comprova actualitzacions", self)
|
||||
self.action_check.triggered.connect(self._check_updates)
|
||||
menu.addAction(self.action_check)
|
||||
|
||||
@@ -107,7 +110,7 @@ class MainWindow(QMainWindow):
|
||||
|
||||
def _check_updates(self) -> None:
|
||||
self.action_check.setEnabled(False)
|
||||
self._log("=== Comprobando actualizaciones ===")
|
||||
self._log("=== Comprovant actualitzacions ===")
|
||||
worker = CheckUpdatesWorker(self.root, self.config.games)
|
||||
worker.signals.log.connect(self._log)
|
||||
worker.signals.result.connect(self._mark_update)
|
||||
@@ -127,11 +130,11 @@ class MainWindow(QMainWindow):
|
||||
|
||||
def _check_done(self, _payload) -> None:
|
||||
self.action_check.setEnabled(True)
|
||||
self._log("=== Comprobación de actualizaciones terminada ===")
|
||||
self._log("=== Comprovació d'actualitzacions acabada ===")
|
||||
|
||||
def _check_error(self, msg: str) -> None:
|
||||
self.action_check.setEnabled(True)
|
||||
self._log(f"!!! Error comprobando actualizaciones: {msg}")
|
||||
self._log(f"!!! Error comprovant actualitzacions: {msg}")
|
||||
|
||||
# --------------------------------------------------------------- helpers
|
||||
|
||||
@@ -146,12 +149,12 @@ class MainWindow(QMainWindow):
|
||||
worker.signals.finished.connect(lambda *_: self._workers.discard(worker))
|
||||
worker.signals.error.connect(lambda *_: self._workers.discard(worker))
|
||||
|
||||
# --------------------------------------------------------------- acciones
|
||||
# --------------------------------------------------------------- accions
|
||||
|
||||
def _on_download(self, game: Game) -> None:
|
||||
row = self.rows[game.id]
|
||||
row.set_busy(True, "Descargando…")
|
||||
self._log(f"=== Download: {game.name} ===")
|
||||
row.set_busy(True, "Descarregant…")
|
||||
self._log(f"=== Descàrrega: {game.name} ===")
|
||||
|
||||
worker = DownloadWorker(self.root, game)
|
||||
worker.signals.log.connect(self._log)
|
||||
@@ -161,7 +164,7 @@ class MainWindow(QMainWindow):
|
||||
self.pool.start(worker)
|
||||
|
||||
def _download_done(self, game: Game) -> None:
|
||||
self._log(f"=== {game.name}: descarga completada ===")
|
||||
self._log(f"=== {game.name}: descàrrega completada ===")
|
||||
row = self.rows[game.id]
|
||||
row.set_busy(False)
|
||||
row.set_update_available(False) # recién traído del remoto → al día
|
||||
@@ -174,8 +177,8 @@ class MainWindow(QMainWindow):
|
||||
|
||||
def _on_run(self, game: Game) -> None:
|
||||
row = self.rows[game.id]
|
||||
row.set_busy(True, "Ejecutando…")
|
||||
self._log(f"=== Run: {game.name} ===")
|
||||
row.set_busy(True, "Executant…")
|
||||
self._log(f"=== Juga: {game.name} ===")
|
||||
|
||||
worker = RunWorker(self.root, game)
|
||||
worker.signals.log.connect(self._log)
|
||||
@@ -185,7 +188,7 @@ class MainWindow(QMainWindow):
|
||||
self.pool.start(worker)
|
||||
|
||||
def _run_done(self, game: Game, code: int) -> None:
|
||||
self._log(f"=== {game.name}: finalizó con código {code} ===")
|
||||
self._log(f"=== {game.name}: ha finalitzat amb codi {code} ===")
|
||||
row = self.rows[game.id]
|
||||
row.set_busy(False)
|
||||
row.refresh()
|
||||
@@ -195,3 +198,26 @@ class MainWindow(QMainWindow):
|
||||
row = self.rows[game.id]
|
||||
row.set_busy(False)
|
||||
row.refresh()
|
||||
|
||||
def _on_delete(self, game: Game) -> None:
|
||||
resp = QMessageBox.question(
|
||||
self,
|
||||
"Esborrar descàrrega",
|
||||
f"Segur que vols esborrar la descàrrega local de «{game.name}»?\n\n"
|
||||
"S'eliminarà el clon i les dades en local (no es treu de la llista).",
|
||||
QMessageBox.Yes | QMessageBox.No,
|
||||
QMessageBox.No,
|
||||
)
|
||||
if resp != QMessageBox.Yes:
|
||||
return
|
||||
self._log(f"=== Esborra: {game.name} ===")
|
||||
gitops.delete_local(self.root, game, log=self._log)
|
||||
if game.id in self.settings.updates_pending:
|
||||
self.settings.updates_pending = [
|
||||
g for g in self.settings.updates_pending if g != game.id
|
||||
]
|
||||
save_settings(self.settings)
|
||||
row = self.rows[game.id]
|
||||
row.set_update_available(False)
|
||||
row.refresh()
|
||||
self._apply_filter() # si està actiu "amaga no descarregats", ara s'amaga
|
||||
|
||||
Reference in New Issue
Block a user