def data(self, column, role=QtCore.Qt.DisplayRole): job = self.ref DISP = QtCore.Qt.DisplayRole TOOL = QtCore.Qt.ToolTipRole BG = QtCore.Qt.BackgroundRole FG = QtCore.Qt.ForegroundRole if role == QtCore.Qt.TextAlignmentRole: if column > 0: return QtCore.Qt.AlignCenter # State if column == 2: if role == DISP or role == BG or role == FG: totals = job.totals color = QtCore.Qt.black bgcolor = constants.COLOR_JOB_STATE[job.state] text = constants.JOB_STATES[job.state] if job.paused: bgcolor = constants.BLUE color = QtCore.Qt.white elif totals.dead: bgcolor = constants.COLOR_TASK_STATE[TaskState.DEAD] color = QtCore.Qt.white if role == BG: return QtGui.QBrush(bgcolor) elif role == FG: return QtGui.QBrush(color) else: return text # Start time elif column == 4: if role == DISP: return formatDuration(job.startTime, job.stopTime) elif role == TOOL: return "Started: {0}\nStopped:{1}".format( formatDateTime(job.startTime), formatDateTime(job.stopTime) ) return super(JobNode, self).data(column, role)
def paint(self, painter, opts, index): currentData = index.data(self._role) try: ratio = float(currentData) except: super(ResourceDelegate, self).paint(painter, opts, index) return text = "%0.2f%%" % (ratio * 100) opt = QtGui.QStyleOptionViewItemV4(opts) opt.displayAlignment = QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter grad = QtGui.QLinearGradient(opt.rect.topLeft(), opt.rect.topRight()) # darkEnd = QtCore.Qt.transparent darkEnd = self.COLOR_BG end = darkEnd if ratio == 1: darkEnd = self.COLOR_OK end = darkEnd elif ratio <= self._crit: darkEnd = self.COLOR_CRITICAL end = self.COLOR_CRITICAL elif ratio <= self._warn: darkEnd = self.COLOR_WARN end = self.COLOR_WARN grad.setColorAt(0.0, self.COLOR_OK) grad.setColorAt(min(ratio, 1.0), self.COLOR_OK) grad.setColorAt(min(ratio + .01, 1.0), end) grad.setColorAt(1.0, darkEnd) self.drawBackground(painter, opt, index) painter.fillRect(opt.rect, QtGui.QBrush(grad)) self.drawDisplay(painter, opt, opt.rect, text) state_bg = index.data(QtCore.Qt.BackgroundRole) if state_bg: painter.setBrush(QtCore.Qt.NoBrush) pen = QtGui.QPen(state_bg) pen.setWidth(2) painter.setPen(pen) painter.drawRect(opt.rect)