summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ui/git_view.py3
-rw-r--r--ui/hugo_panel.py5
-rw-r--r--ui/main_window.py2
-rw-r--r--ui/translation_view.py4
-rw-r--r--workers/hugo_worker.py2
5 files changed, 12 insertions, 4 deletions
diff --git a/ui/git_view.py b/ui/git_view.py
index 2c759e8..b5f7371 100644
--- a/ui/git_view.py
+++ b/ui/git_view.py
@@ -16,6 +16,7 @@ class GitView(QWidget):
self._repo_path = repo_path
self._worker: GitWorker | None = None
self._build_ui()
+ self.load_status()
def _build_ui(self):
layout = QVBoxLayout(self)
@@ -130,5 +131,5 @@ class GitView(QWidget):
return
commit_hash, rel_path = item.data(256)
worker = GitWorker.restore_article(self._repo_path, commit_hash, rel_path, self)
+ worker.finished.connect(lambda ok: self.load_status() if ok else None)
self._run_worker(worker)
- self.load_status()
diff --git a/ui/hugo_panel.py b/ui/hugo_panel.py
index 4305b79..fafe59c 100644
--- a/ui/hugo_panel.py
+++ b/ui/hugo_panel.py
@@ -66,6 +66,9 @@ class HugoPanel(QWidget):
self._stop_btn.setEnabled(False)
self._url_btn.setVisible(False)
- def closeEvent(self, event):
+ def stop_server(self):
self._worker.stop()
+
+ def closeEvent(self, event):
+ self.stop_server()
super().closeEvent(event)
diff --git a/ui/main_window.py b/ui/main_window.py
index 4366da6..cc3326f 100644
--- a/ui/main_window.py
+++ b/ui/main_window.py
@@ -267,5 +267,5 @@ class MainWindow(QMainWindow):
self._refresh_articles()
def closeEvent(self, event):
- self._hugo_panel._worker.stop()
+ self._hugo_panel.stop_server()
super().closeEvent(event)
diff --git a/ui/translation_view.py b/ui/translation_view.py
index 70e7ac2..6ce53dd 100644
--- a/ui/translation_view.py
+++ b/ui/translation_view.py
@@ -71,6 +71,10 @@ class TranslationView(QWidget):
layout.addWidget(self._action_bar)
def start_translation(self, article: Article):
+ if self._worker is not None:
+ self._worker.log_line.disconnect()
+ self._worker.finished.disconnect()
+ self._worker.error.disconnect()
self._article = article
self._log.clear()
self._preview.clear()
diff --git a/workers/hugo_worker.py b/workers/hugo_worker.py
index 14bfd0b..796c925 100644
--- a/workers/hugo_worker.py
+++ b/workers/hugo_worker.py
@@ -31,7 +31,7 @@ class HugoWorker(QObject):
if self.is_running:
self._process.terminate()
self._process.waitForFinished(3000)
- self.stopped.emit()
+ # stopped emitted by _on_finished; don't double-emit
def _on_stdout(self):
data = self._process.readAllStandardOutput().data().decode("utf-8", errors="replace")