eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py

changeset 8199
f6db89b067e7
parent 8195
db7f2badd374
child 8204
fd477cded1c1
equal deleted inserted replaced
8198:1c765dc90c21 8199:f6db89b067e7
36 basestring # __IGNORE_WARNING__ 36 basestring # __IGNORE_WARNING__
37 except Exception: 37 except Exception:
38 basestring = str # define for Python3 38 basestring = str # define for Python3
39 39
40 40
41 # TODO: add a code filter to the results page
42 class CodeStyleCheckerDialog(QDialog, Ui_CodeStyleCheckerDialog): 41 class CodeStyleCheckerDialog(QDialog, Ui_CodeStyleCheckerDialog):
43 """ 42 """
44 Class implementing a dialog to show the results of the code style check. 43 Class implementing a dialog to show the results of the code style check.
45 """ 44 """
46 filenameRole = Qt.ItemDataRole.UserRole + 1 45 filenameRole = Qt.ItemDataRole.UserRole + 1
197 self.__forProject = False 196 self.__forProject = False
198 self.__data = {} 197 self.__data = {}
199 self.__statistics = {} 198 self.__statistics = {}
200 self.__onlyFixes = {} 199 self.__onlyFixes = {}
201 self.__noFixCodesList = [] 200 self.__noFixCodesList = []
201 self.__detectedCodes = []
202 202
203 self.on_loadDefaultButton_clicked() 203 self.on_loadDefaultButton_clicked()
204 204
205 self.mainWidget.setCurrentWidget(self.configureTab) 205 self.mainWidget.setCurrentWidget(self.configureTab)
206 self.optionsTabWidget.setCurrentWidget(self.globalOptionsTab) 206 self.optionsTabWidget.setCurrentWidget(self.globalOptionsTab)
277 self.__lastFileItem.setFirstColumnSpanned(True) 277 self.__lastFileItem.setFirstColumnSpanned(True)
278 self.__lastFileItem.setExpanded(True) 278 self.__lastFileItem.setExpanded(True)
279 self.__lastFileItem.setData(0, self.filenameRole, filename) 279 self.__lastFileItem.setData(0, self.filenameRole, filename)
280 280
281 msgCode = result["code"].split(".", 1)[0] 281 msgCode = result["code"].split(".", 1)[0]
282 self.__detectedCodes.append(msgCode)
282 283
283 fixable = False 284 fixable = False
284 itm = QTreeWidgetItem( 285 itm = QTreeWidgetItem(
285 self.__lastFileItem, [ 286 self.__lastFileItem, [
286 "{0:6}".format(result["line"]), 287 "{0:6}".format(result["line"]),
1064 self.showButton.setEnabled(True) 1065 self.showButton.setEnabled(True)
1065 self.resultList.header().resizeSections( 1066 self.resultList.header().resizeSections(
1066 QHeaderView.ResizeMode.ResizeToContents) 1067 QHeaderView.ResizeMode.ResizeToContents)
1067 self.resultList.header().setStretchLastSection(True) 1068 self.resultList.header().setStretchLastSection(True)
1068 1069
1070 if self.__detectedCodes:
1071 self.filterComboBox.addItem("")
1072 self.filterComboBox.addItems(sorted(set(self.__detectedCodes)))
1073 self.filterComboBox.setEnabled(True)
1074 self.filterButton.setEnabled(True)
1075
1069 self.checkProgress.setVisible(False) 1076 self.checkProgress.setVisible(False)
1070 self.checkProgressLabel.setVisible(False) 1077 self.checkProgressLabel.setVisible(False)
1071 1078
1072 self.mainWidget.setCurrentWidget(self.resultsTab) 1079 self.mainWidget.setCurrentWidget(self.resultsTab)
1073 1080
1168 self.__data) 1175 self.__data)
1169 1176
1170 self.resultList.clear() 1177 self.resultList.clear()
1171 self.results = CodeStyleCheckerDialog.noResults 1178 self.results = CodeStyleCheckerDialog.noResults
1172 self.cancelled = False 1179 self.cancelled = False
1180 self.__detectedCodes.clear()
1181 self.filterComboBox.clear()
1182 self.filterComboBox.setEnabled(False)
1183 self.filterButton.setEnabled(False)
1173 1184
1174 self.start(self.__fileOrFileList) 1185 self.start(self.__fileOrFileList)
1175 1186
1176 @pyqtSlot() 1187 @pyqtSlot()
1177 def on_restartButton_clicked(self): 1188 def on_restartButton_clicked(self):
2027 """ 2038 """
2028 for itm in self.whitelistWidget.selectedItems(): 2039 for itm in self.whitelistWidget.selectedItems():
2029 row = self.whitelistWidget.row(itm) 2040 row = self.whitelistWidget.row(itm)
2030 self.whitelistWidget.takeItem(row) 2041 self.whitelistWidget.takeItem(row)
2031 del itm 2042 del itm
2043
2044 @pyqtSlot()
2045 def on_filterButton_clicked(self):
2046 """
2047 Private slot to filter the list of messages based on selected message
2048 code.
2049 """
2050 selectedMessageCode = self.filterComboBox.currentText()
2051 print(selectedMessageCode)
2052
2053 for topRow in range(self.resultList.topLevelItemCount()):
2054 topItem = self.resultList.topLevelItem(topRow)
2055 visibleChildren = topItem.childCount()
2056 for childIndex in range(topItem.childCount()):
2057 childItem = topItem.child(childIndex)
2058 if selectedMessageCode:
2059 hideChild = (
2060 childItem.data(0, self.codeRole) != selectedMessageCode
2061 )
2062 else:
2063 hideChild = False
2064 childItem.setHidden(hideChild)
2065 if hideChild:
2066 visibleChildren -= 1
2067 topItem.setHidden(visibleChildren == 0)

eric ide

mercurial