diff options
| author | Schark <jordan@schark.online> | 2026-03-26 04:19:39 -0400 |
|---|---|---|
| committer | Schark <jordan@schark.online> | 2026-03-26 04:19:39 -0400 |
| commit | 78c22e03d705cf6b4c213678c71c80979df42e4a (patch) | |
| tree | 510336061c4f698e98aaf65112058911df2045d0 | |
| parent | 6f8f9ce5a6e13415bb5248ae84639eac47a79cae (diff) | |
| download | cs2pov-78c22e03d705cf6b4c213678c71c80979df42e4a.tar.gz cs2pov-78c22e03d705cf6b4c213678c71c80979df42e4a.zip | |
Attempt to fix bug, stop button
Diffstat (limited to '')
| -rw-r--r-- | cs2pov/gui/app.py | 6 | ||||
| -rw-r--r-- | cs2pov/gui/job_queue.py | 24 | ||||
| -rw-r--r-- | cs2pov/gui/workers.py | 1 |
3 files changed, 31 insertions, 0 deletions
diff --git a/cs2pov/gui/app.py b/cs2pov/gui/app.py index bfd2b36..57c09d4 100644 --- a/cs2pov/gui/app.py +++ b/cs2pov/gui/app.py @@ -95,6 +95,7 @@ class MainWindow(QMainWindow): ) self._job_queue.start_requested.connect(self._on_start_jobs) + self._job_queue.cancel_requested.connect(self._on_cancel) # Platform check if sys.platform != "linux": @@ -162,6 +163,11 @@ class MainWindow(QMainWindow): else: cards[index].set_status(JobStatus.FAILED, "Failed") + def _on_cancel(self): + if self._runner is not None: + self._log.append_line("Cancelling...") + self._runner.cancel() + def _on_all_finished(self, succeeded: int, total: int): self._runner = None self._job_queue.set_all_locked(False) diff --git a/cs2pov/gui/job_queue.py b/cs2pov/gui/job_queue.py index 0579ec6..7fa78b6 100644 --- a/cs2pov/gui/job_queue.py +++ b/cs2pov/gui/job_queue.py @@ -13,6 +13,7 @@ class JobQueuePage(QWidget): """Main page: scrollable job card list with add/clear/start controls.""" start_requested = Signal(list) # emits list of job dicts + cancel_requested = Signal() def __init__(self, demo_cache=None, parent=None): super().__init__(parent) @@ -116,6 +117,28 @@ class JobQueuePage(QWidget): self._start_btn.clicked.connect(self._on_start) action_layout.addWidget(self._start_btn) + self._stop_btn = QPushButton("Stop") + self._stop_btn.setFixedHeight(36) + self._stop_btn.setStyleSheet( + "QPushButton {" + " background: qlineargradient(x1:0, y1:0, x2:1, y2:0, " + " stop:0 #f44336, stop:1 #d32f2f);" + " color: white;" + " font-weight: bold;" + " font-size: 14px;" + " border: none;" + " border-radius: 6px;" + " padding: 0 20px;" + "}" + "QPushButton:hover {" + " background: qlineargradient(x1:0, y1:0, x2:1, y2:0, " + " stop:0 #ff5252, stop:1 #e53935);" + "}" + ) + self._stop_btn.clicked.connect(self.cancel_requested.emit) + self._stop_btn.setVisible(False) + action_layout.addWidget(self._stop_btn) + layout.addWidget(action_bar) def add_job(self, config: dict = None) -> JobCard: @@ -183,6 +206,7 @@ class JobQueuePage(QWidget): self._clear_btn.setEnabled(not locked) self._start_btn.setEnabled(not locked) self._start_btn.setText("Running..." if locked else "Start Jobs") + self._stop_btn.setVisible(locked) def _on_start(self): if not self._cards: diff --git a/cs2pov/gui/workers.py b/cs2pov/gui/workers.py index e13ce54..c72c3d0 100644 --- a/cs2pov/gui/workers.py +++ b/cs2pov/gui/workers.py @@ -121,6 +121,7 @@ class CLIJobRunner(QObject): json.dump(config, f, indent=2) self.message.emit(f"Config: {self._config_path}") + self.message.emit(json.dumps(config, indent=2)) # Set up QProcess self._process = QProcess(self) |
