]> danix's work - publisher.git/commitdiff
feat: wire Traduci button in MissingTranslationView
authorDanilo M. <redacted>
Sun, 3 May 2026 13:46:08 +0000 (15:46 +0200)
committerDanilo M. <redacted>
Sun, 3 May 2026 13:46:08 +0000 (15:46 +0200)
Adds a Traduci button that enables on row selection and emits
translate_requested, connected to _do_translate in main_window.

Co-Authored-By: Claude Sonnet 4.6 <redacted>
ui/articles_view.py
ui/main_window.py

index d905fde2705f2b22ee83ff8b11eccd2e1fa54e31..2c52ac87a60a4f556b574d5e936a57f6b21ee8f7 100644 (file)
@@ -1,7 +1,7 @@
 from __future__ import annotations
 from PyQt6.QtWidgets import (
-    QWidget, QVBoxLayout, QTabWidget,
-    QListWidget, QListWidgetItem, QLabel,
+    QWidget, QVBoxLayout, QHBoxLayout, QTabWidget,
+    QListWidget, QListWidgetItem, QLabel, QPushButton,
     QStyledItemDelegate, QApplication,
 )
 from PyQt6.QtCore import Qt, pyqtSignal, QSize, QRect
@@ -131,10 +131,28 @@ class MissingTranslationView(QWidget):
         self._list = QListWidget()
         self._list.setItemDelegate(ArticleItemDelegate(self._list))
         layout.addWidget(self._list)
-        self._list.itemClicked.connect(lambda item: self.article_selected.emit(item.article))
+        self._list.itemClicked.connect(self._on_item_clicked)
+
+        bar = QHBoxLayout()
+        self._btn_translate = QPushButton("🌐 Traduci")
+        self._btn_translate.setEnabled(False)
+        self._btn_translate.clicked.connect(self._on_translate_clicked)
+        bar.addStretch()
+        bar.addWidget(self._btn_translate)
+        layout.addLayout(bar)
+
+    def _on_item_clicked(self, item: QListWidgetItem):
+        self.article_selected.emit(item.article)
+        self._btn_translate.setEnabled(True)
+
+    def _on_translate_clicked(self):
+        item = self._list.currentItem()
+        if item:
+            self.translate_requested.emit(item.article)
 
     def set_articles(self, articles: list[Article]):
         self._list.clear()
+        self._btn_translate.setEnabled(False)
         missing = [a for a in articles if not a.has_translation]
         for a in missing:
             lang_other = "🇬🇧" if a.lang == "it" else "🇮🇹"
index b29ff57f39905837c0094e61898b7979eca451a3..b3c657a58792877950d482cbd6c2749f9d1287a6 100644 (file)
@@ -69,6 +69,7 @@ class MainWindow(QMainWindow):
 
         self._missing_view = MissingTranslationView()
         self._missing_view.article_selected.connect(self._on_article_selected)
+        self._missing_view.translate_requested.connect(self._do_translate)
         self._stack.addWidget(self._missing_view)
         self._page_no_translation = self._stack.count() - 1