Beispiel #1
0
    def paint_data(self, data, painter, rectangle, option=None,**kwargs):
        painter.save()
        r = rectangle
        x = r.bottomLeft().x()
        y = r.topRight().y()
        lx = r.width() / 101.
        ly = r.height() / 101.

        points = data['color_points'].keys()

        orientation = kwargs.get('orientation',QtCore.Qt.Horizontal)

        if len(points) > 1:
            points.sort()
            prev_point = points[0]
            prev_color = tuple([255 * data['color_points'][prev_point][c] for c in [0, 1, 2]])

            for point in points[1:]:
                if orientation == QtCore.Qt.Horizontal:
                    gradient = QtGui.QLinearGradient(x + prev_point * 100 * lx, y, x + point * 100 * lx + 1, y)
                elif orientation == QtCore.Qt.Vertical:
                    gradient = QtGui.QLinearGradient(x, y + r.height() - prev_point * 100 * ly, x, y + r.height() - point * 100 * ly - 1)
                gradient.setColorAt(0, QtGui.QColor(*prev_color))
                color = tuple([255 * data['color_points'][point][c] for c in [0, 1, 2]])
                gradient.setColorAt(1, QtGui.QColor(*color))
                if orientation == QtCore.Qt.Horizontal:
                    painter.fillRect(x + prev_point * 100 * lx, y, (point - prev_point) * 100 * lx + 1, r.height(), gradient)
                elif orientation == QtCore.Qt.Vertical:
                    painter.fillRect(x, y + r.height() - prev_point * 100 * ly, r.width(), -(point - prev_point) * 100 * ly - 1, gradient)
                prev_point = point
                prev_color = color

        painter.restore()
Beispiel #2
0
    def paint(self, painter, paintOptions, widget):
        myRect = self.boundingRect()

        painter.fillRect(self.__headerRect, self.__darkerColor)
        gradTop = self.__headerRect.bottomLeft()
        gradBot = gradTop + QtCore.QPointF(0, 4)
        gradient = QtGui.QLinearGradient(gradTop, gradBot)
        gradient.setColorAt(0, self.__shadowColor)
        gradient.setColorAt(1, self.__color)
        brush = QtGui.QBrush(gradient)

        bottomRect = myRect.adjusted(0, self.__headerRect.bottom(), 0, 0)
        painter.fillRect(bottomRect, brush)

        if not safeEffects:
            oldPen = painter.pen()
            pen = QtGui.QPen()
            pen.setColor(QtGui.QColor(10, 10, 10, 100))
            pen.setWidth(1)
            painter.setPen(pen)
            painter.drawRect(myRect.adjusted(0.5, 0.5, -0.5, -0.5))
            painter.setPen(oldPen)

        painter.setBrush(QtGui.QBrush(self.__darkerColor))
        painter.drawConvexPolygon(self.__handlePoly)
Beispiel #3
0
    def setupPainter(self, painter, orientation, x1, y1, x2, y2):
        highlight = self.palette().color(QtGui.QPalette.Highlight)
        gradient = QtGui.QLinearGradient(x1, y1, x2, y2)
        gradient.setColorAt(0, highlight.lighter(108))
        gradient.setColorAt(1, highlight.lighter(108))
        painter.setBrush(gradient)

        if orientation == QtCore.Qt.Horizontal:
            painter.setPen(QtGui.QPen(highlight.darker(130), 0))
        else:
            painter.setPen(QtGui.QPen(highlight.darker(150), 0))
Beispiel #4
0
    def drawSpan(self, painter, rect):
        opt = QtGui.QStyleOptionSlider()
        QtGui.QSlider.initStyleOption(self, opt)

        # area
        groove = self.style().subControlRect(QtGui.QStyle.CC_Slider, opt, QtGui.QStyle.SC_SliderGroove, self)
        if opt.orientation == QtCore.Qt.Horizontal:
            groove.adjust(0, 0, -1, 0)
        else:
            groove.adjust(0, 0, 0, -1)

        # pen & brush
        painter.setPen(QtGui.QPen(self.gradientLeft, 0))
        if opt.orientation == QtCore.Qt.Horizontal:
            self.setupPainter(painter, opt.orientation, groove.center().x(), groove.top(), groove.center().x(), groove.bottom())
        else:
            self.setupPainter(painter, opt.orientation, groove.left(), groove.center().y(), groove.right(), groove.center().y())

        # draw groove
        intersected = QtCore.QRectF(rect.intersected(groove))
        gradient = QtGui.QLinearGradient(intersected.topLeft(), intersected.topRight())
        gradient.setColorAt(0, self.gradientLeft)
        gradient.setColorAt(1, self.gradientRight)
        painter.fillRect(intersected, gradient)