Browse Source

Finish rework

tags/1.9.6
falkTX 10 years ago
parent
commit
5d719ab773
1 changed files with 65 additions and 30 deletions
  1. +65
    -30
      source/widgets/digitalpeakmeter.py

+ 65
- 30
source/widgets/digitalpeakmeter.py View File

@@ -53,6 +53,7 @@ class DigitalPeakMeter(QWidget):


def __init__(self, parent): def __init__(self, parent):
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.setAttribute(Qt.WA_OpaquePaintEvent)


# defaults are VERTICAL, COLOR_GREEN, STYLE_DEFAULT # defaults are VERTICAL, COLOR_GREEN, STYLE_DEFAULT


@@ -68,10 +69,10 @@ class DigitalPeakMeter(QWidget):
self.fMeterOrientation = self.VERTICAL self.fMeterOrientation = self.VERTICAL
self.fMeterStyle = self.STYLE_DEFAULT self.fMeterStyle = self.STYLE_DEFAULT


self.fMeterBackground = QColor("#000000")
self.fMeterBackground = QColor("#070707")
self.fMeterGradient = QLinearGradient(0, 0, 0, 0) self.fMeterGradient = QLinearGradient(0, 0, 0, 0)


self.fSmoothMultiplier = 1
self.fSmoothMultiplier = 2


self.updateGrandient() self.updateGrandient()


@@ -158,11 +159,11 @@ class DigitalPeakMeter(QWidget):
return qCritical("DigitalPeakMeter::setMeterStyle(%i) - invalid style" % style) return qCritical("DigitalPeakMeter::setMeterStyle(%i) - invalid style" % style)


if style == self.STYLE_DEFAULT: if style == self.STYLE_DEFAULT:
self.fMeterBackground = QColor("#000000")
self.fMeterBackground = QColor("#070707")
elif style == self.STYLE_OPENAV: elif style == self.STYLE_OPENAV:
self.fMeterBackground = QColor("#1A1A1A") self.fMeterBackground = QColor("#1A1A1A")
elif style == self.STYLE_RNCBC: elif style == self.STYLE_RNCBC:
self.fMeterBackground = QColor("#111111")
self.fMeterBackground = QColor("#070707")


self.fMeterStyle = style self.fMeterStyle = style


@@ -217,11 +218,7 @@ class DigitalPeakMeter(QWidget):
def updateGrandient(self): def updateGrandient(self):
self.fMeterGradient = QLinearGradient(0, 0, 1, 1) self.fMeterGradient = QLinearGradient(0, 0, 1, 1)


if self.fMeterStyle == self.STYLE_OPENAV:
self.fMeterGradient.setColorAt(0.0, self.fMeterColorBase)
self.fMeterGradient.setColorAt(1.0, self.fMeterColorBase)

else:
if self.fMeterStyle == self.STYLE_DEFAULT:
if self.fMeterOrientation == self.HORIZONTAL: if self.fMeterOrientation == self.HORIZONTAL:
self.fMeterGradient.setColorAt(0.0, self.fMeterColorBase) self.fMeterGradient.setColorAt(0.0, self.fMeterColorBase)
self.fMeterGradient.setColorAt(0.2, self.fMeterColorBase) self.fMeterGradient.setColorAt(0.2, self.fMeterColorBase)
@@ -238,6 +235,36 @@ class DigitalPeakMeter(QWidget):
self.fMeterGradient.setColorAt(0.8, self.fMeterColorBase) self.fMeterGradient.setColorAt(0.8, self.fMeterColorBase)
self.fMeterGradient.setColorAt(1.0, self.fMeterColorBase) self.fMeterGradient.setColorAt(1.0, self.fMeterColorBase)


elif self.fMeterStyle == self.STYLE_OPENAV:
self.fMeterGradient.setColorAt(0.0, self.fMeterColorBase)
self.fMeterGradient.setColorAt(1.0, self.fMeterColorBase)

elif self.fMeterStyle == self.STYLE_RNCBC:
if self.fMeterColor == self.COLOR_BLUE:
c1 = QColor(40,160,160)
c2 = QColor(60,220,160)
elif self.fMeterColor == self.COLOR_GREEN:
c1 = QColor( 40,160,40)
c2 = QColor(160,220,20)

if self.fMeterOrientation == self.HORIZONTAL:
self.fMeterGradient.setColorAt(0.0, c1)
self.fMeterGradient.setColorAt(0.2, c1)
self.fMeterGradient.setColorAt(0.6, c2)
self.fMeterGradient.setColorAt(0.7, QColor(220,220, 20))
self.fMeterGradient.setColorAt(0.8, QColor(240,160, 20))
self.fMeterGradient.setColorAt(0.9, QColor(240, 0, 20))
self.fMeterGradient.setColorAt(1.0, QColor(240, 0, 20))

elif self.fMeterOrientation == self.VERTICAL:
self.fMeterGradient.setColorAt(0.0, QColor(240, 0, 20))
self.fMeterGradient.setColorAt(0.1, QColor(240, 0, 20))
self.fMeterGradient.setColorAt(0.2, QColor(240,160, 20))
self.fMeterGradient.setColorAt(0.3, QColor(220,220, 20))
self.fMeterGradient.setColorAt(0.4, c2)
self.fMeterGradient.setColorAt(0.8, c1)
self.fMeterGradient.setColorAt(1.0, c1)

