Changeset 1435

Show
Ignore:
Timestamp:
11/16/08 15:05:38 (15 years ago)
Author:
arnonym
Message:

forward port the mixer-changes from 2.0-branch r1361:HEAD

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/configuration

    r1336 r1435  
    77    driver      = 1; # BeBoB 
    88}, 
     9{ # Added by arnonym from ffado-mixers list 
     10    vendorid    = 0x00000f; 
     11    modelid     = 0x00010067; 
     12    vendorname  = "Mackie"; 
     13    modelname   = "Onyx Firewire"; 
     14    driver      = 1; # BeBoB 
     15    mixer       = "MackieOnyxMixer"; 
     16}, 
    917{ 
    1018    vendorid    = 0x0003db; 
     
    2735    modelname   = "Audio 5"; 
    2836    driver      = 1; # BeBoB 
     37    mixer       = "BCoAudio5Control"; 
    2938}, 
    3039{ 
     
    4857    modelname   = "Phase 88 FW"; 
    4958    driver      = 1; # BeBoB 
     59    mixer       = "Phase88Control"; 
    5060}, 
    5161{ 
     
    5565    modelname   = "Phase X24 FW (model version 4)"; 
    5666    driver      = 1; # BeBoB 
     67    mixer       = "Phase24Control"; 
    5768}, 
    5869{ 
     
    6273    modelname   = "Phase X24 FW (model version 7)"; 
    6374    driver      = 1; # BeBoB 
     75    mixer       = "Phase24Control"; 
    6476}, 
    6577{ 
     
    6981    modelname   = "Quatafire 610"; 
    7082    driver      = 1; # BeBoB 
     83    mixer       = "QuataFireMixer"; 
    7184}, 
    7285{ 
     
    7689    modelname   = "Saffire Pro26IO"; 
    7790    driver      = 1; # BeBoB 
     91    mixer       = "SaffireProMixer"; 
    7892}, 
    7993{ 
     
    8397    modelname   = "Saffire Pro10IO"; 
    8498    driver      = 1; # BeBoB 
     99    mixer       = "SaffireProMixer"; 
    85100}, 
    86101{ 
     
    90105    modelname   = "Saffire (LE)"; 
    91106    driver      = 1; # BeBoB 
     107    mixer       = "SaffireMixer"; 
    92108}, 
    93109{ 
     
    97113    modelname   = "FA-66"; 
    98114    driver      = 1; # BeBoB 
     115    mixer       = "EdirolFa66Control"; 
    99116}, 
    100117{ 
     
    104121    modelname   = "FA-101"; 
    105122    driver      = 1; # BeBoB 
     123    mixer       = "EdirolFa101Control"; 
    106124}, 
    107125{ 
     
    146164    modelname = "AudioFire2"; 
    147165    driver = 2; 
     166    mixer = "AudioFireMixer"; 
    148167  },  
    149168  { 
     
    153172    modelname = "AudioFire4"; 
    154173    driver = 2; 
     174    mixer = "AudioFireMixer"; 
    155175  },  
    156176  { 
     
    160180    modelname = "AudioFire8"; 
    161181    driver = 2; 
     182    mixer = "AudioFireMixer"; 
    162183  },  
    163184  { 
     
    167188    modelname = "AudioFire12"; 
    168189    driver = 2; 
     190    mixer = "AudioFireMixer"; 
    169191  },  
    170192  { 
     
    202224    modelname = "Onyx 1200F"; 
    203225    driver = 2; 
     226  }, 
     227  { # added by arnonym from ffado-mixers list 
     228    vendorid = 0x0001f2; 
     229    modelid = 0x00000000; 
     230    vendorname = "Motu"; 
     231    modelname = "All of them"; 
     232    driver = 10; 
     233    mixer = "MotuMixer"; 
    204234  } 
    205235); 
  • trunk/libffado/support/mixer-qt4

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

    r1298 r1435  
    1010 
    1111POLL_SLEEP_TIME_MSEC = 100 # 100ms 
     12 
     13PYTHONDIR = "$PYTHONDIR" 
     14SHAREDIR = "$SHAREDIR" 
     15 
     16USER_CONFIG_FILE = "$USER_CONFIG_FILE" 
     17SYSTEM_CONFIG_FILE = "$SYSTEM_CONFIG_FILE" 
     18 
     19DEBUG = $DEBUG 
  • trunk/libffado/support/mixer-qt4/ffado_dbus_util.py

    r1298 r1435  
    2626import dbus.mainloop.qt 
    2727dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True) 
     28 
     29import logging 
     30log = logging.getLogger('dbus') 
    2831 
    2932class ControlInterface: 
     
    4346                dev_cont.setValueIdx(idx,v) 
    4447        except: 
    45             print "Failed to set Continuous %s on server %s" % (path, self.servername
     48            log.error("Failed to set Continuous %s on server %s" % (path, self.servername)
    4649 
    4750    def getContignuous(self, subpath, idx=None): 
     
    5558                return dev_cont.getValueIdx(idx) 
    5659        except: 
    57             print "Failed to get Continuous %s on server %s" % (path, self.servername
     60            log.error("Failed to get Continuous %s on server %s" % (path, self.servername)
    5861            return 0 
    5962 
     
    6568            dev_cont.setValue(v) 
    6669        except: 
    67             print "Failed to set Discrete %s on server %s" % (path, self.servername
     70            log.error("Failed to set Discrete %s on server %s" % (path, self.servername)
    6871 
    6972    def getDiscrete(self, subpath): 
     
    7477            return dev_cont.getValue() 
    7578        except: 
    76             print "Failed to get Discrete %s on server %s" % (path, self.servername
     79            log.error("Failed to get Discrete %s on server %s" % (path, self.servername)
    7780            return 0 
    7881 
     
    8487            dev_cont.setValue(v) 
    8588        except: 
    86             print "Failed to set Text %s on server %s" % (path, self.servername
     89            log.error("Failed to set Text %s on server %s" % (path, self.servername)
    8790 
    8891    def getText(self, subpath): 
     
    9396            return dev_cont.getValue() 
    9497        except: 
    95             print "Failed to get Text %s on server %s" % (path, self.servername
     98            log.error("Failed to get Text %s on server %s" % (path, self.servername)
    9699            return 0 
    97100 
     
    103106            dev_cont.setValue(row, col, v) 
    104107        except: 
    105             print "Failed to set MatrixMixer %s on server %s" % (path, self.servername
     108            log.error("Failed to set MatrixMixer %s on server %s" % (path, self.servername)
    106109 
    107110    def getMatrixMixerValue(self, subpath, row, col): 
     
    112115            return dev_cont.getValue(row, col) 
    113116        except: 
    114             print "Failed to get MatrixMixer %s on server %s" % (path, self.servername
     117            log.error("Failed to get MatrixMixer %s on server %s" % (path, self.servername)
    115118            return 0 
    116119 
     
    122125            dev_cont.select(v) 
    123126        except: 
    124             print "Failed to select %s on server %s" % (path, self.servername
     127            log.error("Failed to select %s on server %s" % (path, self.servername)
    125128 
    126129    def enumSelected(self, subpath): 
     
    131134            return dev_cont.selected() 
    132135        except: 
    133             print "Failed to get selected enum %s on server %s" % (path, self.servername
     136            log.error("Failed to get selected enum %s on server %s" % (path, self.servername)
    134137            return 0 
    135138 
     
    141144            return dev_cont.getEnumLabel(v) 
    142145        except: 
    143             print "Failed to get enum label %s on server %s" % (path, self.servername
     146            log.error("Failed to get enum label %s on server %s" % (path, self.servername)
    144147            return 0 
    145148 
     
    151154            return dev_cont.count() 
    152155        except: 
    153             print "Failed to get enum count %s on server %s" % (path, self.servername
     156            log.error("Failed to get enum count %s on server %s" % (path, self.servername)
    154157            return 0 
    155158 
     
    175178        # and qt3 doesn't provide one for python/dbus 
    176179        try: 
    177             print "connecting to: Updated on %s (server: %s)" % (self.basepath, self.servername
     180            log.debug("connecting to: Updated on %s (server: %s)" % (self.basepath, self.servername)
    178181            self.dev.connect_to_signal("Updated", self.updateSignal, \ 
    179182                                    dbus_interface="org.ffado.Control.Element.Container") 
     
    213216 
    214217    def updateSignal(self): 
    215         print ("Received update signal") 
     218        log.debug("Received update signal") 
    216219        for handler in self.updateSignalHandlers: 
    217220            arg = self.updateSignalHandlerArgs[handler] 
    218             if arg: 
    219                 handler(arg) 
    220             else: 
    221                 handler() 
     221            try: 
     222                if arg: 
     223                    handler(arg) 
     224                else: 
     225                    handler() 
     226            except: 
     227                log.error("Failed to execute handler %s" % handler) 
    222228 
    223229    def preUpdateSignal(self): 
    224         print ("Received pre-update signal") 
     230        log.debug("Received pre-update signal") 
    225231        for handler in self.preUpdateSignalHandlers: 
    226232            arg = self.preUpdateSignalHandlerArgs[handler] 
    227             if arg: 
    228                 handler(arg) 
    229             else: 
    230                 handler() 
     233            try: 
     234                if arg: 
     235                    handler(arg) 
     236                else: 
     237                    handler() 
     238            except: 
     239                log.error("Failed to execute handler %s" % handler) 
    231240 
    232241    def postUpdateSignal(self): 
    233         print ("Received post-update signal") 
     242        log.debug("Received post-update signal") 
    234243        for handler in self.postUpdateSignalHandlers: 
    235244            arg = self.postUpdateSignalHandlerArgs[handler] 
    236             if arg: 
    237                 handler(arg) 
    238             else: 
    239                 handler() 
     245            try: 
     246                if arg: 
     247                    handler(arg) 
     248                else: 
     249                    handler() 
     250            except: 
     251                log.error("Failed to execute handler %s" % handler) 
    240252 
    241253    def destroyedSignal(self): 
    242         print ("Received destroyed signal") 
     254        log.debug("Received destroyed signal") 
    243255        for handler in self.destroyedSignalHandlers: 
    244256            arg = self.destroyedSignalHandlerArgs[handler] 
    245             if arg: 
    246                 handler(arg) 
    247             else: 
    248                 handler() 
     257            try: 
     258                if arg: 
     259                    handler(arg) 
     260                else: 
     261                    handler() 
     262            except: 
     263                log.error("Failed to execute handler %s" % handler) 
    249264 
    250265    def getNbDevices(self): 
     
    280295        self.dev = self.bus.get_object(self.servername, self.basepath) 
    281296        self.iface = dbus.Interface(self.dev, dbus_interface='org.ffado.Control.Element.AttributeEnum') 
     297        self.iface_element = dbus.Interface(self.dev, dbus_interface='org.ffado.Control.Element.Element') 
    282298    def count(self): 
    283299        return self.iface.count() 
     
    294310    def getAttributeName(self, idx): 
    295311        return self.iface.getAttributeName(idx) 
     312    def canChangeValue(self): 
     313        return self.iface_element.canChangeValue() 
    296314 
    297315class SamplerateSelectInterface: 
     
    302320        self.dev = self.bus.get_object(self.servername, self.basepath) 
    303321        self.iface = dbus.Interface(self.dev, dbus_interface='org.ffado.Control.Element.Enum') 
     322        self.iface_element = dbus.Interface(self.dev, dbus_interface='org.ffado.Control.Element.Element') 
    304323    def count(self): 
    305324        return self.iface.count() 
     
    310329    def getEnumLabel(self, idx): 
    311330        return self.iface.getEnumLabel(idx) 
     331    def canChangeValue(self): 
     332        return self.iface_element.canChangeValue() 
    312333 
    313334class TextInterface: 
     
    318339        self.dev = self.bus.get_object( self.servername, self.basepath ) 
    319340        self.iface = dbus.Interface( self.dev, dbus_interface="org.ffado.Control.Element.Text" ) 
    320  
     341        self.iface_element = dbus.Interface(self.dev, dbus_interface='org.ffado.Control.Element.Element') 
    321342    def text(self): 
    322343        return self.iface.getValue() 
    323  
    324344    def setText(self,text): 
    325345        self.iface.setValue(text) 
     346    def canChangeValue(self): 
     347        return self.iface_element.canChangeValue() 
  • trunk/libffado/support/mixer-qt4/ffado_panelmanager.py

    r1298 r1435  
    2222# along with this program.  If not, see <http://www.gnu.org/licenses/>. 
    2323# 
    24 from ffadomixer_config import FFADO_VERSION, FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH 
    25  
    26 from PyQt4.QtGui import QFrame, QWidget, QTabWidget, QVBoxLayout 
     24 
     25from ffadomixer_config import * #FFADO_VERSION, FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH 
     26 
     27from PyQt4.QtGui import QFrame, QWidget, QTabWidget, QVBoxLayout, QMainWindow, QIcon, QAction, qApp, QStyleOptionTabWidgetFrame 
    2728from PyQt4.QtCore import QTimer 
    2829 
     
    3233from ffado_registration import * 
    3334 
    34 #from mixer_phase88 import * 
    35 #from mixer_phase24 import * 
     35from ffado_configuration import DeviceList 
     36 
     37from mixer_phase88 import * 
     38from mixer_phase24 import * 
    3639from mixer_saffire import SaffireMixer 
    3740from mixer_saffirepro import SaffireProMixer 
    3841from mixer_audiofire import AudioFireMixer 
    39 #from mixer_bcoaudio5 import * 
    40 #from mixer_edirolfa66 import * 
    41 #from mixer_mackie_generic import * 
    42 #from mixer_quatafire import * 
    43 #from mixer_motu import * 
     42from mixer_bcoaudio5 import * 
     43from mixer_edirolfa66 import * 
     44from mixer_edirolfa101 import * 
     45from mixer_mackie_onyxmixer import * 
     46from mixer_quatafire import * 
     47from mixer_motu import * 
    4448from mixer_dummy import * 
    4549from mixer_global import GlobalMixer 
     50 
     51import time 
     52 
     53import logging 
     54log = logging.getLogger('panelmanager') 
    4655 
    4756use_generic = False 
    4857try: 
    4958    from mixer_generic import * 
    50     print "The generic mixer is found, seems to be a developer using ffadomixer..." 
     59    log.info("The generic mixer is found, seems to be a developer using ffadomixer...") 
    5160except ImportError: 
    5261    pass 
    5362else: 
    5463    use_generic = True 
    55  
    56 SupportedDevices=[ 
    57     #[(0x000aac, 0x00000003),'Phase88Control'], 
    58     #[(0x000aac, 0x00000004),'Phase24Control'], 
    59     #[(0x000aac, 0x00000007),'Phase24Control'], 
    60     [(0x00130e, 0x00000003),'SaffireProMixer'], 
    61     [(0x00130e, 0x00000006),'SaffireProMixer'], 
    62     [(0x00130e, 0x00000000),'SaffireMixer'], 
    63     [(0x001486, 0x00000af2),'AudioFireMixer'], 
    64     [(0x001486, 0x00000af4),'AudioFireMixer'], 
    65     [(0x001486, 0x00000af8),'AudioFireMixer'], 
    66     [(0x001486, 0x0000af12),'AudioFireMixer'], 
    67     #[(0x0007f5, 0x00010049),'BCoAudio5Control'], 
    68     #[(0x0040AB, 0x00010049),'EdirolFa66Control'], 
    69     #[(0x00000f, 0x00010067),'MackieGenericControl'], 
    70     #[(0x000f1b, 0x00010064),'QuataFireMixer'], 
    71     #[(0x0001f2, 0x00000000),'MotuMixer'], 
    72     ] 
    7364 
    7465# pseudo-guid 
     
    8879        self.setupUi(self) 
    8980 
     81class OwnTabWidget(QTabWidget): 
     82    def __init__(self,parent): 
     83        QTabWidget.__init__(self,parent) 
     84 
     85    def tabInserted(self,index): 
     86        self.checkTabBar() 
     87 
     88    def tabRemoved(self,index): 
     89        self.checkTabBar() 
     90 
     91    def checkTabBar(self): 
     92        if self.count()<2: 
     93            self.tabBar().hide() 
     94        else: 
     95            self.tabBar().show() 
     96 
    9097class PanelManager(QWidget): 
    91     def __init__(self, parent, devmgr): 
    92         QWidget.__init__(self, parent) 
     98    def __init__(self, parent, devmgr=None): 
     99        QMainWindow.__init__(self, parent) 
     100        self.setObjectName("PanelManager") 
     101 
     102        # maps a device GUID to a QT panel 
     103        self.panels = {} 
     104 
     105        # a layout for ourselves 
     106        self.layout = QVBoxLayout(self) 
     107 
     108        # the tabs 
     109        self.tabs = OwnTabWidget(self) 
     110        self.tabs.hide() 
     111        self.layout.addWidget(self.tabs) 
     112 
     113        # a dialog that is shown during update 
     114        self.status = PanelManagerStatus(self) 
     115        self.layout.addWidget(self.status) 
     116        self.status.show() 
     117 
     118        self.devices = DeviceList( SYSTEM_CONFIG_FILE ) 
     119        self.devices.updateFromFile( USER_CONFIG_FILE ) 
     120 
     121        if devmgr is not None: 
     122            self.setManager(devmgr) 
     123 
     124    def setManager(self,devmgr): 
    93125        self.devmgr = devmgr 
    94126        self.devmgr.registerPreUpdateCallback(self.devlistPreUpdate) 
     
    96128        self.devmgr.registerUpdateCallback(self.devlistUpdate) 
    97129        self.devmgr.registerDestroyedCallback(self.devmgrDestroyed) 
    98  
    99         # maps a device GUID to a QT panel 
    100         self.panels = {} 
    101  
    102         # a layout for ourselves 
    103         self.layout = QVBoxLayout( self ) 
    104  
    105         # the tabs 
    106         self.tabs = QTabWidget(self) 
    107         self.tabs.hide() 
    108         self.layout.addWidget(self.tabs) 
    109  
    110         # a dialog that is shown during update 
    111         self.status = PanelManagerStatus(self) 
    112         self.status.lblMessage.setText("Initializing...") 
    113         self.layout.addWidget(self.status) 
    114         self.status.show() 
     130        # create a timer to poll the panels 
     131        self.polltimer = QTimer() 
     132        self.connect( self.polltimer, SIGNAL('timeout()'), self.pollPanels ) 
     133        self.polltimer.start( POLL_SLEEP_TIME_MSEC ) 
     134 
     135        # create a timer to initialize the panel after the main form is shown 
     136        # since initialization can take a while 
     137        QTimer.singleShot( POLL_SLEEP_TIME_MSEC, self.updatePanels ) 
    115138 
    116139        # live check timer 
     
    123146 
    124147    def pollPanels(self): 
     148        #log.debug("PanelManager::pollPanels()") 
    125149        # only when not modifying the tabs 
    126150        if self.tabs.isEnabled(): 
    127151            for guid in self.panels.keys(): 
    128152                w = self.panels[guid] 
    129                 if 'polledUpdate' in dir(w): 
    130                     try: 
    131                         w.polledUpdate() 
    132                     except: 
    133                         print "error in polled update" 
     153                for child in w.children(): 
     154                    #log.debug("poll child %s,%s" % (guid,child)) 
     155                    if 'polledUpdate' in dir(child): 
     156                        try: 
     157                            child.polledUpdate() 
     158                        except: 
     159                            log.error("error in polled update") 
     160                            raise 
    134161 
    135162    def devlistPreUpdate(self): 
    136         print "devlistPreUpdate" 
     163        log.debug("devlistPreUpdate") 
    137164        self.tabs.setEnabled(False) 
    138165        self.tabs.hide() 
    139166        self.status.lblMessage.setText("Bus reconfiguration in progress, please wait...") 
    140167        self.status.show() 
     168        #self.statusBar().showMessage("bus reconfiguration in progress...", 5000) 
    141169 
    142170    def devlistPostUpdate(self): 
    143         print "devlistPostUpdate" 
    144         self.updatePanels() 
     171        log.debug("devlistPostUpdate") 
     172        # this can fail if multiple busresets happen in fast succession 
     173        ntries = 10 
     174        while ntries > 0: 
     175            try: 
     176                self.updatePanels() 
     177                return 
     178            except: 
     179                log.debug("devlistPostUpdate failed (%d)" % ntries) 
     180                for guid in self.panels.keys(): 
     181                    w = self.panels[guid] 
     182                    del self.panels[guid] # remove from the list 
     183                    idx = self.tabs.indexOf(w) 
     184                    self.tabs.removeTab(idx) 
     185                    del w # GC might also take care of that 
     186 
     187                ntries = ntries - 1 
     188                time.sleep(2) # sleep a few seconds 
     189 
     190        log.debug("devlistPostUpdate failed completely") 
     191        self.tabs.setEnabled(False) 
     192        self.tabs.hide() 
     193        self.status.lblMessage.setText("Error while reconfiguring. Please restart ffadomixer.") 
     194        self.status.show() 
     195 
    145196 
    146197    def devlistUpdate(self): 
    147         print "devlistUpdate" 
     198        log.debug("devlistUpdate") 
    148199 
    149200    def devmgrDestroyed(self): 
    150         print "devmgrDestroyed" 
     201        log.debug("devmgrDestroyed") 
    151202        self.alivetimer.stop() 
    152203        self.tabs.setEnabled(False) 
     
    159210            nbDevices = self.devmgr.getNbDevices() 
    160211        except: 
    161             print "comms lost" 
     212            log.debug("comms lost") 
    162213            self.tabs.setEnabled(False) 
    163214            self.tabs.hide() 
     
    167218 
    168219    def updatePanels(self): 
     220        log.debug("PanelManager::updatePanels()") 
    169221        nbDevices = self.devmgr.getNbDevices() 
     222        #self.statusBar().showMessage("Reconfiguring the mixer panels...") 
    170223 
    171224        # list of panels present 
     
    190243            if not guid in guids_present: 
    191244                to_remove.append(guid) 
    192                 print "going to remove %s" % str(guid
     245                log.debug("going to remove %s" % str(guid)
    193246            else: 
    194                 print "going to keep %s" % str(guid
     247                log.debug("going to keep %s" % str(guid)
    195248 
    196249        # figure out what to add 
     
    199252            if not guid in guids_with_tabs: 
    200253                to_add.append(guid) 
    201                 print "going to add %s" % str(guid
     254                log.debug("going to add %s" % str(guid)
    202255 
    203256        # update the widget 
     
    213266            idx = guid_indexes[guid] 
    214267            path = self.devmgr.getDeviceName(idx) 
    215             print "Adding device %d: %s" % (idx, path
     268            log.debug("Adding device %d: %s" % (idx, path)
    216269 
    217270            cfgrom = ConfigRomInterface(FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH+'/DeviceManager/'+path) 
     
    222275            vendorName = cfgrom.getVendorName() 
    223276            modelName = cfgrom.getModelName() 
    224             print " Found (%s, %X, %X) %s %s" % (str(guid), vendorId, modelId, vendorName, modelName
     277            log.debug(" Found (%s, %X, %X) %s %s" % (str(guid), vendorId, modelId, vendorName, modelName)
    225278 
    226279            # check whether this has already been registered at ffado.org 
     
    230283            reg.check_for_registration() 
    231284 
    232             thisdev = (vendorId, modelId); 
    233285            # The MOTU devices use unitVersion to differentiate models.  For the 
    234             # moment thought we don't need to know precisely which model we're 
     286            # moment though we don't need to know precisely which model we're 
    235287            # using. 
    236288            if vendorId == 0x1f2: 
    237                 thisdev = (vendorId, 0x00000000) 
    238  
    239             dev = None 
    240             for d in SupportedDevices: 
    241                 if d[0] == thisdev: 
    242                     dev = d 
    243  
    244             w = QWidget( self.tabs ) 
     289                modelId = 0x00000000 
     290 
     291            dev = self.devices.getDeviceById( vendorId, modelId ) 
     292 
     293            w = QWidget( ) 
    245294            l = QVBoxLayout( w ) 
    246295 
     
    254303            # Generic elements for all mixers follow here: 
    255304            # 
    256             tmp = GlobalMixer( w ) 
    257             tmp.configrom = cfgrom 
    258             tmp.clockselect = clockselect 
    259             tmp.samplerateselect = samplerateselect 
    260             tmp.nickname = nickname 
    261             tmp.hw = hw 
    262             tmp.initValues() 
    263             l.addWidget( tmp, 1 ) 
     305            globalmixer = GlobalMixer( w ) 
     306            globalmixer.configrom = cfgrom 
     307            globalmixer.clockselect = clockselect 
     308            globalmixer.samplerateselect = samplerateselect 
     309            globalmixer.nickname = nickname 
     310            globalmixer.hw = hw 
     311            globalmixer.initValues() 
     312            l.addWidget( globalmixer, 1 ) 
    264313 
    265314            # 
     
    271320            # Specific (or dummy) mixer widgets get loaded in the following 
    272321            # 
    273             if dev != None: 
    274                 mixerapp = dev[1
     322            if 'mixer' in dev and dev['mixer'] != None: 
     323                mixerapp = dev['mixer'
    275324                exec( "mixerwidget = "+mixerapp+"( w )" ) 
    276325            else: 
     
    296345                title = mixerapp 
    297346 
     347            globalmixer.setName(title) 
    298348            self.tabs.addTab( w, title ) 
    299349            self.panels[guid] = w 
     
    306356            self.status.lblMessage.setText("No supported device found.") 
    307357            self.status.show() 
     358            #self.statusBar().showMessage("No supported device found.", 5000) 
    308359        else: 
    309360            self.tabs.show() 
    310361            self.tabs.setEnabled(True) 
    311362            self.status.hide() 
     363            #self.statusBar().showMessage("Configured the mixer for %i devices." % self.tabs.count()) 
    312364            if use_generic: 
    313365                # 
     
    317369                self.tabs.addTab( w, "Generic Mixer" ) 
    318370                self.panels[GUID_GENERIC_MIXER] = w 
     371 
     372    def busreset( self ): 
     373        QMessageBox.information( self, "Not supported", "Triggering bus resets from the mixer (via dbus) isn't yet supported." ) 
     374 
     375# vim: et 
  • trunk/libffado/support/mixer-qt4/ffado_regdialog.py

    r1298 r1435  
    2424from PyQt4.QtGui import QDialog 
    2525from ffado_regdialogui import Ui_ffadoRegDialogUI 
     26 
     27import logging 
     28log = logging.getLogger('registration') 
    2629 
    2730REGISTRATION_MESSAGE = """ 
     
    6669        sender = self.sender() 
    6770        if sender == self.btnSend: 
    68             print "user chose to send" 
     71            log.debug("user chose to send") 
    6972            self.choice = "send" 
    7073        elif sender ==  self.btnNoSend: 
    71             print "user chose not to send" 
     74            log.debug("user chose not to send") 
    7275            self.choice = "nosend" 
    7376        elif sender ==  self.btnNeverSend: 
    74             print "user chose to never send" 
     77            log.debug("user chose to never send") 
    7578            self.choice = "neversend" 
    7679        self.close() 
  • trunk/libffado/support/mixer-qt4/ffado_registration.py

    r1298 r1435  
    77 
    88from ffado_regdialog import * 
     9 
     10import logging 
     11log = logging.getLogger('registration') 
    912 
    1013class ffado_registration: 
     
    5356                                      urllib.urlencode(post_vals)) 
    5457        except: 
    55             print "failed, network error" 
     58            log.error("failed, network error") 
    5659            return (-1, "Network Error") 
    5760     
     
    6871                    errline = lines[i+1] 
    6972        if not ok: 
    70             print "registration failed"  
    71             print " " + errline 
     73            log.info("registration failed %s" % errline) 
    7274            return (-2, errline) 
    7375        else: 
     
    106108 
    107109        if self.check_for_ignore(): 
    108             print "user requested to ignore registration" 
     110            log.debug("user requested to ignore registration") 
    109111        else: 
    110112            if self.check_if_already_registered(): 
    111                 print "version/GUID combo already registered" 
     113                log.debug("version/GUID combo already registered") 
    112114            else: 
    113                 print "show dialog..." 
     115                log.debug("show dialog...") 
    114116 
    115117                dlg = ffadoRegDialog(self.vendor_string, "0x%X" % self.vendor_id, 
     
    129131                    msg = QMessageBox() 
    130132                    if retval[0] == 0: 
    131                         print "registration successful" 
     133                        log.debug("registration successful") 
    132134                        devinfomsg = "<p>Device: %s %s<br> Vendor/Model Id: %X/%X<br>Device GUID: %016X<br>FFADO Version: %s<br>E-Mail: %s</p>" % \ 
    133135                            (self.vendor_string, self.model_string, self.vendor_id, self.model_id, self.guid, self.ffado_version, self.email) 
     
    140142                        self.mark_version_registered() 
    141143                    else: 
    142                         print "error: " + retval[1] 
     144                        log.error("error: " + retval[1]) 
    143145                        tmp = msg.question( msg, "Registration Failed",  
    144146                                            "<qt><b>The registration at ffado.org failed.</b>" + 
  • trunk/libffado/support/mixer-qt4/mixer_audiofire.py

    r1298 r1435  
    2727from mixer_audiofire_stripui import Ui_AfMonitorWidget 
    2828from mixer_audiofire_settingsui import Ui_AfSettingsWidget 
     29import logging 
     30log = logging.getLogger('audiofire') 
    2931 
    3032class AfMonitorWidget(QWidget, Ui_AfMonitorWidget): 
     
    4143    def __init__(self,parent = None): 
    4244        QWidget.__init__(self,parent) 
    43         print "Init AudioFire mixer window" 
     45        log.debug("Init AudioFire mixer window") 
    4446 
    4547    def getDisplayTitle(self): 
     
    6163        else: 
    6264            state = 0 
    63         print "set %s %d %d to %d" % ( 
     65        log.debug("set %s %d %d to %d" % ( 
    6466                    self.MatrixButtonControls[sender][0], 
    6567                    self.MatrixButtonControls[sender][1], 
    6668                    self.MatrixButtonControls[sender][2], 
    67                     state) 
     69                    state)) 
    6870        self.hw.setMatrixMixerValue(self.MatrixButtonControls[sender][0],  
    6971                                    self.MatrixButtonControls[sender][1], 
     
    7476        sender = self.sender() 
    7577        vol = a0 
    76         print "set %s %d %d to %d" % ( 
     78        log.debug("set %s %d %d to %d" % ( 
    7779                    self.MatrixRotaryControls[sender][0], 
    7880                    self.MatrixRotaryControls[sender][1], 
    7981                    self.MatrixRotaryControls[sender][2], 
    80                     vol) 
     82                    vol)) 
    8183        self.hw.setMatrixMixerValue(self.MatrixRotaryControls[sender][0],  
    8284                                    self.MatrixRotaryControls[sender][1], 
     
    8890        vol = a0 
    8991        #vol = 0x01000000-vol 
    90         print "set %s %d %d to %d" % ( 
     92        log.debug("set %s %d %d to %d" % ( 
    9193                    self.MatrixVolumeControls[sender][0], 
    9294                    self.MatrixVolumeControls[sender][1], 
    9395                    self.MatrixVolumeControls[sender][2], 
    94                     vol) 
     96                    vol)) 
    9597        self.hw.setMatrixMixerValue(self.MatrixVolumeControls[sender][0],  
    9698                                    self.MatrixVolumeControls[sender][1], 
     
    102104        vol = a0 
    103105        #vol = 0x01000000-vol 
    104         print "set %s to %d" % ( 
     106        log.debug("set %s to %d" % ( 
    105107                    self.VolumeControls[sender][0], 
    106                     vol) 
     108                    vol)) 
    107109        self.hw.setContignuous(self.VolumeControls[sender][0], 
    108110                              vol) 
     
    114116        else: 
    115117            state = 0 
    116         print "set %s to %d" % ( 
     118        log.debug("set %s to %d" % ( 
    117119                    self.SelectorControls[sender][0], 
    118                     state) 
     120                    state)) 
    119121        self.hw.setDiscrete(self.SelectorControls[sender][0], state) 
    120122 
    121123    def updateTrigger(self): 
    122124        sender = self.sender() 
    123         print "trigger %s" % (self.TriggerControls[sender][0]
     125        log.debug("trigger %s" % (self.TriggerControls[sender][0])
    124126        self.hw.setDiscrete(self.TriggerControls[sender][0], 1) 
    125127 
     
    131133            state = 0 
    132134        if state: 
    133             print "set %s to %d" % ( 
     135            log.debug("set %s to %d" % ( 
    134136                        self.SPDIFmodeControls[sender][0], 
    135                         self.SPDIFmodeControls[sender][1]) 
     137                        self.SPDIFmodeControls[sender][1])) 
    136138            self.hw.setDiscrete(self.SPDIFmodeControls[sender][0], self.SPDIFmodeControls[sender][1]) 
    137139 
    138140    def buildMixer(self): 
    139         print "Building mixer" 
     141        log.debug("Building mixer") 
    140142        self.MatrixButtonControls={} 
    141143        self.MatrixRotaryControls={} 
     
    239241        for inpair in range(nb_pys_in): 
    240242            # create GUI elements 
    241             print "strip" 
     243            log.debug("strip") 
    242244            grpInput = QGroupBox(tab) 
    243245            tablayout.addWidget(grpInput) 
     
    282284 
    283285    def initValues(self): 
    284         print "Init values" 
     286        log.debug("Init values") 
    285287 
    286288        for ctrl, info in self.MatrixVolumeControls.iteritems(): 
     
    290292 
    291293            #vol = 0x01000000-vol 
    292             print "%s volume is %d" % (ctrl.objectName() , vol
     294            log.debug("%s volume is %d" % (ctrl.objectName() , vol)
    293295            ctrl.setValue(vol) 
    294296 
     
    301303                                                self.MatrixButtonControls[ctrl][2]) 
    302304 
    303             print "%s state is %d" % (ctrl.objectName() , state
     305            log.debug("%s state is %d" % (ctrl.objectName() , state)
    304306            if state: 
    305307                ctrl.setChecked(True) 
     
    315317                                                self.MatrixRotaryControls[ctrl][2]) 
    316318 
    317             print "%s value is %d" % (ctrl.objectName(), vol
     319            log.debug("%s value is %d" % (ctrl.objectName(), vol)
    318320            ctrl.setValue(vol) 
    319321 
     
    325327 
    326328            #vol = 0x01000000-vol 
    327             print "%s volume is %d" % (ctrl.objectName() , vol
     329            log.debug("%s volume is %d" % (ctrl.objectName() , vol)
    328330            ctrl.setValue(vol) 
    329331 
     
    333335        for ctrl, info in self.SelectorControls.iteritems(): 
    334336            state = self.hw.getDiscrete(self.SelectorControls[ctrl][0]) 
    335             print "%s state is %d" % (ctrl.objectName() , state
     337            log.debug("%s state is %d" % (ctrl.objectName() , state)
    336338            if state: 
    337339                ctrl.setChecked(True) 
     
    348350        for ctrl, info in self.SPDIFmodeControls.iteritems(): 
    349351            state = self.hw.getDiscrete(self.SPDIFmodeControls[ctrl][0]) 
    350             print "%s state is %d" % (ctrl.objectName() , state
     352            log.debug("%s state is %d" % (ctrl.objectName() , state)
    351353            if state == self.SPDIFmodeControls[ctrl][1]: 
    352354                ctrl.setChecked(True) 
  • trunk/libffado/support/mixer-qt4/mixer_dummy.py

    r1298 r1435  
    3030        self.setupUi(self) 
    3131 
    32     def init(self): 
    33         print "Init Dummy mixer window" 
    34  
    3532    def initValues(self): 
    3633        pass 
  • trunk/libffado/support/mixer-qt4/mixer_global.py

    r1298 r1435  
    2121# 
    2222 
     23from PyQt4.QtCore import QObject, pyqtSignature 
    2324from PyQt4.QtGui import QWidget, QMessageBox 
    2425from mixer_globalui import Ui_GlobalMixerUi 
    2526 
     27import logging 
     28log = logging.getLogger('global') 
     29 
    2630class GlobalMixer( QWidget, Ui_GlobalMixerUi ): 
    27     def __init__( self, parent ): 
     31    def __init__( self, parent, name=None ): 
    2832        QWidget.__init__( self, parent ) 
    2933        self.setupUi(self) 
     34        self.setName(name) 
    3035 
    31     def clockChanged( self, clock ): 
    32         #print "updateClockSource( " + str(clock) + " )" 
    33         self.clockselect.select( clock ) 
     36    def setName(self,name): 
     37        if name is not None: 
     38            self.lblName.setText(name) 
     39            self.lblName.show() 
     40        else: 
     41            self.lblName.hide() 
     42 
     43    @pyqtSignature("int") 
     44    def on_clocksource_activated( self, clock ): 
     45        #log.debug("updateClockSource( " + str(clock) + " )") 
     46        if self.clockselect.canChangeValue(): 
     47            self.clockselect.select( clock ) 
     48        else: 
     49            msg = QMessageBox() 
     50            msg.question( msg, "Error", \ 
     51                "<qt>Clock source change not permitted. Is streaming active?</qt>", \ 
     52                QMessageBox.Ok ) 
     53            self.clocksource.setEnabled(False) 
     54            return 
     55 
    3456        selected = self.clockselect.selected() 
    35  
    3657        if selected != clock: 
    3758            clockname = self.clockselect.getEnumLabel( clock ) 
     
    4263            self.clocksource.setCurrentIndex( selected ) 
    4364 
    44     def samplerateChanged( self, sr ): 
    45         print "samplerateChanged( " + str(sr) + " )" 
    46         self.samplerateselect.select( sr ) 
     65    @pyqtSignature("int") 
     66    def on_samplerate_activated( self, sr ): 
     67        log.debug("on_samplerate_activated( " + str(sr) + " )") 
     68        if self.samplerateselect.canChangeValue(): 
     69            self.samplerateselect.select( sr ) 
     70        else: 
     71            msg = QMessageBox() 
     72            msg.question( msg, "Error", \ 
     73                "<qt>Sample rate change not permitted. Is streaming active?</qt>", \ 
     74                QMessageBox.Ok ) 
     75            self.samplerate.setEnabled(False) 
     76            return 
     77 
    4778        selected = self.samplerateselect.selected() 
    48  
    4979        if selected != sr: 
    5080            srname = self.samplerateselect.getEnumLabel( sr ) 
     
    5585            self.samplerate.setCurrentIndex( selected ) 
    5686 
    57     def nicknameChanged( self, name ): 
    58         #print "nicknameChanged( %s )" % name 
    59         asciiData = name.toAscii() 
    60         self.nickname.setText( asciiData.data() ) 
     87    @pyqtSignature("QString") 
     88    def on_nickname_activated( self, name ): 
     89        #log.debug("on_nickname_activated( %s )" % name) 
     90        if self.nickname.canChangeValue(): 
     91            asciiData = name.toAscii() 
     92            self.nickname.setText( asciiData.data() ) 
     93        else: 
     94            self.txtNickname.setText( self.nickname.text() ) 
    6195 
    6296    def initValues( self ): 
     
    66100            self.clocksource.insertItem( nb_clocks, self.clockselect.getEnumLabel( i ) ) 
    67101        self.clocksource.setCurrentIndex( self.clockselect.selected() ) 
    68          
     102 
    69103        nb_rates = self.samplerateselect.count() 
    70104        for i in range( nb_rates ): 
     
    74108        self.txtNickname.setText( self.nickname.text() ) 
    75109 
     110        self.samplerate.setEnabled(self.samplerateselect.canChangeValue()) 
     111        self.clocksource.setEnabled(self.clockselect.canChangeValue()) 
     112        if self.nickname.canChangeValue(): 
     113            self.txtNickname.setEnabled(True) 
     114        else: 
     115            self.txtNickname.setEnabled(False) 
     116 
     117    def polledUpdate(self): 
     118        self.samplerate.setEnabled(self.samplerateselect.canChangeValue()) 
     119        self.clocksource.setEnabled(self.clockselect.canChangeValue()) 
     120        self.txtNickname.setEnabled(self.nickname.canChangeValue()) 
  • trunk/libffado/support/mixer-qt4/mixer_global.ui

    r1298 r1435  
    2323    <x>0</x> 
    2424    <y>0</y> 
    25     <width>721</width> 
    26     <height>191</height> 
     25    <width>444</width> 
     26    <height>81</height> 
    2727   </rect> 
    2828  </property> 
     
    3636   <string>Global Mixer Options</string> 
    3737  </property> 
    38   <layout class="QHBoxLayout" > 
     38  <layout class="QHBoxLayout" name="horizontalLayout" > 
     39   <property name="margin" > 
     40    <number>3</number> 
     41   </property> 
    3942   <item> 
    40     <layout class="QVBoxLayout" > 
    41      <item> 
    42       <layout class="QHBoxLayout" > 
    43        <item> 
    44         <widget class="QLabel" name="textLabel1" > 
    45          <property name="text" > 
    46           <string>Device Nickname:</string> 
    47          </property> 
    48          <property name="wordWrap" > 
    49           <bool>false</bool> 
    50          </property> 
    51          <property name="buddy" > 
    52           <cstring>txtNickname</cstring> 
    53          </property> 
    54         </widget> 
    55        </item> 
    56        <item> 
    57         <widget class="QLineEdit" name="txtNickname" > 
    58          <property name="minimumSize" > 
    59           <size> 
    60            <width>100</width> 
    61            <height>0</height> 
    62           </size> 
    63          </property> 
    64         </widget> 
    65        </item> 
    66       </layout> 
     43    <layout class="QGridLayout" name="gridLayout_2" > 
     44     <property name="horizontalSpacing" > 
     45      <number>9</number> 
     46     </property> 
     47     <item row="0" column="0" colspan="2" > 
     48      <widget class="QLabel" name="lblName" > 
     49       <property name="font" > 
     50        <font> 
     51         <weight>75</weight> 
     52         <bold>true</bold> 
     53        </font> 
     54       </property> 
     55       <property name="text" > 
     56        <string>TextLabel</string> 
     57       </property> 
     58      </widget> 
    6759     </item> 
    68      <item> 
    69       <layout class="QHBoxLayout" > 
    70        <item> 
    71         <widget class="QLabel" name="textLabel2" > 
    72          <property name="text" > 
    73           <string>Clock Source:</string> 
    74          </property> 
    75          <property name="wordWrap" > 
    76           <bool>false</bool> 
    77          </property> 
    78          <property name="buddy" > 
    79           <cstring>clocksource</cstring> 
    80          </property> 
    81         </widget> 
    82        </item> 
    83        <item> 
    84         <widget class="QComboBox" name="clocksource" /> 
    85        </item> 
    86        <item> 
    87         <spacer> 
    88          <property name="orientation" > 
    89           <enum>Qt::Horizontal</enum> 
    90          </property> 
    91          <property name="sizeType" > 
    92           <enum>QSizePolicy::Expanding</enum> 
    93          </property> 
    94          <property name="sizeHint" > 
    95           <size> 
    96            <width>31</width> 
    97            <height>21</height> 
    98           </size> 
    99          </property> 
    100         </spacer> 
    101        </item> 
    102        <item> 
    103         <widget class="QLabel" name="textLabel2_2" > 
    104          <property name="text" > 
    105           <string>Sample Rate:</string> 
    106          </property> 
    107          <property name="wordWrap" > 
    108           <bool>false</bool> 
    109          </property> 
    110          <property name="buddy" > 
    111           <cstring>samplerate</cstring> 
    112          </property> 
    113         </widget> 
    114        </item> 
    115        <item> 
    116         <widget class="QComboBox" name="samplerate" > 
    117          <property name="enabled" > 
    118           <bool>true</bool> 
    119          </property> 
    120         </widget> 
    121        </item> 
    122       </layout> 
     60     <item row="1" column="0" > 
     61      <widget class="QLabel" name="textLabel1" > 
     62       <property name="text" > 
     63        <string>Nickname:</string> 
     64       </property> 
     65       <property name="wordWrap" > 
     66        <bool>false</bool> 
     67       </property> 
     68       <property name="buddy" > 
     69        <cstring>txtNickname</cstring> 
     70       </property> 
     71      </widget> 
     72     </item> 
     73     <item row="1" column="1" > 
     74      <widget class="QLineEdit" name="txtNickname" > 
     75       <property name="minimumSize" > 
     76        <size> 
     77         <width>100</width> 
     78         <height>0</height> 
     79        </size> 
     80       </property> 
     81      </widget> 
     82     </item> 
     83    </layout> 
     84   </item> 
     85   <item> 
     86    <layout class="QGridLayout" name="gridLayout" > 
     87     <property name="horizontalSpacing" > 
     88      <number>9</number> 
     89     </property> 
     90     <item row="0" column="1" > 
     91      <widget class="QComboBox" name="clocksource" > 
     92       <property name="sizePolicy" > 
     93        <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > 
     94         <horstretch>1</horstretch> 
     95         <verstretch>0</verstretch> 
     96        </sizepolicy> 
     97       </property> 
     98      </widget> 
     99     </item> 
     100     <item row="1" column="0" > 
     101      <widget class="QLabel" name="textLabel2_2" > 
     102       <property name="text" > 
     103        <string>Sample Rate:</string> 
     104       </property> 
     105       <property name="wordWrap" > 
     106        <bool>false</bool> 
     107       </property> 
     108       <property name="buddy" > 
     109        <cstring>samplerate</cstring> 
     110       </property> 
     111      </widget> 
     112     </item> 
     113     <item row="1" column="1" > 
     114      <widget class="QComboBox" name="samplerate" > 
     115       <property name="enabled" > 
     116        <bool>true</bool> 
     117       </property> 
     118       <property name="sizePolicy" > 
     119        <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > 
     120         <horstretch>1</horstretch> 
     121         <verstretch>0</verstretch> 
     122        </sizepolicy> 
     123       </property> 
     124      </widget> 
     125     </item> 
     126     <item row="0" column="0" > 
     127      <widget class="QLabel" name="textLabel2" > 
     128       <property name="text" > 
     129        <string>Clock Source:</string> 
     130       </property> 
     131       <property name="wordWrap" > 
     132        <bool>false</bool> 
     133       </property> 
     134       <property name="buddy" > 
     135        <cstring>clocksource</cstring> 
     136       </property> 
     137      </widget> 
    123138     </item> 
    124139    </layout> 
     
    132147      <enum>QSizePolicy::Expanding</enum> 
    133148     </property> 
    134      <property name="sizeHint"
     149     <property name="sizeHint" stdset="0"
    135150      <size> 
    136151       <width>330</width> 
    137        <height>71</height> 
     152       <height>10</height> 
    138153      </size> 
    139154     </property> 
     
    145160 <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> 
    146161 <resources/> 
    147  <connections> 
    148   <connection> 
    149    <sender>clocksource</sender> 
    150    <signal>activated(int)</signal> 
    151    <receiver>GlobalMixerUi</receiver> 
    152    <slot>clockChanged(int)</slot> 
    153    <hints> 
    154     <hint type="sourcelabel" > 
    155      <x>20</x> 
    156      <y>20</y> 
    157     </hint> 
    158     <hint type="destinationlabel" > 
    159      <x>20</x> 
    160      <y>20</y> 
    161     </hint> 
    162    </hints> 
    163   </connection> 
    164   <connection> 
    165    <sender>txtNickname</sender> 
    166    <signal>textChanged(QString)</signal> 
    167    <receiver>GlobalMixerUi</receiver> 
    168    <slot>nicknameChanged(QString)</slot> 
    169    <hints> 
    170     <hint type="sourcelabel" > 
    171      <x>20</x> 
    172      <y>20</y> 
    173     </hint> 
    174     <hint type="destinationlabel" > 
    175      <x>20</x> 
    176      <y>20</y> 
    177     </hint> 
    178    </hints> 
    179   </connection> 
    180   <connection> 
    181    <sender>samplerate</sender> 
    182    <signal>activated(int)</signal> 
    183    <receiver>GlobalMixerUi</receiver> 
    184    <slot>samplerateChanged(int)</slot> 
    185    <hints> 
    186     <hint type="sourcelabel" > 
    187      <x>20</x> 
    188      <y>20</y> 
    189     </hint> 
    190     <hint type="destinationlabel" > 
    191      <x>20</x> 
    192      <y>20</y> 
    193     </hint> 
    194    </hints> 
    195   </connection> 
    196  </connections> 
     162 <connections/> 
    197163</ui> 
  • trunk/libffado/support/mixer-qt4/mixer_saffire.py

    r1298 r1435  
    2828from mixer_saffirele_smallui import Ui_SaffireLEMixerSmallUI 
    2929from mixer_saffirele_largeui import Ui_SaffireLEMixerLargeUI 
     30 
     31import logging 
     32log = logging.getLogger('saffire') 
    3033 
    3134#MIXER LAYOUT: 
     
    8386        if self.is_saffire_le: 
    8487            if self.samplerate <= 48000: 
    85                 print "large" 
     88                log.debug("large") 
    8689                self.small.hide() 
    8790                self.large.initValues() 
    8891                self.large.show() 
    8992            else: 
    90                 print "small" 
     93                log.debug("small") 
    9194                self.large.hide() 
    9295                self.small.initValues() 
     
    110113        if int(self.configrom.getGUID(), 16) >= 0x130e0100040000: 
    111114            self.is_saffire_le = True 
    112             print "Found SaffireLE GUID" 
     115            log.debug("Found SaffireLE GUID") 
    113116        else: 
    114117            self.is_saffire_le = False 
    115             print "Found Saffire GUID" 
     118            log.debug("Found Saffire GUID") 
    116119 
    117120        # init depending on what device we have 
     
    259262        state = selector.isChecked() 
    260263        if state: 
    261             self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl
     264            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 64
    262265            volctrl.setEnabled(False) 
    263266        else: 
     
    282285        SaffireMixerBase.updateValues(self) 
    283286    def switchStereoMode(self): 
    284         print "should switch to mono mode" 
     287        log.debug("should switch to mono mode") 
    285288        self.my_parent.setMonoMode(1) 
    286289        self.my_parent.selectCorrectMode() 
     
    403406        state = selector.isChecked() 
    404407        if state: 
    405             self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl
     408            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 4
    406409            volctrl.setEnabled(False) 
    407410        else: 
     
    427430 
    428431    def switchStereoMode(self): 
    429         print "should switch to stero mode" 
     432        log.debug("should switch to stereo mode") 
    430433        self.my_parent.setMonoMode(0) 
    431434        self.my_parent.selectCorrectMode() 
     
    438441        SaffireMixerBase.__init__(self) 
    439442 
    440         print "Init large Saffire LE mixer window" 
     443        log.debug("Init large Saffire LE mixer window") 
    441444 
    442445        self.VolumeControls={ 
     
    561564        SaffireMixerBase.__init__(self) 
    562565 
    563         print "Init small Saffire LE mixer window" 
     566        log.debug("Init small Saffire LE mixer window") 
    564567 
    565568        self.VolumeControls={ 
  • trunk/libffado/support/mixer-qt4/mixer_saffirele_large.ui

    r1298 r1435  
    19561956          </property> 
    19571957          <property name="maximum" > 
    1958            <number>255</number> 
     1958           <number>127</number> 
    19591959          </property> 
    19601960          <property name="singleStep" > 
     
    19621962          </property> 
    19631963          <property name="pageStep" > 
    1964            <number>4</number> 
     1964           <number>16</number> 
    19651965          </property> 
    19661966          <property name="orientation" > 
     
    19781978          </property> 
    19791979          <property name="maximum" > 
    1980            <number>255</number> 
     1980           <number>127</number> 
    19811981          </property> 
    19821982          <property name="singleStep" > 
     
    19841984          </property> 
    19851985          <property name="pageStep" > 
    1986            <number>4</number> 
     1986           <number>16</number> 
    19871987          </property> 
    19881988          <property name="orientation" > 
     
    20002000          </property> 
    20012001          <property name="maximum" > 
    2002            <number>255</number> 
     2002           <number>127</number> 
    20032003          </property> 
    20042004          <property name="singleStep" > 
     
    20062006          </property> 
    20072007          <property name="pageStep" > 
    2008            <number>4</number> 
     2008           <number>16</number> 
    20092009          </property> 
    20102010          <property name="orientation" > 
  • trunk/libffado/support/mixer-qt4/mixer_saffirele_small.ui

    r1298 r1435  
    216216      <widget class="QTabWidget" name="tabWidget4" > 
    217217       <property name="currentIndex" > 
    218         <number>3</number> 
     218        <number>0</number> 
    219219       </property> 
    220220       <widget class="QWidget" name="tab" > 
     
    680680          </property> 
    681681          <property name="maximum" > 
    682            <number>255</number> 
     682           <number>127</number> 
    683683          </property> 
    684684          <property name="singleStep" > 
     
    686686          </property> 
    687687          <property name="pageStep" > 
    688            <number>4</number> 
     688           <number>16</number> 
    689689          </property> 
    690690          <property name="orientation" > 
     
    702702          </property> 
    703703          <property name="maximum" > 
    704            <number>255</number> 
     704           <number>127</number> 
    705705          </property> 
    706706          <property name="singleStep" > 
     
    708708          </property> 
    709709          <property name="pageStep" > 
    710            <number>4</number> 
     710           <number>16</number> 
    711711          </property> 
    712712          <property name="orientation" > 
     
    724724          </property> 
    725725          <property name="maximum" > 
    726            <number>255</number> 
     726           <number>127</number> 
    727727          </property> 
    728728          <property name="singleStep" > 
     
    730730          </property> 
    731731          <property name="pageStep" > 
    732            <number>4</number> 
     732           <number>16</number> 
    733733          </property> 
    734734          <property name="orientation" > 
  • trunk/libffado/support/mixer-qt4/mixer_saffirepro.py

    r1298 r1435  
    2121# 
    2222 
    23 from PyQt4.QtGui import QWidget, QHBoxLayout 
     23from PyQt4.QtGui import QWidget, QHBoxLayout, QMessageBox 
    2424from mixer_saffire_base import SaffireMixerBase 
    2525from mixer_saffirepro_largeui import Ui_SaffireProMixerLargeUI 
    2626from mixer_saffirepro_smallui import Ui_SaffireProMixerSmallUI 
     27 
     28import logging 
     29log = logging.getLogger('saffirepro') 
    2730 
    2831class SaffireProMixer(QWidget): 
     
    5356    def selectCorrectMode(self): 
    5457        if self.samplerate <= 96000: 
    55             print "large" 
     58            log.debug("large") 
    5659            self.small.hide() 
    5760            self.large.initValues() 
    5861            self.large.show() 
    5962        else: 
    60             print "small" 
     63            log.debug("small") 
    6164            self.large.hide() 
    6265            self.small.initValues() 
     
    6467 
    6568    def initValues(self): 
     69        self.is_not_streaming = self.samplerateselect.canChangeValue() 
    6670        selected = self.samplerateselect.selected() 
    6771        self.samplerate = int(self.samplerateselect.getEnumLabel( selected )) 
    68         print "detected samplerate %d" % self.samplerate 
     72        log.debug("detected samplerate %d" % self.samplerate) 
    6973 
    7074        # adat on PRO26 makes a difference 
     
    7579            if state: 
    7680                self.have_adat = False 
    77                 print "detected PRO26, ADAT disabled" 
     81                log.debug("detected PRO26, ADAT disabled") 
    7882            else: 
    7983                self.have_adat = True 
    80                 print "detected PRO26, ADAT enabled" 
     84                log.debug("detected PRO26, ADAT enabled") 
    8185        elif modelId == 0x00000006: # PRO10 
    8286            self.is_pro10 = True 
     
    98102 
    99103    def polledUpdate(self): 
    100         # fixme: todo 
    101         pass 
     104        self.is_not_streaming = self.samplerateselect.canChangeValue() 
     105        if self.samplerate <= 96000: 
     106            self.large.polledUpdate() 
     107        else: 
     108            self.small.polledUpdate() 
    102109 
    103110class SaffireProMixerLarge(QWidget, Ui_SaffireProMixerLargeUI, SaffireMixerBase): 
     
    108115        self.setupUi(self) 
    109116        self.have_adat = False 
    110         print "Init large Saffire Pro mixer window" 
     117        log.debug("Init large Saffire Pro mixer window") 
    111118 
    112119        self.VolumeControls={ 
     
    212219            self.chkAdatDisable: ['/Control/ADATDisable'], 
    213220            # Mixer switches 
    214             self.chkMute12: ['/Mixer/Out12Mute'], 
     221            self.chkMute12: ['/Mixer/Out12Mute', [self.chkHwCtrl12]], 
    215222            self.chkHwCtrl12: ['/Mixer/Out12HwCtrl'], 
    216223            self.chkPad12: ['/Mixer/Out12Pad'], 
    217224            self.chkDim12: ['/Mixer/Out12Dim'], 
    218             self.chkMute34: ['/Mixer/Out34Mute'], 
     225            self.chkMute34: ['/Mixer/Out34Mute', [self.chkHwCtrl34]], 
    219226            self.chkHwCtrl34: ['/Mixer/Out34HwCtrl'], 
    220227            self.chkPad34: ['/Mixer/Out34Pad'], 
    221228            self.chkDim34: ['/Mixer/Out34Dim'], 
    222             self.chkMute56: ['/Mixer/Out56Mute'], 
     229            self.chkMute56: ['/Mixer/Out56Mute', [self.chkHwCtrl56]], 
    223230            self.chkHwCtrl56: ['/Mixer/Out56HwCtrl'], 
    224231            self.chkPad56: ['/Mixer/Out56Pad'], 
    225232            self.chkDim56: ['/Mixer/Out56Dim'], 
    226             self.chkMute78: ['/Mixer/Out78Mute'], 
     233            self.chkMute78: ['/Mixer/Out78Mute', [self.chkHwCtrl78]], 
    227234            self.chkHwCtrl78: ['/Mixer/Out78HwCtrl'], 
    228235            self.chkPad78: ['/Mixer/Out78Pad'], 
     
    267274        SaffireMixerBase.updateLowResVolume(self,a0) 
    268275    def updateSelector(self,a0): 
     276        sender = self.sender() 
     277        #if sender == self.chkAC3 and not self.my_parent.is_not_streaming: 
     278            #msg = QMessageBox() 
     279            #msg.question( msg, "Error", \ 
     280                #"<qt>Change not permitted. Is streaming active?</qt>", \ 
     281                #QMessageBox.Ok ) 
     282            #self.chkAC3.setEnabled(False) 
     283            #if a0: 
     284                #self.chkAC3.setChecked(False) 
     285            #else: 
     286                #self.chkAC3.setChecked(True) 
     287            #return 
     288        if sender == self.chkMidiEnable and not self.my_parent.is_not_streaming: 
     289            msg = QMessageBox() 
     290            msg.question( msg, "Error", \ 
     291                "<qt>Change not permitted. Is streaming active?</qt>", \ 
     292                QMessageBox.Ok ) 
     293            self.chkMidiEnable.setEnabled(False) 
     294            state = self.hw.getDiscrete(self.SelectorControls[self.chkMidiEnable][0]) 
     295            if state: 
     296                self.chkMidiEnable.setChecked(True) 
     297            else: 
     298                self.chkMidiEnable.setChecked(False) 
     299            return 
     300        if sender == self.chkAdatDisable and not self.my_parent.is_not_streaming: 
     301            msg = QMessageBox() 
     302            msg.question( msg, "Error", \ 
     303                "<qt>Change not permitted. Is streaming active?</qt>", \ 
     304                QMessageBox.Ok ) 
     305            self.chkAdatDisable.setEnabled(False) 
     306            state = self.hw.getDiscrete(self.SelectorControls[self.chkAdatDisable][0]) 
     307            if state: 
     308                self.chkAdatDisable.setChecked(True) 
     309            else: 
     310                self.chkAdatDisable.setChecked(False) 
     311            return 
    269312        SaffireMixerBase.updateSelector(self,a0) 
     313 
    270314    def triggerButton(self): 
     315        sender = self.sender() 
     316        if sender == self.btnReboot and not self.my_parent.is_not_streaming: 
     317            msg = QMessageBox() 
     318            msg.question( msg, "Error", \ 
     319                "<qt>Operation not permitted. Is streaming active?</qt>", \ 
     320                QMessageBox.Ok ) 
     321            self.btnReboot.setEnabled(False) 
     322            return 
    271323        SaffireMixerBase.triggerButton(self) 
     324 
    272325    def saveText(self): 
    273326        SaffireMixerBase.saveText(self) 
     
    293346        SaffireMixerBase.updateValues(self) 
    294347 
     348    def polledUpdate(self): 
     349        #log.debug("polled update (large)") 
     350        self.polledUpdateHwCtrl(self.chkHwCtrl12, self.sldOut12Level) 
     351        self.polledUpdateHwCtrl(self.chkHwCtrl34, self.sldOut34Level) 
     352        self.polledUpdateHwCtrl(self.chkHwCtrl56, self.sldOut56Level) 
     353        self.polledUpdateHwCtrl(self.chkHwCtrl78, self.sldOut78Level) 
     354 
     355        #make these inaccessible whenever streaming is running 
     356        #self.chkAC3.setEnabled(self.my_parent.is_not_streaming) 
     357        self.chkMidiEnable.setEnabled(self.my_parent.is_not_streaming) 
     358        self.chkAdatDisable.setEnabled(self.my_parent.is_not_streaming) 
     359        self.btnReboot.setEnabled(self.my_parent.is_not_streaming) 
     360 
     361    def polledUpdateHwCtrl(self, selector, volctrl): 
     362        state = selector.isChecked() 
     363        if state: 
     364            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 2) 
     365            volctrl.setEnabled(False) 
     366        else: 
     367            volctrl.setEnabled(True) 
     368 
    295369class SaffireProMixerSmall(QWidget, Ui_SaffireProMixerSmallUI, SaffireMixerBase): 
    296370    def __init__(self,parent = None): 
     
    299373        SaffireMixerBase.__init__(self) 
    300374        self.setupUi(self) 
    301         print "Init small Saffire Pro mixer window" 
     375        log.debug("Init small Saffire Pro mixer window") 
    302376 
    303377        self.VolumeControls={ 
     
    406480        SaffireMixerBase.updateLowResVolume(self,a0) 
    407481    def updateSelector(self,a0): 
     482        sender = self.sender() 
     483        #if sender == self.chkAC3 and not self.my_parent.is_not_streaming: 
     484            #msg = QMessageBox() 
     485            #msg.question( msg, "Error", \ 
     486                #"<qt>Change not permitted. Is streaming active?</qt>", \ 
     487                #QMessageBox.Ok ) 
     488            #self.chkAC3.setEnabled(False) 
     489            #if a0: 
     490                #self.chkAC3.setChecked(False) 
     491            #else: 
     492                #self.chkAC3.setChecked(True) 
     493            #return 
     494        if sender == self.chkMidiEnable and not self.my_parent.is_not_streaming: 
     495            msg = QMessageBox() 
     496            msg.question( msg, "Error", \ 
     497                "<qt>Change not permitted. Is streaming active?</qt>", \ 
     498                QMessageBox.Ok ) 
     499            self.chkMidiEnable.setEnabled(False) 
     500            state = self.hw.getDiscrete(self.SelectorControls[self.chkMidiEnable][0]) 
     501            if state: 
     502                self.chkMidiEnable.setChecked(True) 
     503            else: 
     504                self.chkMidiEnable.setChecked(False) 
     505            return 
     506        if sender == self.chkAdatDisable and not self.my_parent.is_not_streaming: 
     507            msg = QMessageBox() 
     508            msg.question( msg, "Error", \ 
     509                "<qt>Change not permitted. Is streaming active?</qt>", \ 
     510                QMessageBox.Ok ) 
     511            self.chkAdatDisable.setEnabled(False) 
     512            state = self.hw.getDiscrete(self.SelectorControls[self.chkAdatDisable][0]) 
     513            if state: 
     514                self.chkAdatDisable.setChecked(True) 
     515            else: 
     516                self.chkAdatDisable.setChecked(False) 
     517            return 
    408518        SaffireMixerBase.updateSelector(self,a0) 
     519 
    409520    def triggerButton(self): 
     521        sender = self.sender() 
     522        if sender == self.btnReboot and not self.my_parent.is_not_streaming: 
     523            msg = QMessageBox() 
     524            msg.question( msg, "Error", \ 
     525                "<qt>Operation not permitted. Is streaming active?</qt>", \ 
     526                QMessageBox.Ok ) 
     527            self.btnReboot.setEnabled(False) 
     528            return 
    410529        SaffireMixerBase.triggerButton(self) 
     530 
    411531    def saveText(self): 
    412532        SaffireMixerBase.saveText(self) 
     
    418538    def updateValues(self): 
    419539        SaffireMixerBase.updateValues(self) 
     540 
     541    def polledUpdate(self): 
     542        #log.debug("polled update (small)") 
     543        self.polledUpdateHwCtrl(self.chkHwCtrl12, self.sldOut12Level) 
     544        self.polledUpdateHwCtrl(self.chkHwCtrl34, self.sldOut34Level) 
     545        self.polledUpdateHwCtrl(self.chkHwCtrl56, self.sldOut56Level) 
     546        self.polledUpdateHwCtrl(self.chkHwCtrl78, self.sldOut78Level) 
     547 
     548        #make these inaccessible whenever streaming is running 
     549        #self.chkAC3.setEnabled(self.my_parent.is_not_streaming) 
     550        self.chkMidiEnable.setEnabled(self.my_parent.is_not_streaming) 
     551        self.chkAdatDisable.setEnabled(self.my_parent.is_not_streaming) 
     552        self.btnReboot.setEnabled(self.my_parent.is_not_streaming) 
     553 
     554    def polledUpdateHwCtrl(self, selector, volctrl): 
     555        state = selector.isChecked() 
     556        if state: 
     557            self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 2) 
     558            volctrl.setEnabled(False) 
     559        else: 
     560            volctrl.setEnabled(True) 
  • trunk/libffado/support/mixer-qt4/mixer_saffirepro_large.ui

    r1298 r1435  
    22412241          <item row="0" column="0" > 
    22422242           <widget class="QTabWidget" name="tabWidget14" > 
     2243            <property name="currentIndex" > 
     2244             <number>4</number> 
     2245            </property> 
    22432246            <widget class="QWidget" name="tab" > 
    22442247             <attribute name="title" > 
     
    24022405                 <widget class="QLabel" name="txtOMixIMixO2" > 
    24032406                  <property name="text" > 
    2404                    <string>IMixL</string> 
     2407                   <string>IMixR</string> 
    24052408                  </property> 
    24062409                  <property name="alignment" > 
     
    25052508                   </property> 
    25062509                   <property name="maximum" > 
    2507                     <number>255</number> 
     2510                    <number>127</number> 
    25082511                   </property> 
    25092512                   <property name="singleStep" > 
    2510                     <number>2</number> 
     2513                    <number>1</number> 
    25112514                   </property> 
    25122515                   <property name="pageStep" > 
     
    27832786                 <widget class="QLabel" name="txtOMixIMixO4" > 
    27842787                  <property name="text" > 
    2785                    <string>IMixL</string> 
     2788                   <string>IMixR</string> 
    27862789                  </property> 
    27872790                  <property name="alignment" > 
     
    28582861                   </property> 
    28592862                   <property name="maximum" > 
    2860                     <number>255</number> 
     2863                    <number>127</number> 
    28612864                   </property> 
    28622865                   <property name="singleStep" > 
    2863                     <number>2</number> 
     2866                    <number>1</number> 
    28642867                   </property> 
    28652868                   <property name="pageStep" > 
     
    31233126                 <widget class="QLabel" name="txtOMixIMixO6" > 
    31243127                  <property name="text" > 
    3125                    <string>IMixL</string> 
     3128                   <string>IMixR</string> 
    31263129                  </property> 
    31273130                  <property name="alignment" > 
     
    32203223                   </property> 
    32213224                   <property name="maximum" > 
    3222                     <number>255</number> 
     3225                    <number>127</number> 
    32233226                   </property> 
    32243227                   <property name="singleStep" > 
    3225                     <number>2</number> 
     3228                    <number>1</number> 
    32263229                   </property> 
    32273230                   <property name="pageStep" > 
     
    34503453                 <widget class="QLabel" name="txtOMixIMixO8" > 
    34513454                  <property name="text" > 
    3452                    <string>IMixL</string> 
     3455                   <string>IMixR</string> 
    34533456                  </property> 
    34543457                  <property name="alignment" > 
     
    35823585                   </property> 
    35833586                   <property name="maximum" > 
    3584                     <number>255</number> 
     3587                    <number>127</number> 
    35853588                   </property> 
    35863589                   <property name="singleStep" > 
    3587                     <number>2</number> 
     3590                    <number>1</number> 
    35883591                   </property> 
    35893592                   <property name="pageStep" > 
     
    38343837                 <widget class="QLabel" name="txtOMixIMixO10" > 
    38353838                  <property name="text" > 
    3836                    <string>IMixL</string> 
     3839                   <string>IMixR</string> 
    38373840                  </property> 
    38383841                  <property name="alignment" > 
  • trunk/libffado/support/mixer-qt4/mixer_saffirepro_small.ui

    r1298 r1435  
    4343          <item row="0" column="0" > 
    4444           <widget class="QTabWidget" name="tabWidget14" > 
     45            <property name="currentIndex" > 
     46             <number>4</number> 
     47            </property> 
    4548            <widget class="QWidget" name="tab" > 
    4649             <attribute name="title" > 
     
    204207                 <widget class="QLabel" name="txtOMixIMixO2" > 
    205208                  <property name="text" > 
    206                    <string>IMixL</string> 
     209                   <string>IMixR</string> 
    207210                  </property> 
    208211                  <property name="alignment" > 
     
    307310                   </property> 
    308311                   <property name="maximum" > 
    309                     <number>255</number> 
     312                    <number>127</number> 
    310313                   </property> 
    311314                   <property name="singleStep" > 
    312                     <number>2</number> 
     315                    <number>1</number> 
    313316                   </property> 
    314317                   <property name="pageStep" > 
     
    585588                 <widget class="QLabel" name="txtOMixIMixO4" > 
    586589                  <property name="text" > 
    587                    <string>IMixL</string> 
     590                   <string>IMixR</string> 
    588591                  </property> 
    589592                  <property name="alignment" > 
     
    660663                   </property> 
    661664                   <property name="maximum" > 
    662                     <number>255</number> 
     665                    <number>127</number> 
    663666                   </property> 
    664667                   <property name="singleStep" > 
    665                     <number>2</number> 
     668                    <number>1</number> 
    666669                   </property> 
    667670                   <property name="pageStep" > 
     
    925928                 <widget class="QLabel" name="txtOMixIMixO6" > 
    926929                  <property name="text" > 
    927                    <string>IMixL</string> 
     930                   <string>IMixR</string> 
    928931                  </property> 
    929932                  <property name="alignment" > 
     
    10221025                   </property> 
    10231026                   <property name="maximum" > 
    1024                     <number>255</number> 
     1027                    <number>127</number> 
    10251028                   </property> 
    10261029                   <property name="singleStep" > 
    1027                     <number>2</number> 
     1030                    <number>1</number> 
    10281031                   </property> 
    10291032                   <property name="pageStep" > 
     
    12521255                 <widget class="QLabel" name="txtOMixIMixO8" > 
    12531256                  <property name="text" > 
    1254                    <string>IMixL</string> 
     1257                   <string>IMixR</string> 
    12551258                  </property> 
    12561259                  <property name="alignment" > 
     
    13841387                   </property> 
    13851388                   <property name="maximum" > 
    1386                     <number>255</number> 
     1389                    <number>127</number> 
    13871390                   </property> 
    13881391                   <property name="singleStep" > 
    1389                     <number>2</number> 
     1392                    <number>1</number> 
    13901393                   </property> 
    13911394                   <property name="pageStep" > 
     
    16361639                 <widget class="QLabel" name="txtOMixIMixO10" > 
    16371640                  <property name="text" > 
    1638                    <string>IMixL</string> 
     1641                   <string>IMixR</string> 
    16391642                  </property> 
    16401643                  <property name="alignment" > 
  • trunk/libffado/support/mixer-qt4/mixer_saffire_base.py

    r1298 r1435  
    2323from PyQt4.QtCore import SIGNAL, SLOT, QObject 
    2424 
     25import logging 
     26log = logging.getLogger('saffirebase') 
     27 
    2528# the class that holds all actual control code 
    2629class SaffireMixerBase: 
     
    3033    def updateMatrixVolume(self,a0): 
    3134        sender = self.sender() 
    32         #vol = 0x7FFF-a0 
    3335        vol = a0 
    34         print "set %s %d %d to %d" % ( 
     36        log.debug("set %s %d %d to %d" % ( 
    3537                    self.VolumeControls[sender][0], 
    3638                    self.VolumeControls[sender][1], 
    3739                    self.VolumeControls[sender][2], 
    38                     vol) 
     40                    vol)) 
    3941        self.hw.setMatrixMixerValue(self.VolumeControls[sender][0],  
    4042                                    self.VolumeControls[sender][1], 
     
    4345    def updateLowResVolume(self,a0): 
    4446        sender = self.sender() 
    45         vol = a0 
    46         print "set %s to %d" % ( 
     47        vol = 127 - a0 
     48        log.debug("set %s to %d" % ( 
    4749                    self.VolumeControlsLowRes[sender][0], 
    48                     vol) 
     50                    vol)) 
    4951        self.hw.setDiscrete(self.VolumeControlsLowRes[sender][0], vol) 
    5052 
     
    5557        else: 
    5658            state = 0 
    57         print "set %s to %d" % ( 
     59        log.debug("set %s to %d" % ( 
    5860                    self.SelectorControls[sender][0], 
    59                     state) 
     61                    state)) 
    6062        self.hw.setDiscrete(self.SelectorControls[sender][0], state) 
    6163 
     
    6466            linked = self.SelectorControls[sender][1] 
    6567            for ctl in linked: 
    66                 if ctl.state(): 
     68                if ctl.isChecked(): 
    6769                    state = 1 
    6870                else: 
     
    7274    def triggerButton(self): 
    7375        sender = self.sender() 
    74         print "trigger %s" % ( 
    75                     self.TriggerButtonControls[sender][0]) 
     76        log.debug("trigger %s" % ( 
     77                    self.TriggerButtonControls[sender][0])) 
    7678        self.hw.setDiscrete(self.TriggerButtonControls[sender][0], 1) 
    7779 
     
    7981        sender = self.sender() 
    8082        textbox = self.saveTextControls[sender][0] 
    81         print "save %s" % ( 
    82                     textbox.text().ascii()) 
     83        log.debug("save %s" % ( 
     84                    textbox.text().ascii())) 
    8385        self.hw.setText(self.TextControls[textbox][0], textbox.text().ascii()) 
    8486 
     
    100102        for ctrl, info in self.VolumeControls.iteritems(): 
    101103            vol = self.hw.getMatrixMixerValue(self.VolumeControls[ctrl][0], 
    102                                                 self.VolumeControls[ctrl][1], 
    103                                                 self.VolumeControls[ctrl][2]) 
    104             print "%s volume is %d" % (ctrl.objectName() , 0x7FFF-vol) 
    105             #ctrl.setValue(0x7FFF-vol) 
     104                                              self.VolumeControls[ctrl][1], 
     105                                              self.VolumeControls[ctrl][2]) 
     106            log.debug("%s volume is %d" % (ctrl.objectName() , vol)) 
    106107            ctrl.setValue(vol) 
    107108        for ctrl, info in self.VolumeControlsLowRes.iteritems(): 
    108109            vol = self.hw.getDiscrete(self.VolumeControlsLowRes[ctrl][0]) 
    109110 
    110             print "%s volume is %d" % (ctrl.objectName() , vol
    111             ctrl.setValue(vol) 
     111            log.debug("%s volume is %d" % (ctrl.objectName() , 127-vol)
     112            ctrl.setValue(127 - vol) 
    112113 
    113114        for ctrl, info in self.SelectorControls.iteritems(): 
    114115            state = self.hw.getDiscrete(self.SelectorControls[ctrl][0]) 
    115             print "%s state is %d" % (ctrl.objectName() , state
     116            log.debug("%s state is %d" % (ctrl.objectName() , state)
    116117            if state: 
    117118                ctrl.setChecked(True) 
     
    124125        for ctrl, info in self.TextControls.iteritems(): 
    125126            text = self.hw.getText(self.TextControls[ctrl][0]) 
    126             print "%s text is %s" % (ctrl.objectName() , text
     127            log.debug("%s text is %s" % (ctrl.objectName() , text)
    127128            ctrl.setText(text) 
    128129 
     
    130131            self.initCombo(ctrl) 
    131132 
    132     def polledUpdateVolumeLowRes(self, srcpath, ctrl): 
    133         vol = self.hw.getDiscrete(srcpath) 
    134         #print "polledUpdateVolumeLowRes: vol = %s" % vol 
    135         #ctrl.setValue(255-vol) 
     133    def polledUpdateVolumeLowRes(self, srcpath, ctrl, divider=1): 
     134        vol = self.hw.getDiscrete(srcpath) / divider 
     135        #log.debug("polledUpdateVolumeLowRes: vol = %s" % vol) 
    136136        ctrl.setValue(vol) 
    137137 
  • trunk/libffado/support/mixer-qt4/mixer_saffire_mono.ui

    r1298 r1435  
    7777                  </property> 
    7878                  <property name="maximum" > 
    79                    <number>255</number> 
    80                   </property> 
    81                   <property name="singleStep" > 
    82                    <number>2</number> 
     79                   <number>127</number> 
     80                  </property> 
     81                  <property name="singleStep" > 
     82                   <number>1</number> 
    8383                  </property> 
    8484                  <property name="pageStep" > 
     
    645645                  </property> 
    646646                  <property name="maximum" > 
    647                    <number>255</number> 
    648                   </property> 
    649                   <property name="singleStep" > 
    650                    <number>2</number> 
     647                   <number>127</number> 
     648                  </property> 
     649                  <property name="singleStep" > 
     650                   <number>1</number> 
    651651                  </property> 
    652652                  <property name="pageStep" > 
     
    12241224                  </property> 
    12251225                  <property name="maximum" > 
    1226                    <number>255</number> 
    1227                   </property> 
    1228                   <property name="singleStep" > 
    1229                    <number>2</number> 
     1226                   <number>127</number> 
     1227                  </property> 
     1228                  <property name="singleStep" > 
     1229                   <number>1</number> 
    12301230                  </property> 
    12311231                  <property name="pageStep" > 
     
    17791779                  </property> 
    17801780                  <property name="maximum" > 
    1781                    <number>255</number> 
    1782                   </property> 
    1783                   <property name="singleStep" > 
    1784                    <number>2</number> 
     1781                   <number>127</number> 
     1782                  </property> 
     1783                  <property name="singleStep" > 
     1784                   <number>1</number> 
    17851785                  </property> 
    17861786                  <property name="pageStep" > 
  • trunk/libffado/support/mixer-qt4/mixer_saffire_stereo.ui

    r1298 r1435  
    4141     <item> 
    4242      <widget class="QTabWidget" name="tabWidget4" > 
     43       <property name="currentIndex" > 
     44        <number>0</number> 
     45       </property> 
    4346       <widget class="QWidget" name="tab" > 
    4447        <attribute name="title" > 
     
    7477                  </property> 
    7578                  <property name="maximum" > 
    76                    <number>255</number> 
    77                   </property> 
    78                   <property name="singleStep" > 
    79                    <number>2</number> 
     79                   <number>127</number> 
     80                  </property> 
     81                  <property name="singleStep" > 
     82                   <number>1</number> 
    8083                  </property> 
    8184                  <property name="pageStep" > 
     
    525528                  </property> 
    526529                  <property name="maximum" > 
    527                    <number>255</number> 
    528                   </property> 
    529                   <property name="singleStep" > 
    530                    <number>2</number> 
     530                   <number>127</number> 
     531                  </property> 
     532                  <property name="singleStep" > 
     533                   <number>1</number> 
    531534                  </property> 
    532535                  <property name="pageStep" > 
     
    987990                  </property> 
    988991                  <property name="maximum" > 
    989                    <number>255</number> 
    990                   </property> 
    991                   <property name="singleStep" > 
    992                    <number>2</number> 
     992                   <number>127</number> 
     993                  </property> 
     994                  <property name="singleStep" > 
     995                   <number>1</number> 
    993996                  </property> 
    994997                  <property name="pageStep" > 
     
    14251428                  </property> 
    14261429                  <property name="maximum" > 
    1427                    <number>255</number> 
    1428                   </property> 
    1429                   <property name="singleStep" > 
    1430                    <number>2</number> 
     1430                   <number>127</number> 
     1431                  </property> 
     1432                  <property name="singleStep" > 
     1433                   <number>1</number> 
    14311434                  </property> 
    14321435                  <property name="pageStep" > 
     
    23112314 <layoutdefault spacing="6" margin="11" /> 
    23122315 <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> 
    2313  <customwidgets> 
    2314  </customwidgets> 
    23152316 <resources/> 
    23162317 <connections/> 
  • trunk/libffado/support/mixer-qt4/SConscript

    r1336 r1435  
    3030    e = env.Clone() 
    3131    e['MIXERGUIS'] = [ 
    32                         #'phase24', 'phase88', 
     32                        'phase24',  
     33                        'phase88', 
    3334                        'saffire_mono', 'saffire_stereo', 
    3435                        'saffirepro_large', 'saffirepro_small', 
    3536                        'saffirele_large', 'saffirele_small', 
    3637                        'audiofire_strip', 'audiofire_settings', 
    37                         #'bcoaudio5', 'edirolfa66', 
    38                         #'mackie_generic', 'quatafire', 'motu', 
     38                        'bcoaudio5', 
     39                        'edirolfa101', 'edirolfa66', 
     40                        'quatafire', 
     41                        'mackie_onyxmixer', 
     42                        'motu', 
    3943                        'global', 'dummy' 
    4044                     ] 
    4145    e['MIXERAPPS'] = [ 
    42                         #'phase24', 'phase88', 
     46                        'phase24', 
     47                        'phase88', 
    4348                        'saffire', 
    4449                        'saffirepro', 
    4550                        'audiofire', 
    46                         #'bcoaudio5', 'edirolfa66', 
    47                         #'mackie_generic', 'quatafire', 'motu', 
     51                        'bcoaudio5', 
     52                        'edirolfa101', 'edirolfa66', 
     53                        'quatafire', 
     54                        'mackie_onyxmixer', 
     55                        'motu', 
    4856                        'global', 'dummy' 
    4957                     ] 
     
    5361                      'ffado_regdialog', 
    5462                      'ffado_panelmanager', 
     63                      'ffado_configuration', 
    5564                      'mixer_saffire_base' 
    5665                     ] 
     
    8493    e.Install( "$pythondir", "ffadomixer_config.py" ) 
    8594 
    86     e.ScanReplace( "ffadomixer.in" ) 
    87     e.Depends( "ffadomixer", "#/config.h" ) 
    88     e.Depends( "ffadomixer", "SConscript" ) 
    89     e.Install( "$bindir", "ffadomixer" ) 
     95    e.ScanReplace( "ffado-mixer.in" ) 
     96    e.Depends( "ffado-mixer", "#/config.h" ) 
     97    e.Depends( "ffado-mixer", "SConscript" ) 
     98    e.Install( "$bindir", "ffado-mixer" ) 
    9099 
     100    e.Install( "$sharedir/icons", "../xdg/hi64-apps-ffado.png" )