25 def __init__(self, refactoring, title, parent=None): |
25 def __init__(self, refactoring, title, parent=None): |
26 """ |
26 """ |
27 Constructor |
27 Constructor |
28 |
28 |
29 @param refactoring reference to the main refactoring object |
29 @param refactoring reference to the main refactoring object |
30 (Refactoring) |
30 @type Refactoring |
31 @param title title of the dialog (string) |
31 @param title title of the dialog |
32 @param parent reference to the parent widget (QWidget) |
32 @type str |
|
33 @param parent reference to the parent widget |
|
34 @type QWidget |
33 """ |
35 """ |
34 RefactoringDialogBase.__init__(self, refactoring, title, parent) |
36 RefactoringDialogBase.__init__(self, refactoring, title, parent) |
35 self.setupUi(self) |
37 self.setupUi(self) |
|
38 |
|
39 self._changeGroupName = "Restructure" |
36 |
40 |
37 self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok) |
41 self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok) |
38 self.__okButton.setEnabled(False) |
42 self.__okButton.setEnabled(False) |
39 self.__previewButton = self.buttonBox.addButton( |
43 self.__previewButton = self.buttonBox.addButton( |
40 self.tr("Preview"), QDialogButtonBox.ActionRole) |
44 self.tr("Preview"), QDialogButtonBox.ActionRole) |
41 self.__previewButton.setDefault(True) |
45 self.__previewButton.setDefault(True) |
|
46 self.__previewButton.setEnabled(False) |
42 |
47 |
43 self.__loadData() |
48 self.__loadData() |
44 |
49 |
45 def __updateUI(self): |
50 def __updateUI(self): |
46 """ |
51 """ |
47 Private slot to update the UI. |
52 Private slot to update the UI. |
48 """ |
53 """ |
49 self.__okButton.setEnabled( |
54 enable = bool(self.patternEdit.toPlainText()) and \ |
50 self.patternEdit.toPlainText() != "" and |
55 bool(self.goalEdit.toPlainText()) |
51 self.goalEdit.toPlainText() != "") |
56 |
|
57 self.__okButton.setEnabled(enable) |
|
58 self.__previewButton.setEnabled(enable) |
52 |
59 |
53 @pyqtSlot() |
60 @pyqtSlot() |
54 def on_patternEdit_textChanged(self): |
61 def on_patternEdit_textChanged(self): |
55 """ |
62 """ |
56 Private slot to react to changes of the pattern. |
63 Private slot to react to changes of the pattern. |
67 @pyqtSlot(QAbstractButton) |
74 @pyqtSlot(QAbstractButton) |
68 def on_buttonBox_clicked(self, button): |
75 def on_buttonBox_clicked(self, button): |
69 """ |
76 """ |
70 Private slot to act on the button pressed. |
77 Private slot to act on the button pressed. |
71 |
78 |
72 @param button reference to the button pressed (QAbstractButton) |
79 @param button reference to the button pressed |
|
80 @type QAbstractButton |
73 """ |
81 """ |
74 if button == self.__previewButton: |
82 if button == self.__previewButton: |
75 self.previewChanges() |
83 self.requestPreview() |
76 elif button == self.__okButton: |
84 elif button == self.__okButton: |
77 self.applyChanges() |
85 self.applyChanges() |
78 |
86 |
79 def _calculateChanges(self, handle): |
87 def _calculateChanges(self): |
80 """ |
88 """ |
81 Protected method to calculate the changes. |
89 Protected method to initiate the calculation of the changes. |
82 |
|
83 @param handle reference to the task handle |
|
84 (rope.base.taskhandle.TaskHandle) |
|
85 @return reference to the Changes object (rope.base.change.ChangeSet) |
|
86 """ |
90 """ |
87 self.__saveData() |
91 self.__saveData() |
|
92 |
88 pattern = self.patternEdit.toPlainText() |
93 pattern = self.patternEdit.toPlainText() |
89 goal = self.goalEdit.toPlainText() |
94 goal = self.goalEdit.toPlainText() |
90 imports = [line for line in self.importsEdit.toPlainText().splitlines() |
95 imports = [line for line in self.importsEdit.toPlainText().splitlines() |
91 if line.strip()] |
96 if line.strip()] |
92 |
97 |
97 splitted = check.split(':', 1) |
102 splitted = check.split(':', 1) |
98 name = splitted[0].strip() |
103 name = splitted[0].strip() |
99 value = splitted[1].strip() |
104 value = splitted[1].strip() |
100 args[name] = value |
105 args[name] = value |
101 |
106 |
102 import rope.refactor.restructure |
107 self._refactoring.sendJson("CalculateRestructureChanges", { |
103 self._refactoring.getProject().validate( |
108 "ChangeGroup": self._changeGroupName, |
104 self._refactoring.getProject().root) |
109 "Title": self._title, |
105 try: |
110 "Pattern": pattern, |
106 restructuring = rope.refactor.restructure.Restructure( |
111 "Goal": goal, |
107 self._refactoring.getProject(), pattern, goal, |
112 "Args": args, |
108 args=args, imports=imports) |
113 "Imports": imports, |
109 changes = restructuring.get_changes(task_handle=handle) |
114 }) |
110 except Exception as err: |
|
111 self._refactoring.handleRopeError(err, self._title) |
|
112 return None |
|
113 |
|
114 return changes |
|
115 |
115 |
116 def __saveData(self): |
116 def __saveData(self): |
117 """ |
117 """ |
118 Private slot to save the data for later reuse. |
118 Private slot to save the data for later reuse. |
119 """ |
119 """ |