self.updateGrandientFinalStop() self.updateGrandientFinalStop()


def updateGrandientFinalStop(self): def updateGrandientFinalStop(self):
@@ -272,32 +299,35 @@ class DigitalPeakMeter(QWidget):
if self.fChannelCount == 0: if self.fChannelCount == 0:
return return


meterPad = 0
meterPos = 0 meterPos = 0
meterSize = (height if self.fMeterOrientation == self.HORIZONTAL else width)/self.fChannelCount meterSize = (height if self.fMeterOrientation == self.HORIZONTAL else width)/self.fChannelCount


#startX = -1 if self.fMeterStyle == self.STYLE_OPENAV else 0
#padding = 2 if self.fMeterStyle == self.STYLE_OPENAV else 0

# set pen/brush for levels # set pen/brush for levels
painter.setPen(QPen(self.fMeterBackground, 0)) painter.setPen(QPen(self.fMeterBackground, 0))
painter.setBrush(self.fMeterGradient) painter.setBrush(self.fMeterGradient)


#if self.fMeterStyle == self.STYLE_OPENAV:
#color = self.fMeterGradient.stops()[0][1]
#painter.setPen(color)
#color.setAlphaF(0.5)
#painter.setBrush(color)
#del color
if self.fMeterStyle == self.STYLE_OPENAV:
colorTrans = QColor(self.fMeterColorBase)
colorTrans.setAlphaF(0.5)
painter.setBrush(colorTrans)
painter.setPen(QPen(self.fMeterColorBase, 1))
del colorTrans
meterPad += 2
meterSize -= 2


# draw levels # draw levels
for level in self.fChannelData: for level in self.fChannelData:
if level == 0.0:
continue

if self.fMeterOrientation == self.HORIZONTAL: if self.fMeterOrientation == self.HORIZONTAL:
painter.drawRect(0, meterPos, int(level * float(width)), meterSize) painter.drawRect(0, meterPos, int(level * float(width)), meterSize)
meterPos += meterSize
meterPos += meterSize+meterPad


elif self.fMeterOrientation == self.VERTICAL: elif self.fMeterOrientation == self.VERTICAL:
painter.drawRect(meterPos, height - int(level * float(height)), meterSize, height) painter.drawRect(meterPos, height - int(level * float(height)), meterSize, height)
meterPos += meterSize
meterPos += meterSize+meterPad


if not self.fMeterLinesEnabled: if not self.fMeterLinesEnabled:
return return
@@ -309,14 +339,13 @@ class DigitalPeakMeter(QWidget):
lfull = float(height - 1) lfull = float(height - 1)


if self.fMeterStyle == self.STYLE_OPENAV: if self.fMeterStyle == self.STYLE_OPENAV:
pass
#painter.setPen(QColor(37, 37, 37, 100))
#painter.drawLine(lsmall * 0.25, 2, lsmall * 0.25, lfull-2.0)
#painter.drawLine(lsmall * 0.50, 2, lsmall * 0.50, lfull-2.0)
#painter.drawLine(lsmall * 0.75, 2, lsmall * 0.75, lfull-2.0)
painter.setPen(QColor(37, 37, 37, 100))
painter.drawLine(lsmall * 0.25, 2, lsmall * 0.25, lfull-2.0)
painter.drawLine(lsmall * 0.50, 2, lsmall * 0.50, lfull-2.0)
painter.drawLine(lsmall * 0.75, 2, lsmall * 0.75, lfull-2.0)


#if self.fChannelCount > 1:
#painter.drawLine(1, lfull/2, lsmall-1, lfull/2)
if self.fChannelCount > 1:
painter.drawLine(1, lfull/2-1, lsmall-1, lfull/2-1)


else: else:
# Base # Base
@@ -344,8 +373,13 @@ class DigitalPeakMeter(QWidget):
lfull = float(width - 1) lfull = float(width - 1)


if self.fMeterStyle == self.STYLE_OPENAV: if self.fMeterStyle == self.STYLE_OPENAV:
pass
# TODO
painter.setPen(QColor(37, 37, 37, 100))
painter.drawLine(2, lsmall - (lsmall * 0.25), lfull-2.0, lsmall - (lsmall * 0.25))
painter.drawLine(2, lsmall - (lsmall * 0.50), lfull-2.0, lsmall - (lsmall * 0.50))
painter.drawLine(2, lsmall - (lsmall * 0.75), lfull-2.0, lsmall - (lsmall * 0.75))

if self.fChannelCount > 1:
painter.drawLine(lfull/2-1, 1, lfull/2-1, lsmall-1)


else: else:
# Base # Base
@@ -389,7 +423,8 @@ if __name__ == '__main__':


gui = DigitalPeakMeter(None) gui = DigitalPeakMeter(None)
gui.setChannelCount(2) gui.setChannelCount(2)
gui.setMeterOrientation(DigitalPeakMeter.HORIZONTAL)
#gui.setMeterOrientation(DigitalPeakMeter.HORIZONTAL)
gui.setMeterStyle(DigitalPeakMeter.STYLE_RNCBC)
gui.displayMeter(1, 0.5) gui.displayMeter(1, 0.5)
gui.displayMeter(2, 0.8) gui.displayMeter(2, 0.8)
gui.show() gui.show()


Loading…
Cancel
Save