summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSchark <jordan@schark.online>2026-03-26 04:19:39 -0400
committerSchark <jordan@schark.online>2026-03-26 04:19:39 -0400
commit78c22e03d705cf6b4c213678c71c80979df42e4a (patch)
tree510336061c4f698e98aaf65112058911df2045d0
parent6f8f9ce5a6e13415bb5248ae84639eac47a79cae (diff)
downloadcs2pov-78c22e03d705cf6b4c213678c71c80979df42e4a.tar.gz
cs2pov-78c22e03d705cf6b4c213678c71c80979df42e4a.zip
Attempt to fix bug, stop button
-rw-r--r--cs2pov/gui/app.py6
-rw-r--r--cs2pov/gui/job_queue.py24
-rw-r--r--cs2pov/gui/workers.py1
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)