|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing the Changes preview dialog. |
|
8 """ |
|
9 |
|
10 from PyQt4.QtCore import Qt, pyqtSlot |
|
11 from PyQt4.QtGui import QDialogButtonBox, QListWidgetItem |
|
12 |
|
13 from PreviewDialogBase import PreviewDialogBase |
|
14 |
|
15 class ChangesPreviewDialog(PreviewDialogBase): |
|
16 """ |
|
17 Class implementing the Changes preview dialog. |
|
18 """ |
|
19 ChangeRole = Qt.UserRole |
|
20 |
|
21 def __init__(self, changes, parent): |
|
22 """ |
|
23 Constructor |
|
24 |
|
25 @param changes reference to the Changes object |
|
26 (rope.base.change.ChangeSet) |
|
27 @param parent reference to the parent widget (QWidget) |
|
28 """ |
|
29 PreviewDialogBase.__init__(self, parent) |
|
30 |
|
31 self.buttonBox.addButton(self.trUtf8("&Apply Changes"), |
|
32 QDialogButtonBox.AcceptRole) |
|
33 self.buttonBox.addButton(QDialogButtonBox.Cancel) |
|
34 |
|
35 self.description.setText(changes.description) |
|
36 for change in changes.changes: |
|
37 itm = QListWidgetItem(str(change), self.changesList) |
|
38 try: |
|
39 changeDescription = change.get_description() |
|
40 except AttributeError: |
|
41 changeDescription = self.trUtf8("No changes available.") |
|
42 itm.setData(ChangesPreviewDialog.ChangeRole, |
|
43 changeDescription) |
|
44 if self.changesList.count(): |
|
45 self.changesList.item(0).setSelected(True) |
|
46 |
|
47 @pyqtSlot(QListWidgetItem, QListWidgetItem) |
|
48 def on_changesList_currentItemChanged(self, current, previous): |
|
49 """ |
|
50 Private slot called when a change is selected. |
|
51 |
|
52 @param current reference to the new current item (QListWidgetItem) |
|
53 @param previous reference to the old current item (QListWidgetItem) |
|
54 """ |
|
55 if current is None: |
|
56 return |
|
57 |
|
58 self.previewEdit.clear() |
|
59 for line in current.data(ChangesPreviewDialog.ChangeRole)\ |
|
60 .splitlines(True): |
|
61 try: |
|
62 format = self.formats[line[0]] |
|
63 except (IndexError, KeyError): |
|
64 format = self.formats[' '] |
|
65 self._appendText(line, format) |