Ejemplo n.º 1
0
 def __init__(self, parent=None, levelbus=None):
     PKWidget.__init__(self, parent)
     self.setFrameShape(QFrame.Panel)
     self.set_background(QColor(151, 169, 0))
     self._foreground = QColor(58, 58, 58)
     
     self.levels = None
     self.levelbus = levelbus
     
     self.set_interval(self._interval)
     self.restart()
Ejemplo n.º 2
0
    def paintEvent(self, e):
        PKWidget.paintEvent(self, e)
        painter = QPainter(self)

        if not self.levels:
            return

        pen = QPen(self._foreground.dark(150))
        gradient = QLinearGradient(QPointF(0, 100), QPointF(0, 150))
        gradient.setColorAt(0, self._foreground)
        gradient.setColorAt(1, self._foreground.light(150))
        brush = QBrush(gradient)

        w = int(self.width() / 3.5)        
        levels = self.levels
        channels = 2 # more channels later
        for i in range(channels):
            rms = levels['rms'][i]
            peak = levels['peak'][i]
            decay = levels['decay'][i]
            x = (w / 2) + int(w * 1.5 * i)
            h = self.height()

            painter.setBrush(brush)
            painter.setPen(pen)
            
            # peak
            painter.drawRect(x, h - (h * peak), w, h)

            # decay
            y = h - (h * decay)
            painter.drawLine(x, y, x + w, y)

            # rms
            painter.setBrush(QColor(100, 100, 100, 100))
            painter.setPen(QColor(200, 200, 200, 50))
            painter.drawRect(x, h - (h * rms), w, h)
Ejemplo n.º 3
0
 def __init__(self, parent=None):
     PKWidget.__init__(self, parent)
     self._shown = []
     self._genre = ''
     self.padding = 2
Ejemplo n.º 4
0
    def paintEvent(self, e):
        """ """
        PKWidget.paintEvent(self, e)

        painter = QPainter(self)
        orig_pen = QPen(painter.pen())
        orig_brush = QBrush(painter.brush())
        orig_font = QFont(painter.font())
        metrics = painter.fontMetrics()
        f_height = metrics.ascent()
        text_flags = Qt.AlignHCenter | Qt.AlignVCenter
        
        region = e.region()
        for item in self._shown:
            font_y = item.y + item.height / 2 + f_height / 2

            item_rect = QRect(0, item.y, self.width(), item.height)
            if not region.contains(item_rect):
                continue

            painter.setFont(orig_font)

            # background
            pen = item.color().dark(110)
            pen.setAlpha(100)
            painter.setBrush(QBrush(item.color()))
            painter.setPen(QPen(pen))
            w = self.width() * (item.progress * .01)
            rect = QRect(0, item.y, w, item.height)
            painter.drawRect(rect)

            # queue pos
            pen = pen.dark(140)
            pen.setAlpha(255)
            painter.setPen(QPen(pen))
            queue_rect = QRect(self.padding, item.y + self.padding,
                               item.height - self.padding * 2,
                               item.height - self.padding * 2)
            painter.drawRoundRect(queue_rect, 35, 35)

            # num
            if not item.num is None:
                painter.setPen(orig_pen)
                painter.setBrush(orig_brush)
                painter.drawText(queue_rect, text_flags, str(item.num))

            # text
            painter.setPen(orig_pen)
            painter.setBrush(orig_brush)
            font = QFont('Utopia, Italic', 14, -1, True)
            painter.setFont(font)
            rect = QRect(item_rect)
            rect.setX(item.height + self.padding * 2)
            rect.setWidth(rect.width() - rect.x())
            painter.drawText(rect, Qt.AlignVCenter | Qt.AlignLeft, item.text)

            # state
            if item.state:
                font = QFont('7th Service Expanded Italic, Italic')
                font.setPointSize(18)
                pen = QColor(orig_pen.color())
                pen.setAlpha(50)
                painter.setPen(QPen(pen))
                painter.setFont(font)
                x = item.x
                y = item.y
                w = self.width()
                h = item.height
                rect = QRect(x, y, w, h)
                flags = Qt.AlignVCenter | Qt.AlignRight
                painter.drawText(rect, flags, item.state+'  ')