diff -r 76f2b46437a6 -r d68dcbe1deb3 Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py --- a/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py Tue Oct 20 19:19:12 2015 +0200 +++ b/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py Thu Oct 22 19:48:40 2015 +0200 @@ -58,6 +58,7 @@ self.cancelled = False self.__lastFileItem = None self.__finished = True + self.__errorItem = None self.__fileList = [] self.__project = None @@ -71,6 +72,7 @@ self.syntaxCheckService = e5App().getObject('SyntaxCheckService') self.syntaxCheckService.syntaxChecked.connect(self.__processResult) self.syntaxCheckService.batchFinished.connect(self.__batchFinished) + self.syntaxCheckService.error.connect(self.__processError) except KeyError: self.syntaxCheckService = None self.filename = None @@ -82,13 +84,35 @@ self.resultList.sortItems(self.resultList.sortColumn(), self.resultList.header().sortIndicatorOrder() ) + + def __createErrorItem(self, filename, message): + """ + Private slot to create a new error item in the result list. - def __createResultItem(self, file, line, index, error, sourcecode, + @param filename name of the file + @type str + @param message error message + @type str + """ + if self.__errorItem is None: + self.__errorItem = QTreeWidgetItem(self.resultList, [ + self.tr("Errors")]) + self.__errorItem.setExpanded(True) + self.__errorItem.setForeground(0, Qt.red) + + msg = "{0} ({1})".format(self.__project.getRelativePath(filename), + message) + if not self.resultList.findItems(msg, Qt.MatchExactly): + itm = QTreeWidgetItem(self.__errorItem, [msg]) + itm.setForeground(0, Qt.red) + itm.setFirstColumnSpanned(True) + + def __createResultItem(self, filename, line, index, error, sourcecode, isWarning=False): """ Private method to create an entry in the result list. - @param file file name of file (string) + @param filename file name of file (string) @param line line number of faulty source (integer or string) @param index index number of fault (integer) @param error error text (string) @@ -96,13 +120,13 @@ @param isWarning flag indicating a warning message (boolean) """ if self.__lastFileItem is None or \ - self.__lastFileItem.data(0, self.filenameRole) != file: + self.__lastFileItem.data(0, self.filenameRole) != filename: # It's a new file - # TODO: create the file item relative to the project - self.__lastFileItem = QTreeWidgetItem(self.resultList, [file]) + self.__lastFileItem = QTreeWidgetItem(self.resultList, [ + self.__project.getRelativePath(filename)]) self.__lastFileItem.setFirstColumnSpanned(True) self.__lastFileItem.setExpanded(True) - self.__lastFileItem.setData(0, self.filenameRole, file) + self.__lastFileItem.setData(0, self.filenameRole, filename) itm = QTreeWidgetItem(self.__lastFileItem) if isWarning: @@ -112,7 +136,7 @@ itm.setData(0, Qt.DisplayRole, line) itm.setData(1, Qt.DisplayRole, error) itm.setData(2, Qt.DisplayRole, sourcecode) - itm.setData(0, self.filenameRole, file) + itm.setData(0, self.filenameRole, filename) itm.setData(0, self.lineRole, int(line)) itm.setData(0, self.indexRole, index) itm.setData(0, self.errorRole, error) @@ -169,6 +193,7 @@ else: self.files = [fn] + self.__errorItem = None self.__clearErrors(self.files) if codestring or len(self.files) > 0: @@ -264,6 +289,7 @@ # reset the progress bar to the checked files self.checkProgress.setValue(self.progress) + self.checkProgressLabel.setPath(self.tr("Transferring data...")) QApplication.processEvents() self.__finished = False @@ -278,6 +304,20 @@ self.checkProgress.setValue(1) self.__finish() + def __processError(self, fn, msg): + """ + Private slot to process an error indication from the service. + + @param fn filename of the file + @type str + @param msg error message + @type str + """ + self.__createErrorItem(fn, msg) + + if not self.__batch: + self.check() + def __processResult(self, fn, problems): """ Private slot to display the reported messages.