from qt import * from string import find, lower class AlertListViewItem(QListViewItem): severityPixmaps = { } itemColor = None def initResources(): for level in ("high", "medium", "low"): AlertListViewItem.severityPixmaps[level] = QPixmap("images/impact_severity_%s.png" % level) AlertListViewItem.severityPixmaps['n/a'] = AlertListViewItem.severityPixmaps['low'] AlertListViewItem.itemColor = QColor(218 - 10, 226 - 10, 255) initResources = staticmethod(initResources) def __init__(self, listView, listViewItem): self.configured = False self.listView = listView QListViewItem.__init__(self, listView, listViewItem) self.initialHeight = self.height() + 5 self.setHeight(self.initialHeight) def setup(self): if not self.configured: QListViewItem.setup(self) self.configured = True def paintCell(self, p, cg, col, width, align): color = QColorGroup(cg) if self.itemPos() % 2: color.setColor(QColorGroup.Base, AlertListViewItem.itemColor) QListViewItem.paintCell(self, p, color, col, width, align) def display(self): if self.height() == 0: self.setHeight(self.initialHeight) def hide(self): if self.height() != 0: self.setHeight(0) def applyFilter(self, filterValue, filterCol): if not filterValue: self.display() return 1 if filterCol == 0: for col in range(self.listView.columns()): if find(lower(self.text(col)), filterValue) != -1: self.display() return 1 else: if find(lower(self.text(filterCol - 1)), filterValue) != -1: self.display() return 1 self.hide() return 0 def setAlert(self, alert): self.analyzerid = alert["alert.analyzer.analyzerid"] self.alertIdent = alert["alert.ident"] self.setPixmap(0, AlertListViewItem.severityPixmaps[alert["alert.assessment.impact.severity"]]) self.setText(0, alert["alert.classification(0).name"]) self.setText(1, alert.getFirstSource()) self.setText(2, alert.getFirstTarget()) self.setText(3, alert.getSensor()) self.setText(4, alert.getTime())