Changeset 1708
- Timestamp:
- 11/15/09 07:45:56 (13 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py
r1706 r1708 20 20 21 21 from PyQt4 import QtGui, QtCore, Qt 22 import dbus, math 22 import dbus, math, decimal 23 23 24 24 import logging … … 35 35 #print "ColorForNumber.getColor( %g )" % (n) 36 36 keys = self.colors.keys() 37 keys.sort() 37 38 low = keys[-1] 38 39 high = keys[-1] … … 55 56 def __init__(self, input, output, value, parent): 56 57 QtGui.QAbstractSlider.__init__(self, parent) 57 log.debug("MixerNode.__init__( %i, %i, %i, %s )" % (input, output, value, str(parent)) )58 #log.debug("MixerNode.__init__( %i, %i, %i, %s )" % (input, output, value, str(parent)) ) 58 59 59 60 self.pos = QtCore.QPointF(0, 0) … … 66 67 67 68 self.bgcolors = ColorForNumber() 68 self.bgcolors.addColor(0.0*65535, QtGui.QColor( 0, 0, 0)) 69 self.bgcolors.addColor(0.1*65535, QtGui.QColor( 0, 0, 128)) 70 self.bgcolors.addColor(0.8*65535, QtGui.QColor(255, 255, 0)) 71 self.bgcolors.addColor(1.0*65535, QtGui.QColor(255, 0, 0)) 69 self.bgcolors.addColor( 0.0, QtGui.QColor( 0, 0, 0)) 70 self.bgcolors.addColor( 1.0, QtGui.QColor( 0, 0, 128)) 71 self.bgcolors.addColor( math.pow(2,6), QtGui.QColor( 0, 255, 0)) 72 self.bgcolors.addColor( math.pow(2,14), QtGui.QColor(255, 255, 0)) 73 self.bgcolors.addColor(math.pow(2,16)-1, QtGui.QColor(255, 0, 0)) 74 75 self.setContextMenuPolicy(Qt.Qt.ActionsContextMenu) 76 self.mapper = QtCore.QSignalMapper(self) 77 self.connect(self.mapper, QtCore.SIGNAL("mapped(const QString&)"), self.directValues) 78 79 self.spinbox = QtGui.QDoubleSpinBox(self) 80 self.spinbox.setRange(-40, 12) 81 self.spinbox.setSuffix(" dB") 82 self.connect(self.spinbox, QtCore.SIGNAL("valueChanged(const QString&)"), self.directValues) 83 action = QtGui.QWidgetAction(self) 84 action.setDefaultWidget(self.spinbox) 85 self.addAction(action) 86 87 for text in ["3 dB", "0 dB", "-3 dB", "-20 dB", "-inf dB"]: 88 action = QtGui.QAction(text, self) 89 self.connect(action, QtCore.SIGNAL("triggered()"), self.mapper, QtCore.SLOT("map()")) 90 self.mapper.setMapping(action, text) 91 self.addAction(action) 92 93 def directValues(self,text): 94 #log.debug("MixerNode.directValues( '%s' )" % text) 95 text = text.split(" ")[0].replace(",",".") 96 n = pow(10, (float(text)/20)) * pow(2,14) 97 #log.debug("%g" % n) 98 self.setValue(n) 72 99 73 100 def mousePressEvent(self, ev): … … 85 112 self.setValue( self.tmpvalue - math.copysign(pow(abs(change), 2), change) ) 86 113 ev.accept() 87 pass88 114 89 115 def mouseReleaseEvent(self, ev): … … 103 129 color = self.bgcolors.getColor(v) 104 130 p.fillRect(rect, color) 105 if color.valueF() < 0. 5:131 if color.valueF() < 0.6: 106 132 p.setPen(QtGui.QColor(255, 255, 255)) 107 133 else: 108 134 p.setPen(QtGui.QColor(0, 0, 0)) 109 p.drawText(rect, Qt.Qt.AlignCenter, str(self.value())) 135 lv=decimal.Decimal('-Infinity') 136 if v != 0: 137 lv = 20 * math.log10(v * 1.0 / math.pow(2,14)) 138 #log.debug("new value is %g dB" % lv) 139 p.drawText(rect, Qt.Qt.AlignCenter, "%.2g dB" % lv) 110 140 111 141 def internalValueChanged(self, value): 112 142 #log.debug("MixerNode.internalValueChanged( %i )" % value) 143 if value is not 0: 144 dB = 20 * math.log10(value / math.pow(2,14)) 145 if self.spinbox.value() is not dB: 146 self.spinbox.setValue(dB) 113 147 self.emit(QtCore.SIGNAL("valueChanged"), (self.input, self.output, value) ) 148 self.update() 114 149 115 150 … … 125 160 layout.addWidget(self.lbl, 0, 0, 1, 2) 126 161 127 self.btnHide = QtGui.QToolButton(self)128 self.btnHide.setText("Hide")129 self.btnHide.setCheckable(True)130 self.connect(self.btnHide, QtCore.SIGNAL("clicked(bool)"), self.hideChannel)131 layout.addWidget(self.btnHide, 1, 0)162 #self.btnHide = QtGui.QToolButton(self) 163 #self.btnHide.setText("Hide") 164 #self.btnHide.setCheckable(True) 165 #self.connect(self.btnHide, QtCore.SIGNAL("clicked(bool)"), self.hideChannel) 166 #layout.addWidget(self.btnHide, 1, 0) 132 167 133 168 def hideChannel(self, hide): … … 143 178 self.interface = dbus.Interface(self.dev, dbus_interface="org.ffado.Control.Element.MatrixMixer") 144 179 145 palette = self.palette()146 palette.setColor(QtGui.QPalette.Window, palette.color(QtGui.QPalette.Window).darker());147 self.setPalette(palette)180 #palette = self.palette() 181 #palette.setColor(QtGui.QPalette.Window, palette.color(QtGui.QPalette.Window).darker()); 182 #self.setPalette(palette) 148 183 149 184 rows = self.interface.getColCount() … … 206 241 207 242 def valueChanged(self, n): 208 log.debug("MatrixNode.valueChanged( %s )" % str(n))243 #log.debug("MatrixNode.valueChanged( %s )" % str(n)) 209 244 self.interface.setValue(n[1], n[0], n[2]) 210 245