RefactoringRope/RestructureDialog.py

Sun, 31 Dec 2017 16:59:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 31 Dec 2017 16:59:12 +0100
changeset 245
75a35a927952
parent 203
c38750e1bafd
child 302
2e853e2f2430
permissions
-rw-r--r--

Updated copyright for 2018.

11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
245
75a35a927952 Updated copyright for 2018.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
3 # Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the Restructure dialog.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
76
936b2a98fe4e Merge with Py2 comp.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 62 63
diff changeset
10 from __future__ import unicode_literals
50
a29c3d2e6dc0 rope for Python2 projects enabled, if running on Python2
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 46
diff changeset
11
87
1fbf5fdbe721 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
12 from PyQt5.QtCore import pyqtSlot
1fbf5fdbe721 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
13 from PyQt5.QtWidgets import QDialogButtonBox, QAbstractButton
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
203
c38750e1bafd Performed some code cleanup actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
15 from .Ui_RestructureDialog import Ui_RestructureDialog
c38750e1bafd Performed some code cleanup actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
16 from .RefactoringDialogBase import RefactoringDialogBase
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
20
83b71483e198 Made the code PEP-8 compliant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
18
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 class RestructureDialog(RefactoringDialogBase, Ui_RestructureDialog):
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 Class implementing the Restructure dialog.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 history = None
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
20
83b71483e198 Made the code PEP-8 compliant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
25 def __init__(self, refactoring, title, parent=None):
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 Constructor
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @param refactoring reference to the main refactoring object
189
2711fdd91925 Renamed the 'Refactoring' module and class 'RefactoringServer'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 183
diff changeset
30 @type RefactoringServer
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
31 @param title title of the dialog
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
32 @type str
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
33 @param parent reference to the parent widget
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
34 @type QWidget
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 RefactoringDialogBase.__init__(self, refactoring, title, parent)
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.setupUi(self)
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
39 self._changeGroupName = "Restructure"
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
40
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok)
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.__okButton.setEnabled(False)
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__previewButton = self.buttonBox.addButton(
87
1fbf5fdbe721 Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
44 self.tr("Preview"), QDialogButtonBox.ActionRole)
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__previewButton.setDefault(True)
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
46 self.__previewButton.setEnabled(False)
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__loadData()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 def __updateUI(self):
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 Private slot to update the UI.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
54 enable = bool(self.patternEdit.toPlainText()) and \
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
55 bool(self.goalEdit.toPlainText())
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
56
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
57 self.__okButton.setEnabled(enable)
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
58 self.__previewButton.setEnabled(enable)
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @pyqtSlot()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 def on_patternEdit_textChanged(self):
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 Private slot to react to changes of the pattern.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.__updateUI()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @pyqtSlot()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 def on_goalEdit_textChanged(self):
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 Private slot to react to changes of the goal.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.__updateUI()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @pyqtSlot(QAbstractButton)
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 def on_buttonBox_clicked(self, button):
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 Private slot to act on the button pressed.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
79 @param button reference to the button pressed
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
80 @type QAbstractButton
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 if button == self.__previewButton:
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
83 self.requestPreview()
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 elif button == self.__okButton:
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.applyChanges()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
87 def _calculateChanges(self):
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 """
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
89 Protected method to initiate the calculation of the changes.
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.__saveData()
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
92
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 pattern = self.patternEdit.toPlainText()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 goal = self.goalEdit.toPlainText()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 imports = [line for line in self.importsEdit.toPlainText().splitlines()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 if line.strip()]
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 args = {}
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 checks = self.argsEdit.toPlainText().splitlines()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 for check in checks:
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 if ':' in check:
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 splitted = check.split(':', 1)
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 name = splitted[0].strip()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 value = splitted[1].strip()
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 args[name] = value
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
183
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
107 self._refactoring.sendJson("CalculateRestructureChanges", {
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
108 "ChangeGroup": self._changeGroupName,
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
109 "Title": self._title,
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
110 "Pattern": pattern,
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
111 "Goal": goal,
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
112 "Args": args,
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
113 "Imports": imports,
bac69c80d5f4 Implemented the distributed "Restructure" refactoring method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
114 })
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 def __saveData(self):
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 Private slot to save the data for later reuse.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
20
83b71483e198 Made the code PEP-8 compliant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
120 data = {'pattern': self.patternEdit.toPlainText(),
83b71483e198 Made the code PEP-8 compliant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
121 'goal': self.goalEdit.toPlainText(),
83b71483e198 Made the code PEP-8 compliant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
122 'checks': self.argsEdit.toPlainText(),
83b71483e198 Made the code PEP-8 compliant.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
123 'imports': self.importsEdit.toPlainText()
55
d501156be247 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
124 }
11
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 RestructureDialog.history = data
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 def __loadData(self):
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 Private slot to load the history data into the dialog.
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 """
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 if RestructureDialog.history is not None:
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 data = RestructureDialog.history
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 self.patternEdit.setPlainText(data['pattern'])
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.goalEdit.setPlainText(data['goal'])
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.argsEdit.setPlainText(data['checks'])
562f9758d2e1 Added these refactoring functions:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 self.importsEdit.setPlainText(data['imports'])

eric ide

mercurial