Plugins/PluginSyntaxChecker.py

changeset 3004
c4bf32c791d0
parent 2712
4354ab0b67c7
child 3006
66b769f458c9
equal deleted inserted replaced
3003:cb43c34239b1 3004:c4bf32c791d0
94 self.__editorAct.triggered[()].connect(self.__editorSyntaxCheck) 94 self.__editorAct.triggered[()].connect(self.__editorSyntaxCheck)
95 95
96 e5App().getObject("Project").showMenu.connect(self.__projectShowMenu) 96 e5App().getObject("Project").showMenu.connect(self.__projectShowMenu)
97 e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\ 97 e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\
98 .showMenu.connect(self.__projectBrowserShowMenu) 98 .showMenu.connect(self.__projectBrowserShowMenu)
99 e5App().getObject("ViewManager").editorOpenedEd.connect(self.__editorOpened) 99 e5App().getObject("ViewManager").editorOpenedEd.connect(
100 e5App().getObject("ViewManager").editorClosedEd.connect(self.__editorClosed) 100 self.__editorOpened)
101 e5App().getObject("ViewManager").editorClosedEd.connect(
102 self.__editorClosed)
101 103
102 for editor in e5App().getObject("ViewManager").getOpenEditors(): 104 for editor in e5App().getObject("ViewManager").getOpenEditors():
103 self.__editorOpened(editor) 105 self.__editorOpened(editor)
104 106
105 return None, True 107 return None, True
109 Public method to deactivate this plugin. 111 Public method to deactivate this plugin.
110 """ 112 """
111 e5App().getObject("Project").showMenu.disconnect(self.__projectShowMenu) 113 e5App().getObject("Project").showMenu.disconnect(self.__projectShowMenu)
112 e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\ 114 e5App().getObject("ProjectBrowser").getProjectBrowser("sources")\
113 .showMenu.disconnect(self.__projectBrowserShowMenu) 115 .showMenu.disconnect(self.__projectBrowserShowMenu)
114 e5App().getObject("ViewManager").editorOpenedEd.disconnect(self.__editorOpened) 116 e5App().getObject("ViewManager").editorOpenedEd.disconnect(
115 e5App().getObject("ViewManager").editorClosedEd.disconnect(self.__editorClosed) 117 self.__editorOpened)
118 e5App().getObject("ViewManager").editorClosedEd.disconnect(
119 self.__editorClosed)
116 120
117 menu = e5App().getObject("Project").getMenu("Checks") 121 menu = e5App().getObject("Project").getMenu("Checks")
118 if menu: 122 if menu:
119 menu.removeAction(self.__projectAct) 123 menu.removeAction(self.__projectAct)
120 124
121 if self.__projectBrowserMenu: 125 if self.__projectBrowserMenu:
122 if self.__projectBrowserAct: 126 if self.__projectBrowserAct:
123 self.__projectBrowserMenu.removeAction(self.__projectBrowserAct) 127 self.__projectBrowserMenu.removeAction(
128 self.__projectBrowserAct)
124 129
125 for editor in self.__editors: 130 for editor in self.__editors:
126 editor.showMenu.disconnect(self.__editorShowMenu) 131 editor.showMenu.disconnect(self.__editorShowMenu)
127 menu = editor.getMenu("Checks") 132 menu = editor.getMenu("Checks")
128 if menu is not None: 133 if menu is not None:
154 if menuName == "Checks" and \ 159 if menuName == "Checks" and \
155 e5App().getObject("Project").getProjectLanguage() in \ 160 e5App().getObject("Project").getProjectLanguage() in \
156 ["Python3", "Python2", "Python"]: 161 ["Python3", "Python2", "Python"]:
157 self.__projectBrowserMenu = menu 162 self.__projectBrowserMenu = menu
158 if self.__projectBrowserAct is None: 163 if self.__projectBrowserAct is None:
159 self.__projectBrowserAct = E5Action(self.trUtf8('Check Syntax'), 164 self.__projectBrowserAct = E5Action(
160 self.trUtf8('&Syntax...'), 0, 0, 165 self.trUtf8('Check Syntax'),
161 self, "") 166 self.trUtf8('&Syntax...'), 0, 0,
167 self, "")
162 self.__projectBrowserAct.setWhatsThis(self.trUtf8( 168 self.__projectBrowserAct.setWhatsThis(self.trUtf8(
163 """<b>Check Syntax...</b>""" 169 """<b>Check Syntax...</b>"""
164 """<p>This checks Python files for syntax errors.</p>""" 170 """<p>This checks Python files for syntax errors.</p>"""
165 )) 171 ))
166 self.__projectBrowserAct.triggered[()].connect( 172 self.__projectBrowserAct.triggered[()].connect(
175 project = e5App().getObject("Project") 181 project = e5App().getObject("Project")
176 project.saveAllScripts() 182 project.saveAllScripts()
177 ppath = project.getProjectPath() 183 ppath = project.getProjectPath()
178 files = [os.path.join(ppath, file) \ 184 files = [os.path.join(ppath, file) \
179 for file in project.pdata["SOURCES"] \ 185 for file in project.pdata["SOURCES"] \
180 if file.endswith(tuple(Preferences.getPython("Python3Extensions")) + 186 if file.endswith(
181 tuple(Preferences.getPython("PythonExtensions")))] 187 tuple(Preferences.getPython("Python3Extensions")) +
182 188 tuple(Preferences.getPython("PythonExtensions")))]
183 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import SyntaxCheckerDialog 189
190 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import \
191 SyntaxCheckerDialog
184 self.__projectSyntaxCheckerDialog = SyntaxCheckerDialog() 192 self.__projectSyntaxCheckerDialog = SyntaxCheckerDialog()
185 self.__projectSyntaxCheckerDialog.show() 193 self.__projectSyntaxCheckerDialog.show()
186 self.__projectSyntaxCheckerDialog.prepare(files, project) 194 self.__projectSyntaxCheckerDialog.prepare(files, project)
187 195
188 def __projectBrowserSyntaxCheck(self): 196 def __projectBrowserSyntaxCheck(self):
189 """ 197 """
190 Private method to handle the syntax check context menu action of the project 198 Private method to handle the syntax check context menu action of the
191 sources browser. 199 project sources browser.
192 """ 200 """
193 browser = e5App().getObject("ProjectBrowser").getProjectBrowser("sources") 201 browser = e5App().getObject("ProjectBrowser").getProjectBrowser(
202 "sources")
194 itm = browser.model().item(browser.currentIndex()) 203 itm = browser.model().item(browser.currentIndex())
195 try: 204 try:
196 fn = itm.fileName() 205 fn = itm.fileName()
197 except AttributeError: 206 except AttributeError:
198 fn = itm.dirName() 207 fn = itm.dirName()
199 208
200 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import SyntaxCheckerDialog 209 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import \
210 SyntaxCheckerDialog
201 self.__projectBrowserSyntaxCheckerDialog = SyntaxCheckerDialog() 211 self.__projectBrowserSyntaxCheckerDialog = SyntaxCheckerDialog()
202 self.__projectBrowserSyntaxCheckerDialog.show() 212 self.__projectBrowserSyntaxCheckerDialog.show()
203 self.__projectBrowserSyntaxCheckerDialog.start(fn) 213 self.__projectBrowserSyntaxCheckerDialog.start(fn)
204 214
205 def __editorOpened(self, editor): 215 def __editorOpened(self, editor):
235 @param editor reference to the editor 245 @param editor reference to the editor
236 """ 246 """
237 if menuName == "Checks": 247 if menuName == "Checks":
238 if not self.__editorAct in menu.actions(): 248 if not self.__editorAct in menu.actions():
239 menu.addAction(self.__editorAct) 249 menu.addAction(self.__editorAct)
240 self.__editorAct.setEnabled(editor.isPy3File() or editor.isPy2File()) 250 self.__editorAct.setEnabled(
251 editor.isPy3File() or editor.isPy2File())
241 252
242 def __editorSyntaxCheck(self): 253 def __editorSyntaxCheck(self):
243 """ 254 """
244 Private slot to handle the syntax check context menu action of the editors. 255 Private slot to handle the syntax check context menu action of the
256 editors.
245 """ 257 """
246 editor = e5App().getObject("ViewManager").activeWindow() 258 editor = e5App().getObject("ViewManager").activeWindow()
247 if editor is not None: 259 if editor is not None:
248 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import \ 260 from CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog import \
249 SyntaxCheckerDialog 261 SyntaxCheckerDialog

eric ide

mercurial