Fri, 25 Oct 2013 19:33:36 +0200
Fixed code style issues.
# -*- coding: utf-8 -*- # Copyright (c) 2010 - 2013 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the History dialog. """ from PyQt4.QtCore import Qt, pyqtSlot from PyQt4.QtGui import QDialogButtonBox, QListWidgetItem, QApplication from E5Gui.E5Application import e5App from E5Gui import E5MessageBox from PreviewDialogBase import PreviewDialogBase import Utilities class HistoryDialog(PreviewDialogBase): """ Class implementing the History dialog. """ ChangeIDRole = Qt.UserRole def __init__(self, refactoring, changes, isUndo, parent=None): """ Constructor @param refactoring reference to the main refactoring object (Refactoring) @param changes list of ChangeSet objects (list of rope.base.change.ChangeSet) @param isUndo flag indicating an undo history dialog (boolean) @param parent reference to the parent widget (QWidget) """ PreviewDialogBase.__init__(self, parent) self.__refactoring = refactoring self.__isUndo = isUndo if self.__isUndo: self.__actionButton = self.buttonBox.addButton( self.trUtf8("&Undo"), QDialogButtonBox.AcceptRole) self.description.setText(self.trUtf8("Undoable Changes")) title = self.trUtf8("Undo History") else: self.__actionButton = self.buttonBox.addButton( self.trUtf8("&Redo"), QDialogButtonBox.AcceptRole) self.description.setText(self.trUtf8("Redoable Changes")) title = self.trUtf8("Redo History") self.buttonBox.addButton(QDialogButtonBox.Close) self.setWindowTitle(title) # populate the list self.__changes = {} for change in changes: self.__changes[id(change)] = change itm = QListWidgetItem(str(change), self.changesList) itm.setData(HistoryDialog.ChangeIDRole, id(change)) if self.changesList.count() > 0: self.changesList.item(0).setSelected(True) @pyqtSlot(QListWidgetItem, QListWidgetItem) def on_changesList_currentItemChanged(self, current, previous): """ Private slot called when a change is selected. @param current reference to the new current item (QListWidgetItem) @param previous reference to the old current item (QListWidgetItem) """ if current is None: return self.previewEdit.clear() id = current.data(HistoryDialog.ChangeIDRole) change = self.__changes[id] for line in change.get_description().splitlines(True): try: format = self.formats[line[0]] except (IndexError, KeyError): format = self.formats[' '] self._appendText(line, format) def accept(self): """ Public slot to undo the selected set of changes. """ id = self.changesList.currentItem()\ .data(HistoryDialog.ChangeIDRole) change = self.__changes[id] if self.__isUndo: res = E5MessageBox.yesNo( None, self.trUtf8("Undo refactorings"), self.trUtf8("""Shall all refactorings up to <b>{0}</b>""" """ be undone?""") .format(Utilities.html_encode(str(change)))) else: res = E5MessageBox.yesNo( None, self.trUtf8("Redo refactorings"), self.trUtf8("""Shall all refactorings up to <b>{0}</b>""" """ be redone?""") .format(Utilities.html_encode(str(change)))) if res: if not self.__refactoring.confirmAllBuffersSaved(): return from ProgressHandle import ProgressHandle handle = ProgressHandle(change.description, False, self) handle.show() QApplication.processEvents() if self.__isUndo: self.__refactoring.getProject().history.undo( change, task_handle=handle) else: self.__refactoring.getProject().history.redo( change, task_handle=handle) handle.reset() self.__refactoring.refreshEditors(change) p = e5App().getObject("Project") if p.isDirty(): p.saveProject() PreviewDialogBase.accept(self) else: self.reject()