Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py

changeset 4503
d68dcbe1deb3
parent 4501
3224f20d8eb0
child 4522
e41020d3c031
equal deleted inserted replaced
4502:76f2b46437a6 4503:d68dcbe1deb3
56 56
57 self.noResults = True 57 self.noResults = True
58 self.cancelled = False 58 self.cancelled = False
59 self.__lastFileItem = None 59 self.__lastFileItem = None
60 self.__finished = True 60 self.__finished = True
61 self.__errorItem = None
61 62
62 self.__fileList = [] 63 self.__fileList = []
63 self.__project = None 64 self.__project = None
64 self.filterFrame.setVisible(False) 65 self.filterFrame.setVisible(False)
65 66
69 70
70 try: 71 try:
71 self.syntaxCheckService = e5App().getObject('SyntaxCheckService') 72 self.syntaxCheckService = e5App().getObject('SyntaxCheckService')
72 self.syntaxCheckService.syntaxChecked.connect(self.__processResult) 73 self.syntaxCheckService.syntaxChecked.connect(self.__processResult)
73 self.syntaxCheckService.batchFinished.connect(self.__batchFinished) 74 self.syntaxCheckService.batchFinished.connect(self.__batchFinished)
75 self.syntaxCheckService.error.connect(self.__processError)
74 except KeyError: 76 except KeyError:
75 self.syntaxCheckService = None 77 self.syntaxCheckService = None
76 self.filename = None 78 self.filename = None
77 79
78 def __resort(self): 80 def __resort(self):
80 Private method to resort the tree. 82 Private method to resort the tree.
81 """ 83 """
82 self.resultList.sortItems(self.resultList.sortColumn(), 84 self.resultList.sortItems(self.resultList.sortColumn(),
83 self.resultList.header().sortIndicatorOrder() 85 self.resultList.header().sortIndicatorOrder()
84 ) 86 )
85 87
86 def __createResultItem(self, file, line, index, error, sourcecode, 88 def __createErrorItem(self, filename, message):
89 """
90 Private slot to create a new error item in the result list.
91
92 @param filename name of the file
93 @type str
94 @param message error message
95 @type str
96 """
97 if self.__errorItem is None:
98 self.__errorItem = QTreeWidgetItem(self.resultList, [
99 self.tr("Errors")])
100 self.__errorItem.setExpanded(True)
101 self.__errorItem.setForeground(0, Qt.red)
102
103 msg = "{0} ({1})".format(self.__project.getRelativePath(filename),
104 message)
105 if not self.resultList.findItems(msg, Qt.MatchExactly):
106 itm = QTreeWidgetItem(self.__errorItem, [msg])
107 itm.setForeground(0, Qt.red)
108 itm.setFirstColumnSpanned(True)
109
110 def __createResultItem(self, filename, line, index, error, sourcecode,
87 isWarning=False): 111 isWarning=False):
88 """ 112 """
89 Private method to create an entry in the result list. 113 Private method to create an entry in the result list.
90 114
91 @param file file name of file (string) 115 @param filename file name of file (string)
92 @param line line number of faulty source (integer or string) 116 @param line line number of faulty source (integer or string)
93 @param index index number of fault (integer) 117 @param index index number of fault (integer)
94 @param error error text (string) 118 @param error error text (string)
95 @param sourcecode faulty line of code (string) 119 @param sourcecode faulty line of code (string)
96 @param isWarning flag indicating a warning message (boolean) 120 @param isWarning flag indicating a warning message (boolean)
97 """ 121 """
98 if self.__lastFileItem is None or \ 122 if self.__lastFileItem is None or \
99 self.__lastFileItem.data(0, self.filenameRole) != file: 123 self.__lastFileItem.data(0, self.filenameRole) != filename:
100 # It's a new file 124 # It's a new file
101 # TODO: create the file item relative to the project 125 self.__lastFileItem = QTreeWidgetItem(self.resultList, [
102 self.__lastFileItem = QTreeWidgetItem(self.resultList, [file]) 126 self.__project.getRelativePath(filename)])
103 self.__lastFileItem.setFirstColumnSpanned(True) 127 self.__lastFileItem.setFirstColumnSpanned(True)
104 self.__lastFileItem.setExpanded(True) 128 self.__lastFileItem.setExpanded(True)
105 self.__lastFileItem.setData(0, self.filenameRole, file) 129 self.__lastFileItem.setData(0, self.filenameRole, filename)
106 130
107 itm = QTreeWidgetItem(self.__lastFileItem) 131 itm = QTreeWidgetItem(self.__lastFileItem)
108 if isWarning: 132 if isWarning:
109 itm.setIcon(0, UI.PixmapCache.getIcon("warning.png")) 133 itm.setIcon(0, UI.PixmapCache.getIcon("warning.png"))
110 else: 134 else:
111 itm.setIcon(0, UI.PixmapCache.getIcon("syntaxError.png")) 135 itm.setIcon(0, UI.PixmapCache.getIcon("syntaxError.png"))
112 itm.setData(0, Qt.DisplayRole, line) 136 itm.setData(0, Qt.DisplayRole, line)
113 itm.setData(1, Qt.DisplayRole, error) 137 itm.setData(1, Qt.DisplayRole, error)
114 itm.setData(2, Qt.DisplayRole, sourcecode) 138 itm.setData(2, Qt.DisplayRole, sourcecode)
115 itm.setData(0, self.filenameRole, file) 139 itm.setData(0, self.filenameRole, filename)
116 itm.setData(0, self.lineRole, int(line)) 140 itm.setData(0, self.lineRole, int(line))
117 itm.setData(0, self.indexRole, index) 141 itm.setData(0, self.indexRole, index)
118 itm.setData(0, self.errorRole, error) 142 itm.setData(0, self.errorRole, error)
119 itm.setData(0, self.warningRole, isWarning) 143 itm.setData(0, self.warningRole, isWarning)
120 144
167 self.files.extend( 191 self.files.extend(
168 Utilities.direntries(fn, True, '*{0}'.format(ext), 0)) 192 Utilities.direntries(fn, True, '*{0}'.format(ext), 0))
169 else: 193 else:
170 self.files = [fn] 194 self.files = [fn]
171 195
196 self.__errorItem = None
172 self.__clearErrors(self.files) 197 self.__clearErrors(self.files)
173 198
174 if codestring or len(self.files) > 0: 199 if codestring or len(self.files) > 0:
175 self.checkProgress.setMaximum(max(1, len(self.files))) 200 self.checkProgress.setMaximum(max(1, len(self.files)))
176 self.checkProgress.setVisible(len(self.files) > 1) 201 self.checkProgress.setVisible(len(self.files) > 1)
262 287
263 argumentsList.append((filename, source)) 288 argumentsList.append((filename, source))
264 289
265 # reset the progress bar to the checked files 290 # reset the progress bar to the checked files
266 self.checkProgress.setValue(self.progress) 291 self.checkProgress.setValue(self.progress)
292 self.checkProgressLabel.setPath(self.tr("Transferring data..."))
267 QApplication.processEvents() 293 QApplication.processEvents()
268 294
269 self.__finished = False 295 self.__finished = False
270 self.syntaxCheckService.syntaxBatchCheck(argumentsList) 296 self.syntaxCheckService.syntaxBatchCheck(argumentsList)
271 297
275 """ 301 """
276 self.checkProgressLabel.setPath("") 302 self.checkProgressLabel.setPath("")
277 self.checkProgress.setMaximum(1) 303 self.checkProgress.setMaximum(1)
278 self.checkProgress.setValue(1) 304 self.checkProgress.setValue(1)
279 self.__finish() 305 self.__finish()
306
307 def __processError(self, fn, msg):
308 """
309 Private slot to process an error indication from the service.
310
311 @param fn filename of the file
312 @type str
313 @param msg error message
314 @type str
315 """
316 self.__createErrorItem(fn, msg)
317
318 if not self.__batch:
319 self.check()
280 320
281 def __processResult(self, fn, problems): 321 def __processResult(self, fn, problems):
282 """ 322 """
283 Private slot to display the reported messages. 323 Private slot to display the reported messages.
284 324

eric ide

mercurial