diff options
Diffstat (limited to 'ui/main_window.py')
| -rw-r--r-- | ui/main_window.py | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/ui/main_window.py b/ui/main_window.py index 4073591..ad7134f 100644 --- a/ui/main_window.py +++ b/ui/main_window.py @@ -91,8 +91,15 @@ class MainWindow(QMainWindow): self._stack.addWidget(self._translation_view) self._page_translations = self._stack.count() - 1 + from ui.git_view import GitView + + self._git_view = GitView(Path(self.config.blog_repo), parent=self) + self._git_view.refresh_needed.connect(self._refresh_articles) + self._stack.addWidget(self._git_view) + self._page_git = self._stack.count() - 1 + # Remaining placeholders - for name in ["taxonomy", "media", "git", "hugo"]: + for name in ["taxonomy", "media", "hugo"]: w = QLabel(f"[{name}]") w.setAlignment(Qt.AlignmentFlag.AlignCenter) self._stack.addWidget(w) @@ -205,10 +212,31 @@ class MainWindow(QMainWindow): self._stack.setCurrentIndex(self._page_translations) def _do_git_push(self, branch: str): - pass # implemented in Task 16 + from workers.git_worker import GitWorker + repo = Path(self.config.blog_repo) + if branch == "master": + worker = GitWorker.push_master(repo, self) + else: + worker = GitWorker.push_production(repo, self) + worker.error.connect(lambda e: self.statusBar().showMessage(f"Git error: {e}", 5000)) + worker.finished.connect(lambda ok: self.statusBar().showMessage("Push completato." if ok else "Push fallito.", 4000)) + worker.start() def _do_delete_article(self, article: Article): - pass # implemented in Task 16 + from PyQt6.QtWidgets import QMessageBox + from workers.git_worker import GitWorker + reply = QMessageBox.question( + self, "Elimina articolo", + f"Eliminare '{article.slug}' ({article.lang})? L'operazione sarà tracciata in git.", + ) + if reply == QMessageBox.StandardButton.Yes: + rel = str(article.path.parent.relative_to(Path(self.config.blog_repo))) + worker = GitWorker.remove_article( + Path(self.config.blog_repo), rel, article.slug, article.lang, self + ) + worker.error.connect(lambda e: self.statusBar().showMessage(f"Errore: {e}", 5000)) + worker.finished.connect(lambda ok: self._refresh_articles() if ok else None) + worker.start() def _setup_watcher(self): if not self.config.blog_repo: |
