178 e5App().getObject("PluginManager").shutdown.connect( |
178 e5App().getObject("PluginManager").shutdown.connect( |
179 self.__shutdown) |
179 self.__shutdown) |
180 |
180 |
181 from RefactoringRope.CodeAssistServer import CodeAssistServer |
181 from RefactoringRope.CodeAssistServer import CodeAssistServer |
182 self.__codeAssistServer = CodeAssistServer(self, self.__ui) |
182 self.__codeAssistServer = CodeAssistServer(self, self.__ui) |
|
183 self.__codeAssistServer.activate() |
183 |
184 |
184 from RefactoringRope.RefactoringServer import RefactoringServer |
185 from RefactoringRope.RefactoringServer import RefactoringServer |
185 self.__refactoringServer = RefactoringServer(self, self.__ui) |
186 self.__refactoringServer = RefactoringServer(self, self.__ui) |
186 self.__refactoringServer.activate() |
187 self.__refactoringServer.activate() |
187 |
188 |
190 e5App().getObject("ViewManager").editorOpenedEd.connect( |
191 e5App().getObject("ViewManager").editorOpenedEd.connect( |
191 self.__editorOpened) |
192 self.__editorOpened) |
192 e5App().getObject("ViewManager").editorClosedEd.connect( |
193 e5App().getObject("ViewManager").editorClosedEd.connect( |
193 self.__editorClosed) |
194 self.__editorClosed) |
194 |
195 |
195 if e5App().getObject("Project").isOpen(): |
196 for editor in e5App().getObject("ViewManager").getOpenEditors(): |
196 for editor in e5App().getObject("ViewManager").getOpenEditors(): |
197 self.__editorOpened(editor) |
197 self.__editorOpened(editor) |
|
198 |
198 |
199 return None, True |
199 return None, True |
200 |
200 |
201 def deactivate(self): |
201 def deactivate(self): |
202 """ |
202 """ |
294 Private slot called, when a new editor was opened. |
294 Private slot called, when a new editor was opened. |
295 |
295 |
296 @param editor reference to the new editor |
296 @param editor reference to the new editor |
297 @type QScintilla.Editor |
297 @type QScintilla.Editor |
298 """ |
298 """ |
299 if self.__codeAssistServer.isSupportedLanguage(editor.getLanguage()): |
299 self.__connectEditor(editor) |
300 self.__connectEditor(editor) |
|
301 |
300 |
302 editor.languageChanged.connect(self.__editorLanguageChanged) |
301 editor.languageChanged.connect(self.__editorLanguageChanged) |
303 self.__editors.append(editor) |
302 self.__editors.append(editor) |
304 |
303 |
305 def __editorClosed(self, editor): |
304 def __editorClosed(self, editor): |
321 @param language programming language of the editor |
320 @param language programming language of the editor |
322 @type str |
321 @type str |
323 """ |
322 """ |
324 editor = self.sender() |
323 editor = self.sender() |
325 |
324 |
326 if self.__codeAssistServer.isSupportedLanguage(language): |
325 self.__disconnectEditor(editor) |
327 if editor.getCompletionListHook("rope") is None or \ |
326 self.__connectEditor(editor) |
328 editor.getCallTipHook("rope") is None: |
|
329 self.__connectEditor(editor) |
|
330 else: |
|
331 self.__disconnectEditor(editor) |
|
332 |
327 |
333 def __connectEditor(self, editor): |
328 def __connectEditor(self, editor): |
334 """ |
329 """ |
335 Private method to connect an editor. |
330 Private method to connect an editor. |
336 |
331 |
338 @type QScintilla.Editor |
333 @type QScintilla.Editor |
339 """ |
334 """ |
340 editor.editorAboutToBeSaved.connect(self.__editorAboutToBeSaved) |
335 editor.editorAboutToBeSaved.connect(self.__editorAboutToBeSaved) |
341 editor.editorSaved.connect(self.__editorSaved) |
336 editor.editorSaved.connect(self.__editorSaved) |
342 |
337 |
343 if self.getPreferences("CodeAssistEnabled"): |
338 self.__codeAssistServer.connectEditor(editor) |
344 self.__setAutoCompletionHook(editor) |
339 self.__refactoringServer.connectEditor(editor) |
345 if self.getPreferences("CodeAssistCalltipsEnabled"): |
|
346 self.__setCalltipsHook(editor) |
|
347 |
|
348 if self.getPreferences("MouseClickEnabled"): |
|
349 self.__disconnectMouseClickHandler(editor) |
|
350 self.__connectMouseClickHandler(editor) |
|
351 |
|
352 def __connectMouseClickHandler(self, editor): |
|
353 """ |
|
354 Private method to connect the mouse click handler to an editor. |
|
355 |
|
356 @param editor reference to the editor |
|
357 @type QScintilla.Editor |
|
358 """ |
|
359 if self.getPreferences("MouseClickGotoButton"): |
|
360 editor.setMouseClickHandler( |
|
361 "rope", |
|
362 self.getPreferences("MouseClickGotoModifiers"), |
|
363 self.getPreferences("MouseClickGotoButton"), |
|
364 self.__refactoringServer.gotoDefinition |
|
365 ) |
|
366 |
340 |
367 def __disconnectEditor(self, editor): |
341 def __disconnectEditor(self, editor): |
368 """ |
342 """ |
369 Private method to disconnect an editor. |
343 Private method to disconnect an editor. |
370 |
344 |
376 editor.editorSaved.disconnect(self.__editorSaved) |
350 editor.editorSaved.disconnect(self.__editorSaved) |
377 except TypeError: |
351 except TypeError: |
378 # just ignore it |
352 # just ignore it |
379 pass |
353 pass |
380 |
354 |
381 if editor.getCompletionListHook("rope"): |
355 self.__codeAssistServer.disconnectEditor(editor) |
382 self.__unsetAutoCompletionHook(editor) |
356 self.__refactoringServer.disconnectEditor(editor) |
383 if editor.getCallTipHook("rope"): |
|
384 self.__unsetCalltipsHook(editor) |
|
385 |
|
386 self.__disconnectMouseClickHandler(editor) |
|
387 |
|
388 def __disconnectMouseClickHandler(self, editor): |
|
389 """ |
|
390 Private method to disconnect the mouse click handler from an editor. |
|
391 |
|
392 @param editor reference to the editor |
|
393 @type QScintilla.Editor |
|
394 """ |
|
395 editor.removeMouseClickHandlers("rope") |
|
396 |
|
397 def __setAutoCompletionHook(self, editor): |
|
398 """ |
|
399 Private method to set the autocompletion hook. |
|
400 |
|
401 @param editor reference to the editor |
|
402 @type QScintilla.Editor |
|
403 """ |
|
404 editor.addCompletionListHook("rope", self.getCompletionsList) |
|
405 |
|
406 def __unsetAutoCompletionHook(self, editor): |
|
407 """ |
|
408 Private method to unset the autocompletion hook. |
|
409 |
|
410 @param editor reference to the editor |
|
411 @type QScintilla.Editor |
|
412 """ |
|
413 editor.removeCompletionListHook("rope") |
|
414 |
|
415 def getCompletionsList(self, editor, context): |
|
416 """ |
|
417 Public method to get a list of possible completions. |
|
418 |
|
419 @param editor reference to the editor object, that called this method |
|
420 @type QScintilla.Editor |
|
421 @param context flag indicating to autocomplete a context |
|
422 @type bool |
|
423 @return list of possible completions |
|
424 @rtype list of str |
|
425 """ |
|
426 completions = self.__codeAssistServer.getCompletions(editor) |
|
427 return completions |
|
428 |
357 |
429 def __editorAboutToBeSaved(self, filename): |
358 def __editorAboutToBeSaved(self, filename): |
430 """ |
359 """ |
431 Private slot to get the old contents of the named file. |
360 Private slot to get the old contents of the named file. |
432 |
361 |
457 self.__oldEditorText) |
386 self.__oldEditorText) |
458 else: |
387 else: |
459 self.__refactoringServer.reportChanged(filename, "") |
388 self.__refactoringServer.reportChanged(filename, "") |
460 self.__codeAssistServer.reportChanged(filename, "") |
389 self.__codeAssistServer.reportChanged(filename, "") |
461 |
390 |
462 def __setCalltipsHook(self, editor): |
391 def getCodeAssistServer(self): |
463 """ |
392 """ |
464 Private method to set the calltip hook. |
393 Public method to get a reference to the code assist server. |
465 |
394 |
466 @param editor reference to the editor |
395 @return reference to the code assist server |
467 @type QScintilla.Editor |
396 @rtype CodeAssistServer |
468 """ |
397 """ |
469 editor.addCallTipHook("rope", self.codeAssistCallTip) |
398 return self.__codeAssistServer |
470 |
|
471 def __unsetCalltipsHook(self, editor): |
|
472 """ |
|
473 Private method to unset the calltip hook. |
|
474 |
|
475 @param editor reference to the editor |
|
476 @type QScintilla.Editor |
|
477 """ |
|
478 editor.removeCallTipHook("rope") |
|
479 |
|
480 def codeAssistCallTip(self, editor, pos, commas): |
|
481 """ |
|
482 Public method to return a list of calltips. |
|
483 |
|
484 @param editor reference to the editor |
|
485 @type QScintilla.Editor |
|
486 @param pos position in the text for the calltip |
|
487 @type int |
|
488 @param commas minimum number of commas contained in the calltip |
|
489 @type int |
|
490 @return list of possible calltips |
|
491 @rtype list of str |
|
492 """ |
|
493 cts = self.__codeAssistServer.getCallTips(pos, editor) |
|
494 return cts |
|
495 |
399 |
496 # |
400 # |
497 # eflag: noqa = M801 |
401 # eflag: noqa = M801 |