src/eric7/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py

branch
eric7
changeset 10520
dd95c3cbb35e
parent 10439
21c28b0f9e41
child 10582
8264ea1f42e5
child 10690
fab36645aa7d
equal deleted inserted replaced
10519:5fd492368f64 10520:dd95c3cbb35e
171 msg = "{0} ({1})".format(self.__project.getRelativePath(filename), message) 171 msg = "{0} ({1})".format(self.__project.getRelativePath(filename), message)
172 if not self.resultList.findItems(msg, Qt.MatchFlag.MatchExactly): 172 if not self.resultList.findItems(msg, Qt.MatchFlag.MatchExactly):
173 itm = QTreeWidgetItem(self.__errorItem, [msg]) 173 itm = QTreeWidgetItem(self.__errorItem, [msg])
174 itm.setForeground(0, Qt.GlobalColor.red) 174 itm.setForeground(0, Qt.GlobalColor.red)
175 itm.setFirstColumnSpanned(True) 175 itm.setFirstColumnSpanned(True)
176 itm.setData(0, self.filenameRole, filename)
176 177
177 def __createHeaderItem(self, filename, fileStatistics=None): 178 def __createHeaderItem(self, filename, fileStatistics=None):
178 """ 179 """
179 Private method to create a header item in the result list. 180 Private method to create a header item in the result list.
180 181
412 413
413 if self.cancelled: 414 if self.cancelled:
414 return 415 return
415 416
416 self.__lastFileItem = None 417 self.__lastFileItem = None
418 self.__finished = False
417 419
418 if codestring: 420 if codestring:
419 self.source = Utilities.normalizeCode(codestring) 421 self.source = Utilities.normalizeCode(codestring)
420 else: 422 else:
421 try: 423 try:
433 self.progress += 1 435 self.progress += 1
434 # Continue with next file 436 # Continue with next file
435 self.check() 437 self.check()
436 return 438 return
437 439
438 self.__finished = False
439 self.syntaxCheckService.syntaxCheck( 440 self.syntaxCheckService.syntaxCheck(
440 None, self.filename, self.source, *self.__arguments 441 None, self.filename, self.source, *self.__arguments
441 ) 442 )
442 443
443 def checkBatch(self): 444 def checkBatch(self):
445 Public method to start a style check batch job. 446 Public method to start a style check batch job.
446 447
447 The results are reported to the __processResult slot. 448 The results are reported to the __processResult slot.
448 """ 449 """
449 self.__lastFileItem = None 450 self.__lastFileItem = None
451 self.__finished = False
450 452
451 argumentsList = [] 453 argumentsList = []
452 for progress, filename in enumerate(self.files, start=1): 454 for progress, filename in enumerate(self.files, start=1):
453 self.checkProgress.setValue(progress) 455 self.checkProgress.setValue(progress)
454 if time.monotonic() - self.__timenow > 0.01: 456 if time.monotonic() - self.__timenow > 0.01:
473 475
474 # reset the progress bar to the checked files 476 # reset the progress bar to the checked files
475 self.checkProgress.setValue(self.progress) 477 self.checkProgress.setValue(self.progress)
476 QApplication.processEvents() 478 QApplication.processEvents()
477 479
478 self.__finished = False
479 self.syntaxCheckService.syntaxBatchCheck(argumentsList) 480 self.syntaxCheckService.syntaxBatchCheck(argumentsList)
480 481
481 def __batchFinished(self): 482 def __batchFinished(self):
482 """ 483 """
483 Private slot handling the completion of a batch job. 484 Private slot handling the completion of a batch job.
677 @param itm reference to the activated item 678 @param itm reference to the activated item
678 @type QTreeWidgetItem 679 @type QTreeWidgetItem
679 @param col column the item was activated in 680 @param col column the item was activated in
680 @type int 681 @type int
681 """ 682 """
682 if self.noResults: 683 if self.noResults or itm.data(0, self.filenameRole) is None:
683 return 684 return
684 685
685 vm = ericApp().getObject("ViewManager") 686 vm = ericApp().getObject("ViewManager")
686 687
687 if itm.parent(): 688 if itm.parent():
727 selectedIndexes.append(index) 728 selectedIndexes.append(index)
728 if len(selectedIndexes) == 0: 729 if len(selectedIndexes) == 0:
729 selectedIndexes = list(range(self.resultList.topLevelItemCount())) 730 selectedIndexes = list(range(self.resultList.topLevelItemCount()))
730 for index in selectedIndexes: 731 for index in selectedIndexes:
731 itm = self.resultList.topLevelItem(index) 732 itm = self.resultList.topLevelItem(index)
732 fn = os.path.abspath(itm.data(0, self.filenameRole)) 733 if itm.data(0, self.filenameRole) is not None:
733 vm.openSourceFile(fn, 1) 734 fn = os.path.abspath(itm.data(0, self.filenameRole))
734 editor = vm.getOpenEditor(fn) 735 vm.openSourceFile(fn, 1)
735 editor.clearSyntaxError() 736 editor = vm.getOpenEditor(fn)
736 editor.clearFlakesWarnings() 737 editor.clearSyntaxError()
737 for cindex in range(itm.childCount()): 738 editor.clearFlakesWarnings()
738 citm = itm.child(cindex) 739 for cindex in range(itm.childCount()):
739 lineno = citm.data(0, self.lineRole) 740 citm = itm.child(cindex)
740 index = citm.data(0, self.indexRole) 741 lineno = citm.data(0, self.lineRole)
741 error = citm.data(0, self.errorRole) 742 index = citm.data(0, self.indexRole)
742 if citm.data(0, self.warningRole): 743 error = citm.data(0, self.errorRole)
743 editor.toggleWarning(lineno, 0, True, error) 744 if citm.data(0, self.warningRole):
744 else: 745 editor.toggleWarning(lineno, 0, True, error)
745 editor.toggleSyntaxError(lineno, index, True, error, show=True) 746 else:
747 editor.toggleSyntaxError(lineno, index, True, error, show=True)
746 748
747 # go through the list again to clear syntax error and 749 # go through the list again to clear syntax error and
748 # flakes warning markers for files, that are ok 750 # flakes warning markers for files, that are ok
749 openFiles = vm.getOpenFilenames()
750 errorFiles = [] 751 errorFiles = []
751 for index in range(self.resultList.topLevelItemCount()): 752 for index in range(self.resultList.topLevelItemCount()):
752 itm = self.resultList.topLevelItem(index) 753 itm = self.resultList.topLevelItem(index)
753 errorFiles.append(os.path.abspath(itm.data(0, self.filenameRole))) 754 errorFiles.append(os.path.abspath(itm.data(0, self.filenameRole)))
754 for file in openFiles: 755 for fn in vm.getOpenFilenames():
755 if file not in errorFiles: 756 if fn not in errorFiles:
756 editor = vm.getOpenEditor(file) 757 editor = vm.getOpenEditor(fn)
757 editor.clearSyntaxError() 758 editor.clearSyntaxError()
758 editor.clearFlakesWarnings() 759 editor.clearFlakesWarnings()
759 760
760 editor = vm.activeWindow() 761 editor = vm.activeWindow()
761 editor.updateVerticalScrollBar() 762 editor.updateVerticalScrollBar()

eric ide

mercurial