eric7/Plugins/PluginSyntaxChecker.py

branch
eric7
changeset 8356
68ec9c3d4de5
parent 8318
962bce857696
child 8358
144a6b854f70
equal deleted inserted replaced
8355:8a7677a63c8d 8356:68ec9c3d4de5
10 import os 10 import os
11 import contextlib 11 import contextlib
12 12
13 from PyQt6.QtCore import QObject 13 from PyQt6.QtCore import QObject
14 14
15 from E5Gui.E5Action import E5Action 15 from E5Gui.EricAction import EricAction
16 from E5Gui.E5Application import e5App 16 from E5Gui.EricApplication import ericApp
17 from eric7config import getConfig 17 from eric7config import getConfig
18 18
19 from Project.ProjectBrowserModel import ProjectBrowserFileItem 19 from Project.ProjectBrowserModel import ProjectBrowserFileItem
20 20
21 import Preferences 21 import Preferences
57 57
58 from Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService import ( 58 from Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService import (
59 SyntaxCheckService 59 SyntaxCheckService
60 ) 60 )
61 self.syntaxCheckService = SyntaxCheckService() 61 self.syntaxCheckService = SyntaxCheckService()
62 e5App().registerObject("SyntaxCheckService", self.syntaxCheckService) 62 ericApp().registerObject("SyntaxCheckService", self.syntaxCheckService)
63 63
64 ericPath = getConfig('ericDir') 64 ericPath = getConfig('ericDir')
65 path = os.path.join(ericPath, 'Plugins', 'CheckerPlugins', 65 path = os.path.join(ericPath, 'Plugins', 'CheckerPlugins',
66 'SyntaxChecker') 66 'SyntaxChecker')
67 67
167 """ 167 """
168 Public method to activate this plugin. 168 Public method to activate this plugin.
169 169
170 @return tuple of None and activation status (boolean) 170 @return tuple of None and activation status (boolean)
171 """ 171 """
172 menu = e5App().getObject("Project").getMenu("Checks") 172 menu = ericApp().getObject("Project").getMenu("Checks")
173 if menu: 173 if menu:
174 self.__projectAct = E5Action( 174 self.__projectAct = EricAction(
175 self.tr('Check Syntax'), 175 self.tr('Check Syntax'),
176 self.tr('&Syntax...'), 0, 0, 176 self.tr('&Syntax...'), 0, 0,
177 self, 'project_check_syntax') 177 self, 'project_check_syntax')
178 self.__projectAct.setStatusTip( 178 self.__projectAct.setStatusTip(
179 self.tr('Check syntax.')) 179 self.tr('Check syntax.'))
180 self.__projectAct.setWhatsThis(self.tr( 180 self.__projectAct.setWhatsThis(self.tr(
181 """<b>Check Syntax...</b>""" 181 """<b>Check Syntax...</b>"""
182 """<p>This checks Python files for syntax errors.</p>""" 182 """<p>This checks Python files for syntax errors.</p>"""
183 )) 183 ))
184 self.__projectAct.triggered.connect(self.__projectSyntaxCheck) 184 self.__projectAct.triggered.connect(self.__projectSyntaxCheck)
185 e5App().getObject("Project").addE5Actions([self.__projectAct]) 185 ericApp().getObject("Project").addEricActions([self.__projectAct])
186 menu.addAction(self.__projectAct) 186 menu.addAction(self.__projectAct)
187 187
188 self.__editorAct = E5Action( 188 self.__editorAct = EricAction(
189 self.tr('Check Syntax'), 189 self.tr('Check Syntax'),
190 self.tr('&Syntax...'), 0, 0, 190 self.tr('&Syntax...'), 0, 0,
191 self, "") 191 self, "")
192 self.__editorAct.setWhatsThis(self.tr( 192 self.__editorAct.setWhatsThis(self.tr(
193 """<b>Check Syntax...</b>""" 193 """<b>Check Syntax...</b>"""
194 """<p>This checks Python files for syntax errors.</p>""" 194 """<p>This checks Python files for syntax errors.</p>"""
195 )) 195 ))
196 self.__editorAct.triggered.connect(self.__editorSyntaxCheck) 196 self.__editorAct.triggered.connect(self.__editorSyntaxCheck)
197 197
198 e5App().getObject("Project").showMenu.connect(self.__projectShowMenu) 198 ericApp().getObject("Project").showMenu.connect(self.__projectShowMenu)
199 e5App().getObject("ProjectBrowser").getProjectBrowser( 199 ericApp().getObject("ProjectBrowser").getProjectBrowser(
200 "sources").showMenu.connect(self.__projectBrowserShowMenu) 200 "sources").showMenu.connect(self.__projectBrowserShowMenu)
201 e5App().getObject("ViewManager").editorOpenedEd.connect( 201 ericApp().getObject("ViewManager").editorOpenedEd.connect(
202 self.__editorOpened) 202 self.__editorOpened)
203 e5App().getObject("ViewManager").editorClosedEd.connect( 203 ericApp().getObject("ViewManager").editorClosedEd.connect(
204 self.__editorClosed) 204 self.__editorClosed)
205 205
206 for editor in e5App().getObject("ViewManager").getOpenEditors(): 206 for editor in ericApp().getObject("ViewManager").getOpenEditors():
207 self.__editorOpened(editor) 207 self.__editorOpened(editor)
208 208
209 return None, True 209 return None, True
210 210
211 def deactivate(self): 211 def deactivate(self):
212 """ 212 """
213 Public method to deactivate this plugin. 213 Public method to deactivate this plugin.
214 """ 214 """
215 e5App().getObject("Project").showMenu.disconnect( 215 ericApp().getObject("Project").showMenu.disconnect(
216 self.__projectShowMenu) 216 self.__projectShowMenu)
217 e5App().getObject("ProjectBrowser").getProjectBrowser( 217 ericApp().getObject("ProjectBrowser").getProjectBrowser(
218 "sources").showMenu.disconnect(self.__projectBrowserShowMenu) 218 "sources").showMenu.disconnect(self.__projectBrowserShowMenu)
219 e5App().getObject("ViewManager").editorOpenedEd.disconnect( 219 ericApp().getObject("ViewManager").editorOpenedEd.disconnect(
220 self.__editorOpened) 220 self.__editorOpened)
221 e5App().getObject("ViewManager").editorClosedEd.disconnect( 221 ericApp().getObject("ViewManager").editorClosedEd.disconnect(
222 self.__editorClosed) 222 self.__editorClosed)
223 223
224 menu = e5App().getObject("Project").getMenu("Checks") 224 menu = ericApp().getObject("Project").getMenu("Checks")
225 if menu: 225 if menu:
226 menu.removeAction(self.__projectAct) 226 menu.removeAction(self.__projectAct)
227 227
228 if self.__projectBrowserMenu and self.__projectBrowserAct: 228 if self.__projectBrowserMenu and self.__projectBrowserAct:
229 self.__projectBrowserMenu.removeAction( 229 self.__projectBrowserMenu.removeAction(
245 @param menuName name of the menu to be shown (string) 245 @param menuName name of the menu to be shown (string)
246 @param menu reference to the menu (QMenu) 246 @param menu reference to the menu (QMenu)
247 """ 247 """
248 if menuName == "Checks" and self.__projectAct is not None: 248 if menuName == "Checks" and self.__projectAct is not None:
249 self.__projectAct.setEnabled( 249 self.__projectAct.setEnabled(
250 e5App().getObject("Project").getProjectLanguage() in 250 ericApp().getObject("Project").getProjectLanguage() in
251 self.syntaxCheckService.getLanguages()) 251 self.syntaxCheckService.getLanguages())
252 252
253 def __projectBrowserShowMenu(self, menuName, menu): 253 def __projectBrowserShowMenu(self, menuName, menu):
254 """ 254 """
255 Private slot called, when the the project browser menu or a submenu is 255 Private slot called, when the the project browser menu or a submenu is
258 @param menuName name of the menu to be shown (string) 258 @param menuName name of the menu to be shown (string)
259 @param menu reference to the menu (QMenu) 259 @param menu reference to the menu (QMenu)
260 """ 260 """
261 if ( 261 if (
262 menuName == "Checks" and 262 menuName == "Checks" and
263 e5App().getObject("Project").getProjectLanguage() in 263 ericApp().getObject("Project").getProjectLanguage() in
264 self.syntaxCheckService.getLanguages() 264 self.syntaxCheckService.getLanguages()
265 ): 265 ):
266 self.__projectBrowserMenu = menu 266 self.__projectBrowserMenu = menu
267 if self.__projectBrowserAct is None: 267 if self.__projectBrowserAct is None:
268 self.__projectBrowserAct = E5Action( 268 self.__projectBrowserAct = EricAction(
269 self.tr('Check Syntax'), 269 self.tr('Check Syntax'),
270 self.tr('&Syntax...'), 0, 0, 270 self.tr('&Syntax...'), 0, 0,
271 self, "") 271 self, "")
272 self.__projectBrowserAct.setWhatsThis(self.tr( 272 self.__projectBrowserAct.setWhatsThis(self.tr(
273 """<b>Check Syntax...</b>""" 273 """<b>Check Syntax...</b>"""
280 280
281 def __projectSyntaxCheck(self): 281 def __projectSyntaxCheck(self):
282 """ 282 """
283 Private slot used to check the project files for syntax errors. 283 Private slot used to check the project files for syntax errors.
284 """ 284 """
285 project = e5App().getObject("Project") 285 project = ericApp().getObject("Project")
286 project.saveAllScripts() 286 project.saveAllScripts()
287 ppath = project.getProjectPath() 287 ppath = project.getProjectPath()
288 extensions = tuple(self.syntaxCheckService.getExtensions()) 288 extensions = tuple(self.syntaxCheckService.getExtensions())
289 files = [os.path.join(ppath, file) 289 files = [os.path.join(ppath, file)
290 for file in project.pdata["SOURCES"] 290 for file in project.pdata["SOURCES"]
300 def __projectBrowserSyntaxCheck(self): 300 def __projectBrowserSyntaxCheck(self):
301 """ 301 """
302 Private method to handle the syntax check context menu action of the 302 Private method to handle the syntax check context menu action of the
303 project sources browser. 303 project sources browser.
304 """ 304 """
305 browser = e5App().getObject("ProjectBrowser").getProjectBrowser( 305 browser = ericApp().getObject("ProjectBrowser").getProjectBrowser(
306 "sources") 306 "sources")
307 if browser.getSelectedItemsCount([ProjectBrowserFileItem]) > 1: 307 if browser.getSelectedItemsCount([ProjectBrowserFileItem]) > 1:
308 fn = [] 308 fn = []
309 for itm in browser.getSelectedItems([ProjectBrowserFileItem]): 309 for itm in browser.getSelectedItems([ProjectBrowserFileItem]):
310 fn.append(itm.fileName()) 310 fn.append(itm.fileName())
361 def __editorSyntaxCheck(self): 361 def __editorSyntaxCheck(self):
362 """ 362 """
363 Private slot to handle the syntax check context menu action of the 363 Private slot to handle the syntax check context menu action of the
364 editors. 364 editors.
365 """ 365 """
366 editor = e5App().getObject("ViewManager").activeWindow() 366 editor = ericApp().getObject("ViewManager").activeWindow()
367 if editor is not None: 367 if editor is not None:
368 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import ( 368 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import (
369 SyntaxCheckerDialog 369 SyntaxCheckerDialog
370 ) 370 )
371 self.__editorSyntaxCheckerDialog = SyntaxCheckerDialog() 371 self.__editorSyntaxCheckerDialog = SyntaxCheckerDialog()

eric ide

mercurial