From f14f63daf2b613d1a38ab268f3b3385972b5237a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Schreiner?= Date: Sat, 24 Mar 2012 18:32:13 +0100 Subject: [PATCH] Add 'History' tab, showing the current page's list of previous revisions. fixes #561 --- .../qwebcontentedit/main_window.py | 59 +++++++++++++- .../qwebcontentedit/ui/main_window.ui | 77 ++++++++++++++++++- 2 files changed, 130 insertions(+), 6 deletions(-) diff --git a/weboob/applications/qwebcontentedit/main_window.py b/weboob/applications/qwebcontentedit/main_window.py index 0e127ada..f8dd2b6e 100644 --- a/weboob/applications/qwebcontentedit/main_window.py +++ b/weboob/applications/qwebcontentedit/main_window.py @@ -20,7 +20,8 @@ import logging from copy import deepcopy from PyQt4.QtCore import SIGNAL -from PyQt4.QtGui import QMessageBox +from PyQt4.QtGui import QMessageBox, QTableWidgetItem +from PyQt4.QtCore import Qt from weboob.tools.application.qt import QtMainWindow, QtDo from weboob.tools.application.qt.backendcfg import BackendCfg @@ -46,6 +47,9 @@ class MainWindow(QtMainWindow): self.connect(self.ui.saveButton, SIGNAL("clicked()"), self.savePage) self.connect(self.ui.actionBackends, SIGNAL("triggered()"), self.backendsConfig) self.connect(self.ui.contentEdit, SIGNAL("textChanged()"), self._textChanged) + self.connect(self.ui.loadHistoryButton, + SIGNAL("clicked()"), + self.loadHistory) if self.weboob.count_backends() == 0: self.backendsConfig() @@ -66,6 +70,9 @@ class MainWindow(QtMainWindow): if self.ui.tabWidget.currentIndex() == 1: if self.backend is not None: self.showPreview() + elif self.ui.tabWidget.currentIndex() == 2: + if self.backend is not None: + self.loadHistory() def _textChanged(self): if self.backend: @@ -143,5 +150,53 @@ class MainWindow(QtMainWindow): def showPreview(self): tmp_content = deepcopy(self.content) - tmp_content.content=unicode(self.ui.contentEdit.toPlainText()) + tmp_content.content = unicode(self.ui.contentEdit.toPlainText()) self.ui.previewEdit.setHtml(self.backend.get_content_preview(tmp_content)) + + def loadHistory(self): + """ Loads the page's log into the 'History' tab """ + if self.backend is None: + return + + self.ui.loadHistoryButton.setEnabled(False) + self.ui.loadHistoryButton.setText("Loading...") + self.ui.historyTable.clear() + self.ui.historyTable.setRowCount(0) + + self.ui.historyTable.setHorizontalHeaderLabels(["Revision", "Time", "Author", "Summary"]) + self.ui.historyTable.setColumnWidth(3, 1000) + + self.process = QtDo(self.weboob, self._gotRevision) + self.process.do('iter_revisions', + self.content.id, + max_results=self.ui.nbRevBox.value(), + backends=(self.backend,)) + + def _gotRevision(self, backend, revision): + """ Callback for loadHistory's QtDo """ + if not backend: + self.process = None + self.ui.loadHistoryButton.setEnabled(True) + self.ui.loadHistoryButton.setText("Reload") + return + + # we set the flags to Qt.ItemIsEnabled so that the items + # are not modifiable + item_revision = QTableWidgetItem(revision.revision) + item_revision.setFlags(Qt.ItemIsEnabled) + + item_time = QTableWidgetItem(revision.timestamp.strftime('%Y-%m-%d %H:%M:%S')) + item_time.setFlags(Qt.ItemIsEnabled) + + item_author = QTableWidgetItem(revision.author) + item_author.setFlags(Qt.ItemIsEnabled) + + item_summary = QTableWidgetItem(revision.comment) + item_summary.setFlags(Qt.ItemIsEnabled) + + row = self.ui.historyTable.currentRow() + 1 + self.ui.historyTable.insertRow(row) + self.ui.historyTable.setItem(row, 0, item_revision) + self.ui.historyTable.setItem(row, 1, item_time) + self.ui.historyTable.setItem(row, 2, item_author) + self.ui.historyTable.setItem(row, 3, item_summary) diff --git a/weboob/applications/qwebcontentedit/ui/main_window.ui b/weboob/applications/qwebcontentedit/ui/main_window.ui index 15675510..3126beca 100644 --- a/weboob/applications/qwebcontentedit/ui/main_window.ui +++ b/weboob/applications/qwebcontentedit/ui/main_window.ui @@ -6,8 +6,8 @@ 0 0 - 498 - 543 + 608 + 609 @@ -69,6 +69,75 @@ + + + History + + + + + + + New Column + + + + + Time + + + + + Author + + + + + Summary + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Number of revisions + + + + + + + 10 + + + + + + + Reload + + + + + + + @@ -109,8 +178,8 @@ 0 0 - 498 - 23 + 608 + 22