|
|
@@ -366,7 +366,7 @@ class ProtocolListWidget(QWidget):
|
|
|
class _ScanWorker(QThread):
|
|
|
"""Fire-and-forget: load scenario and run_all via orchestrator REST."""
|
|
|
|
|
|
- finished = Signal(str) # job_id or success message
|
|
|
+ finished = Signal(str) # job_id
|
|
|
error = Signal(str)
|
|
|
|
|
|
def __init__(self, url: str, info: dict, parent=None) -> None:
|
|
|
@@ -395,7 +395,7 @@ class _ScanWorker(QThread):
|
|
|
job_id = r.json().get("job_id", "?")
|
|
|
r2 = client.post(f"{self._url}/scenario/{job_id}/run_all")
|
|
|
r2.raise_for_status()
|
|
|
- self.finished.emit(f"job_id={job_id}")
|
|
|
+ self.finished.emit(job_id)
|
|
|
|
|
|
def _run_urllib(self) -> None:
|
|
|
import urllib.request
|
|
|
@@ -417,7 +417,7 @@ class _ScanWorker(QThread):
|
|
|
)
|
|
|
with urllib.request.urlopen(req2, timeout=15):
|
|
|
pass
|
|
|
- self.finished.emit(f"job_id={job_id}")
|
|
|
+ self.finished.emit(job_id)
|
|
|
|
|
|
|
|
|
# ==============================================================================
|
|
|
@@ -431,6 +431,8 @@ class ScanningTab(QWidget):
|
|
|
"Геометрия" holds orientation presets + Rx/Ry/Rz spinboxes + live 3x3 matrix.
|
|
|
"""
|
|
|
|
|
|
+ scan_job_started = Signal(str) # job_id — emitted once the orchestrator accepts the job
|
|
|
+
|
|
|
def __init__(self, parent: QWidget | None = None) -> None:
|
|
|
super().__init__(parent)
|
|
|
self.setStyleSheet(f"background: {_BG_DARK};")
|
|
|
@@ -815,10 +817,12 @@ class ScanningTab(QWidget):
|
|
|
v.set_scanning(False)
|
|
|
self._update_scan_ready_state()
|
|
|
|
|
|
- def _on_scan_done(self, msg: str) -> None:
|
|
|
- self._status_label.setText(f"{i18n.tr('done_status')} ({msg})")
|
|
|
+ def _on_scan_done(self, job_id: str) -> None:
|
|
|
+ short = job_id[:8] + "..." if len(job_id) > 8 else job_id
|
|
|
+ self._status_label.setText(f"{i18n.tr('done_status')} ({short})")
|
|
|
self._status_label.setStyleSheet("color: #66ccff; font-size: 11px;")
|
|
|
self._btn_scan.setChecked(False)
|
|
|
+ self.scan_job_started.emit(job_id)
|
|
|
|
|
|
def _on_scan_error(self, err: str) -> None:
|
|
|
self._status_label.setText(f"{i18n.tr('error_prefix')}: {err[:60]}")
|