def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages", self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.connect(self.manager, SIGNAL("connectionLost"), self.connectToDBUS) filemenu = self.menuBar().addMenu("File") self.openaction = QAction("Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.connect(self.openaction, SIGNAL("triggered()"), self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction("Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.connect(self.saveaction, SIGNAL("triggered()"), self.manager.saveSettings) filemenu.addAction(self.saveaction) quitaction = QAction("Quit", self) quitaction.setShortcut(self.tr("Ctrl+q")) self.connect(quitaction, SIGNAL("triggered()"), self, SLOT("close()")) filemenu.addAction(quitaction) editmenu = self.menuBar().addMenu("Edit") self.updateaction = QAction("Update Mixer Panels", self) self.updateaction.setEnabled(False) self.connect(self.updateaction, SIGNAL("triggered()"), self.manager.updatePanels) editmenu.addAction(self.updateaction) refreshaction = QAction("Refresh Current Panels", self) self.connect(refreshaction, SIGNAL("triggered()"), self.manager.refreshPanels) editmenu.addAction(refreshaction) helpmenu = self.menuBar().addMenu("Help") aboutaction = QAction("About FFADO", self) self.connect(aboutaction, SIGNAL("triggered()"), self.aboutFFADO) helpmenu.addAction(aboutaction) aboutqtaction = QAction("About Qt", self) self.connect(aboutqtaction, SIGNAL("triggered()"), qApp, SLOT("aboutQt()")) helpmenu.addAction(aboutqtaction) log.info("Starting up") QTimer.singleShot(1, self.tryStartDBUSServer)
def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages",self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.manager.connectionLost.connect(self.connectToDBUS) filemenu = self.menuBar().addMenu("&File") self.openaction = QAction(QIcon.fromTheme("document-open"),"&Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.openaction.triggered.connect(self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction(QIcon.fromTheme("document-save-as"),"&Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.saveaction.triggered.connect(self.manager.saveSettings) filemenu.addAction(self.saveaction) self.quitaction = QAction(QIcon.fromTheme("application-exit"),"&Quit", self) self.quitaction.setShortcut(self.tr("Ctrl+q")) self.quitaction.triggered.connect(self.close) filemenu.addAction(self.quitaction) self.editmenu = self.menuBar().addMenu("&Edit") self.updateaction = QAction(QIcon.fromTheme("view-refresh"),"&Update Mixer Panels", self) self.updateaction.setEnabled(False) self.updateaction.triggered.connect(self.manager.updatePanels) self.editmenu.addAction(self.updateaction) self.refreshaction = QAction(QIcon.fromTheme("view-refresh"),"&Refresh Current Panels", self) self.refreshaction.triggered.connect(self.manager.refreshPanels) self.editmenu.addAction(self.refreshaction) helpmenu = self.menuBar().addMenu( "&Help" ) self.aboutaction = QAction(QIcon.fromTheme("help-about"), "About &FFADO", self ) self.aboutaction.triggered.connect(self.aboutFFADO) helpmenu.addAction( self.aboutaction ) self.aboutqtaction = QAction(QIcon.fromTheme("help-about"), "About &Qt", self ) self.aboutqtaction.triggered.connect(QApplication.instance().aboutQt) helpmenu.addAction( self.aboutqtaction ) log.info( "Starting up" ) QTimer.singleShot( 1, self.tryStartDBUSServer )
def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages",self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.connect(self.manager, SIGNAL("connectionLost"), self.connectToDBUS) filemenu = self.menuBar().addMenu("File") quitaction = QAction("Quit", self) quitaction.setShortcut(self.tr("Ctrl+q")) self.connect(quitaction, SIGNAL("triggered()"), self, SLOT("close()")) filemenu.addAction(quitaction) editmenu = self.menuBar().addMenu("Edit") self.updateaction = QAction("Update Mixer Panels", self) self.updateaction.setEnabled(False) self.connect(self.updateaction, SIGNAL("triggered()"), self.manager.updatePanels) editmenu.addAction(self.updateaction) refreshaction = QAction("Refresh Current Panels", self) self.connect(refreshaction, SIGNAL("triggered()"), self.manager.refreshPanels) editmenu.addAction(refreshaction) helpmenu = self.menuBar().addMenu( "Help" ) aboutaction = QAction( "About FFADO", self ) self.connect( aboutaction, SIGNAL( "triggered()" ), self.aboutFFADO ) helpmenu.addAction( aboutaction ) aboutqtaction = QAction( "About Qt", self ) self.connect( aboutqtaction, SIGNAL( "triggered()" ), qApp, SLOT( "aboutQt()" ) ) helpmenu.addAction( aboutqtaction ) log.info( "Starting up" ) QTimer.singleShot( 1, self.tryStartDBUSServer )
class FFADOWindow(QMainWindow): def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages", self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.connect(self.manager, SIGNAL("connectionLost"), self.connectToDBUS) filemenu = self.menuBar().addMenu("File") self.openaction = QAction("Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.connect(self.openaction, SIGNAL("triggered()"), self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction("Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.connect(self.saveaction, SIGNAL("triggered()"), self.manager.saveSettings) filemenu.addAction(self.saveaction) quitaction = QAction("Quit", self) quitaction.setShortcut(self.tr("Ctrl+q")) self.connect(quitaction, SIGNAL("triggered()"), self, SLOT("close()")) filemenu.addAction(quitaction) editmenu = self.menuBar().addMenu("Edit") self.updateaction = QAction("Update Mixer Panels", self) self.updateaction.setEnabled(False) self.connect(self.updateaction, SIGNAL("triggered()"), self.manager.updatePanels) editmenu.addAction(self.updateaction) refreshaction = QAction("Refresh Current Panels", self) self.connect(refreshaction, SIGNAL("triggered()"), self.manager.refreshPanels) editmenu.addAction(refreshaction) helpmenu = self.menuBar().addMenu("Help") aboutaction = QAction("About FFADO", self) self.connect(aboutaction, SIGNAL("triggered()"), self.aboutFFADO) helpmenu.addAction(aboutaction) aboutqtaction = QAction("About Qt", self) self.connect(aboutqtaction, SIGNAL("triggered()"), qApp, SLOT("aboutQt()")) helpmenu.addAction(aboutqtaction) log.info("Starting up") QTimer.singleShot(1, self.tryStartDBUSServer) def __del__(self): log.info("__del__") del self.manager log.info("__del__ finished") def closeEvent(self, event): log.info("closeEvent()") event.accept() def connectToDBUS(self): log.info("connectToDBUS") try: self.setupDeviceManager() except dbus.DBusException, ex: log.error("Could not communicate with the FFADO DBus service...") if not hasattr(self, "retry"): self.retry = StartDialog(self) self.connect(self.retry.button, SIGNAL("clicked()"), self.tryStartDBUSServer) if hasattr(self, "retry"): self.manager.setParent(None) self.setCentralWidget(self.retry) self.retry.setEnabled(True)
def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages",self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.manager.connectionLost.connect(self.connectToDBUS) filemenu = self.menuBar().addMenu("&File") self.openaction = QAction(QIcon.fromTheme("document-open"),"&Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.openaction.triggered.connect(self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction(QIcon.fromTheme("document-save-as"),"&Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.saveaction.triggered.connect(self.manager.saveSettings) filemenu.addAction(self.saveaction) self.quitaction = QAction(QIcon.fromTheme("application-exit"),"&Quit", self) self.quitaction.setShortcut(self.tr("Ctrl+q")) self.quitaction.triggered.connect(self.close) filemenu.addAction(self.quitaction) self.editmenu = self.menuBar().addMenu("&View") self.thememenu = self.editmenu.addMenu("Theme") themes = QStyleFactory.keys() self.menuTheme = {} for theme in themes: self.menuTheme[theme] = QAction(QIcon.fromTheme("preferences-desktop-theme"), theme, self ) self.menuTheme[theme].setCheckable(True) if (ffado_python3 and (self.style().objectName().lower() == theme.lower()) or not(ffado_python3) and (self.style().objectName().toLower() == theme.toLower() if ffado_pyqt_version == 4 else self.style().objectName().lower() == theme.lower())): self.menuTheme[theme].setDisabled(True) self.menuTheme[theme].setChecked(True) self.menuTheme[theme].triggered.connect(self.switchTheme ) self.thememenu.addAction( self.menuTheme[theme] ) self.updateaction = QAction(QIcon.fromTheme("view-refresh"),"&Update Mixer Panels", self) self.updateaction.setEnabled(False) self.updateaction.triggered.connect(self.manager.updatePanels) self.editmenu.addAction(self.updateaction) self.refreshaction = QAction(QIcon.fromTheme("view-refresh"),"&Refresh Current Panels", self) self.refreshaction.triggered.connect(self.manager.refreshPanels) self.editmenu.addAction(self.refreshaction) self.editmenu.addSeparator() self.devices = {} helpmenu = self.menuBar().addMenu( "&Help" ) self.aboutaction = QAction(QIcon.fromTheme("help-about"), "About &FFADO", self ) self.aboutaction.triggered.connect(self.aboutFFADO) helpmenu.addAction( self.aboutaction ) self.aboutqtaction = QAction(QIcon.fromTheme("help-about"), "About &Qt", self ) self.aboutqtaction.triggered.connect(QApplication.instance().aboutQt) helpmenu.addAction( self.aboutqtaction ) log.info( "Starting up" ) QTimer.singleShot( 1, self.tryStartDBUSServer )
class FFADOWindow(QMainWindow): def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages",self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.manager.connectionLost.connect(self.connectToDBUS) filemenu = self.menuBar().addMenu("&File") self.openaction = QAction(QIcon.fromTheme("document-open"),"&Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.openaction.triggered.connect(self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction(QIcon.fromTheme("document-save-as"),"&Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.saveaction.triggered.connect(self.manager.saveSettings) filemenu.addAction(self.saveaction) self.quitaction = QAction(QIcon.fromTheme("application-exit"),"&Quit", self) self.quitaction.setShortcut(self.tr("Ctrl+q")) self.quitaction.triggered.connect(self.close) filemenu.addAction(self.quitaction) self.editmenu = self.menuBar().addMenu("&View") self.thememenu = self.editmenu.addMenu("Theme") themes = QStyleFactory.keys() self.menuTheme = {} for theme in themes: self.menuTheme[theme] = QAction(QIcon.fromTheme("preferences-desktop-theme"), theme, self ) self.menuTheme[theme].setCheckable(True) if (ffado_python3 and (self.style().objectName().lower() == theme.lower()) or not(ffado_python3) and (self.style().objectName().toLower() == theme.toLower() if ffado_pyqt_version == 4 else self.style().objectName().lower() == theme.lower())): self.menuTheme[theme].setDisabled(True) self.menuTheme[theme].setChecked(True) self.menuTheme[theme].triggered.connect(self.switchTheme ) self.thememenu.addAction( self.menuTheme[theme] ) self.updateaction = QAction(QIcon.fromTheme("view-refresh"),"&Update Mixer Panels", self) self.updateaction.setEnabled(False) self.updateaction.triggered.connect(self.manager.updatePanels) self.editmenu.addAction(self.updateaction) self.refreshaction = QAction(QIcon.fromTheme("view-refresh"),"&Refresh Current Panels", self) self.refreshaction.triggered.connect(self.manager.refreshPanels) self.editmenu.addAction(self.refreshaction) self.editmenu.addSeparator() self.devices = {} helpmenu = self.menuBar().addMenu( "&Help" ) self.aboutaction = QAction(QIcon.fromTheme("help-about"), "About &FFADO", self ) self.aboutaction.triggered.connect(self.aboutFFADO) helpmenu.addAction( self.aboutaction ) self.aboutqtaction = QAction(QIcon.fromTheme("help-about"), "About &Qt", self ) self.aboutqtaction.triggered.connect(QApplication.instance().aboutQt) helpmenu.addAction( self.aboutqtaction ) log.info( "Starting up" ) QTimer.singleShot( 1, self.tryStartDBUSServer ) def __del__(self): log.info("__del__") del self.manager log.info("__del__ finished") def switchTheme(self, checked) : for theme in self.menuTheme : if not self.menuTheme[theme].isEnabled() : self.menuTheme[theme].setChecked(False) self.menuTheme[theme].setDisabled(False) for theme in self.menuTheme : if self.menuTheme[theme].isChecked() : self.menuTheme[theme].setDisabled(True) QApplication.setStyle(QStyleFactory.create(theme)) def closeEvent(self, event): log.info("closeEvent()") event.accept() def connectToDBUS(self): log.info("connectToDBUS") try: self.setupDeviceManager() except dbus.DBusException as ex: log.error("Could not communicate with the FFADO DBus service...") if not hasattr(self,"retry"): self.retry = StartDialog(self) self.retry.button.clicked.connect(self.tryStartDBUSServer) if hasattr(self, "retry"): self.manager.setParent(None) self.setCentralWidget(self.retry) self.retry.setEnabled(True) def tryStartDBUSServer(self): try: self.setupDeviceManager() except dbus.DBusException as ex: if hasattr(self, "retry"): self.retry.setEnabled(False) subprocess.Popen(['ffado-dbus-server', '-v3']).pid QTimer.singleShot(5000, self.connectToDBUS) def setupDeviceManager(self): devmgr = DeviceManagerInterface(FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH) self.manager.setManager(devmgr) if hasattr(self, "retry"): self.retry.setParent(None) self.setCentralWidget(self.manager) self.updateaction.setEnabled(True) def aboutFFADO(self): QMessageBox.about( self, "About FFADO", """ <h1>ffado.org</h1> <p>{ffado_version}</p> <p>FFADO is the new approach to have firewire audio on linux.</p> <p>© 2006-2018 by the FFADO developers<br />ffado is licensed under the GPLv3, for the full license text see <a href="http://www.gnu.org/licenses/">www.gnu.org/licenses</a> or the LICENSE.* files shipped with ffado.</p> <p>FFADO developers are:<ul> <li>Pieter Palmers <li>Daniel Wagner <li>Jonathan Woithe <li>Arnold Krille <li>Philippe Carriere <li>Takashi Sakamoto </ul> with contributions from:<ul> <li>Adrian Knoth <li>Stefan Richter <li>Jano Svitok </ul> """.format(ffado_version=get_ffado_version(), thisyear=datetime.datetime.now().year))
class FFADOWindow(QMainWindow): def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages",self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.connect(self.manager, SIGNAL("connectionLost"), self.connectToDBUS) filemenu = self.menuBar().addMenu("File") quitaction = QAction("Quit", self) quitaction.setShortcut(self.tr("Ctrl+q")) self.connect(quitaction, SIGNAL("triggered()"), self, SLOT("close()")) filemenu.addAction(quitaction) editmenu = self.menuBar().addMenu("Edit") self.updateaction = QAction("Update Mixer Panels", self) self.updateaction.setEnabled(False) self.connect(self.updateaction, SIGNAL("triggered()"), self.manager.updatePanels) editmenu.addAction(self.updateaction) refreshaction = QAction("Refresh Current Panels", self) self.connect(refreshaction, SIGNAL("triggered()"), self.manager.refreshPanels) editmenu.addAction(refreshaction) helpmenu = self.menuBar().addMenu( "Help" ) aboutaction = QAction( "About FFADO", self ) self.connect( aboutaction, SIGNAL( "triggered()" ), self.aboutFFADO ) helpmenu.addAction( aboutaction ) aboutqtaction = QAction( "About Qt", self ) self.connect( aboutqtaction, SIGNAL( "triggered()" ), qApp, SLOT( "aboutQt()" ) ) helpmenu.addAction( aboutqtaction ) log.info( "Starting up" ) QTimer.singleShot( 1, self.tryStartDBUSServer ) def __del__(self): log.info("__del__") del self.manager log.info("__del__ finished") def closeEvent(self, event): log.info("closeEvent()") event.accept() def connectToDBUS(self): log.info("connectToDBUS") try: self.setupDeviceManager() except dbus.DBusException, ex: log.error("Could not communicate with the FFADO DBus service...") if not hasattr(self,"retry"): self.retry = StartDialog(self) self.connect(self.retry.button, SIGNAL("clicked()"), self.tryStartDBUSServer) if hasattr(self, "retry"): self.manager.setParent(None) self.setCentralWidget(self.retry) self.retry.setEnabled(True)
class FFADOWindow(QMainWindow): def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages",self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.manager.connectionLost.connect(self.connectToDBUS) filemenu = self.menuBar().addMenu("&File") self.openaction = QAction(QIcon.fromTheme("document-open"),"&Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.openaction.triggered.connect(self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction(QIcon.fromTheme("document-save-as"),"&Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.saveaction.triggered.connect(self.manager.saveSettings) filemenu.addAction(self.saveaction) self.quitaction = QAction(QIcon.fromTheme("application-exit"),"&Quit", self) self.quitaction.setShortcut(self.tr("Ctrl+q")) self.quitaction.triggered.connect(self.close) filemenu.addAction(self.quitaction) self.editmenu = self.menuBar().addMenu("&Edit") self.updateaction = QAction(QIcon.fromTheme("view-refresh"),"&Update Mixer Panels", self) self.updateaction.setEnabled(False) self.updateaction.triggered.connect(self.manager.updatePanels) self.editmenu.addAction(self.updateaction) self.refreshaction = QAction(QIcon.fromTheme("view-refresh"),"&Refresh Current Panels", self) self.refreshaction.triggered.connect(self.manager.refreshPanels) self.editmenu.addAction(self.refreshaction) helpmenu = self.menuBar().addMenu( "&Help" ) self.aboutaction = QAction(QIcon.fromTheme("help-about"), "About &FFADO", self ) self.aboutaction.triggered.connect(self.aboutFFADO) helpmenu.addAction( self.aboutaction ) self.aboutqtaction = QAction(QIcon.fromTheme("help-about"), "About &Qt", self ) self.aboutqtaction.triggered.connect(QApplication.instance().aboutQt) helpmenu.addAction( self.aboutqtaction ) log.info( "Starting up" ) QTimer.singleShot( 1, self.tryStartDBUSServer ) def __del__(self): log.info("__del__") del self.manager log.info("__del__ finished") def closeEvent(self, event): log.info("closeEvent()") event.accept() def connectToDBUS(self): log.info("connectToDBUS") try: self.setupDeviceManager() except dbus.DBusException, ex: log.error("Could not communicate with the FFADO DBus service...") if not hasattr(self,"retry"): self.retry = StartDialog(self) self.retry.button.clicked.connect(self.tryStartDBUSServer) if hasattr(self, "retry"): self.manager.setParent(None) self.setCentralWidget(self.retry) self.retry.setEnabled(True)
def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages", self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.manager.connectionLost.connect(self.connectToDBUS) filemenu = self.menuBar().addMenu("&File") self.openaction = QAction(QIcon.fromTheme("document-open"), "&Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.openaction.triggered.connect(self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction(QIcon.fromTheme("document-save-as"), "&Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.saveaction.triggered.connect(self.manager.saveSettings) filemenu.addAction(self.saveaction) self.quitaction = QAction(QIcon.fromTheme("application-exit"), "&Quit", self) self.quitaction.setShortcut(self.tr("Ctrl+q")) self.quitaction.triggered.connect(self.close) filemenu.addAction(self.quitaction) self.editmenu = self.menuBar().addMenu("&View") self.thememenu = self.editmenu.addMenu("Theme") themes = QStyleFactory.keys() self.menuTheme = {} for theme in themes: self.menuTheme[theme] = QAction( QIcon.fromTheme("preferences-desktop-theme"), theme, self) self.menuTheme[theme].setCheckable(True) if (ffado_python3 and (self.style().objectName().lower() == theme.lower()) or not (ffado_python3) and (self.style().objectName().toLower() == theme.toLower())): self.menuTheme[theme].setDisabled(True) self.menuTheme[theme].setChecked(True) self.menuTheme[theme].triggered.connect(self.switchTheme) self.thememenu.addAction(self.menuTheme[theme]) self.updateaction = QAction(QIcon.fromTheme("view-refresh"), "&Update Mixer Panels", self) self.updateaction.setEnabled(False) self.updateaction.triggered.connect(self.manager.updatePanels) self.editmenu.addAction(self.updateaction) self.refreshaction = QAction(QIcon.fromTheme("view-refresh"), "&Refresh Current Panels", self) self.refreshaction.triggered.connect(self.manager.refreshPanels) self.editmenu.addAction(self.refreshaction) self.editmenu.addSeparator() self.devices = {} helpmenu = self.menuBar().addMenu("&Help") self.aboutaction = QAction(QIcon.fromTheme("help-about"), "About &FFADO", self) self.aboutaction.triggered.connect(self.aboutFFADO) helpmenu.addAction(self.aboutaction) self.aboutqtaction = QAction(QIcon.fromTheme("help-about"), "About &Qt", self) self.aboutqtaction.triggered.connect(QApplication.instance().aboutQt) helpmenu.addAction(self.aboutqtaction) log.info("Starting up") QTimer.singleShot(1, self.tryStartDBUSServer)
class FFADOWindow(QMainWindow): def __init__(self, parent): QMainWindow.__init__(self, parent) self.textlogger = QTextLogger(self) dock = QDockWidget("Log Messages", self) dock.setWidget(self.textlogger.textedit) logging.getLogger('').addHandler(self.textlogger) self.addDockWidget(Qt.BottomDockWidgetArea, dock) self.statuslogger = QStatusLogger(self, self.statusBar(), 20) logging.getLogger('').addHandler(self.statuslogger) self.manager = PanelManager(self) self.manager.connectionLost.connect(self.connectToDBUS) filemenu = self.menuBar().addMenu("&File") self.openaction = QAction(QIcon.fromTheme("document-open"), "&Open", self) self.openaction.setShortcut(self.tr("Ctrl+O")) self.openaction.setEnabled(False) self.openaction.triggered.connect(self.manager.readSettings) filemenu.addAction(self.openaction) self.saveaction = QAction(QIcon.fromTheme("document-save-as"), "&Save as...", self) self.saveaction.setShortcut(self.tr("Ctrl+S")) self.saveaction.setEnabled(False) self.saveaction.triggered.connect(self.manager.saveSettings) filemenu.addAction(self.saveaction) self.quitaction = QAction(QIcon.fromTheme("application-exit"), "&Quit", self) self.quitaction.setShortcut(self.tr("Ctrl+q")) self.quitaction.triggered.connect(self.close) filemenu.addAction(self.quitaction) self.editmenu = self.menuBar().addMenu("&View") self.thememenu = self.editmenu.addMenu("Theme") themes = QStyleFactory.keys() self.menuTheme = {} for theme in themes: self.menuTheme[theme] = QAction( QIcon.fromTheme("preferences-desktop-theme"), theme, self) self.menuTheme[theme].setCheckable(True) if (ffado_python3 and (self.style().objectName().lower() == theme.lower()) or not (ffado_python3) and (self.style().objectName().toLower() == theme.toLower())): self.menuTheme[theme].setDisabled(True) self.menuTheme[theme].setChecked(True) self.menuTheme[theme].triggered.connect(self.switchTheme) self.thememenu.addAction(self.menuTheme[theme]) self.updateaction = QAction(QIcon.fromTheme("view-refresh"), "&Update Mixer Panels", self) self.updateaction.setEnabled(False) self.updateaction.triggered.connect(self.manager.updatePanels) self.editmenu.addAction(self.updateaction) self.refreshaction = QAction(QIcon.fromTheme("view-refresh"), "&Refresh Current Panels", self) self.refreshaction.triggered.connect(self.manager.refreshPanels) self.editmenu.addAction(self.refreshaction) self.editmenu.addSeparator() self.devices = {} helpmenu = self.menuBar().addMenu("&Help") self.aboutaction = QAction(QIcon.fromTheme("help-about"), "About &FFADO", self) self.aboutaction.triggered.connect(self.aboutFFADO) helpmenu.addAction(self.aboutaction) self.aboutqtaction = QAction(QIcon.fromTheme("help-about"), "About &Qt", self) self.aboutqtaction.triggered.connect(QApplication.instance().aboutQt) helpmenu.addAction(self.aboutqtaction) log.info("Starting up") QTimer.singleShot(1, self.tryStartDBUSServer) def __del__(self): log.info("__del__") del self.manager log.info("__del__ finished") def switchTheme(self, checked): for theme in self.menuTheme: if not self.menuTheme[theme].isEnabled(): self.menuTheme[theme].setChecked(False) self.menuTheme[theme].setDisabled(False) for theme in self.menuTheme: if self.menuTheme[theme].isChecked(): self.menuTheme[theme].setDisabled(True) QApplication.setStyle(QStyleFactory.create(theme)) def closeEvent(self, event): log.info("closeEvent()") event.accept() def connectToDBUS(self): log.info("connectToDBUS") try: self.setupDeviceManager() except dbus.DBusException as ex: log.error("Could not communicate with the FFADO DBus service...") if not hasattr(self, "retry"): self.retry = StartDialog(self) self.retry.button.clicked.connect(self.tryStartDBUSServer) if hasattr(self, "retry"): self.manager.setParent(None) self.setCentralWidget(self.retry) self.retry.setEnabled(True) def tryStartDBUSServer(self): try: self.setupDeviceManager() except dbus.DBusException as ex: if hasattr(self, "retry"): self.retry.setEnabled(False) subprocess.Popen(['ffado-dbus-server', '-v3']).pid QTimer.singleShot(5000, self.connectToDBUS) def setupDeviceManager(self): devmgr = DeviceManagerInterface(FFADO_DBUS_SERVER, FFADO_DBUS_BASEPATH) self.manager.setManager(devmgr) if hasattr(self, "retry"): self.retry.setParent(None) self.setCentralWidget(self.manager) self.updateaction.setEnabled(True) def aboutFFADO(self): QMessageBox.about( self, "About FFADO", """ <h1>ffado.org</h1> <p>FFADO is the new approach to have firewire audio on linux.</p> <p>© 2006-2014 by the FFADO developers<br />ffado is licensed under the GPLv3, for the full license text see <a href="http://www.gnu.org/licenses/">www.gnu.org/licenses</a> or the LICENSE.* files shipped with ffado.</p> <p>FFADO developers are:<ul> <li>Pieter Palmers <li>Daniel Wagner <li>Jonathan Woithe <li>Arnold Krille <li>Philippe Carriere <li>Takashi Sakamoto </ul> with contributions from:<ul> <li>Adrian Knoth <li>Stefan Richter <li>Jano Svitok </ul> """)