xberry / rpms / libffado

Forked from rpms/libffado 4 years ago
Clone
Blob Blame History Raw
diff -rupN libffado-2.4.0.org/support/mixer-qt4/ffado/ffadowindow.py libffado-2.4.0/support/mixer-qt4/ffado/ffadowindow.py
--- libffado-2.4.0.org/support/mixer-qt4/ffado/ffadowindow.py	2017-06-04 03:23:13.000000000 -0400
+++ libffado-2.4.0/support/mixer-qt4/ffado/ffadowindow.py	2018-01-05 20:27:25.394068104 -0500
@@ -22,6 +22,8 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
+import ctypes
+import datetime
 import os
 
 from ffado.config import *
@@ -92,7 +94,8 @@ class FFADOWindow(QMainWindow):
             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())):
+                    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 )
@@ -174,9 +177,11 @@ class FFADOWindow(QMainWindow):
         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>&copy; 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>&copy; 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
@@ -191,8 +196,17 @@ with contributions from:<ul>
 <li>Stefan Richter
 <li>Jano Svitok
 </ul>
-""" )
+        """.format(ffado_version=get_ffado_version(), thisyear=datetime.datetime.now().year))
 
+def get_ffado_version():
+    try:
+        # call the C function ffado_get_version() to figure out the version
+        lib = ctypes.cdll.LoadLibrary('libffado.so')
+        func = ctypes.CFUNCTYPE(ctypes.c_char_p)
+        ffado_get_version = func(('ffado_get_version', lib))
+        return ffado_get_version()
+    except:
+        return "libffado"
 
 def get_lock(process_name):
     import socket
@@ -252,6 +266,7 @@ def ffadomain(args):
     logging.getLogger('global').setLevel(debug_level)
 
     log = logging.getLogger('main')
+    log.debug("Using %s with Qt: %s PyQt: %s" % (get_ffado_version(), QtCore.QT_VERSION_STR, QtCore.PYQT_VERSION_STR))
 
     app = QApplication(args)
     app.setWindowIcon( QIcon( SHAREDIR + "/icons/hi64-apps-ffado.png" ) )
diff -rupN libffado-2.4.0.org/support/mixer-qt4/ffado/logginghandler.py libffado-2.4.0/support/mixer-qt4/ffado/logginghandler.py
--- libffado-2.4.0.org/support/mixer-qt4/ffado/logginghandler.py	2017-06-03 04:25:01.000000000 -0400
+++ libffado-2.4.0/support/mixer-qt4/ffado/logginghandler.py	2018-01-03 22:01:14.939141810 -0500
@@ -28,7 +28,7 @@ import logging
 log = logging.getLogger('logginghandler')
 
 class QStatusLogger( QObject, logging.Handler ):
-    log = pyqtSignal(QString, int, name='log')
+    log = pyqtSignal(QString if ffado_pyqt_version == 4 else str, int, name='log')
     def __init__( self, parent, statusbar, level=logging.NOTSET ):
         QObject.__init__( self, parent )
         logging.Handler.__init__( self, level )
diff -rupN libffado-2.4.0.org/support/mixer-qt4/ffado/panelmanager.py libffado-2.4.0/support/mixer-qt4/ffado/panelmanager.py
--- libffado-2.4.0.org/support/mixer-qt4/ffado/panelmanager.py	2017-06-04 03:40:48.000000000 -0400
+++ libffado-2.4.0/support/mixer-qt4/ffado/panelmanager.py	2018-01-03 21:18:15.042504716 -0500
@@ -378,7 +378,7 @@ except ImportError:
         action = self.sender()
         # Extract the action data and store as a dbus.String type so 
         # it is usable as a key into self.panels[].
-        panel_key = dbus.String(action.data().toString())
+        panel_key = dbus.String(action.data().toString() if ffado_pyqt_version == 4 else action.data())
         self.tabs.setCurrentIndex(self.tabs.indexOf(self.panels[panel_key]))
 
     def displayPanels(self):
@@ -515,6 +515,8 @@ except ImportError:
           saveString.append('</device>\n')
         # file saving
         savefilename = QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME'))
+        if isinstance(savefilename, tuple): # newer PyQt5
+            savefilename = savefilename[0]
         try:
           f = open(savefilename, 'w')
         except IOError:
@@ -526,6 +528,8 @@ except ImportError:
 
     def readSettings(self):
         readfilename = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
+        if isinstance(readfilename, tuple): # newer PyQt5
+            readfilename = readfilename[0]
         try:
           f = open(readfilename, 'r')
         except IOError:
