Changeset 1415

Show
Ignore:
Timestamp:
11/02/08 14:11:22 (12 years ago)
Author:
arnonym
Message:

Quite some stuff:

  • add a simple python-parser for the format of the configuration-file already used by ffado
  • add the names of the mixers to be used to the configuration-file
  • port the PanelManager? to QMainWindow and introduce a menu and a statusbar
  • set the icon of the application to the beautiful ffado-icon

TODO for the next time:

  • overwrite the global config with the local config in PanelManager?
  • "About FFADO" in the help-menu
  • maybe also move the names of the mixers python-files into the configuration and load them only on demand. And then use this info also in the SConscript :-)
  • also add menu-items to recheck the status of the mixer and maybe even the ability to trigger a bus-reset from gui. But that would need ppalmers to implement that action in the dbus-server.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/libffado-2.0/configuration

    r1299 r1415  
    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); 
  • branches/libffado-2.0/support/mixer-qt4/ffado-mixer.in

    r1394 r1415  
    3232sys.path.append( "$PYTHONDIR" ) 
    3333 
    34 from ffadomixer_config import POLL_SLEEP_TIME_MSEC, FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH 
     34from ffadomixer_config import * #POLL_SLEEP_TIME_MSEC, FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH 
    3535 
    3636import os 
     
    3838 
    3939from PyQt4.QtCore import SIGNAL, SLOT, QObject, QTimer 
    40 from PyQt4.QtGui import QApplication, QMessageBox 
     40from PyQt4.QtGui import QApplication, QMessageBox, QIcon 
    4141 
    4242from ffado_dbus_util import * 
     
    4949    logging.basicConfig() 
    5050 
    51     if $DEBUG: 
     51    if DEBUG: 
    5252        debug_level = logging.DEBUG 
    5353    else: 
     
    7676 
    7777    app = QApplication(sys.argv) 
     78    app.setWindowIcon( QIcon( SHAREDIR + "/icons/hi64-apps-ffado.png" ) ) 
    7879 
    7980    msg = QMessageBox() 
  • branches/libffado-2.0/support/mixer-qt4/ffadomixer_config.py.in

    r1298 r1415  
    1010 
    1111POLL_SLEEP_TIME_MSEC = 100 # 100ms 
     12 
     13PYTHONDIR = "$PYTHONDIR" 
     14SHAREDIR = "$SHAREDIR" 
     15 
     16DEBUG = $DEBUG 
  • branches/libffado-2.0/support/mixer-qt4/ffado_panelmanager.py

    r1387 r1415  
    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 
    2728from PyQt4.QtCore import QTimer 
    2829 
     
    3132from ffado_dbus_util import * 
    3233from ffado_registration import * 
     34 
     35from ffado_configuration import DeviceList 
    3336 
    3437from mixer_phase88 import * 
     
    6063    use_generic = True 
    6164 
    62 SupportedDevices=[ 
    63     [(0x000aac, 0x00000003),'Phase88Control'], 
    64     [(0x000aac, 0x00000004),'Phase24Control'], 
    65     [(0x000aac, 0x00000007),'Phase24Control'], 
    66     [(0x00130e, 0x00000003),'SaffireProMixer'], 
    67     [(0x00130e, 0x00000006),'SaffireProMixer'], 
    68     [(0x00130e, 0x00000000),'SaffireMixer'], 
    69     [(0x001486, 0x00000af2),'AudioFireMixer'], 
    70     [(0x001486, 0x00000af4),'AudioFireMixer'], 
    71     [(0x001486, 0x00000af8),'AudioFireMixer'], 
    72     [(0x001486, 0x0000af12),'AudioFireMixer'], 
    73     [(0x0007f5, 0x00010049),'BCoAudio5Control'], 
    74     [(0x0040AB, 0x00010049),'EdirolFa66Control'], 
    75     [(0x0040AB, 0x00010048),'EdirolFa101Control'], 
    76     [(0x00000f, 0x00010067),'MackieOnyxMixer'], 
    77     [(0x000f1b, 0x00010064),'QuataFireMixer'], 
    78     [(0x0001f2, 0x00000000),'MotuMixer'], 
    79     ] 
    80  
    8165# pseudo-guid 
    8266GUID_GENERIC_MIXER = 0 
     
    9579        self.setupUi(self) 
    9680 
    97 class PanelManager(QWidget): 
     81class PanelManager(QMainWindow): 
    9882    def __init__(self, parent, devmgr): 
    99         QWidget.__init__(self, parent) 
     83        QMainWindow.__init__(self, parent) 
    10084        self.devmgr = devmgr 
    10185        self.devmgr.registerPreUpdateCallback(self.devlistPreUpdate) 
     
    10488        self.devmgr.registerDestroyedCallback(self.devmgrDestroyed) 
    10589 
     90        filemenu = self.menuBar().addMenu( "File" ) 
     91        quitaction = QAction( "Quit", self ) 
     92        quitaction.setShortcut( self.tr("Ctrl+q") ) 
     93        self.connect( quitaction, SIGNAL( "triggered()" ), self, SLOT( "close()" ) ) 
     94        filemenu.addAction( quitaction ) 
     95        helpmenu = self.menuBar().addMenu( "Help" ) 
     96        aboutqtaction = QAction( "About Qt", self ) 
     97        self.connect( aboutqtaction, SIGNAL( "triggered()" ), qApp, SLOT( "aboutQt()" ) ) 
     98        helpmenu.addAction( aboutqtaction ) 
     99 
     100        self.statusBar().showMessage( "Initializing...", 5000 ) 
     101 
    106102        # maps a device GUID to a QT panel 
    107103        self.panels = {} 
    108104 
    109105        # a layout for ourselves 
    110         self.layout = QVBoxLayout( self ) 
     106        mw = QWidget( self ) 
     107        self.layout = QVBoxLayout( mw ) 
     108        self.setCentralWidget( mw ) 
    111109 
    112110        # the tabs 
    113         self.tabs = QTabWidget(self
     111        self.tabs = QTabWidget(mw
    114112        self.tabs.hide() 
    115113        self.layout.addWidget(self.tabs) 
    116114 
    117115        # a dialog that is shown during update 
    118         self.status = PanelManagerStatus(self
     116        self.status = PanelManagerStatus(mw
    119117        self.status.lblMessage.setText("Initializing...") 
    120118        self.layout.addWidget(self.status) 
     
    126124        self.alivetimer.start( 2000 ) 
    127125 
     126        self.devices = DeviceList( "%s/configuration" % SHAREDIR ) 
     127 
    128128    def count(self): 
    129129        return self.tabs.count() 
    130130 
    131131    def pollPanels(self): 
     132        log.debug("PanelManager::pollPanels()") 
    132133        # only when not modifying the tabs 
    133134        if self.tabs.isEnabled(): 
     
    149150        self.status.lblMessage.setText("Bus reconfiguration in progress, please wait...") 
    150151        self.status.show() 
     152        self.statusBar().showMessage("bus reconfiguration in progress...", 5000) 
    151153 
    152154    def devlistPostUpdate(self): 
     
    200202 
    201203    def updatePanels(self): 
     204        log.debug("PanelManager::updatePanels()") 
    202205        nbDevices = self.devmgr.getNbDevices() 
     206        self.statusBar().showMessage("Reconfiguring the mixer panels...") 
    203207 
    204208        # list of panels present 
     
    263267            reg.check_for_registration() 
    264268 
    265             thisdev = (vendorId, modelId); 
    266269            # The MOTU devices use unitVersion to differentiate models.  For the 
    267270            # moment thought we don't need to know precisely which model we're 
    268271            # using. 
    269272            if vendorId == 0x1f2: 
    270                 thisdev = (vendorId, 0x00000000) 
    271  
    272             dev = None 
    273             for d in SupportedDevices: 
    274                 if d[0] == thisdev: 
    275                     dev = d 
     273                modelId = 0x00000000 
     274 
     275            dev = self.devices.getDeviceById( vendorId, modelId ) 
    276276 
    277277            w = QWidget( ) 
     
    304304            # Specific (or dummy) mixer widgets get loaded in the following 
    305305            # 
    306             if dev != None: 
    307                 mixerapp = dev[1
     306            if 'mixer' in dev and dev['mixer'] != None: 
     307                mixerapp = dev['mixer'
    308308                exec( "mixerwidget = "+mixerapp+"( w )" ) 
    309309            else: 
     
    339339            self.status.lblMessage.setText("No supported device found.") 
    340340            self.status.show() 
     341            self.statusBar().showMessage("No supported device found.", 5000) 
    341342        else: 
    342343            self.tabs.show() 
    343344            self.tabs.setEnabled(True) 
    344345            self.status.hide() 
     346            self.statusBar().showMessage("Configured the mixer for %i devices." % self.tabs.count()) 
    345347            if use_generic: 
    346348                # 
  • branches/libffado-2.0/support/mixer-qt4/SConscript

    r1394 r1415  
    6161                      'ffado_regdialog', 
    6262                      'ffado_panelmanager', 
     63                      'ffado_configuration', 
    6364                      'mixer_saffire_base' 
    6465                     ] 
     
    9798    e.Install( "$bindir", "ffado-mixer" ) 
    9899 
     100    e.Install( "$sharedir/icons", "../xdg/hi64-apps-ffado.png" )