Пример #1
0
    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)
Пример #2
0
    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)