Changeset 1435
- Timestamp:
- 11/16/08 15:05:38 (15 years ago)
- Files:
-
- trunk/libffado/configuration (modified) (16 diffs)
- trunk/libffado/support/mixer-qt4 (modified) (1 prop)
- trunk/libffado/support/mixer-qt4/ffado-mixer.in (copied) (copied from branches/libffado-2.0/support/mixer-qt4/ffado-mixer.in)
- trunk/libffado/support/mixer-qt4/ffadomixer.in (deleted)
- trunk/libffado/support/mixer-qt4/ffadomixer_config.py.in (modified) (1 diff)
- trunk/libffado/support/mixer-qt4/ffado_configuration.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/ffado_configuration.py)
- trunk/libffado/support/mixer-qt4/ffado_dbus_util.py (modified) (20 diffs)
- trunk/libffado/support/mixer-qt4/ffado_panelmanager.py (modified) (17 diffs)
- trunk/libffado/support/mixer-qt4/ffado_regdialog.py (modified) (2 diffs)
- trunk/libffado/support/mixer-qt4/ffado_registration.py (modified) (6 diffs)
- trunk/libffado/support/mixer-qt4/mixer_audiofire.py (modified) (16 diffs)
- trunk/libffado/support/mixer-qt4/mixer_bcoaudio5.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_bcoaudio5.py)
- trunk/libffado/support/mixer-qt4/mixer_bcoaudio5.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_bcoaudio5.ui)
- trunk/libffado/support/mixer-qt4/mixer_dummy.py (modified) (1 diff)
- trunk/libffado/support/mixer-qt4/mixer_edirolfa101.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa101.py)
- trunk/libffado/support/mixer-qt4/mixer_edirolfa101.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa101.ui)
- trunk/libffado/support/mixer-qt4/mixer_edirolfa66.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa66.py)
- trunk/libffado/support/mixer-qt4/mixer_edirolfa66.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa66.ui)
- trunk/libffado/support/mixer-qt4/mixer_global.py (modified) (5 diffs)
- trunk/libffado/support/mixer-qt4/mixer_global.ui (modified) (4 diffs)
- trunk/libffado/support/mixer-qt4/mixer_mackie_onyxmixer.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_mackie_onyxmixer.py)
- trunk/libffado/support/mixer-qt4/mixer_mackie_onyxmixer.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_mackie_onyxmixer.ui)
- trunk/libffado/support/mixer-qt4/mixer_motu.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_motu.py)
- trunk/libffado/support/mixer-qt4/mixer_motu.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_motu.ui)
- trunk/libffado/support/mixer-qt4/mixer_phase24.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_phase24.py)
- trunk/libffado/support/mixer-qt4/mixer_phase24.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_phase24.ui)
- trunk/libffado/support/mixer-qt4/mixer_phase88.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_phase88.py)
- trunk/libffado/support/mixer-qt4/mixer_phase88.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_phase88.ui)
- trunk/libffado/support/mixer-qt4/mixer_quatafire.py (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_quatafire.py)
- trunk/libffado/support/mixer-qt4/mixer_quatafire.ui (copied) (copied from branches/libffado-2.0/support/mixer-qt4/mixer_quatafire.ui)
- trunk/libffado/support/mixer-qt4/mixer_saffire.py (modified) (9 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffirele_large.ui (modified) (6 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffirele_small.ui (modified) (7 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffirepro.py (modified) (12 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffirepro_large.ui (modified) (10 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffirepro_small.ui (modified) (10 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffire_base.py (modified) (10 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffire_mono.ui (modified) (4 diffs)
- trunk/libffado/support/mixer-qt4/mixer_saffire_stereo.ui (modified) (6 diffs)
- trunk/libffado/support/mixer-qt4/SConscript (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/configuration
r1336 r1435 7 7 driver = 1; # BeBoB 8 8 }, 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 }, 9 17 { 10 18 vendorid = 0x0003db; … … 27 35 modelname = "Audio 5"; 28 36 driver = 1; # BeBoB 37 mixer = "BCoAudio5Control"; 29 38 }, 30 39 { … … 48 57 modelname = "Phase 88 FW"; 49 58 driver = 1; # BeBoB 59 mixer = "Phase88Control"; 50 60 }, 51 61 { … … 55 65 modelname = "Phase X24 FW (model version 4)"; 56 66 driver = 1; # BeBoB 67 mixer = "Phase24Control"; 57 68 }, 58 69 { … … 62 73 modelname = "Phase X24 FW (model version 7)"; 63 74 driver = 1; # BeBoB 75 mixer = "Phase24Control"; 64 76 }, 65 77 { … … 69 81 modelname = "Quatafire 610"; 70 82 driver = 1; # BeBoB 83 mixer = "QuataFireMixer"; 71 84 }, 72 85 { … … 76 89 modelname = "Saffire Pro26IO"; 77 90 driver = 1; # BeBoB 91 mixer = "SaffireProMixer"; 78 92 }, 79 93 { … … 83 97 modelname = "Saffire Pro10IO"; 84 98 driver = 1; # BeBoB 99 mixer = "SaffireProMixer"; 85 100 }, 86 101 { … … 90 105 modelname = "Saffire (LE)"; 91 106 driver = 1; # BeBoB 107 mixer = "SaffireMixer"; 92 108 }, 93 109 { … … 97 113 modelname = "FA-66"; 98 114 driver = 1; # BeBoB 115 mixer = "EdirolFa66Control"; 99 116 }, 100 117 { … … 104 121 modelname = "FA-101"; 105 122 driver = 1; # BeBoB 123 mixer = "EdirolFa101Control"; 106 124 }, 107 125 { … … 146 164 modelname = "AudioFire2"; 147 165 driver = 2; 166 mixer = "AudioFireMixer"; 148 167 }, 149 168 { … … 153 172 modelname = "AudioFire4"; 154 173 driver = 2; 174 mixer = "AudioFireMixer"; 155 175 }, 156 176 { … … 160 180 modelname = "AudioFire8"; 161 181 driver = 2; 182 mixer = "AudioFireMixer"; 162 183 }, 163 184 { … … 167 188 modelname = "AudioFire12"; 168 189 driver = 2; 190 mixer = "AudioFireMixer"; 169 191 }, 170 192 { … … 202 224 modelname = "Onyx 1200F"; 203 225 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"; 204 234 } 205 235 ); trunk/libffado/support/mixer-qt4
- Property svn:ignore set to
*ui.py
*.pyc
ffadomixer
.*.swp
ffadomixer_config.py
- Property svn:ignore set to
trunk/libffado/support/mixer-qt4/ffadomixer_config.py.in
r1298 r1435 10 10 11 11 POLL_SLEEP_TIME_MSEC = 100 # 100ms 12 13 PYTHONDIR = "$PYTHONDIR" 14 SHAREDIR = "$SHAREDIR" 15 16 USER_CONFIG_FILE = "$USER_CONFIG_FILE" 17 SYSTEM_CONFIG_FILE = "$SYSTEM_CONFIG_FILE" 18 19 DEBUG = $DEBUG trunk/libffado/support/mixer-qt4/ffado_dbus_util.py
r1298 r1435 26 26 import dbus.mainloop.qt 27 27 dbus.mainloop.qt.DBusQtMainLoop(set_as_default=True) 28 29 import logging 30 log = logging.getLogger('dbus') 28 31 29 32 class ControlInterface: … … 43 46 dev_cont.setValueIdx(idx,v) 44 47 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)) 46 49 47 50 def getContignuous(self, subpath, idx=None): … … 55 58 return dev_cont.getValueIdx(idx) 56 59 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)) 58 61 return 0 59 62 … … 65 68 dev_cont.setValue(v) 66 69 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)) 68 71 69 72 def getDiscrete(self, subpath): … … 74 77 return dev_cont.getValue() 75 78 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)) 77 80 return 0 78 81 … … 84 87 dev_cont.setValue(v) 85 88 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)) 87 90 88 91 def getText(self, subpath): … … 93 96 return dev_cont.getValue() 94 97 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)) 96 99 return 0 97 100 … … 103 106 dev_cont.setValue(row, col, v) 104 107 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)) 106 109 107 110 def getMatrixMixerValue(self, subpath, row, col): … … 112 115 return dev_cont.getValue(row, col) 113 116 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)) 115 118 return 0 116 119 … … 122 125 dev_cont.select(v) 123 126 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)) 125 128 126 129 def enumSelected(self, subpath): … … 131 134 return dev_cont.selected() 132 135 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)) 134 137 return 0 135 138 … … 141 144 return dev_cont.getEnumLabel(v) 142 145 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)) 144 147 return 0 145 148 … … 151 154 return dev_cont.count() 152 155 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)) 154 157 return 0 155 158 … … 175 178 # and qt3 doesn't provide one for python/dbus 176 179 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)) 178 181 self.dev.connect_to_signal("Updated", self.updateSignal, \ 179 182 dbus_interface="org.ffado.Control.Element.Container") … … 213 216 214 217 def updateSignal(self): 215 print("Received update signal")218 log.debug("Received update signal") 216 219 for handler in self.updateSignalHandlers: 217 220 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) 222 228 223 229 def preUpdateSignal(self): 224 print("Received pre-update signal")230 log.debug("Received pre-update signal") 225 231 for handler in self.preUpdateSignalHandlers: 226 232 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) 231 240 232 241 def postUpdateSignal(self): 233 print("Received post-update signal")242 log.debug("Received post-update signal") 234 243 for handler in self.postUpdateSignalHandlers: 235 244 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) 240 252 241 253 def destroyedSignal(self): 242 print("Received destroyed signal")254 log.debug("Received destroyed signal") 243 255 for handler in self.destroyedSignalHandlers: 244 256 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) 249 264 250 265 def getNbDevices(self): … … 280 295 self.dev = self.bus.get_object(self.servername, self.basepath) 281 296 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') 282 298 def count(self): 283 299 return self.iface.count() … … 294 310 def getAttributeName(self, idx): 295 311 return self.iface.getAttributeName(idx) 312 def canChangeValue(self): 313 return self.iface_element.canChangeValue() 296 314 297 315 class SamplerateSelectInterface: … … 302 320 self.dev = self.bus.get_object(self.servername, self.basepath) 303 321 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') 304 323 def count(self): 305 324 return self.iface.count() … … 310 329 def getEnumLabel(self, idx): 311 330 return self.iface.getEnumLabel(idx) 331 def canChangeValue(self): 332 return self.iface_element.canChangeValue() 312 333 313 334 class TextInterface: … … 318 339 self.dev = self.bus.get_object( self.servername, self.basepath ) 319 340 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') 321 342 def text(self): 322 343 return self.iface.getValue() 323 324 344 def setText(self,text): 325 345 self.iface.setValue(text) 346 def canChangeValue(self): 347 return self.iface_element.canChangeValue() trunk/libffado/support/mixer-qt4/ffado_panelmanager.py
r1298 r1435 22 22 # along with this program. If not, see <http://www.gnu.org/licenses/>. 23 23 # 24 from ffadomixer_config import FFADO_VERSION, FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH 25 26 from PyQt4.QtGui import QFrame, QWidget, QTabWidget, QVBoxLayout 24 25 from ffadomixer_config import * #FFADO_VERSION, FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH 26 27 from PyQt4.QtGui import QFrame, QWidget, QTabWidget, QVBoxLayout, QMainWindow, QIcon, QAction, qApp, QStyleOptionTabWidgetFrame 27 28 from PyQt4.QtCore import QTimer 28 29 … … 32 33 from ffado_registration import * 33 34 34 #from mixer_phase88 import * 35 #from mixer_phase24 import * 35 from ffado_configuration import DeviceList 36 37 from mixer_phase88 import * 38 from mixer_phase24 import * 36 39 from mixer_saffire import SaffireMixer 37 40 from mixer_saffirepro import SaffireProMixer 38 41 from 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 * 42 from mixer_bcoaudio5 import * 43 from mixer_edirolfa66 import * 44 from mixer_edirolfa101 import * 45 from mixer_mackie_onyxmixer import * 46 from mixer_quatafire import * 47 from mixer_motu import * 44 48 from mixer_dummy import * 45 49 from mixer_global import GlobalMixer 50 51 import time 52 53 import logging 54 log = logging.getLogger('panelmanager') 46 55 47 56 use_generic = False 48 57 try: 49 58 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...") 51 60 except ImportError: 52 61 pass 53 62 else: 54 63 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 ]73 64 74 65 # pseudo-guid … … 88 79 self.setupUi(self) 89 80 81 class 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 90 97 class 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): 93 125 self.devmgr = devmgr 94 126 self.devmgr.registerPreUpdateCallback(self.devlistPreUpdate) … … 96 128 self.devmgr.registerUpdateCallback(self.devlistUpdate) 97 129 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 ) 115 138 116 139 # live check timer … … 123 146 124 147 def pollPanels(self): 148 #log.debug("PanelManager::pollPanels()") 125 149 # only when not modifying the tabs 126 150 if self.tabs.isEnabled(): 127 151 for guid in self.panels.keys(): 128 152 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 134 161 135 162 def devlistPreUpdate(self): 136 print "devlistPreUpdate"163 log.debug("devlistPreUpdate") 137 164 self.tabs.setEnabled(False) 138 165 self.tabs.hide() 139 166 self.status.lblMessage.setText("Bus reconfiguration in progress, please wait...") 140 167 self.status.show() 168 #self.statusBar().showMessage("bus reconfiguration in progress...", 5000) 141 169 142 170 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 145 196 146 197 def devlistUpdate(self): 147 print "devlistUpdate"198 log.debug("devlistUpdate") 148 199 149 200 def devmgrDestroyed(self): 150 print "devmgrDestroyed"201 log.debug("devmgrDestroyed") 151 202 self.alivetimer.stop() 152 203 self.tabs.setEnabled(False) … … 159 210 nbDevices = self.devmgr.getNbDevices() 160 211 except: 161 print "comms lost"212 log.debug("comms lost") 162 213 self.tabs.setEnabled(False) 163 214 self.tabs.hide() … … 167 218 168 219 def updatePanels(self): 220 log.debug("PanelManager::updatePanels()") 169 221 nbDevices = self.devmgr.getNbDevices() 222 #self.statusBar().showMessage("Reconfiguring the mixer panels...") 170 223 171 224 # list of panels present … … 190 243 if not guid in guids_present: 191 244 to_remove.append(guid) 192 print "going to remove %s" % str(guid)245 log.debug("going to remove %s" % str(guid)) 193 246 else: 194 print "going to keep %s" % str(guid)247 log.debug("going to keep %s" % str(guid)) 195 248 196 249 # figure out what to add … … 199 252 if not guid in guids_with_tabs: 200 253 to_add.append(guid) 201 print "going to add %s" % str(guid)254 log.debug("going to add %s" % str(guid)) 202 255 203 256 # update the widget … … 213 266 idx = guid_indexes[guid] 214 267 path = self.devmgr.getDeviceName(idx) 215 print "Adding device %d: %s" % (idx, path)268 log.debug("Adding device %d: %s" % (idx, path)) 216 269 217 270 cfgrom = ConfigRomInterface(FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH+'/DeviceManager/'+path) … … 222 275 vendorName = cfgrom.getVendorName() 223 276 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)) 225 278 226 279 # check whether this has already been registered at ffado.org … … 230 283 reg.check_for_registration() 231 284 232 thisdev = (vendorId, modelId);233 285 # The MOTU devices use unitVersion to differentiate models. For the 234 # moment though twe don't need to know precisely which model we're286 # moment though we don't need to know precisely which model we're 235 287 # using. 236 288 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( ) 245 294 l = QVBoxLayout( w ) 246 295 … … 254 303 # Generic elements for all mixers follow here: 255 304 # 256 tmp= GlobalMixer( w )257 tmp.configrom = cfgrom258 tmp.clockselect = clockselect259 tmp.samplerateselect = samplerateselect260 tmp.nickname = nickname261 tmp.hw = hw262 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 ) 264 313 265 314 # … … 271 320 # Specific (or dummy) mixer widgets get loaded in the following 272 321 # 273 if dev!= None:274 mixerapp = dev[ 1]322 if 'mixer' in dev and dev['mixer'] != None: 323 mixerapp = dev['mixer'] 275 324 exec( "mixerwidget = "+mixerapp+"( w )" ) 276 325 else: … … 296 345 title = mixerapp 297 346 347 globalmixer.setName(title) 298 348 self.tabs.addTab( w, title ) 299 349 self.panels[guid] = w … … 306 356 self.status.lblMessage.setText("No supported device found.") 307 357 self.status.show() 358 #self.statusBar().showMessage("No supported device found.", 5000) 308 359 else: 309 360 self.tabs.show() 310 361 self.tabs.setEnabled(True) 311 362 self.status.hide() 363 #self.statusBar().showMessage("Configured the mixer for %i devices." % self.tabs.count()) 312 364 if use_generic: 313 365 # … … 317 369 self.tabs.addTab( w, "Generic Mixer" ) 318 370 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 24 24 from PyQt4.QtGui import QDialog 25 25 from ffado_regdialogui import Ui_ffadoRegDialogUI 26 27 import logging 28 log = logging.getLogger('registration') 26 29 27 30 REGISTRATION_MESSAGE = """ … … 66 69 sender = self.sender() 67 70 if sender == self.btnSend: 68 print "user chose to send"71 log.debug("user chose to send") 69 72 self.choice = "send" 70 73 elif sender == self.btnNoSend: 71 print "user chose not to send"74 log.debug("user chose not to send") 72 75 self.choice = "nosend" 73 76 elif sender == self.btnNeverSend: 74 print "user chose to never send"77 log.debug("user chose to never send") 75 78 self.choice = "neversend" 76 79 self.close() trunk/libffado/support/mixer-qt4/ffado_registration.py
r1298 r1435 7 7 8 8 from ffado_regdialog import * 9 10 import logging 11 log = logging.getLogger('registration') 9 12 10 13 class ffado_registration: … … 53 56 urllib.urlencode(post_vals)) 54 57 except: 55 print "failed, network error"58 log.error("failed, network error") 56 59 return (-1, "Network Error") 57 60 … … 68 71 errline = lines[i+1] 69 72 if not ok: 70 print "registration failed" 71 print " " + errline 73 log.info("registration failed %s" % errline) 72 74 return (-2, errline) 73 75 else: … … 106 108 107 109 if self.check_for_ignore(): 108 print "user requested to ignore registration"110 log.debug("user requested to ignore registration") 109 111 else: 110 112 if self.check_if_already_registered(): 111 print "version/GUID combo already registered"113 log.debug("version/GUID combo already registered") 112 114 else: 113 print "show dialog..."115 log.debug("show dialog...") 114 116 115 117 dlg = ffadoRegDialog(self.vendor_string, "0x%X" % self.vendor_id, … … 129 131 msg = QMessageBox() 130 132 if retval[0] == 0: 131 print "registration successful"133 log.debug("registration successful") 132 134 devinfomsg = "<p>Device: %s %s<br> Vendor/Model Id: %X/%X<br>Device GUID: %016X<br>FFADO Version: %s<br>E-Mail: %s</p>" % \ 133 135 (self.vendor_string, self.model_string, self.vendor_id, self.model_id, self.guid, self.ffado_version, self.email) … … 140 142 self.mark_version_registered() 141 143 else: 142 print "error: " + retval[1]144 log.error("error: " + retval[1]) 143 145 tmp = msg.question( msg, "Registration Failed", 144 146 "<qt><b>The registration at ffado.org failed.</b>" + trunk/libffado/support/mixer-qt4/mixer_audiofire.py
r1298 r1435 27 27 from mixer_audiofire_stripui import Ui_AfMonitorWidget 28 28 from mixer_audiofire_settingsui import Ui_AfSettingsWidget 29 import logging 30 log = logging.getLogger('audiofire') 29 31 30 32 class AfMonitorWidget(QWidget, Ui_AfMonitorWidget): … … 41 43 def __init__(self,parent = None): 42 44 QWidget.__init__(self,parent) 43 print "Init AudioFire mixer window"45 log.debug("Init AudioFire mixer window") 44 46 45 47 def getDisplayTitle(self): … … 61 63 else: 62 64 state = 0 63 print"set %s %d %d to %d" % (65 log.debug("set %s %d %d to %d" % ( 64 66 self.MatrixButtonControls[sender][0], 65 67 self.MatrixButtonControls[sender][1], 66 68 self.MatrixButtonControls[sender][2], 67 state) 69 state)) 68 70 self.hw.setMatrixMixerValue(self.MatrixButtonControls[sender][0], 69 71 self.MatrixButtonControls[sender][1], … … 74 76 sender = self.sender() 75 77 vol = a0 76 print"set %s %d %d to %d" % (78 log.debug("set %s %d %d to %d" % ( 77 79 self.MatrixRotaryControls[sender][0], 78 80 self.MatrixRotaryControls[sender][1], 79 81 self.MatrixRotaryControls[sender][2], 80 vol) 82 vol)) 81 83 self.hw.setMatrixMixerValue(self.MatrixRotaryControls[sender][0], 82 84 self.MatrixRotaryControls[sender][1], … … 88 90 vol = a0 89 91 #vol = 0x01000000-vol 90 print"set %s %d %d to %d" % (92 log.debug("set %s %d %d to %d" % ( 91 93 self.MatrixVolumeControls[sender][0], 92 94 self.MatrixVolumeControls[sender][1], 93 95 self.MatrixVolumeControls[sender][2], 94 vol) 96 vol)) 95 97 self.hw.setMatrixMixerValue(self.MatrixVolumeControls[sender][0], 96 98 self.MatrixVolumeControls[sender][1], … … 102 104 vol = a0 103 105 #vol = 0x01000000-vol 104 print"set %s to %d" % (106 log.debug("set %s to %d" % ( 105 107 self.VolumeControls[sender][0], 106 vol) 108 vol)) 107 109 self.hw.setContignuous(self.VolumeControls[sender][0], 108 110 vol) … … 114 116 else: 115 117 state = 0 116 print"set %s to %d" % (118 log.debug("set %s to %d" % ( 117 119 self.SelectorControls[sender][0], 118 state) 120 state)) 119 121 self.hw.setDiscrete(self.SelectorControls[sender][0], state) 120 122 121 123 def updateTrigger(self): 122 124 sender = self.sender() 123 print "trigger %s" % (self.TriggerControls[sender][0])125 log.debug("trigger %s" % (self.TriggerControls[sender][0])) 124 126 self.hw.setDiscrete(self.TriggerControls[sender][0], 1) 125 127 … … 131 133 state = 0 132 134 if state: 133 print"set %s to %d" % (135 log.debug("set %s to %d" % ( 134 136 self.SPDIFmodeControls[sender][0], 135 self.SPDIFmodeControls[sender][1]) 137 self.SPDIFmodeControls[sender][1])) 136 138 self.hw.setDiscrete(self.SPDIFmodeControls[sender][0], self.SPDIFmodeControls[sender][1]) 137 139 138 140 def buildMixer(self): 139 print "Building mixer"141 log.debug("Building mixer") 140 142 self.MatrixButtonControls={} 141 143 self.MatrixRotaryControls={} … … 239 241 for inpair in range(nb_pys_in): 240 242 # create GUI elements 241 print "strip"243 log.debug("strip") 242 244 grpInput = QGroupBox(tab) 243 245 tablayout.addWidget(grpInput) … … 282 284 283 285 def initValues(self): 284 print "Init values"286 log.debug("Init values") 285 287 286 288 for ctrl, info in self.MatrixVolumeControls.iteritems(): … … 290 292 291 293 #vol = 0x01000000-vol 292 print "%s volume is %d" % (ctrl.objectName() , vol)294 log.debug("%s volume is %d" % (ctrl.objectName() , vol)) 293 295 ctrl.setValue(vol) 294 296 … … 301 303 self.MatrixButtonControls[ctrl][2]) 302 304 303 print "%s state is %d" % (ctrl.objectName() , state)305 log.debug("%s state is %d" % (ctrl.objectName() , state)) 304 306 if state: 305 307 ctrl.setChecked(True) … … 315 317 self.MatrixRotaryControls[ctrl][2]) 316 318 317 print "%s value is %d" % (ctrl.objectName(), vol)319 log.debug("%s value is %d" % (ctrl.objectName(), vol)) 318 320 ctrl.setValue(vol) 319 321 … … 325 327 326 328 #vol = 0x01000000-vol 327 print "%s volume is %d" % (ctrl.objectName() , vol)329 log.debug("%s volume is %d" % (ctrl.objectName() , vol)) 328 330 ctrl.setValue(vol) 329 331 … … 333 335 for ctrl, info in self.SelectorControls.iteritems(): 334 336 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)) 336 338 if state: 337 339 ctrl.setChecked(True) … … 348 350 for ctrl, info in self.SPDIFmodeControls.iteritems(): 349 351 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)) 351 353 if state == self.SPDIFmodeControls[ctrl][1]: 352 354 ctrl.setChecked(True) trunk/libffado/support/mixer-qt4/mixer_dummy.py
r1298 r1435 30 30 self.setupUi(self) 31 31 32 def init(self):33 print "Init Dummy mixer window"34 35 32 def initValues(self): 36 33 pass trunk/libffado/support/mixer-qt4/mixer_global.py
r1298 r1435 21 21 # 22 22 23 from PyQt4.QtCore import QObject, pyqtSignature 23 24 from PyQt4.QtGui import QWidget, QMessageBox 24 25 from mixer_globalui import Ui_GlobalMixerUi 25 26 27 import logging 28 log = logging.getLogger('global') 29 26 30 class GlobalMixer( QWidget, Ui_GlobalMixerUi ): 27 def __init__( self, parent ):31 def __init__( self, parent, name=None ): 28 32 QWidget.__init__( self, parent ) 29 33 self.setupUi(self) 34 self.setName(name) 30 35 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 34 56 selected = self.clockselect.selected() 35 36 57 if selected != clock: 37 58 clockname = self.clockselect.getEnumLabel( clock ) … … 42 63 self.clocksource.setCurrentIndex( selected ) 43 64 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 47 78 selected = self.samplerateselect.selected() 48 49 79 if selected != sr: 50 80 srname = self.samplerateselect.getEnumLabel( sr ) … … 55 85 self.samplerate.setCurrentIndex( selected ) 56 86 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() ) 61 95 62 96 def initValues( self ): … … 66 100 self.clocksource.insertItem( nb_clocks, self.clockselect.getEnumLabel( i ) ) 67 101 self.clocksource.setCurrentIndex( self.clockselect.selected() ) 68 102 69 103 nb_rates = self.samplerateselect.count() 70 104 for i in range( nb_rates ): … … 74 108 self.txtNickname.setText( self.nickname.text() ) 75 109 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 23 23 <x>0</x> 24 24 <y>0</y> 25 <width> 721</width>26 <height> 191</height>25 <width>444</width> 26 <height>81</height> 27 27 </rect> 28 28 </property> … … 36 36 <string>Global Mixer Options</string> 37 37 </property> 38 <layout class="QHBoxLayout" > 38 <layout class="QHBoxLayout" name="horizontalLayout" > 39 <property name="margin" > 40 <number>3</number> 41 </property> 39 42 <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> 67 59 </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> 123 138 </item> 124 139 </layout> … … 132 147 <enum>QSizePolicy::Expanding</enum> 133 148 </property> 134 <property name="sizeHint" >149 <property name="sizeHint" stdset="0" > 135 150 <size> 136 151 <width>330</width> 137 <height> 71</height>152 <height>10</height> 138 153 </size> 139 154 </property> … … 145 160 <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> 146 161 <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/> 197 163 </ui> trunk/libffado/support/mixer-qt4/mixer_saffire.py
r1298 r1435 28 28 from mixer_saffirele_smallui import Ui_SaffireLEMixerSmallUI 29 29 from mixer_saffirele_largeui import Ui_SaffireLEMixerLargeUI 30 31 import logging 32 log = logging.getLogger('saffire') 30 33 31 34 #MIXER LAYOUT: … … 83 86 if self.is_saffire_le: 84 87 if self.samplerate <= 48000: 85 print "large"88 log.debug("large") 86 89 self.small.hide() 87 90 self.large.initValues() 88 91 self.large.show() 89 92 else: 90 print "small"93 log.debug("small") 91 94 self.large.hide() 92 95 self.small.initValues() … … 110 113 if int(self.configrom.getGUID(), 16) >= 0x130e0100040000: 111 114 self.is_saffire_le = True 112 print "Found SaffireLE GUID"115 log.debug("Found SaffireLE GUID") 113 116 else: 114 117 self.is_saffire_le = False 115 print "Found Saffire GUID"118 log.debug("Found Saffire GUID") 116 119 117 120 # init depending on what device we have … … 259 262 state = selector.isChecked() 260 263 if state: 261 self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl )264 self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 64) 262 265 volctrl.setEnabled(False) 263 266 else: … … 282 285 SaffireMixerBase.updateValues(self) 283 286 def switchStereoMode(self): 284 print "should switch to mono mode"287 log.debug("should switch to mono mode") 285 288 self.my_parent.setMonoMode(1) 286 289 self.my_parent.selectCorrectMode() … … 403 406 state = selector.isChecked() 404 407 if state: 405 self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl )408 self.polledUpdateVolumeLowRes('/Mixer/MonitorDial', volctrl, 4) 406 409 volctrl.setEnabled(False) 407 410 else: … … 427 430 428 431 def switchStereoMode(self): 429 print "should switch to stero mode"432 log.debug("should switch to stereo mode") 430 433 self.my_parent.setMonoMode(0) 431 434 self.my_parent.selectCorrectMode() … … 438 441 SaffireMixerBase.__init__(self) 439 442 440 print "Init large Saffire LE mixer window"443 log.debug("Init large Saffire LE mixer window") 441 444 442 445 self.VolumeControls={ … … 561 564 SaffireMixerBase.__init__(self) 562 565 563 print "Init small Saffire LE mixer window"566 log.debug("Init small Saffire LE mixer window") 564 567 565 568 self.VolumeControls={ trunk/libffado/support/mixer-qt4/mixer_saffirele_large.ui
r1298 r1435 1956 1956 </property> 1957 1957 <property name="maximum" > 1958 <number> 255</number>1958 <number>127</number> 1959 1959 </property> 1960 1960 <property name="singleStep" > … … 1962 1962 </property> 1963 1963 <property name="pageStep" > 1964 <number> 4</number>1964 <number>16</number> 1965 1965 </property> 1966 1966 <property name="orientation" > … … 1978 1978 </property> 1979 1979 <property name="maximum" > 1980 <number> 255</number>1980 <number>127</number> 1981 1981 </property> 1982 1982 <property name="singleStep" > … … 1984 1984 </property> 1985 1985 <property name="pageStep" > 1986 <number> 4</number>1986 <number>16</number> 1987 1987 </property> 1988 1988 <property name="orientation" > … … 2000 2000 </property> 2001 2001 <property name="maximum" > 2002 <number> 255</number>2002 <number>127</number> 2003 2003 </property> 2004 2004 <property name="singleStep" > … … 2006 2006 </property> 2007 2007 <property name="pageStep" > 2008 <number> 4</number>2008 <number>16</number> 2009 2009 </property> 2010 2010 <property name="orientation" > trunk/libffado/support/mixer-qt4/mixer_saffirele_small.ui
r1298 r1435 216 216 <widget class="QTabWidget" name="tabWidget4" > 217 217 <property name="currentIndex" > 218 <number> 3</number>218 <number>0</number> 219 219 </property> 220 220 <widget class="QWidget" name="tab" > … … 680 680 </property> 681 681 <property name="maximum" > 682 <number> 255</number>682 <number>127</number> 683 683 </property> 684 684 <property name="singleStep" > … … 686 686 </property> 687 687 <property name="pageStep" > 688 <number> 4</number>688 <number>16</number> 689 689 </property> 690 690 <property name="orientation" > … … 702 702 </property> 703 703 <property name="maximum" > 704 <number> 255</number>704 <number>127</number> 705 705 </property> 706 706 <property name="singleStep" > … … 708 708 </property> 709 709 <property name="pageStep" > 710 <number> 4</number>710 <number>16</number> 711 711 </property> 712 712 <property name="orientation" > … … 724 724 </property> 725 725 <property name="maximum" > 726 <number> 255</number>726 <number>127</number> 727 727 </property> 728 728 <property name="singleStep" > … … 730 730 </property> 731 731 <property name="pageStep" > 732 <number> 4</number>732 <number>16</number> 733 733 </property> 734 734 <property name="orientation" > trunk/libffado/support/mixer-qt4/mixer_saffirepro.py
r1298 r1435 21 21 # 22 22 23 from PyQt4.QtGui import QWidget, QHBoxLayout 23 from PyQt4.QtGui import QWidget, QHBoxLayout, QMessageBox 24 24 from mixer_saffire_base import SaffireMixerBase 25 25 from mixer_saffirepro_largeui import Ui_SaffireProMixerLargeUI 26 26 from mixer_saffirepro_smallui import Ui_SaffireProMixerSmallUI 27 28 import logging 29 log = logging.getLogger('saffirepro') 27 30 28 31 class SaffireProMixer(QWidget): … … 53 56 def selectCorrectMode(self): 54 57 if self.samplerate <= 96000: 55 print "large"58 log.debug("large") 56 59 self.small.hide() 57 60 self.large.initValues() 58 61 self.large.show() 59 62 else: 60 print "small"63 log.debug("small") 61 64 self.large.hide() 62 65 self.small.initValues() … … 64 67 65 68 def initValues(self): 69 self.is_not_streaming = self.samplerateselect.canChangeValue() 66 70 selected = self.samplerateselect.selected() 67 71 self.samplerate = int(self.samplerateselect.getEnumLabel( selected )) 68 print "detected samplerate %d" % self.samplerate72 log.debug("detected samplerate %d" % self.samplerate) 69 73 70 74 # adat on PRO26 makes a difference … … 75 79 if state: 76 80 self.have_adat = False 77 print "detected PRO26, ADAT disabled"81 log.debug("detected PRO26, ADAT disabled") 78 82 else: 79 83 self.have_adat = True 80 print "detected PRO26, ADAT enabled"84 log.debug("detected PRO26, ADAT enabled") 81 85 elif modelId == 0x00000006: # PRO10 82 86 self.is_pro10 = True … … 98 102 99 103 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() 102 109 103 110 class SaffireProMixerLarge(QWidget, Ui_SaffireProMixerLargeUI, SaffireMixerBase): … … 108 115 self.setupUi(self) 109 116 self.have_adat = False 110 print "Init large Saffire Pro mixer window"117 log.debug("Init large Saffire Pro mixer window") 111 118 112 119 self.VolumeControls={ … … 212 219 self.chkAdatDisable: ['/Control/ADATDisable'], 213 220 # Mixer switches 214 self.chkMute12: ['/Mixer/Out12Mute' ],221 self.chkMute12: ['/Mixer/Out12Mute', [self.chkHwCtrl12]], 215 222 self.chkHwCtrl12: ['/Mixer/Out12HwCtrl'], 216 223 self.chkPad12: ['/Mixer/Out12Pad'], 217 224 self.chkDim12: ['/Mixer/Out12Dim'], 218 self.chkMute34: ['/Mixer/Out34Mute' ],225 self.chkMute34: ['/Mixer/Out34Mute', [self.chkHwCtrl34]], 219 226 self.chkHwCtrl34: ['/Mixer/Out34HwCtrl'], 220 227 self.chkPad34: ['/Mixer/Out34Pad'], 221 228 self.chkDim34: ['/Mixer/Out34Dim'], 222 self.chkMute56: ['/Mixer/Out56Mute' ],229 self.chkMute56: ['/Mixer/Out56Mute', [self.chkHwCtrl56]], 223 230 self.chkHwCtrl56: ['/Mixer/Out56HwCtrl'], 224 231 self.chkPad56: ['/Mixer/Out56Pad'], 225 232 self.chkDim56: ['/Mixer/Out56Dim'], 226 self.chkMute78: ['/Mixer/Out78Mute' ],233 self.chkMute78: ['/Mixer/Out78Mute', [self.chkHwCtrl78]], 227 234 self.chkHwCtrl78: ['/Mixer/Out78HwCtrl'], 228 235 self.chkPad78: ['/Mixer/Out78Pad'], … … 267 274 SaffireMixerBase.updateLowResVolume(self,a0) 268 275 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 269 312 SaffireMixerBase.updateSelector(self,a0) 313 270 314 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 271 323 SaffireMixerBase.triggerButton(self) 324 272 325 def saveText(self): 273 326 SaffireMixerBase.saveText(self) … … 293 346 SaffireMixerBase.updateValues(self) 294 347 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 295 369 class SaffireProMixerSmall(QWidget, Ui_SaffireProMixerSmallUI, SaffireMixerBase): 296 370 def __init__(self,parent = None): … … 299 373 SaffireMixerBase.__init__(self) 300 374 self.setupUi(self) 301 print "Init small Saffire Pro mixer window"375 log.debug("Init small Saffire Pro mixer window") 302 376 303 377 self.VolumeControls={ … … 406 480 SaffireMixerBase.updateLowResVolume(self,a0) 407 481 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 408 518 SaffireMixerBase.updateSelector(self,a0) 519 409 520 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 410 529 SaffireMixerBase.triggerButton(self) 530 411 531 def saveText(self): 412 532 SaffireMixerBase.saveText(self) … … 418 538 def updateValues(self): 419 539 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 2241 2241 <item row="0" column="0" > 2242 2242 <widget class="QTabWidget" name="tabWidget14" > 2243 <property name="currentIndex" > 2244 <number>4</number> 2245 </property> 2243 2246 <widget class="QWidget" name="tab" > 2244 2247 <attribute name="title" > … … 2402 2405 <widget class="QLabel" name="txtOMixIMixO2" > 2403 2406 <property name="text" > 2404 <string>IMix L</string>2407 <string>IMixR</string> 2405 2408 </property> 2406 2409 <property name="alignment" > … … 2505 2508 </property> 2506 2509 <property name="maximum" > 2507 <number> 255</number>2510 <number>127</number> 2508 2511 </property> 2509 2512 <property name="singleStep" > 2510 <number> 2</number>2513 <number>1</number> 2511 2514 </property> 2512 2515 <property name="pageStep" > … … 2783 2786 <widget class="QLabel" name="txtOMixIMixO4" > 2784 2787 <property name="text" > 2785 <string>IMix L</string>2788 <string>IMixR</string> 2786 2789 </property> 2787 2790 <property name="alignment" > … … 2858 2861 </property> 2859 2862 <property name="maximum" > 2860 <number> 255</number>2863 <number>127</number> 2861 2864 </property> 2862 2865 <property name="singleStep" > 2863 <number> 2</number>2866 <number>1</number> 2864 2867 </property> 2865 2868 <property name="pageStep" > … … 3123 3126 <widget class="QLabel" name="txtOMixIMixO6" > 3124 3127 <property name="text" > 3125 <string>IMix L</string>3128 <string>IMixR</string> 3126 3129 </property> 3127 3130 <property name="alignment" > … … 3220 3223 </property> 3221 3224 <property name="maximum" > 3222 <number> 255</number>3225 <number>127</number> 3223 3226 </property> 3224 3227 <property name="singleStep" > 3225 <number> 2</number>3228 <number>1</number> 3226 3229 </property> 3227 3230 <property name="pageStep" > … … 3450 3453 <widget class="QLabel" name="txtOMixIMixO8" > 3451 3454 <property name="text" > 3452 <string>IMix L</string>3455 <string>IMixR</string> 3453 3456 </property> 3454 3457 <property name="alignment" > … … 3582 3585 </property> 3583 3586 <property name="maximum" > 3584 <number> 255</number>3587 <number>127</number> 3585 3588 </property> 3586 3589 <property name="singleStep" > 3587 <number> 2</number>3590 <number>1</number> 3588 3591 </property> 3589 3592 <property name="pageStep" > … … 3834 3837 <widget class="QLabel" name="txtOMixIMixO10" > 3835 3838 <property name="text" > 3836 <string>IMix L</string>3839 <string>IMixR</string> 3837 3840 </property> 3838 3841 <property name="alignment" > trunk/libffado/support/mixer-qt4/mixer_saffirepro_small.ui
r1298 r1435 43 43 <item row="0" column="0" > 44 44 <widget class="QTabWidget" name="tabWidget14" > 45 <property name="currentIndex" > 46 <number>4</number> 47 </property> 45 48 <widget class="QWidget" name="tab" > 46 49 <attribute name="title" > … … 204 207 <widget class="QLabel" name="txtOMixIMixO2" > 205 208 <property name="text" > 206 <string>IMix L</string>209 <string>IMixR</string> 207 210 </property> 208 211 <property name="alignment" > … … 307 310 </property> 308 311 <property name="maximum" > 309 <number> 255</number>312 <number>127</number> 310 313 </property> 311 314 <property name="singleStep" > 312 <number> 2</number>315 <number>1</number> 313 316 </property> 314 317 <property name="pageStep" > … … 585 588 <widget class="QLabel" name="txtOMixIMixO4" > 586 589 <property name="text" > 587 <string>IMix L</string>590 <string>IMixR</string> 588 591 </property> 589 592 <property name="alignment" > … … 660 663 </property> 661 664 <property name="maximum" > 662 <number> 255</number>665 <number>127</number> 663 666 </property> 664 667 <property name="singleStep" > 665 <number> 2</number>668 <number>1</number> 666 669 </property> 667 670 <property name="pageStep" > … … 925 928 <widget class="QLabel" name="txtOMixIMixO6" > 926 929 <property name="text" > 927 <string>IMix L</string>930 <string>IMixR</string> 928 931 </property> 929 932 <property name="alignment" > … … 1022 1025 </property> 1023 1026 <property name="maximum" > 1024 <number> 255</number>1027 <number>127</number> 1025 1028 </property> 1026 1029 <property name="singleStep" > 1027 <number> 2</number>1030 <number>1</number> 1028 1031 </property> 1029 1032 <property name="pageStep" > … … 1252 1255 <widget class="QLabel" name="txtOMixIMixO8" > 1253 1256 <property name="text" > 1254 <string>IMix L</string>1257 <string>IMixR</string> 1255 1258 </property> 1256 1259 <property name="alignment" > … … 1384 1387 </property> 1385 1388 <property name="maximum" > 1386 <number> 255</number>1389 <number>127</number> 1387 1390 </property> 1388 1391 <property name="singleStep" > 1389 <number> 2</number>1392 <number>1</number> 1390 1393 </property> 1391 1394 <property name="pageStep" > … … 1636 1639 <widget class="QLabel" name="txtOMixIMixO10" > 1637 1640 <property name="text" > 1638 <string>IMix L</string>1641 <string>IMixR</string> 1639 1642 </property> 1640 1643 <property name="alignment" > trunk/libffado/support/mixer-qt4/mixer_saffire_base.py
r1298 r1435 23 23 from PyQt4.QtCore import SIGNAL, SLOT, QObject 24 24 25 import logging 26 log = logging.getLogger('saffirebase') 27 25 28 # the class that holds all actual control code 26 29 class SaffireMixerBase: … … 30 33 def updateMatrixVolume(self,a0): 31 34 sender = self.sender() 32 #vol = 0x7FFF-a033 35 vol = a0 34 print"set %s %d %d to %d" % (36 log.debug("set %s %d %d to %d" % ( 35 37 self.VolumeControls[sender][0], 36 38 self.VolumeControls[sender][1], 37 39 self.VolumeControls[sender][2], 38 vol) 40 vol)) 39 41 self.hw.setMatrixMixerValue(self.VolumeControls[sender][0], 40 42 self.VolumeControls[sender][1], … … 43 45 def updateLowResVolume(self,a0): 44 46 sender = self.sender() 45 vol = a046 print"set %s to %d" % (47 vol = 127 - a0 48 log.debug("set %s to %d" % ( 47 49 self.VolumeControlsLowRes[sender][0], 48 vol) 50 vol)) 49 51 self.hw.setDiscrete(self.VolumeControlsLowRes[sender][0], vol) 50 52 … … 55 57 else: 56 58 state = 0 57 print"set %s to %d" % (59 log.debug("set %s to %d" % ( 58 60 self.SelectorControls[sender][0], 59 state) 61 state)) 60 62 self.hw.setDiscrete(self.SelectorControls[sender][0], state) 61 63 … … 64 66 linked = self.SelectorControls[sender][1] 65 67 for ctl in linked: 66 if ctl. state():68 if ctl.isChecked(): 67 69 state = 1 68 70 else: … … 72 74 def triggerButton(self): 73 75 sender = self.sender() 74 print"trigger %s" % (75 self.TriggerButtonControls[sender][0]) 76 log.debug("trigger %s" % ( 77 self.TriggerButtonControls[sender][0])) 76 78 self.hw.setDiscrete(self.TriggerButtonControls[sender][0], 1) 77 79 … … 79 81 sender = self.sender() 80 82 textbox = self.saveTextControls[sender][0] 81 print"save %s" % (82 textbox.text().ascii()) 83 log.debug("save %s" % ( 84 textbox.text().ascii())) 83 85 self.hw.setText(self.TextControls[textbox][0], textbox.text().ascii()) 84 86 … … 100 102 for ctrl, info in self.VolumeControls.iteritems(): 101 103 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)) 106 107 ctrl.setValue(vol) 107 108 for ctrl, info in self.VolumeControlsLowRes.iteritems(): 108 109 vol = self.hw.getDiscrete(self.VolumeControlsLowRes[ctrl][0]) 109 110 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) 112 113 113 114 for ctrl, info in self.SelectorControls.iteritems(): 114 115 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)) 116 117 if state: 117 118 ctrl.setChecked(True) … … 124 125 for ctrl, info in self.TextControls.iteritems(): 125 126 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)) 127 128 ctrl.setText(text) 128 129 … … 130 131 self.initCombo(ctrl) 131 132 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) 136 136 ctrl.setValue(vol) 137 137 trunk/libffado/support/mixer-qt4/mixer_saffire_mono.ui
r1298 r1435 77 77 </property> 78 78 <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> 83 83 </property> 84 84 <property name="pageStep" > … … 645 645 </property> 646 646 <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> 651 651 </property> 652 652 <property name="pageStep" > … … 1224 1224 </property> 1225 1225 <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> 1230 1230 </property> 1231 1231 <property name="pageStep" > … … 1779 1779 </property> 1780 1780 <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> 1785 1785 </property> 1786 1786 <property name="pageStep" > trunk/libffado/support/mixer-qt4/mixer_saffire_stereo.ui
r1298 r1435 41 41 <item> 42 42 <widget class="QTabWidget" name="tabWidget4" > 43 <property name="currentIndex" > 44 <number>0</number> 45 </property> 43 46 <widget class="QWidget" name="tab" > 44 47 <attribute name="title" > … … 74 77 </property> 75 78 <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> 80 83 </property> 81 84 <property name="pageStep" > … … 525 528 </property> 526 529 <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> 531 534 </property> 532 535 <property name="pageStep" > … … 987 990 </property> 988 991 <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> 993 996 </property> 994 997 <property name="pageStep" > … … 1425 1428 </property> 1426 1429 <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> 1431 1434 </property> 1432 1435 <property name="pageStep" > … … 2311 2314 <layoutdefault spacing="6" margin="11" /> 2312 2315 <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> 2313 <customwidgets>2314 </customwidgets>2315 2316 <resources/> 2316 2317 <connections/> trunk/libffado/support/mixer-qt4/SConscript
r1336 r1435 30 30 e = env.Clone() 31 31 e['MIXERGUIS'] = [ 32 #'phase24', 'phase88', 32 'phase24', 33 'phase88', 33 34 'saffire_mono', 'saffire_stereo', 34 35 'saffirepro_large', 'saffirepro_small', 35 36 'saffirele_large', 'saffirele_small', 36 37 'audiofire_strip', 'audiofire_settings', 37 #'bcoaudio5', 'edirolfa66', 38 #'mackie_generic', 'quatafire', 'motu', 38 'bcoaudio5', 39 'edirolfa101', 'edirolfa66', 40 'quatafire', 41 'mackie_onyxmixer', 42 'motu', 39 43 'global', 'dummy' 40 44 ] 41 45 e['MIXERAPPS'] = [ 42 #'phase24', 'phase88', 46 'phase24', 47 'phase88', 43 48 'saffire', 44 49 'saffirepro', 45 50 'audiofire', 46 #'bcoaudio5', 'edirolfa66', 47 #'mackie_generic', 'quatafire', 'motu', 51 'bcoaudio5', 52 'edirolfa101', 'edirolfa66', 53 'quatafire', 54 'mackie_onyxmixer', 55 'motu', 48 56 'global', 'dummy' 49 57 ] … … 53 61 'ffado_regdialog', 54 62 'ffado_panelmanager', 63 'ffado_configuration', 55 64 'mixer_saffire_base' 56 65 ] … … 84 93 e.Install( "$pythondir", "ffadomixer_config.py" ) 85 94 86 e.ScanReplace( "ffado mixer.in" )87 e.Depends( "ffado mixer", "#/config.h" )88 e.Depends( "ffado mixer", "SConscript" )89 e.Install( "$bindir", "ffado mixer" )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" ) 90 99 100 e.Install( "$sharedir/icons", "../xdg/hi64-apps-ffado.png" )