Changeset 1639

Show
Ignore:
Timestamp:
08/29/09 07:00:15 (12 years ago)
Author:
arnonym
Message:

More on the mixingmatrix. channels can be hidden now.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/support/mixer-qt4/mixer_saffire_dice.py

    r1636 r1639  
    2323 
    2424class MatrixNode(QtGui.QFrame): 
    25     def __init__(self,row,col,parent): 
     25    def __init__(self, row, col, parent): 
    2626        QtGui.QFrame.__init__(self,parent) 
    2727        self.row = row 
     28        self.connect(self.row, QtCore.SIGNAL("hide"), self.setHidden) 
    2829        self.column = col 
     30        self.connect(self.column, QtCore.SIGNAL("hide"), self.setHidden) 
    2931 
    3032        self.setLineWidth(1) 
     
    3335        self.setLayout(self.layout) 
    3436 
    35         self.lbl = QtGui.QLabel("(%i,%i)" % (row,col), self) 
    36         self.layout.addWidget(self.lbl, 0, 0) 
     37        #self.lbl = QtGui.QLabel("(%i,%i)" % (row,col), self) 
     38        #self.layout.addWidget(self.lbl, 0, 0) 
    3739 
    3840        self.dial = QtGui.QDial(self) 
    3941        self.dial.setRange(0,pow(2,16-1)) 
    4042        self.connect(self.dial, QtCore.SIGNAL("valueChanged(int)"), self.valueChanged) 
    41         self.layout.addWidget(self.dial, 1, 0) 
     43        self.layout.addWidget(self.dial, 0, 0) 
    4244 
    4345    def valueChanged(self, n): 
    44         self.emit(QtCore.SIGNAL("valueChanged"), self.row, self.column, n) 
     46        self.emit(QtCore.SIGNAL("valueChanged"), self.row.number, self.column.number, n) 
     47 
     48    def setHidden(self, hide): 
     49        if not hide: 
     50            if self.row.hidden or self.column.hidden: 
     51                return 
     52        QtGui.QFrame.setHidden(self, hide) 
     53 
     54class MatrixChannel(QtGui.QWidget): 
     55    def __init__(self, number, parent=None): 
     56        QtGui.QWidget.__init__(self, parent) 
     57        layout = QtGui.QGridLayout(self) 
     58        self.number = number 
     59        self.btn = QtGui.QPushButton("%i" % self.number, self) 
     60        self.btn.setCheckable(True) 
     61        self.connect(self.btn, QtCore.SIGNAL("clicked(bool)"), self.hideChannel) 
     62        layout.addWidget(self.btn, 0, 0) 
     63 
     64        self.hidden = False 
     65 
     66    def hideChannel(self, hide): 
     67        #print "MatrixChannel.hideChannel( %s )" % str(hide) 
     68        self.hidden = hide 
     69        self.emit(QtCore.SIGNAL("hide"), hide) 
    4570 
    4671class MatrixMixer(QtGui.QWidget): 
    47     def __init__(self,servername,basepath,parent=None): 
     72    def __init__(self, servername, basepath, parent=None): 
    4873        QtGui.QWidget.__init__(self, parent) 
    4974        self.bus = dbus.SessionBus() 
     
    5176        self.interface = dbus.Interface(self.dev, dbus_interface="org.ffado.Control.Element.MatrixMixer") 
    5277 
    53         rows = min(8, self.interface.getRowCount()) 
    54         cols = min(8, self.interface.getColCount()) 
     78        palette = self.palette() 
     79        print palette.color( QtGui.QPalette.Window ).name() 
     80        palette.setColor( QtGui.QPalette.Window, palette.color( QtGui.QPalette.Window ).darker() ); 
     81        print self.palette().color( QtGui.QPalette.Window ).name() 
     82 
     83        rows = self.interface.getRowCount() 
     84        cols = self.interface.getColCount() 
    5585 
    5686        layout = QtGui.QGridLayout(self) 
    5787        self.setLayout(layout) 
    5888 
     89        self.columns = [] 
     90        self.rows = [] 
     91 
     92        # Add row/column headers 
     93        for i in range(cols): 
     94            ch = MatrixChannel(i, self) 
     95            layout.addWidget(ch, 0, i+1) 
     96            self.columns.append( ch ) 
     97        for i in range(rows): 
     98            ch = MatrixChannel(i, self) 
     99            layout.addWidget(ch, i+1, 0) 
     100            self.rows.append( ch ) 
     101 
     102        # Add node-widgets 
    59103        for i in range(rows): 
    60104            for j in range(cols): 
    61                 node = MatrixNode(i, j, self) 
     105                node = MatrixNode(self.rows[i], self.columns[j], self) 
    62106                node.dial.setValue(self.interface.getValue(i, j)) 
    63107                self.connect(node, QtCore.SIGNAL("valueChanged"), self.valueChanged) 
    64                 layout.addWidget(node, i, j
     108                layout.addWidget(node, i+1, j+1
    65109 
    66110    def valueChanged(self, row, column, n): 
    67111        #print "MatrixNode.valueChanged( %i, %i, %i )" % (row,column,n) 
    68112        self.interface.setValue(row, column, n) 
     113 
     114    def paintEvent(self, event): 
     115        p = QtGui.QPainter(self) 
     116        p.fillRect(event.rect(), self.palette().window()) 
    69117 
    70118class Saffire_Dice(QtGui.QWidget): 
     
    73121        self.layout = QtGui.QGridLayout(self) 
    74122        self.setLayout(self.layout) 
     123        self.mixerwidget = QtGui.QScrollArea(self) 
     124        self.mixerwidget.setWidgetResizable(True) 
     125        self.layout.addWidget(self.mixerwidget) 
    75126 
    76127    def buildMixer(self): 
    77         print self.hw 
    78         print self.hw.getText("/Generic/Nickname") 
     128        #print self.hw 
     129        #print self.hw.getText("/Generic/Nickname") 
    79130        self.matrix = MatrixMixer(self.hw.servername, self.hw.basepath+"/EAP/MatrixMixer", self) 
    80         self.layout.addWidget(self.matrix) 
     131        self.mixerwidget.setWidget(self.matrix) 
    81132 
    82     def getDisplayTitle(self): 
    83         return "Experimental EAP Mixer" 
     133    #def getDisplayTitle(self): 
     134    #    return "Experimental EAP Mixer" 
    84135 
    85136