7 Module implementing the Rope refactoring plugin. |
7 Module implementing the Rope refactoring plugin. |
8 """ |
8 """ |
9 |
9 |
10 import os |
10 import os |
11 |
11 |
12 from PyQt4.QtCore import QObject, QTranslator, SIGNAL |
12 from PyQt4.QtCore import QObject, QTranslator |
13 |
13 |
14 from E5Gui.E5Application import e5App |
14 from E5Gui.E5Application import e5App |
15 |
15 |
16 from Preferences.Shortcuts import readShortcuts |
16 from Preferences.Shortcuts import readShortcuts |
17 |
17 |
18 # Start-Of-Header |
18 # Start-Of-Header |
19 name = "Refactoring Rope Plugin" |
19 name = "Refactoring Rope Plugin" |
20 author = "Detlev Offenbach <detlev@die-offenbachs.de>" |
20 author = "Detlev Offenbach <detlev@die-offenbachs.de>" |
21 autoactivate = True |
21 autoactivate = True |
22 deactivateable = True |
22 deactivateable = True |
23 version = "2.0.0" |
23 version = "2.1.0" |
24 className = "RefactoringRopePlugin" |
24 className = "RefactoringRopePlugin" |
25 packageName = "RefactoringRope" |
25 packageName = "RefactoringRope" |
26 internalPackages = "rope" |
26 internalPackages = "rope" |
27 shortDescription = "Refactoring using the Rope library." |
27 shortDescription = "Refactoring using the Rope library." |
28 longDescription = """This plugin implements refactoring functionality""" \ |
28 longDescription = """This plugin implements refactoring functionality""" \ |
60 |
58 |
61 self.__mainAct = None |
59 self.__mainAct = None |
62 self.__mainMenu = None |
60 self.__mainMenu = None |
63 self.__projectIsOpen = False |
61 self.__projectIsOpen = False |
64 |
62 |
|
63 def __checkUiVersion(self): |
|
64 """ |
|
65 Private method to check, if the IDE has a suitable version. |
|
66 |
|
67 @return flag indicating a suitable version (boolean) |
|
68 """ |
|
69 global error |
|
70 |
|
71 suitable = self.__ui.versionIsNewer("5.0.99", "20100811") |
|
72 if not suitable: |
|
73 error = self.trUtf8("Your version of eric5 is not supported.") |
|
74 return suitable |
|
75 |
65 def activate(self): |
76 def activate(self): |
66 """ |
77 """ |
67 Public method to activate this plugin. |
78 Public method to activate this plugin. |
68 |
79 |
69 @return tuple of None and activation status (boolean) |
80 @return tuple of None and activation status (boolean) |
70 """ |
81 """ |
|
82 global error |
|
83 error = "" # clear previous error |
|
84 |
|
85 if not self.__checkUiVersion(): |
|
86 return None, False |
|
87 |
71 from RefactoringRope.Refactoring import Refactoring |
88 from RefactoringRope.Refactoring import Refactoring |
72 |
89 |
73 self.__object = Refactoring(self, self.__ui) |
90 self.__object = Refactoring(self, self.__ui) |
74 self.__object.initActions() |
91 self.__object.initActions() |
75 e5App().registerPluginObject("RefactoringRope", self.__object) |
92 e5App().registerPluginObject("RefactoringRope", self.__object) |
88 self.__mainAct.setEnabled(True) |
105 self.__mainAct.setEnabled(True) |
89 self.__object.projectOpened() |
106 self.__object.projectOpened() |
90 else: |
107 else: |
91 self.__mainAct.setEnabled(False) |
108 self.__mainAct.setEnabled(False) |
92 |
109 |
93 if self.__newStyle: |
110 e5App().getObject("Project").projectOpened.connect( |
94 e5App().getObject("Project").projectOpened.connect( |
111 self.__object.projectOpened) |
95 self.__object.projectOpened) |
112 e5App().getObject("Project").projectClosed.connect( |
96 e5App().getObject("Project").projectClosed.connect( |
113 self.__object.projectClosed) |
97 self.__object.projectClosed) |
114 e5App().getObject("Project").newProject.connect( |
98 e5App().getObject("Project").newProject.connect( |
115 self.__object.projectOpened) |
99 self.__object.projectOpened) |
116 |
100 |
117 e5App().getObject("Project").projectOpened.connect( |
101 e5App().getObject("Project").projectOpened.connect( |
118 self.__projectOpened) |
102 self.__projectOpened) |
119 e5App().getObject("Project").projectClosed.connect( |
103 e5App().getObject("Project").projectClosed.connect( |
120 self.__projectClosed) |
104 self.__projectClosed) |
121 e5App().getObject("Project").newProject.connect( |
105 e5App().getObject("Project").newProject.connect( |
122 self.__projectOpened) |
106 self.__projectOpened) |
|
107 else: |
|
108 self.connect(e5App().getObject("Project"), SIGNAL('projectOpened'), |
|
109 self.__object.projectOpened) |
|
110 self.connect(e5App().getObject("Project"), SIGNAL('projectClosed'), |
|
111 self.__object.projectClosed) |
|
112 self.connect(e5App().getObject("Project"), SIGNAL('newProject'), |
|
113 self.__object.projectOpened) |
|
114 |
|
115 self.connect(e5App().getObject("Project"), SIGNAL('projectOpened'), |
|
116 self.__projectOpened) |
|
117 self.connect(e5App().getObject("Project"), SIGNAL('projectClosed'), |
|
118 self.__projectClosed) |
|
119 self.connect(e5App().getObject("Project"), SIGNAL('newProject'), |
|
120 self.__projectOpened) |
|
121 |
123 |
122 return None, True |
124 return None, True |
123 |
125 |
124 def deactivate(self): |
126 def deactivate(self): |
125 """ |
127 """ |
126 Public method to deactivate this plugin. |
128 Public method to deactivate this plugin. |
127 """ |
129 """ |
128 e5App().unregisterPluginObject("RefactoringRope") |
130 e5App().unregisterPluginObject("RefactoringRope") |
129 |
131 |
130 if self.__newStyle: |
132 e5App().getObject("Project").projectOpened.disconnect( |
131 e5App().getObject("Project").projectOpened.disconnect( |
133 self.__object.projectOpened) |
132 self.__object.projectOpened) |
134 e5App().getObject("Project").projectClosed.disconnect( |
133 e5App().getObject("Project").projectClosed.disconnect( |
135 self.__object.projectClosed) |
134 self.__object.projectClosed) |
136 e5App().getObject("Project").newProject.disconnect( |
135 e5App().getObject("Project").newProject.disconnect( |
137 self.__object.projectOpened) |
136 self.__object.projectOpened) |
138 |
137 |
139 e5App().getObject("Project").projectOpened.disconnect( |
138 e5App().getObject("Project").projectOpened.disconnect( |
140 self.__projectOpened) |
139 self.__projectOpened) |
141 e5App().getObject("Project").projectClosed.disconnect( |
140 e5App().getObject("Project").projectClosed.disconnect( |
142 self.__projectClosed) |
141 self.__projectClosed) |
143 e5App().getObject("Project").newProject.disconnect( |
142 e5App().getObject("Project").newProject.disconnect( |
144 self.__projectOpened) |
143 self.__projectOpened) |
|
144 else: |
|
145 self.disconnect(e5App().getObject("Project"), |
|
146 SIGNAL('projectOpened'), |
|
147 self.__object.projectOpened) |
|
148 self.disconnect(e5App().getObject("Project"), |
|
149 SIGNAL('projectClosed'), |
|
150 self.__object.projectClosed) |
|
151 self.disconnect(e5App().getObject("Project"), |
|
152 SIGNAL('newProject'), |
|
153 self.__object.projectOpened) |
|
154 |
|
155 self.disconnect(e5App().getObject("Project"), |
|
156 SIGNAL('projectOpened'), |
|
157 self.__projectOpened) |
|
158 self.disconnect(e5App().getObject("Project"), |
|
159 SIGNAL('projectClosed'), |
|
160 self.__projectClosed) |
|
161 self.disconnect(e5App().getObject("Project"), |
|
162 SIGNAL('newProject'), |
|
163 self.__projectOpened) |
|
164 |
145 |
165 self.__ui.menuBar().removeAction(self.__mainAct) |
146 self.__ui.menuBar().removeAction(self.__mainAct) |
166 |
147 |
167 self.__initialize() |
148 self.__initialize() |
168 |
149 |