Changeset 1093

Show
Ignore:
Timestamp:
05/02/08 12:50:43 (13 years ago)
Author:
arnonym
Message:
  • Add a generic part for each mixer controlling the nickname and the clocksource.
  • Don't install the generic mixer as its only intended for developers.
  • ignore the generated ffadomixer_config.py
  • Rework/resort the initialization of mixer-widgets...
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/support/mixer

    • Property svn:ignore changed from
      *ui.py
      *.pyc
      ffadomixer
      .*.swp
      to
      *ui.py
      *.pyc
      ffadomixer
      .*.swp
      ffadomixer_config.py
  • trunk/libffado/support/mixer/ffadomixer.in

    r1089 r1093  
    4949from mixer_motu import * 
    5050from mixer_dummy import * 
     51from mixer_global import * 
    5152 
    5253use_generic = False 
     
    215216    def getAttributeName(self, idx): 
    216217        return self.iface.getAttributeName(idx) 
     218 
     219class TextInterface: 
     220    def __init__(self, servername, basepath): 
     221        self.basepath=basepath 
     222        self.servername=servername 
     223        self.bus=dbus.SessionBus() 
     224        self.dev = self.bus.get_object( self.servername, self.basepath ) 
     225        self.iface = dbus.Interface( self.dev, dbus_interface="org.ffado.Control.Element.Text" ) 
     226 
     227    def text(self): 
     228        return self.iface.getValue() 
     229 
     230    def setText(self,text): 
     231        self.iface.setValue(text) 
     232 
     233class HLine( QFrame ): 
     234        def __init__( self, parent ): 
     235                QFrame.__init__( self, parent ) 
     236                self.setFrameShape( QFrame.HLine ) 
     237                self.setLineWidth( 2 ) 
     238                self.setMinimumHeight( 10 ) 
    217239 
    218240if __name__ == "__main__": 
     
    286308            thisdev=(vendorId, 0x00000000) 
    287309 
    288         found_panel = False 
    289         for dev in SupportedDevices: 
    290             if dev[0] == thisdev: 
    291                 mixerapp = dev[1] 
    292  
    293                 # hack for the focusrite devices 
    294                 # Saffire:        0x130e010001???? 
    295                 # SaffireLE:    0x130e010004???? 
    296                 if thisdev == (0x00130e, 0x00000000): 
    297                     if int(GUID, 16) < 0x130e0100040000: 
    298                         mixerapp = "SaffireMixer" 
    299                     else: 
    300                         mixerapp = "SaffireLEMixer" 
    301                 print mixerapp 
    302                 exec('tmp = '+mixerapp+'( mw )') 
    303                 mixersize = tmp.size() 
    304                 mw.addTab( tmp, mixerapp ) 
    305                 tmp.hw = ControlInterface(server, basepath+'/DeviceManager/'+path) 
    306                 tmp.configrom = cfgrom 
    307                 tmp.clockselect = ClockSelectInterface(server, basepath+'/DeviceManager/'+path) 
    308                 tmp.initValues() 
    309                 tmp.show() 
    310                 found_panel = True 
    311  
    312         if not found_panel: 
    313             tmp = DummyMixer( mw ) 
    314             mw.addTab( tmp, modelName+" (Dummy)" ) 
    315             tmp.hw = ControlInterface(server, basepath+'/DeviceManager/'+path) 
    316             tmp.configrom = cfgrom 
    317             tmp.clockselect = ClockSelectInterface(server, basepath+'/DeviceManager/'+path) 
    318             tmp.initValues() 
    319             tmp.show() 
    320  
     310        dev = None 
     311        for d in SupportedDevices: 
     312            if d[0] == thisdev: 
     313                dev = d 
     314 
     315        w = QWidget( mw ) 
     316        l = QVBoxLayout( w ) 
     317 
     318        # 
     319        # Generic elements for all mixers follow here: 
     320        # 
     321 
     322        tmp = GlobalMixer( w ) 
     323        tmp.clockselect = ClockSelectInterface( server, basepath+"/DeviceManager/"+path ) 
     324        tmp.nickname = TextInterface( server, basepath+"/DeviceManager/"+path+"/Generic/Nickname" ) 
     325        tmp.initValues() 
     326        l.addWidget( tmp, 1 ) 
     327 
     328        # 
     329        # Line to separate 
     330        # 
     331        l.addWidget( HLine( w ) ) 
     332 
     333        # 
     334        # Specific (or dummy) mixer widgets get loaded in the following 
     335        # 
     336        if dev != None: 
     337            mixerapp = dev[1] 
     338            # hack for the focusrite devices 
     339            # Saffire:        0x130e010001???? 
     340            # SaffireLE:    0x130e010004???? 
     341            if thisdev == (0x00130e, 0x00000000): 
     342                if int(GUID, 16) < 0x130e0100040000: 
     343                    mixerapp = "SaffireMixer" 
     344                else: 
     345                    mixerapp = "SaffireLEMixer" 
     346 
     347            exec( "mixerwidget = "+mixerapp+"( w )" ) 
     348 
     349        else: 
     350            mixerwidget = DummyMixer( w ) 
     351            mixerapp = modelName+" (Dummy)" 
     352 
     353        # 
     354        # The same for all mixers 
     355        # 
     356        l.addWidget( mixerwidget, 10 ) 
     357        mixerwidget.hw = ControlInterface(server, basepath+'/DeviceManager/'+path) 
     358        mixerwidget.configrom = cfgrom 
     359        mixerwidget.clockselect = ClockSelectInterface(server, basepath+'/DeviceManager/'+path) 
     360        mixerwidget.initValues() 
     361        mw.addTab( w, mixerapp ) 
     362 
     363    # 
     364    # Show the generic (development) mixer if it is available 
     365    # 
    321366    if nbDevices > 0 and use_generic: 
    322367        mw.addTab( GenericMixer( devmgr.bus, server, mw ), "Generic Mixer" ) 
    323368 
     369    # 
     370    # Only really show the mainwindow and start the mixer when at least on mixer is shown 
     371    # 
    324372    if mw.count() > 0: 
    325373        mw.show() 
     
    328376 
    329377        app.exec_loop() 
     378 
  • trunk/libffado/support/mixer/mixer_generic.py

    r1065 r1093  
    2929                QFrame.__init__( self, parent ) 
    3030                self.interface = interface 
    31                 self.setFrameStyle( QFrame.Raised|QFrame.StyledPanel ) 
    32                 self.setLineWidth( 2 ) 
     31                self.setFrameStyle( QFrame.Plain|QFrame.StyledPanel ) 
     32                self.setLineWidth( 1 ) 
     33                self.setMargin( 5 ) 
    3334                l2 = QVBoxLayout( self ) 
     35                l2.setMargin( 5 ) 
    3436                lbl = QLabel( "<qt><b>" + name + "</b></qt>", self ) 
    3537                l2.addWidget( lbl ) 
    36                 l2.setMargin( 2 ) 
    37                 self.l = QHBoxLayout( self ) 
     38                self.l = QHBoxLayout( None ) 
     39                self.l.setMargin( 0 ) 
     40                self.l.setSpacing( 2 ) 
    3841                l2.addLayout( self.l ) 
    3942 
     
    97100                self.interface.setValue( text.latin1() ) 
    98101 
     102class HLine( QFrame ): 
     103        def __init__( self, parent ): 
     104                QFrame.__init__( self, parent ) 
     105                self.setFrameShape( QFrame.HLine ) 
     106                self.setLineWidth( 2 ) 
     107                self.setMinimumHeight( 10 ) 
     108 
    99109class GenericMixer( QWidget ): 
    100110        def __init__( self, bus, session, parent=None ): 
    101111                QWidget.__init__( self, parent ) 
    102                 QHBoxLayout( self ) 
     112                QVBoxLayout( self ) 
     113                self.layout().addWidget( QLabel( "<qt>This generic interface is only intended for developers. The controls shown here may or may not work and probably don't represent the devices real structure. This just displays the object-tree as exported by ffado-dbus-server.</qt>", self ) ) 
     114                self.layout().addWidget( HLine( self ) ) 
    103115                self.introspect( bus, session, "/org/ffado/Control/DeviceManager", self ) 
    104116 
  • trunk/libffado/support/mixer/SConscript

    r1076 r1093  
    3333                       'saffirele', 'af2', 'bcoaudio5', 'edirolfa66', 
    3434                       'mackie_generic', 'quatafire', 'motu', 
    35                        'dummy', 'generic
     35                       'global', 'dummy
    3636                     ] 
    3737    e['OTHERAPPS'] = ['ffado_regdialog']