eric7/JediInterface/AssistantJedi.py

branch
eric7
changeset 8666
3a62b4009df9
parent 8593
1d66b6af60ed
child 8668
d29c775b8bd7
equal deleted inserted replaced
8664:5aa1070daa48 8666:3a62b4009df9
5 5
6 """ 6 """
7 Module implementing the Jedi assistant plug-in. 7 Module implementing the Jedi assistant plug-in.
8 """ 8 """
9 9
10 import contextlib
11
10 from PyQt6.QtCore import pyqtSlot, QObject 12 from PyQt6.QtCore import pyqtSlot, QObject
13 from PyQt6.QtWidgets import QMenu
11 14
12 import Preferences 15 import Preferences
13 16
14 17
15 class AssistantJedi(QObject): 18 class AssistantJedi(QObject):
31 self.__ui = ui 34 self.__ui = ui
32 self.__vm = viewManager 35 self.__vm = viewManager
33 36
34 self.__jediServer = None 37 self.__jediServer = None
35 self.__editors = [] 38 self.__editors = []
39 self.__menuActions = {}
36 40
37 from .JediServer import JediServer 41 from .JediServer import JediServer
38 self.__jediServer = JediServer(self.__vm, project, self.__ui) 42 self.__jediServer = JediServer(self.__vm, project, self.__ui)
39 self.__jediServer.activate() 43 self.__jediServer.activate()
40 44
41 self.__ui.preferencesChanged.connect(self.__preferencesChanged) 45 self.__ui.preferencesChanged.connect(self.__preferencesChanged)
46
47 self.__initRefactoringMenu()
42 48
43 self.__vm.editorOpenedEd.connect(self.__editorOpened) 49 self.__vm.editorOpenedEd.connect(self.__editorOpened)
44 self.__vm.editorClosedEd.connect(self.__editorClosed) 50 self.__vm.editorClosedEd.connect(self.__editorClosed)
45 51
46 @pyqtSlot() 52 @pyqtSlot()
116 122
117 self.__connectMouseClickHandler(editor) 123 self.__connectMouseClickHandler(editor)
118 124
119 editor.registerMouseHoverHelpFunction( 125 editor.registerMouseHoverHelpFunction(
120 self.__jediServer.hoverHelp) 126 self.__jediServer.hoverHelp)
127
128 menu = editor.getMenu("Main")
129 if menu is not None:
130 checkAction = editor.getMenu("Checks").menuAction()
131 act = menu.insertMenu(checkAction, self.__menu)
132 sep = menu.insertSeparator(checkAction)
133 self.__menuActions[editor] = [act, sep]
134 editor.showMenu.connect(self.__editorShowMenu)
121 135
122 def __disconnectEditor(self, editor): 136 def __disconnectEditor(self, editor):
123 """ 137 """
124 Private method to disconnect an editor. 138 Private method to disconnect an editor.
125 139
131 145
132 self.__disconnectMouseClickHandler(editor) 146 self.__disconnectMouseClickHandler(editor)
133 147
134 editor.unregisterMouseHoverHelpFunction( 148 editor.unregisterMouseHoverHelpFunction(
135 self.__jediServer.hoverHelp) 149 self.__jediServer.hoverHelp)
150
151 with contextlib.suppress(TypeError):
152 editor.showMenu.disconnect(self.__editorShowMenu)
153 menu = editor.getMenu("Main")
154 if menu is not None and editor in self.__menuActions:
155 for act in self.__menuActions[editor]:
156 menu.removeAction(act)
157 del self.__menuActions[editor]
136 158
137 def __connectMouseClickHandler(self, editor): 159 def __connectMouseClickHandler(self, editor):
138 """ 160 """
139 Private method to connect the mouse click handler to an editor. 161 Private method to connect the mouse click handler to an editor.
140 162
192 214
193 @param editor reference to the editor 215 @param editor reference to the editor
194 @type Editor 216 @type Editor
195 """ 217 """
196 editor.removeCallTipHook("jedi") 218 editor.removeCallTipHook("jedi")
219
220 def __initRefactoringMenu(self):
221 """
222 Private method to initialize the Refactoring menu.
223 """
224 # TODO: populate the Refactoring menu
225 self.__menu = QMenu(self.tr("Refactoring"))
226 self.__menu.addAction(
227 self.tr("Rename Variable"),
228 self.__jediServer.refactoringRenameVariable)
229
230 def __editorShowMenu(self, menuName, menu, editor):
231 """
232 Private slot called, when the the editor context menu or a submenu is
233 about to be shown.
234
235 @param menuName name of the menu to be shown
236 @type str
237 @param menu reference to the menu
238 @type QMenu
239 @param editor reference to the editor
240 @type Editor
241 """
242 if menuName == "Main":
243 self.__menu.setEnabled(editor.hasSelectedText())

eric ide

mercurial