PluginRefactoringRope.py

changeset 104
f6049d39f83d
parent 101
5098ad8960ed
child 106
b2b2107b8047
equal deleted inserted replaced
103:2d77b3afc98f 104:f6049d39f83d
138 def __initialize(self): 138 def __initialize(self):
139 """ 139 """
140 Private slot to (re)initialize the plugin. 140 Private slot to (re)initialize the plugin.
141 """ 141 """
142 self.__object = None 142 self.__object = None
143 self.__caObject = None
143 144
144 self.__mainAct = None 145 self.__mainAct = None
145 self.__mainMenu = None 146 self.__mainMenu = None
146 self.__projectIsOpen = False 147 self.__projectIsOpen = False
147 148
178 179
179 global refactoringRopePluginObject 180 global refactoringRopePluginObject
180 refactoringRopePluginObject = self 181 refactoringRopePluginObject = self
181 182
182 from RefactoringRope.Refactoring import Refactoring 183 from RefactoringRope.Refactoring import Refactoring
184 from RefactoringRope.CodeAssist import CodeAssist
185
186 self.__caObject = CodeAssist(self, self)
183 187
184 self.__object = Refactoring(self, self.__ui) 188 self.__object = Refactoring(self, self.__ui)
185 self.__object.initActions() 189 self.__object.initActions()
186 e5App().registerPluginObject("RefactoringRope", self.__object) 190 e5App().registerPluginObject("RefactoringRope", self.__object)
187 try: 191 try:
349 lang = self.__determineLanguage() 353 lang = self.__determineLanguage()
350 354
351 enabled = e5App().getObject("Project").getProjectLanguage() in lang 355 enabled = e5App().getObject("Project").getProjectLanguage() in lang
352 self.__mainAct.setEnabled(enabled) 356 self.__mainAct.setEnabled(enabled)
353 self.__projectIsOpen = enabled 357 self.__projectIsOpen = enabled
354
355 for editor in self.__editors:
356 if editor.getLanguage() in lang and \
357 self.__projectIsOpen:
358 self.__connectEditor(editor)
359 358
360 def __projectClosed(self): 359 def __projectClosed(self):
361 """ 360 """
362 Private slot to handle the projectClosed signal. 361 Private slot to handle the projectClosed signal.
363 """ 362 """
364 self.__mainAct.setEnabled(False) 363 self.__mainAct.setEnabled(False)
365 self.__projectIsOpen = False 364 self.__projectIsOpen = False
366
367 for editor in self.__editors:
368 self.__editorClosed(editor)
369 365
370 def __editorOpened(self, editor): 366 def __editorOpened(self, editor):
371 """ 367 """
372 Private slot called, when a new editor was opened. 368 Private slot called, when a new editor was opened.
373 369
374 @param editor reference to the new editor (QScintilla.Editor) 370 @param editor reference to the new editor (QScintilla.Editor)
375 """ 371 """
376 lang = self.__determineLanguage() 372 lang = self.__determineLanguage()
377 373
378 if self.__projectIsOpen: 374 if editor.getLanguage() in lang:
379 if editor.getLanguage() in lang: 375 self.__connectEditor(editor)
380 self.__connectEditor(editor) 376
381 377 editor.languageChanged.connect(self.__editorLanguageChanged)
382 editor.languageChanged.connect(self.__editorLanguageChanged) 378 self.__editors.append(editor)
383 self.__editors.append(editor)
384 379
385 def __editorClosed(self, editor): 380 def __editorClosed(self, editor):
386 """ 381 """
387 Private slot called, when an editor was closed. 382 Private slot called, when an editor was closed.
388 383
400 @param language programming language of the editor (string) 395 @param language programming language of the editor (string)
401 """ 396 """
402 editor = self.sender() 397 editor = self.sender()
403 lang = self.__determineLanguage() 398 lang = self.__determineLanguage()
404 399
405 if language in lang and self.__projectIsOpen: 400 if language in lang:
406 self.__connectEditor(editor) 401 self.__connectEditor(editor)
407 else: 402 else:
408 self.__disconnectEditor(editor) 403 self.__disconnectEditor(editor)
409 404
410 def __connectEditor(self, editor): 405 def __connectEditor(self, editor):
505 500
506 def __codeAssist(self): 501 def __codeAssist(self):
507 """ 502 """
508 Private slot to show a list with completion proposals. 503 Private slot to show a list with completion proposals.
509 """ 504 """
510 from RefactoringRope.CodeAssist import CodeAssist
511 from QScintilla.Editor import EditorAutoCompletionListID 505 from QScintilla.Editor import EditorAutoCompletionListID
512 506
513 if self.__currentEditor is not None: 507 if self.__currentEditor is not None:
514 if self.__currentEditor.isListActive(): 508 if self.__currentEditor.isListActive():
515 self.__currentEditor.cancelList() 509 self.__currentEditor.cancelList()
516 ca = CodeAssist(self.__object, self.__currentEditor, self, self) 510 completions = self.__caObject.getCompletions(self.__currentEditor)
517 completions = ca.getCompletions()
518 if len(completions) == 0 and \ 511 if len(completions) == 0 and \
519 self.getPreferences("ShowQScintillaCompletions"): 512 self.getPreferences("ShowQScintillaCompletions"):
520 # try QScintilla autocompletion 513 # try QScintilla autocompletion
521 self.__currentEditor.autoCompleteQScintilla() 514 self.__currentEditor.autoCompleteQScintilla()
522 else: 515 else:
544 """ 537 """
545 Private slot to activate SOA. 538 Private slot to activate SOA.
546 539
547 @param filename name of the file that was saved (string) 540 @param filename name of the file that was saved (string)
548 """ 541 """
549 import rope.base.libutils 542 # TODO: report change to the refactoring object as well
550 543 if filename == self.__savedEditorName and self.__oldEditorText:
551 try: 544 self.__caObject.reportChanged(self.__savedEditorName,
552 if filename == self.__savedEditorName and self.__oldEditorText: 545 self.__oldEditorText)
553 rope.base.libutils.report_change(self.__object.getProject(), 546 else:
554 self.__savedEditorName, self.__oldEditorText) 547 self.__caObject.reportChanged(filename, "")
555 elif self.__savedEditorName == "":
556 rope.base.libutils.report_change(self.__object.getProject(),
557 filename, "")
558 except RuntimeError:
559 # this could come from trying to do PyQt4/PyQt5 mixed stuff
560 # simply ignore it
561 pass
562 548
563 def __setCalltipsHook(self, editor): 549 def __setCalltipsHook(self, editor):
564 """ 550 """
565 Private method to set the calltip hook. 551 Private method to set the calltip hook.
566 552
584 @param pos position in the text for the calltip (integer) 570 @param pos position in the text for the calltip (integer)
585 @param commas minimum number of commas contained in the calltip 571 @param commas minimum number of commas contained in the calltip
586 (integer) 572 (integer)
587 @return list of possible calltips (list of strings) 573 @return list of possible calltips (list of strings)
588 """ 574 """
589 from RefactoringRope.CodeAssist import CodeAssist 575 cts = self.__caObject.getCallTips(pos, editor)
590 ca = CodeAssist(self.__object, editor, self, self)
591 cts = ca.getCallTips(pos)
592 return cts 576 return cts

eric ide

mercurial