diff --git a/Makefile b/Makefile index 77fda0a..47c4246 100644 --- a/Makefile +++ b/Makefile @@ -8,8 +8,8 @@ PREFIX = /usr/local DESTDIR = LINK = ln -s -PYUIC ?= pyuic4 -PYRCC ?= pyrcc4 -py3 +PYUIC ?= pyuic5 +PYRCC ?= pyrcc5 # Detect X11 rules dir ifeq "$(wildcard /etc/X11/xinit/xinitrc.d/ )" "" diff --git a/c++/Makefile.mk b/c++/Makefile.mk index cc733ff..ec92861 100644 --- a/c++/Makefile.mk +++ b/c++/Makefile.mk @@ -7,12 +7,14 @@ AR ?= ar CC ?= gcc CXX ?= g++ -MOC ?= $(shell pkg-config --variable=moc_location QtCore) -RCC ?= $(shell pkg-config --variable=rcc_location QtCore) -UIC ?= $(shell pkg-config --variable=uic_location QtCore) STRIP ?= strip WINDRES ?= windres +HOSTBINS = $(shell pkg-config --variable=host_bins Qt5Core) +MOC ?= $(HOSTBINS)/moc +RCC ?= $(HOSTBINS)/rcc +UIC ?= $(HOSTBINS)/uic + # -------------------------------------------------------------- DEBUG ?= false @@ -22,10 +24,12 @@ BASE_FLAGS = -O0 -g -Wall -Wextra BASE_FLAGS += -DDEBUG STRIP = true # FIXME else -BASE_FLAGS = -O2 -ffast-math -mtune=generic -msse -mfpmath=sse -Wall -Wextra +BASE_FLAGS = -O3 -ffast-math -mtune=generic -msse -mfpmath=sse -Wall -Wextra BASE_FLAGS += -DNDEBUG endif +BASE_FLAGS += -fPIC + BUILD_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS) BUILD_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) LINK_FLAGS = $(LDFLAGS) diff --git a/c++/jackmeter/Makefile b/c++/jackmeter/Makefile index ede9178..004076d 100644 --- a/c++/jackmeter/Makefile +++ b/c++/jackmeter/Makefile @@ -9,8 +9,8 @@ include ../Makefile.mk # -------------------------------------------------------------- BUILD_CXX_FLAGS += -I../widgets -BUILD_CXX_FLAGS += $(shell pkg-config --cflags QtCore QtGui) -LINK_FLAGS += $(shell pkg-config --libs QtCore QtGui) +BUILD_CXX_FLAGS += $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets) +LINK_FLAGS += $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets) ifeq ($(HAVE_JACKSESSION),true) BUILD_CXX_FLAGS += -DHAVE_JACKSESSION diff --git a/c++/jackmeter/jackmeter.cpp b/c++/jackmeter/jackmeter.cpp index dedbfa1..56c066a 100644 --- a/c++/jackmeter/jackmeter.cpp +++ b/c++/jackmeter/jackmeter.cpp @@ -27,9 +27,9 @@ #include "../widgets/digitalpeakmeter.hpp" #include -#include #include -#include +#include +#include // ------------------------------- diff --git a/c++/widgets/digitalpeakmeter.hpp b/c++/widgets/digitalpeakmeter.hpp index 7bbf42f..67459cd 100644 --- a/c++/widgets/digitalpeakmeter.hpp +++ b/c++/widgets/digitalpeakmeter.hpp @@ -19,7 +19,7 @@ #define __DIGITALPEAKMETER_HPP__ #include -#include +#include class DigitalPeakMeter : public QWidget { diff --git a/c++/widgets/pixmapdial.hpp b/c++/widgets/pixmapdial.hpp index cfc7090..0d1bafd 100644 --- a/c++/widgets/pixmapdial.hpp +++ b/c++/widgets/pixmapdial.hpp @@ -19,7 +19,7 @@ #define __PIXMAPDIAL_HPP__ #include -#include +#include class PixmapDial : public QDial { diff --git a/c++/widgets/pixmapkeyboard.hpp b/c++/widgets/pixmapkeyboard.hpp index 4bca9c8..d19bccf 100644 --- a/c++/widgets/pixmapkeyboard.hpp +++ b/c++/widgets/pixmapkeyboard.hpp @@ -20,7 +20,7 @@ #include #include -#include +#include class PixmapKeyboard : public QWidget { diff --git a/c++/xycontroller/Makefile b/c++/xycontroller/Makefile index af57a05..662a7af 100644 --- a/c++/xycontroller/Makefile +++ b/c++/xycontroller/Makefile @@ -9,8 +9,8 @@ include ../Makefile.mk # -------------------------------------------------------------- BUILD_CXX_FLAGS += -I../widgets -BUILD_CXX_FLAGS += $(shell pkg-config --cflags QtCore QtGui) -LINK_FLAGS += $(shell pkg-config --libs QtCore QtGui) +BUILD_CXX_FLAGS += $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets) +LINK_FLAGS += $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets) ifeq ($(HAVE_JACKSESSION),true) BUILD_CXX_FLAGS += -DHAVE_JACKSESSION diff --git a/c++/xycontroller/xycontroller.cpp b/c++/xycontroller/xycontroller.cpp index ddac3c6..4b32e2b 100644 --- a/c++/xycontroller/xycontroller.cpp +++ b/c++/xycontroller/xycontroller.cpp @@ -29,13 +29,13 @@ #include #include -#include -#include -#include -#include #include -#include -#include +#include +#include +#include +#include +#include +#include // ------------------------------- diff --git a/src/catia.py b/src/catia.py index 4eba6b6..7879ba8 100755 --- a/src/catia.py +++ b/src/catia.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # JACK Patchbay -# Copyright (C) 2010-2013 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ except: # Try Import OpenGL try: - from PyQt4.QtOpenGL import QGLWidget + from PyQt5.QtOpenGL import QGLWidget hasGL = True except: hasGL = False @@ -96,6 +96,15 @@ URI_CANVAS_ICON = "http://kxstudio.sf.net/ns/canvas/icon" # Catia Main Window class CatiaMainW(AbstractCanvasJackClass): + XRunCallback = pyqtSignal() + BufferSizeCallback = pyqtSignal(int) + SampleRateCallback = pyqtSignal(int) + ClientRenameCallback = pyqtSignal(str, str) + PortRegistrationCallback = pyqtSignal(int, bool) + PortConnectCallback = pyqtSignal(int, int, bool) + PortRenameCallback = pyqtSignal(int, str, str) + ShutdownCallback = pyqtSignal() + def __init__(self, parent=None): AbstractCanvasJackClass.__init__(self, "Catia", ui_catia.Ui_CatiaMainW, parent) @@ -215,26 +224,26 @@ class CatiaMainW(AbstractCanvasJackClass): self.setCanvasConnections() self.setJackConnections(["jack", "buffer-size", "transport", "misc"]) - self.connect(self.ui.act_tools_jack_start, SIGNAL("triggered()"), SLOT("slot_JackServerStart()")) - self.connect(self.ui.act_tools_jack_stop, SIGNAL("triggered()"), SLOT("slot_JackServerStop()")) - self.connect(self.ui.act_tools_a2j_start, SIGNAL("triggered()"), SLOT("slot_A2JBridgeStart()")) - self.connect(self.ui.act_tools_a2j_stop, SIGNAL("triggered()"), SLOT("slot_A2JBridgeStop()")) - self.connect(self.ui.act_tools_a2j_export_hw, SIGNAL("triggered()"), SLOT("slot_A2JBridgeExportHW()")) + self.ui.act_tools_jack_start.triggered.connect(self.slot_JackServerStart) + self.ui.act_tools_jack_stop.triggered.connect(self.slot_JackServerStop) + self.ui.act_tools_a2j_start.triggered.connect(self.slot_A2JBridgeStart) + self.ui.act_tools_a2j_stop.triggered.connect(self.slot_A2JBridgeStop) + self.ui.act_tools_a2j_export_hw.triggered.connect(self.slot_A2JBridgeExportHW) - self.connect(self.ui.act_settings_show_alsa, SIGNAL("triggered(bool)"), SLOT("slot_showAlsaMIDI(bool)")) - self.connect(self.ui.act_configure, SIGNAL("triggered()"), SLOT("slot_configureCatia()")) + self.ui.act_settings_show_alsa.triggered.connect(self.slot_showAlsaMIDI) + self.ui.act_configure.triggered.connect(self.slot_configureCatia) - self.connect(self.ui.act_help_about, SIGNAL("triggered()"), SLOT("slot_aboutCatia()")) - self.connect(self.ui.act_help_about_qt, SIGNAL("triggered()"), app, SLOT("aboutQt()")) + self.ui.act_help_about.triggered.connect(self.slot_aboutCatia) + self.ui.act_help_about_qt.triggered.connect(app.aboutQt) - self.connect(self, SIGNAL("XRunCallback()"), SLOT("slot_XRunCallback()")) - self.connect(self, SIGNAL("BufferSizeCallback(int)"), SLOT("slot_BufferSizeCallback(int)")) - self.connect(self, SIGNAL("SampleRateCallback(int)"), SLOT("slot_SampleRateCallback(int)")) - self.connect(self, SIGNAL("ClientRenameCallback(QString, QString)"), SLOT("slot_ClientRenameCallback(QString, QString)")) - self.connect(self, SIGNAL("PortRegistrationCallback(int, bool)"), SLOT("slot_PortRegistrationCallback(int, bool)")) - self.connect(self, SIGNAL("PortConnectCallback(int, int, bool)"), SLOT("slot_PortConnectCallback(int, int, bool)")) - self.connect(self, SIGNAL("PortRenameCallback(int, QString, QString)"), SLOT("slot_PortRenameCallback(int, QString, QString)")) - self.connect(self, SIGNAL("ShutdownCallback()"), SLOT("slot_ShutdownCallback()")) + self.XRunCallback.connect(self.slot_XRunCallback) + self.BufferSizeCallback.connect(self.slot_BufferSizeCallback) + self.SampleRateCallback.connect(self.slot_SampleRateCallback) + self.ClientRenameCallback.connect(self.slot_ClientRenameCallback) + self.PortRegistrationCallback.connect(self.slot_PortRegistrationCallback) + self.PortConnectCallback.connect(self.slot_PortConnectCallback) + self.PortRenameCallback.connect(self.slot_PortRenameCallback) + self.ShutdownCallback.connect(self.slot_ShutdownCallback) # ------------------------------------------------------------- # Set-up DBus @@ -1055,37 +1064,37 @@ class CatiaMainW(AbstractCanvasJackClass): def JackXRunCallback(self, arg): if DEBUG: print("JackXRunCallback()") - self.emit(SIGNAL("XRunCallback()")) + self.XRunCallback.emit() return 0 def JackBufferSizeCallback(self, bufferSize, arg): if DEBUG: print("JackBufferSizeCallback(%i)" % bufferSize) - self.emit(SIGNAL("BufferSizeCallback(int)"), bufferSize) + self.BufferSizeCallback.emit(bufferSize) return 0 def JackSampleRateCallback(self, sampleRate, arg): if DEBUG: print("JackSampleRateCallback(%i)" % sampleRate) - self.emit(SIGNAL("SampleRateCallback(int)"), sampleRate) + self.SampleRateCallback.emit(sampleRate) return 0 def JackClientRenameCallback(self, oldName, newName, arg): if DEBUG: print("JackClientRenameCallback(\"%s\", \"%s\")" % (oldName, newName)) - self.emit(SIGNAL("ClientRenameCallback(QString, QString)"), str(oldName, encoding="utf-8"), str(newName, encoding="utf-8")) + self.ClientRenameCallback.emit(str(oldName, encoding="utf-8"), str(newName, encoding="utf-8")) return 0 def JackPortRegistrationCallback(self, portId, registerYesNo, arg): if DEBUG: print("JackPortRegistrationCallback(%i, %i)" % (portId, registerYesNo)) - self.emit(SIGNAL("PortRegistrationCallback(int, bool)"), portId, bool(registerYesNo)) + self.PortRegistrationCallback.emit(portId, bool(registerYesNo)) return 0 def JackPortConnectCallback(self, portA, portB, connectYesNo, arg): if DEBUG: print("JackPortConnectCallback(%i, %i, %i)" % (portA, portB, connectYesNo)) - self.emit(SIGNAL("PortConnectCallback(int, int, bool)"), portA, portB, bool(connectYesNo)) + self.PortConnectCallback.emit(portA, portB, bool(connectYesNo)) return 0 def JackPortRenameCallback(self, portId, oldName, newName, arg): if DEBUG: print("JackPortRenameCallback(%i, \"%s\", \"%s\")" % (portId, oldName, newName)) - self.emit(SIGNAL("PortRenameCallback(int, QString, QString)"), portId, str(oldName, encoding="utf-8"), str(newName, encoding="utf-8")) + self.PortRenameCallback.emit(portId, str(oldName, encoding="utf-8"), str(newName, encoding="utf-8")) return 0 def JackSessionCallback(self, event, arg): @@ -1107,7 +1116,7 @@ class CatiaMainW(AbstractCanvasJackClass): def JackShutdownCallback(self, arg): if DEBUG: print("JackShutdownCallback()") - self.emit(SIGNAL("ShutdownCallback()")) + self.ShutdownCallback.emit() return 0 @pyqtSlot(bool) diff --git a/src/jacksettings.py b/src/jacksettings.py index 271a617..039c884 100755 --- a/src/jacksettings.py +++ b/src/jacksettings.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # JACK Settings Dialog -# Copyright (C) 2010-2013 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,9 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -from PyQt4.QtCore import pyqtSlot, Qt, QSettings, QTimer, SIGNAL, SLOT -from PyQt4.QtGui import QDialog, QDialogButtonBox, QFontMetrics, QMessageBox +from PyQt5.QtCore import pyqtSlot, Qt, QSettings, QTimer +from PyQt5.QtGui import QFontMetrics +from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMessageBox from sys import platform, version_info # ------------------------------------------------------------------------------------------------------------ @@ -198,17 +199,18 @@ class JackSettingsW(QDialog): driverList = gJackctl.ReadContainer(["drivers"])[1] maxWidth = 75 - for i in range(self.ui.obj_server_driver.rowCount()): - self.ui.obj_server_driver.item(0, i).setTextAlignment(Qt.AlignCenter) + # FIXME QT4 + #for i in range(self.ui.obj_server_driver.rowCount()): + #self.ui.obj_server_driver.item(0, i).setTextAlignment(Qt.AlignCenter) - itexText = self.ui.obj_server_driver.item(0, i).text() - itemWidth = QFontMetrics(self.ui.obj_server_driver.font()).width(itexText)+25 + #itexText = self.ui.obj_server_driver.item(0, i).text() + #itemWidth = QFontMetrics(self.ui.obj_server_driver.font()).width(itexText)+25 - if itemWidth > maxWidth: - maxWidth = itemWidth + #if itemWidth > maxWidth: + #maxWidth = itemWidth - if dbus.String(itexText.lower()) not in driverList: - self.ui.obj_server_driver.hideRow(i) + #if dbus.String(itexText.lower()) not in driverList: + #self.ui.obj_server_driver.hideRow(i) self.ui.obj_server_driver.setMinimumWidth(maxWidth) self.ui.obj_server_driver.setMaximumWidth(maxWidth) @@ -216,14 +218,14 @@ class JackSettingsW(QDialog): # ------------------------------------------------------------- # Set-up connections - self.connect(self, SIGNAL("accepted()"), SLOT("slot_saveJackSettings()")) - self.connect(self.ui.buttonBox.button(QDialogButtonBox.Reset), SIGNAL("clicked()"), SLOT("slot_resetJackSettings()")) + self.accepted.connect(self.slot_saveJackSettings) + self.ui.buttonBox.button(QDialogButtonBox.Reset).clicked.connect(self.slot_resetJackSettings) - self.connect(self.ui.obj_driver_duplex, SIGNAL("clicked(bool)"), SLOT("slot_checkDuplexSelection(bool)")) - self.connect(self.ui.obj_server_driver, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkDriverSelection(int)")) + self.ui.obj_driver_duplex.clicked.connect(self.slot_checkDuplexSelection) + self.ui.obj_server_driver.currentCellChanged.connect(self.slot_checkDriverSelection) - self.connect(self.ui.obj_driver_capture, SIGNAL("currentIndexChanged(int)"), SLOT("slot_checkALSASelection()")) - self.connect(self.ui.obj_driver_playback, SIGNAL("currentIndexChanged(int)"), SLOT("slot_checkALSASelection()")) + self.ui.obj_driver_capture.currentIndexChanged.connect(self.slot_checkALSASelection) + self.ui.obj_driver_playback.currentIndexChanged.connect(self.slot_checkALSASelection) # ------------------------------------------------------------- # Load initial settings @@ -910,7 +912,8 @@ if __name__ == '__main__': # Additional imports import resources_rc from sys import argv as sys_argv, exit as sys_exit - from PyQt4.QtGui import QApplication, QIcon + from PyQt5.QtGui import QIcon + from PyQt5.QtWidgets import QApplication # App initialization app = QApplication(sys_argv) diff --git a/src/logs.py b/src/logs.py index b597377..5c5e1f7 100755 --- a/src/logs.py +++ b/src/logs.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # JACK, A2J, LASH and LADISH Logs Viewer -# Copyright (C) 2011-2013 Filipe Coelho +# Copyright (C) 2011-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,9 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -from PyQt4.QtCore import pyqtSlot, Qt, QFile, QIODevice, QMutex, QMutexLocker, QTextStream, QThread, QSettings -from PyQt4.QtGui import QDialog, QPalette, QSyntaxHighlighter +from PyQt5.QtCore import pyqtSlot, Qt, QFile, QIODevice, QMutex, QMutexLocker, QTextStream, QThread, QSettings +from PyQt5.QtGui import QPalette, QSyntaxHighlighter +from PyQt5.QtWidgets import QDialog # ------------------------------------------------------------------------------------------------------------ # Imports (Custom Stuff) @@ -118,6 +119,8 @@ class SyntaxHighlighter_LADISH(QSyntaxHighlighter): class LogsReadThread(QThread): MAX_INITIAL_SIZE = 2*1024*1024 # 2Mb + updateLogs = pyqtSignal() + def __init__(self, parent): QThread.__init__(self, parent) @@ -236,7 +239,7 @@ class LogsReadThread(QThread): textLADISH = "" self.fRealParent.setLogsText(textJACK, textA2J, textLASH, textLADISH) - self.emit(SIGNAL("updateLogs()")) + self.updateLogs.emit() if not self.fCloseNow: self.sleep(1) @@ -279,6 +282,10 @@ class LogsW(QDialog): if not os.path.exists(LOG_FILE_LADISH): LOG_FILE_LADISH = None + SIGTERM = pyqtSignal() + SIGUSR1 = pyqtSignal() + SIGUSR2 = pyqtSignal() + def __init__(self, parent): QDialog.__init__(self, parent) self.ui = ui_logs.Ui_LogsW() @@ -349,8 +356,8 @@ class LogsW(QDialog): # ------------------------------------------------------------- # Set-up connections - self.connect(self.ui.b_purge, SIGNAL("clicked()"), SLOT("slot_purgeLogs()")) - self.connect(self.fReadThread, SIGNAL("updateLogs()"), SLOT("slot_updateLogs()")) + self.ui.b_purge.clicked.connect(self.slot_purgeLogs) + self.fReadThread.updateLogs.connect(self.slot_updateLogs) # ------------------------------------------------------------- @@ -431,7 +438,7 @@ class LogsW(QDialog): if __name__ == '__main__': # Additional imports - from PyQt4.QtGui import QApplication + from PyQt5.QtWidgets import QApplication # App initialization app = QApplication(sys.argv) diff --git a/src/patchcanvas.py b/src/patchcanvas.py index 126bca1..f6f4b9c 100644 --- a/src/patchcanvas.py +++ b/src/patchcanvas.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # PatchBay Canvas engine using QGraphicsView/Scene -# Copyright (C) 2010-2013 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,14 +17,15 @@ # For a full copy of the GNU General Public License see the GPL.txt file # Imports (Global) -from PyQt4.QtCore import pyqtSignal, pyqtSlot, qDebug, qCritical, qFatal, qWarning, Qt, QObject -from PyQt4.QtCore import QAbstractAnimation, QLineF, QPointF, QRectF, QSizeF, QSettings, QTimer -from PyQt4.QtGui import QColor, QLinearGradient, QPen, QPolygonF, QPainter, QPainterPath -from PyQt4.QtGui import QCursor, QFont, QFontMetrics -from PyQt4.QtGui import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem -from PyQt4.QtGui import QGraphicsColorizeEffect, QGraphicsDropShadowEffect -from PyQt4.QtGui import QInputDialog, QLineEdit, QMenu -from PyQt4.QtSvg import QGraphicsSvgItem, QSvgRenderer +from PyQt5.QtCore import pyqtSignal, pyqtSlot, qDebug, qCritical, qFatal, qWarning, Qt, QObject +from PyQt5.QtCore import QAbstractAnimation, QLineF, QPointF, QRectF, QSizeF, QSettings, QTimer +from PyQt5.QtGui import QColor, QLinearGradient, QPen, QPolygonF, QPainter, QPainterPath +from PyQt5.QtGui import QCursor, QFont, QFontMetrics +from PyQt5.QtWidgets import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem +from PyQt5.QtWidgets import QGraphicsColorizeEffect, QGraphicsDropShadowEffect +from PyQt5.QtWidgets import QInputDialog, QLineEdit, QMenu + +from PyQt5.QtSvg import QGraphicsSvgItem, QSvgRenderer # Imports (Theme) from patchcanvas_theme import * diff --git a/src/patchcanvas_theme.py b/src/patchcanvas_theme.py index 581e2bd..e641587 100644 --- a/src/patchcanvas_theme.py +++ b/src/patchcanvas_theme.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # PatchBay Canvas Themes -# Copyright (C) 2010-2012 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,8 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -from PyQt4.QtCore import Qt -from PyQt4.QtGui import QColor, QFont, QPen, QPixmap +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QColor, QFont, QPen, QPixmap # ------------------------------------------------------------------------------------------------------------ # patchcanvas-theme.cpp diff --git a/src/render.py b/src/render.py index 95d0018..8447843 100755 --- a/src/render.py +++ b/src/render.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # JACK-Capture frontend, with freewheel and transport support -# Copyright (C) 2010-2013 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,8 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -from PyQt4.QtCore import pyqtSlot, QProcess, QTime, QTimer, QSettings -from PyQt4.QtGui import QDialog +from PyQt5.QtCore import pyqtSlot, QProcess, QTime, QTimer, QSettings +from PyQt5.QtWidgets import QDialog from time import sleep # ------------------------------------------------------------------------------------------------------------ @@ -138,15 +138,15 @@ class RenderW(QDialog): # ------------------------------------------------------------- # Set-up connections - self.connect(self.ui.b_render, SIGNAL("clicked()"), SLOT("slot_renderStart()")) - self.connect(self.ui.b_stop, SIGNAL("clicked()"), SLOT("slot_renderStop()")) - self.connect(self.ui.b_open, SIGNAL("clicked()"), SLOT("slot_getAndSetPath()")) - self.connect(self.ui.b_now_start, SIGNAL("clicked()"), SLOT("slot_setStartNow()")) - self.connect(self.ui.b_now_end, SIGNAL("clicked()"), SLOT("slot_setEndNow()")) - self.connect(self.ui.te_start, SIGNAL("timeChanged(const QTime)"), SLOT("slot_updateStartTime(const QTime)")) - self.connect(self.ui.te_end, SIGNAL("timeChanged(const QTime)"), SLOT("slot_updateEndTime(const QTime)")) - self.connect(self.ui.group_time, SIGNAL("clicked(bool)"), SLOT("slot_transportChecked(bool)")) - self.connect(self.fTimer, SIGNAL("timeout()"), SLOT("slot_updateProgressbar()")) + self.ui.b_render.clicked.connect(self.slot_renderStart) + self.ui.b_stop.clicked.connect(self.slot_renderStop) + self.ui.b_open.clicked.connect(self.slot_getAndSetPath) + self.ui.b_now_start.clicked.connect(self.slot_setStartNow) + self.ui.b_now_end.clicked.connect(self.slot_setEndNow) + self.ui.te_start.timeChanged.connect(self.slot_updateStartTime) + self.ui.te_end.timeChanged.connect(self.slot_updateEndTime) + self.ui.group_time.clicked.connect(self.slot_transportChecked) + self.fTimer.timeout.connect(self.slot_updateProgressbar) # ------------------------------------------------------------- @@ -429,7 +429,7 @@ class RenderW(QDialog): if __name__ == '__main__': # Additional imports - from PyQt4.QtGui import QApplication + from PyQt5.QtWidgets import QApplication # App initialization app = QApplication(sys.argv) diff --git a/src/shared.py b/src/shared.py index 6a26f5b..c1caa3b 100644 --- a/src/shared.py +++ b/src/shared.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Common/Shared code -# Copyright (C) 2010-2013 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,8 +23,9 @@ import os import sys from codecs import open as codecopen from unicodedata import normalize -from PyQt4.QtCore import qWarning, SIGNAL, SLOT -from PyQt4.QtGui import QApplication, QFileDialog, QIcon, QMessageBox +from PyQt5.QtCore import pyqtSignal, qWarning +from PyQt5.QtGui import QIcon +from PyQt5.QtWidgets import QApplication, QFileDialog, QMessageBox # ------------------------------------------------------------------------------------------------------------ # Set Platform @@ -216,8 +217,8 @@ def setUpSignals(self_): signal(SIGUSR1, signalHandler) signal(SIGUSR2, signalHandler) - gGui.connect(gGui, SIGNAL("SIGTERM()"), closeWindowHandler) - gGui.connect(gGui, SIGNAL("SIGUSR2()"), showWindowHandler) + gGui.SIGTERM.connect(closeWindowHandler) + gGui.SIGUSR2.connect(showWindowHandler) def signalHandler(sig, frame): global gGui @@ -226,11 +227,11 @@ def signalHandler(sig, frame): return if sig in (SIGINT, SIGTERM): - gGui.emit(SIGNAL("SIGTERM()")) + gGui.SIGTERM.emit() elif sig == SIGUSR1: - gGui.emit(SIGNAL("SIGUSR1()")) + gGui.SIGUSR1.emit() elif sig == SIGUSR2: - gGui.emit(SIGNAL("SIGUSR2()")) + gGui.SIGUSR2.emit() def closeWindowHandler(): global gGui diff --git a/src/shared_cadence.py b/src/shared_cadence.py index b75febc..d232be2 100644 --- a/src/shared_cadence.py +++ b/src/shared_cadence.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Common/Shared code for Cadence -# Copyright (C) 2012 Filipe Coelho +# Copyright (C) 2012-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,7 +19,7 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -from PyQt4.QtCore import QProcess, QSettings +from PyQt5.QtCore import QProcess, QSettings from time import sleep # ------------------------------------------------------------------------------------------------------------ diff --git a/src/shared_canvasjack.py b/src/shared_canvasjack.py index 9265e17..4ef18ce 100644 --- a/src/shared_canvasjack.py +++ b/src/shared_canvasjack.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Common/Shared code related to Canvas and JACK -# Copyright (C) 2010-2013 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,9 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -from PyQt4.QtCore import pyqtSlot, QTimer -from PyQt4.QtGui import QCursor, QFontMetrics, QImage, QMainWindow, QMenu, QPainter, QPrinter, QPrintDialog +from PyQt5.QtCore import pyqtSlot, QTimer +from PyQt5.QtGui import QCursor, QFontMetrics, QImage, QPainter +from PyQt5.QtWidgets import QMainWindow, QMenu # ------------------------------------------------------------------------------------------------------------ # Imports (Custom Stuff) @@ -95,6 +96,10 @@ gJack.client = None # Abstract Canvas and JACK Class class AbstractCanvasJackClass(QMainWindow): + SIGTERM = pyqtSignal() + SIGUSR1 = pyqtSignal() + SIGUSR2 = pyqtSignal() + def __init__(self, appName, UiClass, parent): QMainWindow.__init__(self, parent) @@ -523,56 +528,56 @@ class AbstractCanvasJackClass(QMainWindow): def setCanvasConnections(self): self.ui.act_canvas_arrange.setEnabled(False) # TODO, later - self.connect(self.ui.act_canvas_arrange, SIGNAL("triggered()"), SLOT("slot_canvasArrange()")) - self.connect(self.ui.act_canvas_refresh, SIGNAL("triggered()"), SLOT("slot_canvasRefresh()")) - self.connect(self.ui.act_canvas_zoom_fit, SIGNAL("triggered()"), SLOT("slot_canvasZoomFit()")) - self.connect(self.ui.act_canvas_zoom_in, SIGNAL("triggered()"), SLOT("slot_canvasZoomIn()")) - self.connect(self.ui.act_canvas_zoom_out, SIGNAL("triggered()"), SLOT("slot_canvasZoomOut()")) - self.connect(self.ui.act_canvas_zoom_100, SIGNAL("triggered()"), SLOT("slot_canvasZoomReset()")) - self.connect(self.ui.act_canvas_print, SIGNAL("triggered()"), SLOT("slot_canvasPrint()")) - self.connect(self.ui.act_canvas_save_image, SIGNAL("triggered()"), SLOT("slot_canvasSaveImage()")) - self.connect(self.ui.b_canvas_zoom_fit, SIGNAL("clicked()"), SLOT("slot_canvasZoomFit()")) - self.connect(self.ui.b_canvas_zoom_in, SIGNAL("clicked()"), SLOT("slot_canvasZoomIn()")) - self.connect(self.ui.b_canvas_zoom_out, SIGNAL("clicked()"), SLOT("slot_canvasZoomOut()")) - self.connect(self.ui.b_canvas_zoom_100, SIGNAL("clicked()"), SLOT("slot_canvasZoomReset()")) + self.ui.act_canvas_arrange.triggered.connect(self.slot_canvasArrange) + self.ui.act_canvas_refresh.triggered.connect(self.slot_canvasRefresh) + self.ui.act_canvas_zoom_fit.triggered.connect(self.slot_canvasZoomFit) + self.ui.act_canvas_zoom_in.triggered.connect(self.slot_canvasZoomIn) + self.ui.act_canvas_zoom_out.triggered.connect(self.slot_canvasZoomOut) + self.ui.act_canvas_zoom_100.triggered.connect(self.slot_canvasZoomReset) + self.ui.act_canvas_print.triggered.connect(self.slot_canvasPrint) + self.ui.act_canvas_save_image.triggered.connect(self.slot_canvasSaveImage) + self.ui.b_canvas_zoom_fit.clicked.connect(self.slot_canvasZoomFit) + self.ui.b_canvas_zoom_in.clicked.connect(self.slot_canvasZoomIn) + self.ui.b_canvas_zoom_out.clicked.connect(self.slot_canvasZoomOut) + self.ui.b_canvas_zoom_100.clicked.connect(self.slot_canvasZoomReset) def setJackConnections(self, modes): if "jack" in modes: - self.connect(self.ui.act_jack_clear_xruns, SIGNAL("triggered()"), SLOT("slot_JackClearXruns()")) - self.connect(self.ui.act_jack_render, SIGNAL("triggered()"), SLOT("slot_showRender()")) - self.connect(self.ui.act_jack_configure, SIGNAL("triggered()"), SLOT("slot_showJackSettings()")) - self.connect(self.ui.b_jack_clear_xruns, SIGNAL("clicked()"), SLOT("slot_JackClearXruns()")) - self.connect(self.ui.b_jack_configure, SIGNAL("clicked()"), SLOT("slot_showJackSettings()")) - self.connect(self.ui.b_jack_render, SIGNAL("clicked()"), SLOT("slot_showRender()")) - self.connect(self.ui.cb_buffer_size, SIGNAL("currentIndexChanged(QString)"), SLOT("slot_jackBufferSize_ComboBox(QString)")) - self.connect(self.ui.cb_sample_rate, SIGNAL("currentIndexChanged(QString)"), SLOT("slot_jackSampleRate_ComboBox(QString)")) - self.connect(self.ui.b_xruns, SIGNAL("clicked()"), SLOT("slot_JackClearXruns()")) + self.ui.act_jack_clear_xruns.triggered.connect(self.slot_JackClearXruns) + self.ui.act_jack_render.triggered.connect(self.slot_showRender) + self.ui.act_jack_configure.triggered.connect(self.slot_showJackSettings) + self.ui.b_jack_clear_xruns.clicked.connect(self.slot_JackClearXruns) + self.ui.b_jack_configure.clicked.connect(self.slot_showJackSettings) + self.ui.b_jack_render.clicked.connect(self.slot_showRender) + self.ui.cb_buffer_size.currentIndexChanged.connect(self.slot_jackBufferSize_ComboBox) + self.ui.cb_sample_rate.currentIndexChanged.connect(self.slot_jackSampleRate_ComboBox) + self.ui.b_xruns.clicked.connect(self.slot_JackClearXruns) if "buffer-size" in modes: - self.connect(self.ui.act_jack_bf_16, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_32, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_64, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_128, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_256, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_512, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_1024, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_2048, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_4096, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) - self.connect(self.ui.act_jack_bf_8192, SIGNAL("triggered(bool)"), SLOT("slot_jackBufferSize_Menu(bool)")) + self.ui.act_jack_bf_16.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_32.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_64.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_128.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_256.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_512.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_1024.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_2048.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_4096.triggered.connect(self.slot_jackBufferSize_Menu) + self.ui.act_jack_bf_8192.triggered.connect(self.slot_jackBufferSize_Menu) if "transport" in modes: - self.connect(self.ui.act_transport_play, SIGNAL("triggered(bool)"), SLOT("slot_transportPlayPause(bool)")) - self.connect(self.ui.act_transport_stop, SIGNAL("triggered()"), SLOT("slot_transportStop()")) - self.connect(self.ui.act_transport_backwards, SIGNAL("triggered()"), SLOT("slot_transportBackwards()")) - self.connect(self.ui.act_transport_forwards, SIGNAL("triggered()"), SLOT("slot_transportForwards()")) - self.connect(self.ui.b_transport_play, SIGNAL("clicked(bool)"), SLOT("slot_transportPlayPause(bool)")) - self.connect(self.ui.b_transport_stop, SIGNAL("clicked()"), SLOT("slot_transportStop()")) - self.connect(self.ui.b_transport_backwards, SIGNAL("clicked()"), SLOT("slot_transportBackwards()")) - self.connect(self.ui.b_transport_forwards, SIGNAL("clicked()"), SLOT("slot_transportForwards()")) - self.connect(self.ui.label_time, SIGNAL("customContextMenuRequested(QPoint)"), SLOT("slot_transportViewMenu()")) + self.ui.act_transport_play.triggered.connect(self.slot_transportPlayPause) + self.ui.act_transport_stop.triggered.connect(self.slot_transportStop) + self.ui.act_transport_backwards.triggered.connect(self.slot_transportBackwards) + self.ui.act_transport_forwards.triggered.connect(self.slot_transportForwards) + self.ui.b_transport_play.clicked.connect(self.slot_transportPlayPause) + self.ui.b_transport_stop.clicked.connect(self.slot_transportStop) + self.ui.b_transport_backwards.clicked.connect(self.slot_transportBackwards) + self.ui.b_transport_forwards.clicked.connect(self.slot_transportForwards) + self.ui.label_time.customContextMenuRequested.connect(self.slot_transportViewMenu) if "misc" in modes: if LINUX: - self.connect(self.ui.act_show_logs, SIGNAL("triggered()"), SLOT("slot_showLogs()")) + self.ui.act_show_logs.triggered.connect(self.slot_showLogs) else: self.ui.act_show_logs.setEnabled(False) diff --git a/src/shared_settings.py b/src/shared_settings.py index 038e29a..5d4c823 100644 --- a/src/shared_settings.py +++ b/src/shared_settings.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Common/Shared code related to the Settings dialog -# Copyright (C) 2010-2013 Filipe Coelho +# Copyright (C) 2010-2018 Filipe Coelho # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,8 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -from PyQt4.QtCore import pyqtSlot, QSettings -from PyQt4.QtGui import QDialog, QDialogButtonBox +from PyQt5.QtCore import pyqtSlot, QSettings +from PyQt5.QtWidgets import QDialog, QDialogButtonBox # ------------------------------------------------------------------------------------------------------------ # Imports (Custom Stuff) @@ -134,9 +134,10 @@ class SettingsW(QDialog): # ------------------------------------------------------------- # Set-up connections - self.connect(self, SIGNAL("accepted()"), SLOT("slot_saveSettings()")) - self.connect(self.ui.buttonBox.button(QDialogButtonBox.Reset), SIGNAL("clicked()"), SLOT("slot_resetSettings()")) - self.connect(self.ui.b_main_def_folder_open, SIGNAL("clicked()"), SLOT("slot_getAndSetProjectPath()")) + # FIXME QT4 + #self.accepted.connect(self.slot_saveSettings) + self.ui.buttonBox.button(QDialogButtonBox.Reset).clicked.connect(self.slot_resetSettings) + self.ui.b_main_def_folder_open.clicked.connect(self.slot_getAndSetProjectPath) def loadSettings(self): settings = QSettings()