PluginRefactoringRope.py

branch
server_client_variant
changeset 167
3c8e875d0326
parent 160
989cd767992b
child 189
2711fdd91925
equal deleted inserted replaced
166:6fc202183b3b 167:3c8e875d0326
8 """ 8 """
9 9
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 11
12 import os 12 import os
13 import sys
14 13
15 from PyQt5.QtCore import Qt, QObject, QTranslator, QCoreApplication, QTimer 14 from PyQt5.QtCore import Qt, QObject, QTranslator, QCoreApplication, QTimer
16 15
17 from E5Gui.E5Application import e5App 16 from E5Gui.E5Application import e5App
18 17
169 self.__object = None 168 self.__object = None
170 self.__caObject = None 169 self.__caObject = None
171 170
172 self.__mainAct = None 171 self.__mainAct = None
173 self.__mainMenu = None 172 self.__mainMenu = None
174 self.__projectIsOpen = False
175 173
176 self.__editors = [] 174 self.__editors = []
177 175
178 self.__currentEditor = None 176 self.__currentEditor = None
179 self.__savedEditorName = None 177 self.__savedEditorName = None
207 205
208 self.__mainMenu = self.__object.initMenu() 206 self.__mainMenu = self.__object.initMenu()
209 extrasAct = self.__ui.getMenuBarAction("extras") 207 extrasAct = self.__ui.getMenuBarAction("extras")
210 self.__mainAct = self.__ui.menuBar().insertMenu( 208 self.__mainAct = self.__ui.menuBar().insertMenu(
211 extrasAct, self.__mainMenu) 209 extrasAct, self.__mainMenu)
210 self.__mainAct.setEnabled(False)
212 211
213 if e5App().getObject("Project").isOpen(): 212 if e5App().getObject("Project").isOpen():
214 self.__projectOpened()
215
216 if self.__projectIsOpen:
217 self.__object.projectOpened() 213 self.__object.projectOpened()
218 214
219 e5App().getObject("ViewManager").editorOpenedEd.connect( 215 e5App().getObject("ViewManager").editorOpenedEd.connect(
220 self.__editorOpened) 216 self.__editorOpened)
221 e5App().getObject("ViewManager").editorClosedEd.connect( 217 e5App().getObject("ViewManager").editorClosedEd.connect(
228 e5App().getObject("Project").projectClosed.connect( 224 e5App().getObject("Project").projectClosed.connect(
229 self.__object.projectClosed) 225 self.__object.projectClosed)
230 e5App().getObject("Project").newProject.connect( 226 e5App().getObject("Project").newProject.connect(
231 self.__object.projectOpened) 227 self.__object.projectOpened)
232 228
233 e5App().getObject("Project").projectOpened.connect(
234 self.__projectOpened)
235 e5App().getObject("Project").projectPropertiesChanged.connect(
236 self.__projectOpened)
237 e5App().getObject("Project").projectClosed.connect(
238 self.__projectClosed)
239 e5App().getObject("Project").newProject.connect(
240 self.__projectOpened)
241
242 if e5App().getObject("Project").isOpen(): 229 if e5App().getObject("Project").isOpen():
243 for editor in e5App().getObject("ViewManager").getOpenEditors(): 230 for editor in e5App().getObject("ViewManager").getOpenEditors():
244 self.__editorOpened(editor) 231 self.__editorOpened(editor)
245 232
246 return None, True 233 return None, True
262 self.__object.projectOpened) 249 self.__object.projectOpened)
263 e5App().getObject("Project").projectClosed.disconnect( 250 e5App().getObject("Project").projectClosed.disconnect(
264 self.__object.projectClosed) 251 self.__object.projectClosed)
265 e5App().getObject("Project").newProject.disconnect( 252 e5App().getObject("Project").newProject.disconnect(
266 self.__object.projectOpened) 253 self.__object.projectOpened)
267
268 e5App().getObject("Project").projectOpened.disconnect(
269 self.__projectOpened)
270 e5App().getObject("Project").projectPropertiesChanged.disconnect(
271 self.__projectOpened)
272 e5App().getObject("Project").projectClosed.disconnect(
273 self.__projectClosed)
274 e5App().getObject("Project").newProject.disconnect(
275 self.__projectOpened)
276 254
277 self.__ui.menuBar().removeAction(self.__mainAct) 255 self.__ui.menuBar().removeAction(self.__mainAct)
278 256
279 for editor in self.__editors[:]: 257 for editor in self.__editors[:]:
280 self.__editorClosed(editor) 258 self.__editorClosed(editor)
343 self.__disconnectMouseClickHandler(editor) 321 self.__disconnectMouseClickHandler(editor)
344 self.__connectMouseClickHandler(editor) 322 self.__connectMouseClickHandler(editor)
345 elif key == "CodeAssistTimeout": 323 elif key == "CodeAssistTimeout":
346 self.__acTimer.setInterval(value) 324 self.__acTimer.setInterval(value)
347 325
348 def __determineLanguage(self): 326 def __determineLanguages(self):
349 """ 327 """
350 Private method to determine the valid language strings. 328 Private method to determine the valid language strings.
351 329
352 @return list of valid language strings (list of string) 330 @return list of valid language strings (list of string)
353 """ 331 """
354 if sys.version_info[0] == 3: 332 langs = []
355 lang = ["Python3", "Pygments|Python 3"] 333
356 elif sys.version_info[0] == 2: 334 interpreter = Preferences.getDebugger("PythonInterpreter")
357 lang = ["Python", "Python2", "Pygments|Python"] 335 if interpreter and Utilities.isinpath(interpreter):
358 else: 336 langs.extend(["Python", "Python2", "Pygments|Python"])
359 lang = [] 337
360 338 interpreter = Preferences.getDebugger("Python3Interpreter")
361 return lang 339 if interpreter and Utilities.isinpath(interpreter):
362 340 langs.extend(["Python3", "Pygments|Python 3"])
363 def __projectOpened(self): 341
364 """ 342 return langs
365 Private slot to handle the projectOpened signal.
366 """
367 lang = self.__determineLanguage()
368
369 projectLanguage = e5App().getObject("Project").getProjectLanguage()
370 enabled = projectLanguage in lang
371 if not enabled:
372 self.__ui.appendToStderr(self.tr(
373 "Project language '{0}' is different to the one used to"
374 " execute eric. Refactoring is disabled."
375 ).format(projectLanguage))
376 self.__mainAct.setEnabled(enabled)
377 self.__projectIsOpen = enabled
378
379 def __projectClosed(self):
380 """
381 Private slot to handle the projectClosed signal.
382 """
383 self.__mainAct.setEnabled(False)
384 self.__projectIsOpen = False
385 343
386 def __editorOpened(self, editor): 344 def __editorOpened(self, editor):
387 """ 345 """
388 Private slot called, when a new editor was opened. 346 Private slot called, when a new editor was opened.
389 347
390 @param editor reference to the new editor (QScintilla.Editor) 348 @param editor reference to the new editor (QScintilla.Editor)
391 """ 349 """
392 lang = self.__determineLanguage() 350 langs = self.__determineLanguages()
393 351
394 if editor.getLanguage() in lang: 352 if editor.getLanguage() in langs:
395 self.__connectEditor(editor) 353 self.__connectEditor(editor)
396 354
397 editor.languageChanged.connect(self.__editorLanguageChanged) 355 editor.languageChanged.connect(self.__editorLanguageChanged)
398 self.__editors.append(editor) 356 self.__editors.append(editor)
399 357
413 Private slot to handle the language change of an editor. 371 Private slot to handle the language change of an editor.
414 372
415 @param language programming language of the editor (string) 373 @param language programming language of the editor (string)
416 """ 374 """
417 editor = self.sender() 375 editor = self.sender()
418 lang = self.__determineLanguage() 376 langs = self.__determineLanguages()
419 377
420 if language in lang: 378 if language in langs:
421 try: 379 try:
422 if editor.getCompletionListHook("rope") is None or \ 380 if editor.getCompletionListHook("rope") is None or \
423 editor.getCallTipHook("rope") is None: 381 editor.getCallTipHook("rope") is None:
424 self.__connectEditor(editor) 382 self.__connectEditor(editor)
425 except AttributeError: 383 except AttributeError:

eric ide

mercurial