PluginRefactoringRope.py

branch
server_client_variant
changeset 212
f05681349336
parent 203
c38750e1bafd
child 217
874115c79ca7
equal deleted inserted replaced
211:891b660bcbda 212:f05681349336
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

eric ide

mercurial