PluginRefactoringRope.py

changeset 31
0389d4a924cc
parent 20
83b71483e198
child 32
0fdb3a385bb5
equal deleted inserted replaced
30:c27f6cc60391 31:0389d4a924cc
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""" \
45 """ 45 """
46 QObject.__init__(self, ui) 46 QObject.__init__(self, ui)
47 self.__ui = ui 47 self.__ui = ui
48 self.__initialize() 48 self.__initialize()
49 49
50 self.__newStyle = ui.versionIsNewer("5.0.99", "20100811")
51
52 self.__translator = None 50 self.__translator = None
53 self.__loadTranslator() 51 self.__loadTranslator()
54 52
55 def __initialize(self): 53 def __initialize(self):
56 """ 54 """
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

eric ide

mercurial