diff -rupN libffado-2.4.0.org/support/mixer-qt4/ffado/widgets/crossbarrouter.py libffado-2.4.0/support/mixer-qt4/ffado/widgets/crossbarrouter.py
--- libffado-2.4.0.org/support/mixer-qt4/ffado/widgets/crossbarrouter.py	2017-06-03 04:25:01.000000000 -0400
+++ libffado-2.4.0/support/mixer-qt4/ffado/widgets/crossbarrouter.py	2018-01-03 21:11:01.563420583 -0500
@@ -168,7 +168,10 @@ class CrossbarRouter(QWidget):
         self.timer.setInterval(200)
         self.timer.timeout.connect(self.updateLevels)
 
-        self.vubtn.setChecked(self.settings.value("crossbarrouter/runvu", False).toBool())
+        if ffado_pyqt_version == 4:
+            self.vubtn.setChecked(self.settings.value("crossbarrouter/runvu", False).toBool())
+        else:
+            self.vubtn.setChecked(self.settings.value("crossbarrouter/runvu", False) == u'true')
 
     def __del__(self):
         print( "CrossbarRouter.__del__()" )
diff -rupN libffado-2.4.0.org/support/mixer-qt4/ffado/widgets/matrixmixer.py libffado-2.4.0/support/mixer-qt4/ffado/widgets/matrixmixer.py
--- libffado-2.4.0.org/support/mixer-qt4/ffado/widgets/matrixmixer.py	2017-06-03 07:29:20.000000000 -0400
+++ libffado-2.4.0/support/mixer-qt4/ffado/widgets/matrixmixer.py	2018-01-03 23:39:38.884080843 -0500
@@ -200,14 +200,14 @@ class MixerNode(QAbstractSlider):
 
     def mousePressEvent(self, ev):
         if ev.buttons() & Qt.LeftButton:
-            self.pos = ev.posF()
+            self.pos = ev.posF() if ffado_pyqt_version == 4 else ev.localPos()
             self.tmpvalue = self.value()
             ev.accept()
             #log.debug("MixerNode.mousePressEvent() %s" % str(self.pos))
 
     def mouseMoveEvent(self, ev):
         if hasattr(self, "tmpvalue") and self.pos is not QtCore.QPointF(0, 0):
-            newpos = ev.posF()
+            newpos = ev.posF() if ffado_pyqt_version == 4 else ev.localPos()
             change = newpos.y() - self.pos.y()
             #log.debug("MixerNode.mouseReleaseEvent() change %s" % (str(change)))
             self.setValue( self.tmpvalue - math.copysign(pow(abs(change), 2), change) )
@@ -215,7 +215,7 @@ class MixerNode(QAbstractSlider):
 
     def mouseReleaseEvent(self, ev):
         if hasattr(self, "tmpvalue") and self.pos is not QtCore.QPointF(0, 0):
-            newpos = ev.posF()
+            newpos = ev.posF() if ffado_pyqt_version == 4 else ev.localPos()
             change = newpos.y() - self.pos.y()
             #log.debug("MixerNode.mouseReleaseEvent() change %s" % (str(change)))
             self.setValue( self.tmpvalue - math.copysign(pow(abs(change), 2), change) )
@@ -257,19 +257,19 @@ class MixerNode(QAbstractSlider):
         if v == 0:
             symb_inf = u"\u221E"
             text = "-" + symb_inf + " dB"
-        if ffado_python3:
+        if ffado_python3 or ffado_pyqt_version == 5:
             # Python3 uses native python UTF strings rather than QString.
             # This therefore appears to be the correct way to display this
             # UTF8 string, but testing may prove otherwise.
             p.drawText(rect, Qt.AlignCenter, text)
         else:
-            p.drawText(rect, Qt.AlignCenter, QtCore.QString.fromUtf8(text))
+            p.drawText(rect, Qt.AlignCenter, QString.fromUtf8(text))
         if (self.inv_action!=None and self.inv_action.isChecked()):
-            if ffado_python3:
+            if ffado_python3 or ffado_pyqt_version == 5:
                 # Refer to the comment about about Python UTF8 strings.
                 p.drawText(rect, Qt.AlignLeft|Qt.AlignTop, " ϕ")
             else:
-                p.drawText(rect, Qt.AlignLeft|Qt.AlignTop, QtCore.QString.fromUtf8(" ϕ"))
+                p.drawText(rect, Qt.AlignLeft|Qt.AlignTop, QString.fromUtf8(" ϕ"))
 
     def internalValueChanged(self, value):
         #log.debug("MixerNode.internalValueChanged( %i )" % value)