Browse Source

Continue port to Qt5

tags/v0.9.0
falkTX 7 years ago
parent
commit
d85e6e6526
11 changed files with 378 additions and 380 deletions
  1. +114
    -111
      src/cadence.py
  2. +2
    -2
      src/cadence_aloop_daemon.py
  3. +18
    -8
      src/canvaspreviewframe.py
  4. +9
    -7
      src/catarina.py
  5. +0
    -9
      src/catia.py
  6. +169
    -168
      src/claudia.py
  7. +28
    -28
      src/claudia_launcher.py
  8. +9
    -5
      src/clickablelabel.py
  9. +1
    -1
      src/shared.py
  10. +9
    -0
      src/shared_canvasjack.py
  11. +19
    -41
      src/systray.py

+ 114
- 111
src/cadence.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# Cadence, JACK utilities
# Copyright (C) 2010-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2010-2018 Filipe Coelho <falktx@falktx.com>
#
# 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
@@ -20,8 +20,8 @@
# Imports (Global)

from platform import architecture
from PyQt4.QtCore import QFileSystemWatcher, QThread
from PyQt4.QtGui import QApplication, QDialogButtonBox, QLabel, QMainWindow, QSizePolicy
from PyQt5.QtCore import QFileSystemWatcher, QThread
from PyQt5.QtWidgets import QApplication, QDialogButtonBox, QLabel, QMainWindow, QSizePolicy

# ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff)
@@ -38,12 +38,9 @@ from shared_canvasjack import *
from shared_settings import *

# ------------------------------------------------------------------------------------------------------------
# Safe import getoutput
# Import getoutput

if sys.version_info >= (3, 0):
from subprocess import getoutput
else:
from commands import getoutput
from subprocess import getoutput

# ------------------------------------------------------------------------------------------------------------
# Try Import DBus
@@ -522,11 +519,11 @@ class ForceRestartThread(QThread):
def run(self):
# Not started yet
self.m_wasStarted = False
self.emit(SIGNAL("progressChanged(int)"), 0)
self.progressChanged.emit(0)

# Kill All
stopAllAudioProcesses()
self.emit(SIGNAL("progressChanged(int)"), 30)
self.progressChanged.emit(30)

# Connect to jackdbus
self.parent().DBusReconnect()
@@ -535,18 +532,18 @@ class ForceRestartThread(QThread):
return

for x in range(30):
self.emit(SIGNAL("progressChanged(int)"), 30+x*2)
self.progressChanged.emit(30+x*2)
procsList = getProcList()
if "jackdbus" in procsList:
break
else:
sleep(0.1)

self.emit(SIGNAL("progressChanged(int)"), 90)
self.progressChanged.emit(90)

# Start it
gDBus.jack.StartServer()
self.emit(SIGNAL("progressChanged(int)"), 93)
self.progressChanged.emit(93)

# If we made it this far, then JACK is started
self.m_wasStarted = True
@@ -558,7 +555,7 @@ class ForceRestartThread(QThread):
startAlsaAudioLoopBridge()
sleep(0.5)

self.emit(SIGNAL("progressChanged(int)"), 94)
self.progressChanged.emit(94)

# ALSA-MIDI
if GlobalSettings.value("A2J/AutoStart", True, type=bool) and gDBus.a2j and not bool(gDBus.a2j.is_started()):
@@ -566,7 +563,7 @@ class ForceRestartThread(QThread):
gDBus.a2j.set_hw_export(a2jExportHW)
gDBus.a2j.start()

self.emit(SIGNAL("progressChanged(int)"), 96)
self.progressChanged.emit(96)

# PulseAudio
if GlobalSettings.value("Pulse2JACK/AutoStart", True, type=bool) and not isPulseAudioBridged():
@@ -575,7 +572,7 @@ class ForceRestartThread(QThread):
else:
os.system("cadence-pulse2jack")

self.emit(SIGNAL("progressChanged(int)"), 100)
self.progressChanged.emit(100)

# Force Restart Dialog
class ForceWaitDialog(QDialog, ui_cadence_rwait.Ui_Dialog):
@@ -587,8 +584,8 @@ class ForceWaitDialog(QDialog, ui_cadence_rwait.Ui_Dialog):
self.rThread = ForceRestartThread(self)
self.rThread.start()

self.connect(self.rThread, SIGNAL("progressChanged(int)"), self.progressBar, SLOT("setValue(int)"))
self.connect(self.rThread, SIGNAL("finished()"), SLOT("slot_rThreadFinished()"))
self.rThread.progressChanged.connect(self.progressBar.setValue)
self.rThread.finished.connect(self.slot_rThreadFinished)

def DBusReconnect(self):
self.parent().DBusReconnect()
@@ -627,8 +624,8 @@ class ToolBarJackDialog(QDialog, ui_cadence_tb_jack.Ui_Dialog):
if self.m_ladishLoaded:
self.fillStudioNames()

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setOptions()"))
self.connect(self.rb_ladish, SIGNAL("clicked()"), SLOT("slot_maybeFillStudioNames()"))
self.accepted.connect(self.slot_setOptions)
self.rb_ladish.clicked.connect(self.slot_maybeFillStudioNames)

def fillStudioNames(self):
gDBus.ladish_control = gDBus.bus.get_object("org.ladish", "/org/ladish/Control")
@@ -690,7 +687,7 @@ class ToolBarAlsaAudioDialog(QDialog, ui_cadence_tb_alsa.Ui_Dialog):
else:
self.comboBox.setCurrentIndex(0)

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setOptions()"))
self.accepted.connect(self.slot_setOptions)

@pyqtSlot()
def slot_setOptions(self):
@@ -714,7 +711,7 @@ class ToolBarA2JDialog(QDialog, ui_cadence_tb_a2j.Ui_Dialog):

self.cb_export_hw.setChecked(GlobalSettings.value("A2J/ExportHW", True, type=bool))

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setOptions()"))
self.accepted.connect(self.slot_setOptions)

@pyqtSlot()
def slot_setOptions(self):
@@ -732,7 +729,7 @@ class ToolBarPADialog(QDialog, ui_cadence_tb_pa.Ui_Dialog):

self.cb_playback_only.setChecked(GlobalSettings.value("Pulse2JACK/PlaybackModeOnly", False, type=bool))

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setOptions()"))
self.accepted.connect(self.slot_setOptions)

@pyqtSlot()
def slot_setOptions(self):
@@ -744,6 +741,10 @@ class ToolBarPADialog(QDialog, ui_cadence_tb_pa.Ui_Dialog):

# Main Window
class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
SIGTERM = pyqtSignal()
SIGUSR1 = pyqtSignal()
SIGUSR2 = pyqtSignal()

def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.setupUi(self)
@@ -797,8 +798,8 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
if haveFreqSelector and os.path.exists(self.m_availGovPath) and os.path.exists(self.m_curGovPath):
self.m_govWatcher = QFileSystemWatcher(self)
self.m_govWatcher.addPath(self.m_curGovPath)
self.connect(self.m_govWatcher, SIGNAL("fileChanged(const QString&)"), SLOT("slot_governorFileChanged()"))
QTimer.singleShot(0, self, SLOT("slot_governorFileChanged()"))
self.m_govWatcher.fileChanged.connect(self.slot_governorFileChanged)
QTimer.singleShot(0, self.slot_governorFileChanged)

availGovFd = open(self.m_availGovPath, "r")
availGovRead = availGovFd.read().strip()
@@ -886,8 +887,9 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.settings_changed_types = []
self.frame_tweaks_settings.setVisible(False)

for i in range(self.tw_tweaks.rowCount()):
self.tw_tweaks.item(0, i).setTextAlignment(Qt.AlignCenter)
# FIXME QT4
#for i in range(self.tw_tweaks.rowCount()):
#self.tw_tweaks.item(0, i).setTextAlignment(Qt.AlignCenter)

self.tw_tweaks.setCurrentCell(0, 0)

@@ -1112,81 +1114,82 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
# -------------------------------------------------------------
# Set-up connections

self.connect(self.b_jack_start, SIGNAL("clicked()"), SLOT("slot_JackServerStart()"))
self.connect(self.b_jack_stop, SIGNAL("clicked()"), SLOT("slot_JackServerStop()"))
self.connect(self.b_jack_restart, SIGNAL("clicked()"), SLOT("slot_JackServerForceRestart()"))
self.connect(self.b_jack_configure, SIGNAL("clicked()"), SLOT("slot_JackServerConfigure()"))
self.connect(self.b_jack_switchmaster, SIGNAL("clicked()"), SLOT("slot_JackServerSwitchMaster()"))
self.connect(self.tb_jack_options, SIGNAL("clicked()"), SLOT("slot_JackOptions()"))

self.connect(self.b_alsa_start, SIGNAL("clicked()"), SLOT("slot_AlsaBridgeStart()"))
self.connect(self.b_alsa_stop, SIGNAL("clicked()"), SLOT("slot_AlsaBridgeStop()"))
self.connect(self.cb_alsa_type, SIGNAL("currentIndexChanged(int)"), SLOT("slot_AlsaBridgeChanged(int)"))
self.connect(self.tb_alsa_options, SIGNAL("clicked()"), SLOT("slot_AlsaAudioBridgeOptions()"))

self.connect(self.b_a2j_start, SIGNAL("clicked()"), SLOT("slot_A2JBridgeStart()"))
self.connect(self.b_a2j_stop, SIGNAL("clicked()"), SLOT("slot_A2JBridgeStop()"))
self.connect(self.b_a2j_export_hw, SIGNAL("clicked()"), SLOT("slot_A2JBridgeExportHW()"))
self.connect(self.tb_a2j_options, SIGNAL("clicked()"), SLOT("slot_A2JBridgeOptions()"))

self.connect(self.b_pulse_start, SIGNAL("clicked()"), SLOT("slot_PulseAudioBridgeStart()"))
self.connect(self.b_pulse_stop, SIGNAL("clicked()"), SLOT("slot_PulseAudioBridgeStop()"))
self.connect(self.tb_pulse_options, SIGNAL("clicked()"), SLOT("slot_PulseAudioBridgeOptions()"))

self.connect(self.pic_catia, SIGNAL("clicked()"), lambda tool="catia": self.func_start_tool(tool))
self.connect(self.pic_claudia, SIGNAL("clicked()"), lambda tool="claudia": self.func_start_tool(tool))
self.connect(self.pic_meter_in, SIGNAL("clicked()"), lambda tool="cadence-jackmeter -in": self.func_start_tool(tool))
self.connect(self.pic_meter_out, SIGNAL("clicked()"), lambda tool="cadence-jackmeter": self.func_start_tool(tool))
self.connect(self.pic_logs, SIGNAL("clicked()"), lambda tool="cadence-logs": self.func_start_tool(tool))
self.connect(self.pic_render, SIGNAL("clicked()"), lambda tool="cadence-render": self.func_start_tool(tool))
self.connect(self.pic_xycontroller, SIGNAL("clicked()"), lambda tool="cadence-xycontroller": self.func_start_tool(tool))

self.connect(self.b_tweaks_apply_now, SIGNAL("clicked()"), SLOT("slot_tweaksApply()"))

self.connect(self.b_tweak_plugins_add, SIGNAL("clicked()"), SLOT("slot_tweakPluginAdd()"))
self.connect(self.b_tweak_plugins_change, SIGNAL("clicked()"), SLOT("slot_tweakPluginChange()"))
self.connect(self.b_tweak_plugins_remove, SIGNAL("clicked()"), SLOT("slot_tweakPluginRemove()"))
self.connect(self.b_tweak_plugins_reset, SIGNAL("clicked()"), SLOT("slot_tweakPluginReset()"))
self.connect(self.tb_tweak_plugins, SIGNAL("currentChanged(int)"), SLOT("slot_tweakPluginTypeChanged(int)"))
self.connect(self.list_LADSPA, SIGNAL("currentRowChanged(int)"), SLOT("slot_tweakPluginsLadspaRowChanged(int)"))
self.connect(self.list_DSSI, SIGNAL("currentRowChanged(int)"), SLOT("slot_tweakPluginsDssiRowChanged(int)"))
self.connect(self.list_LV2, SIGNAL("currentRowChanged(int)"), SLOT("slot_tweakPluginsLv2RowChanged(int)"))
self.connect(self.list_VST, SIGNAL("currentRowChanged(int)"), SLOT("slot_tweakPluginsVstRowChanged(int)"))

self.connect(self.ch_app_image, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_apps()"))
self.connect(self.cb_app_image, SIGNAL("highlighted(int)"), SLOT("slot_tweakAppImageHighlighted(int)"))
self.connect(self.cb_app_image, SIGNAL("currentIndexChanged(int)"), SLOT("slot_tweakAppImageChanged(int)"))
self.connect(self.ch_app_music, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_apps()"))
self.connect(self.cb_app_music, SIGNAL("highlighted(int)"), SLOT("slot_tweakAppMusicHighlighted(int)"))
self.connect(self.cb_app_music, SIGNAL("currentIndexChanged(int)"), SLOT("slot_tweakAppMusicChanged(int)"))
self.connect(self.ch_app_video, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_apps()"))
self.connect(self.cb_app_video, SIGNAL("highlighted(int)"), SLOT("slot_tweakAppVideoHighlighted(int)"))
self.connect(self.cb_app_video, SIGNAL("currentIndexChanged(int)"), SLOT("slot_tweakAppVideoChanged(int)"))
self.connect(self.ch_app_text, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_apps()"))
self.connect(self.cb_app_text, SIGNAL("highlighted(int)"), SLOT("slot_tweakAppTextHighlighted(int)"))
self.connect(self.cb_app_text, SIGNAL("currentIndexChanged(int)"), SLOT("slot_tweakAppTextChanged(int)"))
self.connect(self.ch_app_browser, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_apps()"))
self.connect(self.cb_app_browser, SIGNAL("highlighted(int)"), SLOT("slot_tweakAppBrowserHighlighted(int)"))
self.connect(self.cb_app_browser, SIGNAL("currentIndexChanged(int)"),SLOT("slot_tweakAppBrowserChanged(int)"))

self.connect(self.sb_wineasio_ins, SIGNAL("valueChanged(int)"), SLOT("slot_tweaksSettingsChanged_wineasio()"))
self.connect(self.sb_wineasio_outs, SIGNAL("valueChanged(int)"), SLOT("slot_tweaksSettingsChanged_wineasio()"))
self.connect(self.cb_wineasio_hw, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_wineasio()"))
self.connect(self.cb_wineasio_autostart, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_wineasio()"))
self.connect(self.cb_wineasio_fixed_bsize, SIGNAL("clicked()"), SLOT("slot_tweaksSettingsChanged_wineasio()"))
self.connect(self.cb_wineasio_bsizes, SIGNAL("currentIndexChanged(int)"), SLOT("slot_tweaksSettingsChanged_wineasio()"))

# org.jackaudio.JackControl
self.connect(self, SIGNAL("DBusJackServerStartedCallback()"), SLOT("slot_DBusJackServerStartedCallback()"))
self.connect(self, SIGNAL("DBusJackServerStoppedCallback()"), SLOT("slot_DBusJackServerStoppedCallback()"))

# org.jackaudio.JackPatchbay
self.connect(self, SIGNAL("DBusJackClientAppearedCallback(int, QString)"), SLOT("slot_DBusJackClientAppearedCallback(int, QString)"))
self.connect(self, SIGNAL("DBusJackClientDisappearedCallback(int)"), SLOT("slot_DBusJackClientDisappearedCallback(int)"))

# org.gna.home.a2jmidid.control
self.connect(self, SIGNAL("DBusA2JBridgeStartedCallback()"), SLOT("slot_DBusA2JBridgeStartedCallback()"))
self.connect(self, SIGNAL("DBusA2JBridgeStoppedCallback()"), SLOT("slot_DBusA2JBridgeStoppedCallback()"))
self.b_jack_start.clicked.connect(self.slot_JackServerStart)
self.b_jack_stop.clicked.connect(self.slot_JackServerStop)
self.b_jack_restart.clicked.connect(self.slot_JackServerForceRestart)
self.b_jack_configure.clicked.connect(self.slot_JackServerConfigure)
self.b_jack_switchmaster.clicked.connect(self.slot_JackServerSwitchMaster)
self.tb_jack_options.clicked.connect(self.slot_JackOptions)

self.b_alsa_start.clicked.connect(self.slot_AlsaBridgeStart)
self.b_alsa_stop.clicked.connect(self.slot_AlsaBridgeStop)
self.cb_alsa_type.currentIndexChanged.connect(self.slot_AlsaBridgeChanged)
self.tb_alsa_options.clicked.connect(self.slot_AlsaAudioBridgeOptions)

self.b_a2j_start.clicked.connect(self.slot_A2JBridgeStart)
self.b_a2j_stop.clicked.connect(self.slot_A2JBridgeStop)
self.b_a2j_export_hw.clicked.connect(self.slot_A2JBridgeExportHW)
self.tb_a2j_options.clicked.connect(self.slot_A2JBridgeOptions)

self.b_pulse_start.clicked.connect(self.slot_PulseAudioBridgeStart)
self.b_pulse_stop.clicked.connect(self.slot_PulseAudioBridgeStop)
self.tb_pulse_options.clicked.connect(self.slot_PulseAudioBridgeOptions)

self.pic_catia.clicked.connect(lambda tool="catia": self.func_start_tool(tool))
self.pic_claudia.clicked.connect(lambda tool="claudia": self.func_start_tool(tool))
self.pic_meter_in.clicked.connect(lambda tool="cadence-jackmeter -in": self.func_start_tool(tool))
self.pic_meter_out.clicked.connect(lambda tool="cadence-jackmeter": self.func_start_tool(tool))
self.pic_logs.clicked.connect(lambda tool="cadence-logs": self.func_start_tool(tool))
self.pic_render.clicked.connect(lambda tool="cadence-render": self.func_start_tool(tool))
self.pic_xycontroller.clicked.connect(lambda tool="cadence-xycontroller": self.func_start_tool(tool))

self.b_tweaks_apply_now.clicked.connect(self.slot_tweaksApply)

self.b_tweak_plugins_add.clicked.connect(self.slot_tweakPluginAdd)
self.b_tweak_plugins_change.clicked.connect(self.slot_tweakPluginChange)
self.b_tweak_plugins_remove.clicked.connect(self.slot_tweakPluginRemove)
self.b_tweak_plugins_reset.clicked.connect(self.slot_tweakPluginReset)
self.tb_tweak_plugins.currentChanged.connect(self.slot_tweakPluginTypeChanged)
self.list_LADSPA.currentRowChanged.connect(self.slot_tweakPluginsLadspaRowChanged)
self.list_DSSI.currentRowChanged.connect(self.slot_tweakPluginsDssiRowChanged)
self.list_LV2.currentRowChanged.connect(self.slot_tweakPluginsLv2RowChanged)
self.list_VST.currentRowChanged.connect(self.slot_tweakPluginsVstRowChanged)

self.ch_app_image.clicked.connect(self.slot_tweaksSettingsChanged_apps)
self.cb_app_image.highlighted.connect(self.slot_tweakAppImageHighlighted)
self.cb_app_image.currentIndexChanged.connect(self.slot_tweakAppImageChanged)
self.ch_app_music.clicked.connect(self.slot_tweaksSettingsChanged_apps)
self.cb_app_music.highlighted.connect(self.slot_tweakAppMusicHighlighted)
self.cb_app_music.currentIndexChanged.connect(self.slot_tweakAppMusicChanged)
self.ch_app_video.clicked.connect(self.slot_tweaksSettingsChanged_apps)
self.cb_app_video.highlighted.connect(self.slot_tweakAppVideoHighlighted)
self.cb_app_video.currentIndexChanged.connect(self.slot_tweakAppVideoChanged)
self.ch_app_text.clicked.connect(self.slot_tweaksSettingsChanged_apps)
self.cb_app_text.highlighted.connect(self.slot_tweakAppTextHighlighted)
self.cb_app_text.currentIndexChanged.connect(self.slot_tweakAppTextChanged)
self.ch_app_browser.clicked.connect(self.slot_tweaksSettingsChanged_apps)
self.cb_app_browser.highlighted.connect(self.slot_tweakAppBrowserHighlighted)
self.cb_app_browser.currentIndexChanged.connect(self.slot_tweakAppBrowserChanged)

self.sb_wineasio_ins.valueChanged.connect(self.slot_tweaksSettingsChanged_wineasio)
self.sb_wineasio_outs.valueChanged.connect(self.slot_tweaksSettingsChanged_wineasio)
self.cb_wineasio_hw.clicked.connect(self.slot_tweaksSettingsChanged_wineasio)
self.cb_wineasio_autostart.clicked.connect(self.slot_tweaksSettingsChanged_wineasio)
self.cb_wineasio_fixed_bsize.clicked.connect(self.slot_tweaksSettingsChanged_wineasio)
self.cb_wineasio_bsizes.currentIndexChanged.connect(self.slot_tweaksSettingsChanged_wineasio)

# FIXME QT4
## org.jackaudio.JackControl
#self.DBusJackServerStartedCallback.connect(self.slot_DBusJackServerStartedCallback)
#self.DBusJackServerStoppedCallback.connect(self.slot_DBusJackServerStoppedCallback)

## org.jackaudio.JackPatchbay
#self.DBusJackClientAppearedCallback.connect(self.slot_DBusJackClientAppearedCallback)
#self.DBusJackClientDisappearedCallback.connect(self.slot_DBusJackClientDisappearedCallback)

## org.gna.home.a2jmidid.control
#self.DBusA2JBridgeStartedCallback.connect(self.slot_DBusA2JBridgeStartedCallback)
#self.DBusA2JBridgeStoppedCallback.connect(self.slot_DBusA2JBridgeStoppedCallback)

# -------------------------------------------------------------

@@ -1279,31 +1282,31 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
if not newId:
# Something crashed
if appInterface == "org.jackaudio.service":
QTimer.singleShot(0, self, SLOT("slot_handleCrash_jack()"))
QTimer.singleShot(0, self.slot_handleCrash_jack)
elif appInterface == "org.gna.home.a2jmidid":
QTimer.singleShot(0, self, SLOT("slot_handleCrash_a2j()"))
QTimer.singleShot(0, self.slot_handleCrash_a2j)

elif kwds['interface'] == "org.jackaudio.JackControl":
if DEBUG: print("org.jackaudio.JackControl", kwds['member'])
if kwds['member'] == "ServerStarted":
self.emit(SIGNAL("DBusJackServerStartedCallback()"))
self.DBusJackServerStartedCallback.emit()
elif kwds['member'] == "ServerStopped":
self.emit(SIGNAL("DBusJackServerStoppedCallback()"))
self.DBusJackServerStoppedCallback.emit()

elif kwds['interface'] == "org.jackaudio.JackPatchbay":
if gDBus.patchbay and kwds['path'] == gDBus.patchbay.object_path:
if DEBUG: print("org.jackaudio.JackPatchbay,", kwds['member'])
if kwds['member'] == "ClientAppeared":
self.emit(SIGNAL("DBusJackClientAppearedCallback(int, QString)"), args[iJackClientId], args[iJackClientName])
self.DBusJackClientAppearedCallback.emit(args[iJackClientId], args[iJackClientName])
elif kwds['member'] == "ClientDisappeared":
self.emit(SIGNAL("DBusJackClientDisappearedCallback(int)"), args[iJackClientId])
self.DBusJackClientDisappearedCallback.emit(args[iJackClientId])

elif kwds['interface'] == "org.gna.home.a2jmidid.control":
if DEBUG: print("org.gna.home.a2jmidid.control", kwds['member'])
if kwds['member'] == "bridge_started":
self.emit(SIGNAL("DBusA2JBridgeStartedCallback()"))
self.DBusA2JBridgeStartedCallback.emit()
elif kwds['member'] == "bridge_stopped":
self.emit(SIGNAL("DBusA2JBridgeStoppedCallback()"))
self.DBusA2JBridgeStoppedCallback.emit()

def jackStarted(self):
self.m_last_dsp_load = gDBus.jack.GetLoad()
@@ -1789,7 +1792,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):

if self.cb_cpufreq.currentIndex() == -1:
# First init
self.connect(self.cb_cpufreq, SIGNAL("currentIndexChanged(QString)"), SLOT("slot_changeGovernorMode(QString)"))
self.cb_cpufreq.currentIndexChanged.connect(self.slot_changeGovernorMode)

self.cb_cpufreq.blockSignals(True)



+ 2
- 2
src/cadence_aloop_daemon.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# Cadence ALSA-Loop daemon
# Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com>
#
# 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,7 +23,7 @@ import os
import sys
from signal import signal, SIGINT, SIGTERM
from time import sleep
from PyQt4.QtCore import QProcess
from PyQt5.QtCore import QProcess

# ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff)


+ 18
- 8
src/canvaspreviewframe.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# Custom Mini Canvas Preview, a custom Qt4 widget
# Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
@@ -19,8 +19,14 @@
# ------------------------------------------------------------------------------------------------------------
# Imports (Global)

from PyQt4.QtCore import Qt, QRectF, QTimer, SIGNAL, SLOT
from PyQt4.QtGui import QBrush, QColor, QCursor, QFrame, QPainter, QPen
if True:
from PyQt5.QtCore import pyqtSignal, Qt, QRectF, QTimer
from PyQt5.QtGui import QBrush, QColor, QCursor, QPainter, QPen
from PyQt5.QtWidgets import QFrame
else:
from PyQt4.QtCore import pyqtSignal, Qt, QRectF, QTimer
from PyQt4.QtGui import QBrush, QColor, QCursor, QPainter, QPen
from PyQt4.QtGui import QFrame

# ------------------------------------------------------------------------------------------------------------
# Static Variables
@@ -34,6 +40,8 @@ iHeight = 3
# Widget Class

class CanvasPreviewFrame(QFrame):
miniCanvasMoved = pyqtSignal(float, float)

def __init__(self, parent):
QFrame.__init__(self, parent)

@@ -97,7 +105,7 @@ class CanvasPreviewFrame(QFrame):

def setViewScale(self, scale):
self.fScale = scale
QTimer.singleShot(0, self.fRealParent, SLOT("slot_miniCanvasCheckAll()"))
QTimer.singleShot(0, self.fRealParent.slot_miniCanvasCheckAll)

def setViewSize(self, width, height):
self.fViewRect[iWidth] = width * self.fFakeWidth
@@ -137,7 +145,7 @@ class CanvasPreviewFrame(QFrame):
self.fViewRect[iY] = y + self.fRenderSource.y()
self.update()

self.emit(SIGNAL("miniCanvasMoved(double, double)"), x * self.fScale / self.fFakeWidth, y * self.fScale / self.fFakeHeight)
self.miniCanvasMoved.emit(x * self.fScale / self.fFakeWidth, y * self.fScale / self.fFakeHeight)

def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
@@ -176,7 +184,7 @@ class CanvasPreviewFrame(QFrame):
else:
painter.setBrush(self.fViewBg)
painter.setPen(self.fViewBg)
painter.drawRoundRect(2, 2, self.width()-6, self.height()-6, 3, 3)
painter.drawRoundedRect(2, 2, self.width()-6, self.height()-6, 3, 3)

self.fScene.render(painter, self.fRenderSource, self.fRenderTarget, Qt.KeepAspectRatio)

@@ -199,6 +207,8 @@ class CanvasPreviewFrame(QFrame):

def resizeEvent(self, event):
self.fRenderSource = self.getRenderSource()
if self.fRealParent:
QTimer.singleShot(0, self.fRealParent, SLOT("slot_miniCanvasCheckAll()"))

if self.fRealParent is not None:
QTimer.singleShot(0, self.fRealParent.slot_miniCanvasCheckAll)

QFrame.resizeEvent(self, event)

+ 9
- 7
src/catarina.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# PatchCanvas test application
# Copyright (C) 2010-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2010-2018 Filipe Coelho <falktx@falktx.com>
#
# 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,9 +19,11 @@
# ------------------------------------------------------------------------------------------------------------
# Imports (Global)

from PyQt4.QtCore import pyqtSlot, QSettings
from PyQt4.QtGui import QApplication, QDialog, QDialogButtonBox, QTableWidgetItem
from PyQt4.QtXml import QDomDocument
from PyQt5.QtCore import pyqtSlot, QSettings
from PyQt5.QtWidgets import QApplication, QDialog, QDialogButtonBox, QTableWidgetItem

# FIXME QT4
#from PyQt5.QtXml import QDomDocument

# ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff)
@@ -42,7 +44,7 @@ from shared_settings import *
# Try Import OpenGL

try:
from PyQt4.QtOpenGL import QGLWidget
from PyQt5.QtOpenGL import QGLWidget
hasGL = True
except:
hasGL = False
@@ -86,8 +88,8 @@ class CatarinaAddGroupW(QDialog, ui_catarina_addgroup.Ui_CatarinaAddGroupW):
for group in group_list:
self.m_group_list_names.append(group[iGroupName])

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setReturn()"))
self.connect(self.le_group_name, SIGNAL("textChanged(QString)"), SLOT("slot_checkText(QString)"))
self.accepted.connect(self.slot_setReturn)
self.le_group_name.textChanged.connect(self.slot_checkText)

self.ret_group_name = ""
self.ret_group_split = False


+ 0
- 9
src/catia.py View File

@@ -96,15 +96,6 @@ 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)



+ 169
- 168
src/claudia.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# LADISH frontend
# Copyright (C) 2010-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2010-2018 Filipe Coelho <falktx@falktx.com>
#
# 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
@@ -20,8 +20,8 @@
# Imports (Global)

from time import ctime
from PyQt4.QtCore import QPointF
from PyQt4.QtGui import QAction, QApplication, QCheckBox, QHBoxLayout, QVBoxLayout, QTableWidgetItem, QTreeWidgetItem
from PyQt5.QtCore import QPointF
from PyQt5.QtWidgets import QAction, QApplication, QCheckBox, QHBoxLayout, QVBoxLayout, QTableWidgetItem, QTreeWidgetItem

# ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff)
@@ -207,8 +207,8 @@ class StudioNameW(QDialog):
for studio in studioList:
self.fStudioList.append(str(studio[iStudioListName]))

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setReturn()"))
self.connect(self.ui.le_name, SIGNAL("textChanged(QString)"), SLOT("slot_checkText(QString)"))
self.accepted.connect(self.slot_setReturn)
self.ui.le_name.textChanged.connect(self.slot_checkText)

self.fRetStudioName = ""

@@ -252,9 +252,9 @@ class StudioListW(QDialog, ui_claudia_studiolist.Ui_StudioListW):

index += 1

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setReturn()"))
self.connect(self.tableWidget, SIGNAL("cellDoubleClicked(int, int)"), SLOT("accept()"))
self.connect(self.tableWidget, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelection(int)"))
self.accepted.connect(self.slot_setReturn)
self.tableWidget.cellDoubleClicked.connect(self.accept)
self.tableWidget.currentCellChanged.connect(self.slot_checkSelection)

if self.tableWidget.rowCount() > 0:
self.tableWidget.setCurrentCell(0, 0)
@@ -287,8 +287,8 @@ class CreateRoomW(QDialog, ui_claudia_createroom.Ui_CreateRoomW):
for template_name, template_dict in templates_list:
self.lw_templates.addItem(template_name)

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setReturn()"))
self.connect(self.le_name, SIGNAL("textChanged(QString)"), SLOT("slot_checkText(QString)"))
self.accepted.connect(self.slot_setReturn)
self.le_name.textChanged.connect(self.slot_checkText)

if self.lw_templates.count() > 0:
self.lw_templates.setCurrentRow(0)
@@ -332,10 +332,10 @@ class ProjectNameW(QDialog, ui_claudia_projectname.Ui_ProjectNameW):

self.m_proj_folder = proj_folder

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setReturn()"))
self.connect(self.b_open, SIGNAL("clicked()"), SLOT("slot_checkFolder()"))
self.connect(self.le_path, SIGNAL("textChanged(QString)"), SLOT("slot_checkText_path(QString)"))
self.connect(self.le_name, SIGNAL("textChanged(QString)"), SLOT("slot_checkText_name(QString)"))
self.accepted.connect(self.slot_setReturn)
self.b_open.clicked.connect(self.slot_checkFolder)
self.le_path.textChanged.connect(self.slot_checkText_path)
self.le_name.textChanged.connect(self.slot_checkText_name)

self.ret_project_name = ""
self.ret_project_path = ""
@@ -384,9 +384,9 @@ class ProjectPropertiesW(QDialog, ui_claudia_projectproperties.Ui_ProjectPropert
self.m_default_name = name
self.m_last_name = name

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setReturn()"))
self.connect(self.le_name, SIGNAL("textChanged(QString)"), SLOT("slot_checkText_name(QString)"))
self.connect(self.cb_save_now, SIGNAL("clicked(bool)"), SLOT("slot_checkSaveNow(bool)"))
self.accepted.connect(self.slot_setReturn)
self.le_name.textChanged.connect(self.slot_checkText_name)
self.cb_save_now.clicked.connect(self.slot_checkSaveNow)

self.le_name.setText(name)
self.le_description.setText(description)
@@ -458,8 +458,8 @@ class RunCustomW(QDialog, ui_claudia_runcustom.Ui_RunCustomW):
self.rb_level_lash.setEnabled(False)
self.rb_level_js.setEnabled(False)

self.connect(self, SIGNAL("accepted()"), SLOT("slot_setReturn()"))
self.connect(self.le_command, SIGNAL("textChanged(QString)"), SLOT("slot_checkText(QString)"))
self.accepted.connect(self.slot_setReturn)
self.le_command.textChanged.connect(self.slot_checkText)

self.ret_app_obj = None

@@ -532,8 +532,8 @@ class ClaudiaLauncherW(QDialog):

self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)

self.connect(self.buttonBox.button(QDialogButtonBox.Ok), SIGNAL("clicked()"), SLOT("slot_addAppToLADISH()"))
self.connect(self.buttonBox.button(QDialogButtonBox.Close), SIGNAL("clicked()"), self, SLOT("reject()"))
self.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.slot_addAppToLADISH)
self.buttonBox.button(QDialogButtonBox.Close).clicked.connect(self.reject)

# ----------------------------------------
# Callbacks
@@ -752,7 +752,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
self.ui.miniCanvasPreview.setRealParent(self)
self.ui.miniCanvasPreview.setViewTheme(patchcanvas.canvas.theme.canvas_bg, patchcanvas.canvas.theme.rubberband_brush, patchcanvas.canvas.theme.rubberband_pen.color())
self.ui.miniCanvasPreview.init(self.scene, DEFAULT_CANVAS_WIDTH, DEFAULT_CANVAS_HEIGHT)
QTimer.singleShot(100, self, SLOT("slot_miniCanvasInit()"))
QTimer.singleShot(100, self.slot_miniCanvasInit)

# -------------------------------------------------------------
# Check DBus
@@ -795,104 +795,105 @@ class ClaudiaMainW(AbstractCanvasJackClass):
self.setCanvasConnections()
self.setJackConnections(["jack", "transport", "misc"])

self.connect(self.ui.act_studio_new, SIGNAL("triggered()"), SLOT("slot_studio_new()"))
self.connect(self.ui.act_studio_start, SIGNAL("triggered()"), SLOT("slot_studio_start()"))
self.connect(self.ui.act_studio_stop, SIGNAL("triggered()"), SLOT("slot_studio_stop()"))
self.connect(self.ui.act_studio_save, SIGNAL("triggered()"), SLOT("slot_studio_save()"))
self.connect(self.ui.act_studio_save_as, SIGNAL("triggered()"), SLOT("slot_studio_save_as()"))
self.connect(self.ui.act_studio_rename, SIGNAL("triggered()"), SLOT("slot_studio_rename()"))
self.connect(self.ui.act_studio_unload, SIGNAL("triggered()"), SLOT("slot_studio_unload()"))
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.connect(self.ui.b_studio_new, SIGNAL("clicked()"), SLOT("slot_studio_new()"))
self.connect(self.ui.b_studio_load, SIGNAL("clicked()"), SLOT("slot_studio_load_b()"))
self.connect(self.ui.b_studio_save, SIGNAL("clicked()"), SLOT("slot_studio_save()"))
self.connect(self.ui.b_studio_save_as, SIGNAL("clicked()"), SLOT("slot_studio_save_as()"))
self.connect(self.ui.b_studio_start, SIGNAL("clicked()"), SLOT("slot_studio_start()"))
self.connect(self.ui.b_studio_stop, SIGNAL("clicked()"), SLOT("slot_studio_stop()"))
self.connect(self.ui.menu_studio_load, SIGNAL("aboutToShow()"), SLOT("slot_updateMenuStudioList_Load()"))
self.connect(self.ui.menu_studio_delete, SIGNAL("aboutToShow()"), SLOT("slot_updateMenuStudioList_Delete()"))

self.connect(self.ui.act_room_create, SIGNAL("triggered()"), SLOT("slot_room_create()"))
self.connect(self.ui.menu_room_delete, SIGNAL("aboutToShow()"), SLOT("slot_updateMenuRoomList()"))

self.connect(self.ui.act_project_new, SIGNAL("triggered()"), SLOT("slot_project_new()"))
self.connect(self.ui.act_project_save, SIGNAL("triggered()"), SLOT("slot_project_save()"))
self.connect(self.ui.act_project_save_as, SIGNAL("triggered()"), SLOT("slot_project_save_as()"))
self.connect(self.ui.act_project_unload, SIGNAL("triggered()"), SLOT("slot_project_unload()"))
self.connect(self.ui.act_project_properties, SIGNAL("triggered()"), SLOT("slot_project_properties()"))
self.connect(self.ui.b_project_new, SIGNAL("clicked()"), SLOT("slot_project_new()"))
self.connect(self.ui.b_project_load, SIGNAL("clicked()"), SLOT("slot_project_load()"))
self.connect(self.ui.b_project_save, SIGNAL("clicked()"), SLOT("slot_project_save()"))
self.connect(self.ui.b_project_save_as, SIGNAL("clicked()"), SLOT("slot_project_save_as()"))
self.connect(self.ui.menu_project_load, SIGNAL("aboutToShow()"), SLOT("slot_updateMenuProjectList()"))

self.connect(self.ui.act_app_add_new, SIGNAL("triggered()"), SLOT("slot_app_add_new()"))
self.connect(self.ui.act_app_run_custom, SIGNAL("triggered()"), SLOT("slot_app_run_custom()"))

self.connect(self.ui.treeWidget, SIGNAL("itemSelectionChanged()"), SLOT("slot_checkCurrentRoom()"))
#self.connect(self.ui.treeWidget, SIGNAL("itemPressed(QTreeWidgetItem*, int)"), SLOT("slot_checkCurrentRoom()"))
self.connect(self.ui.treeWidget, SIGNAL("itemDoubleClicked(QTreeWidgetItem*, int)"), SLOT("slot_doubleClickedAppList(QTreeWidgetItem*, int)"))
self.connect(self.ui.treeWidget, SIGNAL("customContextMenuRequested(QPoint)"), SLOT("slot_showAppListCustomMenu()"))

self.connect(self.ui.miniCanvasPreview, SIGNAL("miniCanvasMoved(double, double)"), SLOT("slot_miniCanvasMoved(double, double)"))

self.connect(self.ui.graphicsView.horizontalScrollBar(), SIGNAL("valueChanged(int)"), SLOT("slot_horizontalScrollBarChanged(int)"))
self.connect(self.ui.graphicsView.verticalScrollBar(), SIGNAL("valueChanged(int)"), SLOT("slot_verticalScrollBarChanged(int)"))

self.connect(self.scene, SIGNAL("sceneGroupMoved(int, int, QPointF)"), SLOT("slot_canvasItemMoved(int, int, QPointF)"))
self.connect(self.scene, SIGNAL("scaleChanged(double)"), SLOT("slot_canvasScaleChanged(double)"))

self.connect(self.ui.act_settings_configure, SIGNAL("triggered()"), SLOT("slot_configureClaudia()"))

self.connect(self.ui.act_help_about, SIGNAL("triggered()"), SLOT("slot_aboutClaudia()"))
self.connect(self.ui.act_help_about_qt, SIGNAL("triggered()"), app, SLOT("aboutQt()"))

# org.freedesktop.DBus
self.connect(self, SIGNAL("DBusCrashCallback(QString)"), SLOT("slot_DBusCrashCallback(QString)"))

# org.jackaudio.JackControl
self.connect(self, SIGNAL("DBusServerStartedCallback()"), SLOT("slot_DBusServerStartedCallback()"))
self.connect(self, SIGNAL("DBusServerStoppedCallback()"), SLOT("slot_DBusServerStoppedCallback()"))

# org.jackaudio.JackPatchbay
self.connect(self, SIGNAL("DBusClientAppearedCallback(int, QString)"), SLOT("slot_DBusClientAppearedCallback(int, QString)"))
self.connect(self, SIGNAL("DBusClientDisappearedCallback(int)"), SLOT("slot_DBusClientDisappearedCallback(int)"))
self.connect(self, SIGNAL("DBusClientRenamedCallback(int, QString)"), SLOT("slot_DBusClientRenamedCallback(int, QString)"))
self.connect(self, SIGNAL("DBusPortAppearedCallback(int, int, QString, int, int)"), SLOT("slot_DBusPortAppearedCallback(int, int, QString, int, int)"))
self.connect(self, SIGNAL("DBusPortDisppearedCallback(int)"), SLOT("slot_DBusPortDisppearedCallback(int)"))
self.connect(self, SIGNAL("DBusPortRenamedCallback(int, QString)"), SLOT("slot_DBusPortRenamedCallback(int, QString)"))
self.connect(self, SIGNAL("DBusPortsConnectedCallback(int, int, int)"), SLOT("slot_DBusPortsConnectedCallback(int, int, int)"))
self.connect(self, SIGNAL("DBusPortsDisconnectedCallback(int)"), SLOT("slot_DBusPortsDisconnectedCallback(int)"))

# org.ladish.Control
self.connect(self, SIGNAL("DBusStudioAppearedCallback()"), SLOT("slot_DBusStudioAppearedCallback()"))
self.connect(self, SIGNAL("DBusStudioDisappearedCallback()"), SLOT("slot_DBusStudioDisappearedCallback()"))
self.connect(self, SIGNAL("DBusQueueExecutionHaltedCallback()"), SLOT("slot_DBusQueueExecutionHaltedCallback()"))
self.connect(self, SIGNAL("DBusCleanExitCallback()"), SLOT("slot_DBusCleanExitCallback()"))

# org.ladish.Studio
self.connect(self, SIGNAL("DBusStudioStartedCallback()"), SLOT("slot_DBusStudioStartedCallback()"))
self.connect(self, SIGNAL("DBusStudioStoppedCallback()"), SLOT("slot_DBusStudioStoppedCallback()"))
self.connect(self, SIGNAL("DBusStudioRenamedCallback(QString)"), SLOT("slot_DBusStudioRenamedCallback(QString)"))
self.connect(self, SIGNAL("DBusStudioCrashedCallback()"), SLOT("slot_DBusStudioCrashedCallback()"))
self.connect(self, SIGNAL("DBusRoomAppearedCallback(QString, QString)"), SLOT("slot_DBusRoomAppearedCallback(QString, QString)"))
self.connect(self, SIGNAL("DBusRoomDisappearedCallback(QString)"), SLOT("slot_DBusRoomDisappearedCallback(QString)"))
#self.connect(self, SIGNAL("DBusRoomChangedCallback()"), SLOT("slot_DBusRoomChangedCallback()"))

# org.ladish.Room
self.connect(self, SIGNAL("DBusProjectPropertiesChanged(QString, QString)"), SLOT("slot_DBusProjectPropertiesChanged(QString, QString)"))

# org.ladish.AppSupervisor
self.connect(self, SIGNAL("DBusAppAdded2Callback(QString, int, QString, bool, bool, QString)"), SLOT("slot_DBusAppAdded2Callback(QString, int, QString, bool, bool, QString)"))
self.connect(self, SIGNAL("DBusAppRemovedCallback(QString, int)"), SLOT("slot_DBusAppRemovedCallback(QString, int)"))
self.connect(self, SIGNAL("DBusAppStateChanged2Callback(QString, int, QString, bool, bool, QString)"), SLOT("slot_DBusAppStateChanged2Callback(QString, int, QString, bool, bool, QString)"))
self.ui.act_studio_new.triggered.connect(self.slot_studio_new)
self.ui.act_studio_start.triggered.connect(self.slot_studio_start)
self.ui.act_studio_stop.triggered.connect(self.slot_studio_stop)
self.ui.act_studio_save.triggered.connect(self.slot_studio_save)
self.ui.act_studio_save_as.triggered.connect(self.slot_studio_save_as)
self.ui.act_studio_rename.triggered.connect(self.slot_studio_rename)
self.ui.act_studio_unload.triggered.connect(self.slot_studio_unload)
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.ui.b_studio_new.clicked.connect(self.slot_studio_new)
self.ui.b_studio_load.clicked.connect(self.slot_studio_load_b)
self.ui.b_studio_save.clicked.connect(self.slot_studio_save)
self.ui.b_studio_save_as.clicked.connect(self.slot_studio_save_as)
self.ui.b_studio_start.clicked.connect(self.slot_studio_start)
self.ui.b_studio_stop.clicked.connect(self.slot_studio_stop)
self.ui.menu_studio_load.aboutToShow.connect(self.slot_updateMenuStudioList_Load)
self.ui.menu_studio_delete.aboutToShow.connect(self.slot_updateMenuStudioList_Delete)

self.ui.act_room_create.triggered.connect(self.slot_room_create)
self.ui.menu_room_delete.aboutToShow.connect(self.slot_updateMenuRoomList)

self.ui.act_project_new.triggered.connect(self.slot_project_new)
self.ui.act_project_save.triggered.connect(self.slot_project_save)
self.ui.act_project_save_as.triggered.connect(self.slot_project_save_as)
self.ui.act_project_unload.triggered.connect(self.slot_project_unload)
self.ui.act_project_properties.triggered.connect(self.slot_project_properties)
self.ui.b_project_new.clicked.connect(self.slot_project_new)
self.ui.b_project_load.clicked.connect(self.slot_project_load)
self.ui.b_project_save.clicked.connect(self.slot_project_save)
self.ui.b_project_save_as.clicked.connect(self.slot_project_save_as)
self.ui.menu_project_load.aboutToShow.connect(self.slot_updateMenuProjectList)

self.ui.act_app_add_new.triggered.connect(self.slot_app_add_new)
self.ui.act_app_run_custom.triggered.connect(self.slot_app_run_custom)

self.ui.treeWidget.itemSelectionChanged.connect(self.slot_checkCurrentRoom)
#self.ui.treeWidget.itemPressed.connect(self.slot_checkCurrentRoom)
self.ui.treeWidget.itemDoubleClicked.connect(self.slot_doubleClickedAppList)
self.ui.treeWidget.customContextMenuRequested.connect(self.slot_showAppListCustomMenu)

self.ui.miniCanvasPreview.miniCanvasMoved.connect(self.slot_miniCanvasMoved)

self.ui.graphicsView.horizontalScrollBar().valueChanged.connect(self.slot_horizontalScrollBarChanged)
self.ui.graphicsView.verticalScrollBar().valueChanged.connect(self.slot_verticalScrollBarChanged)

self.scene.sceneGroupMoved.connect(self.slot_canvasItemMoved)
self.scene.scaleChanged.connect(self.slot_canvasScaleChanged)

self.ui.act_settings_configure.triggered.connect(self.slot_configureClaudia)

self.ui.act_help_about.triggered.connect(self.slot_aboutClaudia)
self.ui.act_help_about_qt.triggered.connect(app.aboutQt)

# FIXME QT4
## org.freedesktop.DBus
#self.DBusCrashCallback.connect(self.slot_DBusCrashCallback)

## org.jackaudio.JackControl
#self.DBusServerStartedCallback.connect(self.slot_DBusServerStartedCallback)
#self.DBusServerStoppedCallback.connect(self.slot_DBusServerStoppedCallback)

## org.jackaudio.JackPatchbay
#self.DBusClientAppearedCallback.connect(self.slot_DBusClientAppearedCallback)
#self.DBusClientDisappearedCallback.connect(self.slot_DBusClientDisappearedCallback)
#self.DBusClientRenamedCallback.connect(self.slot_DBusClientRenamedCallback)
#self.DBusPortAppearedCallback.connect(self.slot_DBusPortAppearedCallback)
#self.DBusPortDisppearedCallback.connect(self.slot_DBusPortDisppearedCallback)
#self.DBusPortRenamedCallback.connect(self.slot_DBusPortRenamedCallback)
#self.DBusPortsConnectedCallback.connect(self.slot_DBusPortsConnectedCallback)
#self.DBusPortsDisconnectedCallback.connect(self.slot_DBusPortsDisconnectedCallback)

## org.ladish.Control
#self.DBusStudioAppearedCallback.connect(self.slot_DBusStudioAppearedCallback)
#self.DBusStudioDisappearedCallback.connect(self.slot_DBusStudioDisappearedCallback)
#self.DBusQueueExecutionHaltedCallback.connect(self.slot_DBusQueueExecutionHaltedCallback)
#self.DBusCleanExitCallback.connect(self.slot_DBusCleanExitCallback)

## org.ladish.Studio
#self.DBusStudioStartedCallback.connect(self.slot_DBusStudioStartedCallback)
#self.DBusStudioStoppedCallback.connect(self.slot_DBusStudioStoppedCallback)
#self.DBusStudioRenamedCallback.connect(self.slot_DBusStudioRenamedCallback)
#self.DBusStudioCrashedCallback.connect(self.slot_DBusStudioCrashedCallback)
#self.DBusRoomAppearedCallback.connect(self.slot_DBusRoomAppearedCallback)
#self.DBusRoomDisappearedCallback.connect(self.slot_DBusRoomDisappearedCallback)
##self.DBusRoomChangedCallback.connect(self.slot_DBusRoomChangedCallback)

## org.ladish.Room
#self.DBusProjectPropertiesChanged.connect(self.slot_DBusProjectPropertiesChanged)

## org.ladish.AppSupervisor
#self.DBusAppAdded2Callback.connect(self.slot_DBusAppAdded2Callback)
#self.DBusAppRemovedCallback.connect(self.slot_DBusAppRemovedCallback)
#self.DBusAppStateChanged2Callback.connect(self.slot_DBusAppStateChanged2Callback)

# JACK
self.connect(self, SIGNAL("JackBufferSizeCallback(int)"), SLOT("slot_JackBufferSizeCallback(int)"))
self.connect(self, SIGNAL("JackSampleRateCallback(int)"), SLOT("slot_JackSampleRateCallback(int)"))
self.connect(self, SIGNAL("JackShutdownCallback()"), SLOT("slot_JackShutdownCallback()"))
self.BufferSizeCallback.connect(self.slot_JackBufferSizeCallback)
self.SampleRateCallback.connect(self.slot_JackSampleRateCallback)
self.ShutdownCallback.connect(self.slot_JackShutdownCallback)

# -------------------------------------------------------------
# Set-up DBus
@@ -1161,7 +1162,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
source_group_id, source_group_name, source_port_id, source_port_name, target_group_id, target_group_name, target_port_id, target_port_name, conn_id = conn
self.canvas_connect_ports(int(conn_id), int(source_port_id), int(target_port_id))

QTimer.singleShot(1000 if (self.fSavedSettings['Canvas/EyeCandy']) else 0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(1000 if (self.fSavedSettings['Canvas/EyeCandy']) else 0, self.ui.miniCanvasPreview.update)

def room_add(self, room_path, room_name):
room_index = int(room_path.replace("/org/ladish/Room", ""))
@@ -1254,35 +1255,35 @@ class ClaudiaMainW(AbstractCanvasJackClass):
if y2 is None: y2 = "%f" % (float(y) + 50)
patchcanvas.setGroupPosFull(groupId, float(x), float(y), float(x2), float(y2))

QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def canvas_remove_group(self, group_id):
patchcanvas.removeGroup(group_id)
QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def canvas_rename_group(self, group_id, new_group_name):
patchcanvas.renameGroup(group_id, new_group_name)
QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def canvas_add_port(self, group_id, port_id, port_name, port_mode, port_type):
patchcanvas.addPort(group_id, port_id, port_name, port_mode, port_type)
QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def canvas_remove_port(self, port_id):
patchcanvas.removePort(port_id)
QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def canvas_rename_port(self, port_id, new_port_name):
patchcanvas.renamePort(port_id, new_port_name)
QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def canvas_connect_ports(self, connection_id, port_a, port_b):
patchcanvas.connectPorts(connection_id, port_a, port_b)
QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def canvas_disconnect_ports(self, connection_id):
patchcanvas.disconnectPorts(connection_id)
QTimer.singleShot(0, self.ui.miniCanvasPreview, SLOT("update()"))
QTimer.singleShot(0, self.ui.miniCanvasPreview.update)

def jackStarted(self):
if jacksettings.needsInit():
@@ -1497,85 +1498,85 @@ class ClaudiaMainW(AbstractCanvasJackClass):
if not newId:
# Something crashed
if appInterface == "org.gna.home.a2jmidid":
QTimer.singleShot(0, self, SLOT("slot_handleCrash_a2j()"))
QTimer.singleShot(0, self.slot_handleCrash_a2j)
elif appInterface in ("org.jackaudio.service", "org.ladish"):
# Prevent any more dbus calls
gDBus.jack = None
gJack.client = None
jacksettings.initBus(None)
self.emit(SIGNAL("DBusCrashCallback(QString)"), appInterface)
self.DBusCrashCallback.emit(appInterface)

elif kwds['interface'] == "org.jackaudio.JackControl":
if DEBUG: print("DBus signal @org.jackaudio.JackControl,", kwds['member'])
if kwds['member'] == "ServerStarted":
self.emit(SIGNAL("DBusServerStartedCallback()"))
self.DBusServerStartedCallback.emit()
elif kwds['member'] == "ServerStopped":
self.emit(SIGNAL("DBusServerStoppedCallback()"))
self.DBusServerStoppedCallback.emit()

elif kwds['interface'] == "org.jackaudio.JackPatchbay":
if gDBus.patchbay and kwds['path'] == gDBus.patchbay.object_path:
if DEBUG: print("DBus signal @org.jackaudio.JackPatchbay,", kwds['member'])
if kwds['member'] == "ClientAppeared":
self.emit(SIGNAL("DBusClientAppearedCallback(int, QString)"), args[iJackClientId], args[iJackClientName])
self.DBusClientAppearedCallback.emit(args[iJackClientId], args[iJackClientName])
elif kwds['member'] == "ClientDisappeared":
self.emit(SIGNAL("DBusClientDisappearedCallback(int)"), args[iJackClientId])
self.DBusClientDisappearedCallback.emit(args[iJackClientId])
elif kwds['member'] == "ClientRenamed":
self.emit(SIGNAL("DBusClientRenamedCallback(int, QString)"), args[iRenamedId], args[iRenamedNewName])
self.DBusClientRenamedCallback.emit(args[iRenamedId], args[iRenamedNewName])
elif kwds['member'] == "PortAppeared":
self.emit(SIGNAL("DBusPortAppearedCallback(int, int, QString, int, int)"), args[iJackClientId], args[iJackPortId], args[iJackPortName], args[iJackPortFlags], args[iJackPortType])
self.DBusPortAppearedCallback.emit(args[iJackClientId], args[iJackPortId], args[iJackPortName], args[iJackPortFlags], args[iJackPortType])
elif kwds['member'] == "PortDisappeared":
self.emit(SIGNAL("DBusPortDisppearedCallback(int)"), args[iJackPortId])
self.DBusPortDisppearedCallback.emit(args[iJackPortId])
elif kwds['member'] == "PortRenamed":
self.emit(SIGNAL("DBusPortRenamedCallback(int, QString)"), args[iJackPortId], args[iJackPortNewName])
self.DBusPortRenamedCallback.emit(args[iJackPortId], args[iJackPortNewName])
elif kwds['member'] == "PortsConnected":
self.emit(SIGNAL("DBusPortsConnectedCallback(int, int, int)"), args[iJackConnId], args[iSourcePortId], args[iTargetPortId])
self.DBusPortsConnectedCallback.emit(args[iJackConnId], args[iSourcePortId], args[iTargetPortId])
elif kwds['member'] == "PortsDisconnected":
self.emit(SIGNAL("DBusPortsDisconnectedCallback(int)"), args[iJackConnId])
self.DBusPortsDisconnectedCallback.emit(args[iJackConnId])

elif kwds['interface'] == "org.ladish.Control":
if DEBUG: print("DBus signal @org.ladish.Control,", kwds['member'])
if kwds['member'] == "StudioAppeared":
self.emit(SIGNAL("DBusStudioAppearedCallback()"))
self.DBusStudioAppearedCallback.emit()
elif kwds['member'] == "StudioDisappeared":
self.emit(SIGNAL("DBusStudioDisappearedCallback()"))
self.DBusStudioDisappearedCallback.emit()
elif kwds['member'] == "QueueExecutionHalted":
self.emit(SIGNAL("DBusQueueExecutionHaltedCallback()"))
self.DBusQueueExecutionHaltedCallback.emit()
elif kwds['member'] == "CleanExit":
self.emit(SIGNAL("DBusCleanExitCallback()"))
self.DBusCleanExitCallback.emit()

elif kwds['interface'] == "org.ladish.Studio":
if DEBUG: print("DBus signal @org.ladish.Studio,", kwds['member'])
if kwds['member'] == "StudioStarted":
self.emit(SIGNAL("DBusStudioStartedCallback()"))
self.DBusStudioStartedCallback.emit()
elif kwds['member'] == "StudioStopped":
self.emit(SIGNAL("DBusStudioStoppedCallback()"))
self.DBusStudioStoppedCallback.emit()
elif kwds['member'] == "StudioRenamed":
self.emit(SIGNAL("DBusStudioRenamedCallback(QString)"), args[iStudioRenamedName])
self.DBusStudioRenamedCallback.emit(args[iStudioRenamedName])
elif kwds['member'] == "StudioCrashed":
self.emit(SIGNAL("DBusStudioCrashedCallback()"))
self.DBusStudioCrashedCallback.emit()
elif kwds['member'] == "RoomAppeared":
self.emit(SIGNAL("DBusRoomAppearedCallback(QString, QString)"), args[iRoomAppearedPath], args[iRoomAppearedDict]['name'])
self.DBusRoomAppearedCallback.emit(args[iRoomAppearedPath], args[iRoomAppearedDict]['name'])
elif kwds['member'] == "RoomDisappeared":
self.emit(SIGNAL("DBusRoomDisappearedCallback(QString)"), args[iRoomAppearedPath])
self.DBusRoomDisappearedCallback.emit(args[iRoomAppearedPath])
#elif kwds['member'] == "RoomChanged":
#self.emit(SIGNAL("DBusRoomChangedCallback()"))
#self.DBusRoomChangedCallback.emit()

elif kwds['interface'] == "org.ladish.Room":
if DEBUG: print("DBus signal @org.ladish.Room,", kwds['member'])
if kwds['member'] == "ProjectPropertiesChanged":
if "name" in args[iProjChangedDict].keys():
self.emit(SIGNAL("DBusProjectPropertiesChanged(QString, QString)"), kwds['path'], args[iProjChangedDict]['name'])
self.DBusProjectPropertiesChanged.emit(kwds['path'], args[iProjChangedDict]['name'])
else:
self.emit(SIGNAL("DBusProjectPropertiesChanged(QString, QString)"), kwds['path'], "")
self.DBusProjectPropertiesChanged.emit(kwds['path'], "")

elif kwds['interface'] == "org.ladish.AppSupervisor":
if DEBUG: print("DBus signal @org.ladish.AppSupervisor,", kwds['member'])
if kwds['member'] == "AppAdded2":
self.emit(SIGNAL("DBusAppAdded2Callback(QString, int, QString, bool, bool, QString)"), kwds['path'], args[iAppChangedNumber], args[iAppChangedName], args[iAppChangedActive], args[iAppChangedTerminal], args[iAppChangedLevel])
self.DBusAppAdded2Callback.emit(kwds['path'], args[iAppChangedNumber], args[iAppChangedName], args[iAppChangedActive], args[iAppChangedTerminal], args[iAppChangedLevel])
elif kwds['member'] == "AppRemoved":
self.emit(SIGNAL("DBusAppRemovedCallback(QString, int)"), kwds['path'], args[iAppChangedNumber])
self.DBusAppRemovedCallback.emit(kwds['path'], args[iAppChangedNumber])
elif kwds['member'] == "AppStateChanged2":
self.emit(SIGNAL("DBusAppStateChanged2Callback(QString, int, QString, bool, bool, QString)"), kwds['path'], args[iAppChangedNumber], args[iAppChangedName], args[iAppChangedActive], args[iAppChangedTerminal], args[iAppChangedLevel])
self.DBusAppStateChanged2Callback.emit(kwds['path'], args[iAppChangedNumber], args[iAppChangedName], args[iAppChangedActive], args[iAppChangedTerminal], args[iAppChangedLevel])

elif kwds['interface'] == "org.gna.home.a2jmidid.control":
if kwds['member'] == "bridge_started":
@@ -1618,17 +1619,17 @@ class ClaudiaMainW(AbstractCanvasJackClass):

def JackBufferSizeCallback(self, buffer_size, arg):
if DEBUG: print("JackBufferSizeCallback(%i)" % buffer_size)
self.emit(SIGNAL("JackBufferSizeCallback(int)"), buffer_size)
self.BufferSizeCallback.emit(buffer_size)
return 0

def JackSampleRateCallback(self, sample_rate, arg):
if DEBUG: print("JackSampleRateCallback(%i)" % sample_rate)
self.emit(SIGNAL("JackSampleRateCallback(int)"), sample_rate)
self.SampleRateCallback.emit(sample_rate)
return 0

def JackShutdownCallback(self, arg):
if DEBUG: print("JackShutdownCallback()")
self.emit(SIGNAL("JackShutdownCallback()"))
if DEBUG: print("JackShutdownCallback")
self.ShutdownCallback.emit()
return 0

@pyqtSlot()
@@ -1893,7 +1894,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
studio_name = str(studio[iStudioListName])
act_x_studio = QAction(studio_name, self.ui.menu_studio_load)
self.ui.menu_studio_load.addAction(act_x_studio)
self.connect(act_x_studio, SIGNAL("triggered()"), SLOT("slot_studio_load_m()"))
act_x_studio.triggered.connect(self.slot_studio_load_m)

@pyqtSlot()
def slot_updateMenuStudioList_Delete(self):
@@ -1909,7 +1910,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
studio_name = str(studio[iStudioListName])
act_x_studio = QAction(studio_name, self.ui.menu_studio_delete)
self.ui.menu_studio_delete.addAction(act_x_studio)
self.connect(act_x_studio, SIGNAL("triggered()"), SLOT("slot_studio_delete_m()"))
act_x_studio.triggered.connect(self.slot_studio_delete_m)

@pyqtSlot()
def slot_updateMenuRoomList(self):
@@ -1924,7 +1925,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
room_name = ladish_room.GetName()
act_x_room = QAction(room_name, self.ui.menu_room_delete)
self.ui.menu_room_delete.addAction(act_x_room)
self.connect(act_x_room, SIGNAL("triggered()"), SLOT("slot_room_delete_m()"))
act_x_room.triggered.connect(self.slot_room_delete_m)
else:
self.createEmptyMenuRoomActon()

@@ -1938,7 +1939,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
self.ui.menu_project_load.clear()
act_project_load = QAction(self.tr("Load from folder..."), self.ui.menu_project_load)
self.ui.menu_project_load.addAction(act_project_load)
self.connect(act_project_load, SIGNAL("triggered()"), SLOT("slot_project_load()"))
act_project_load.triggered.connect(self.slot_project_load)

ladish_recent_iface = dbus.Interface(gDBus.ladish_room, "org.ladish.RecentItems")
proj_list = ladish_recent_iface.get(RECENT_PROJECTS_STORE_MAX_ITEMS)
@@ -1954,7 +1955,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
act_x_text = "%s [%s]" % (proj_name, proj_path)
act_x_proj = QAction(act_x_text, self.ui.menu_project_load)
self.ui.menu_project_load.addAction(act_x_proj)
self.connect(act_x_proj, SIGNAL("triggered()"), SLOT("slot_project_load_m()"))
act_x_proj.triggered.connect(self.slot_project_load_m)

@pyqtSlot()
def slot_showAppListCustomMenu(self):
@@ -2193,11 +2194,11 @@ class ClaudiaMainW(AbstractCanvasJackClass):
if appInterface == "org.jackaudio.service":
if not (self.m_crashedJACK or self.m_crashedLADISH):
self.m_crashedJACK = True
QTimer.singleShot(1000, self, SLOT("slot_handleCrash_jack()"))
QTimer.singleShot(1000, self.slot_handleCrash_jack)
elif appInterface == "org.ladish":
if not (self.m_crashedJACK or self.m_crashedLADISH):
self.m_crashedLADISH = True
QTimer.singleShot(1000, self, SLOT("slot_handleCrash_ladish()"))
QTimer.singleShot(1000, self.slot_handleCrash_ladish)

@pyqtSlot()
def slot_DBusServerStartedCallback(self):
@@ -2310,7 +2311,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):

@pyqtSlot()
def slot_DBusStudioCrashedCallback(self):
QTimer.singleShot(0, self, SLOT("slot_handleCrash_studio()"))
QTimer.singleShot(0, self.slot_handleCrash_studio)

@pyqtSlot(str, str)
def slot_DBusRoomAppearedCallback(self, room_path, room_name):
@@ -2671,7 +2672,7 @@ class ClaudiaMainW(AbstractCanvasJackClass):
self.ui.act_app_add_new.setEnabled(USE_CLAUDIA_ADD_NEW)

def resizeEvent(self, event):
QTimer.singleShot(0, self, SLOT("slot_miniCanvasCheckSize()"))
QTimer.singleShot(0, self.slot_miniCanvasCheckSize)
QMainWindow.resizeEvent(self, event)

def timerEvent(self, event):


+ 28
- 28
src/claudia_launcher.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# ... TODO
# Copyright (C) 2010-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2010-2018 Filipe Coelho <falktx@falktx.com>
#
# 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, Qt, QTimer, QSettings
from PyQt4.QtGui import QMainWindow, QTableWidgetItem, QWidget
from PyQt5.QtCore import pyqtSlot, Qt, QTimer, QSettings
from PyQt5.QtWidgets import QMainWindow, QTableWidgetItem, QWidget
from random import randint

# ------------------------------------------------------------------------------------------------------------
@@ -170,22 +170,22 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):

self.refreshAll()

self.connect(self.tabWidget, SIGNAL("currentChanged(int)"), SLOT("slot_checkSelectedTab(int)"))
self.connect(self.listDAW, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedDAW(int)"))
self.connect(self.listHost, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedHost(int)"))
self.connect(self.listInstrument, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedInstrument(int)"))
self.connect(self.listBristol, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedBristol(int)"))
self.connect(self.listPlugin, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedPlugin(int)"))
self.connect(self.listEffect, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedEffect(int)"))
self.connect(self.listTool, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedTool(int)"))
self.connect(self.listDAW, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listHost, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listInstrument, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listBristol, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listPlugin, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listEffect, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listTool, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.tabWidget.currentChanged.connect(self.slot_checkSelectedTab)
self.listDAW.currentCellChanged.connect(self.slot_checkSelectedDAW)
self.listHost.currentCellChanged.connect(self.slot_checkSelectedHost)
self.listInstrument.currentCellChanged.connect(self.slot_checkSelectedInstrument)
self.listBristol.currentCellChanged.connect(self.slot_checkSelectedBristol)
self.listPlugin.currentCellChanged.connect(self.slot_checkSelectedPlugin)
self.listEffect.currentCellChanged.connect(self.slot_checkSelectedEffect)
self.listTool.currentCellChanged.connect(self.slot_checkSelectedTool)
self.listDAW.cellDoubleClicked.connect(self.slot_doubleClickedList)
self.listHost.cellDoubleClicked.connect(self.slot_doubleClickedList)
self.listInstrument.cellDoubleClicked.connect(self.slot_doubleClickedList)
self.listBristol.cellDoubleClicked.connect(self.slot_doubleClickedList)
self.listPlugin.cellDoubleClicked.connect(self.slot_doubleClickedList)
self.listEffect.cellDoubleClicked.connect(self.slot_doubleClickedList)
self.listTool.cellDoubleClicked.connect(self.slot_doubleClickedList)

def getSelectedAppAndBinary(self):
tabIndex = self.tabWidget.currentIndex()
@@ -1119,7 +1119,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
if __name__ == '__main__':
import dbus
from signal import signal, SIG_IGN, SIGUSR1
from PyQt4.QtGui import QApplication
from PyQt5.QtWidgets import QApplication
import jacklib, ui_claudia_launcher_app

# DBus connections
@@ -1149,7 +1149,7 @@ if __name__ == '__main__':
# Check for JACK
self.jack_client = jacklib.client_open("klaudia", jacklib.JackNoStartServer, None)
if not self.jack_client:
QTimer.singleShot(0, self, SLOT("slot_showJackError()"))
QTimer.singleShot(0, self.slot_showJackError)
return

# Set-up GUI
@@ -1175,15 +1175,15 @@ if __name__ == '__main__':
else:
self.slot_enableLADISH(False)

self.connect(self.b_start, SIGNAL("clicked()"), SLOT("slot_startApp()"))
self.connect(self.b_add, SIGNAL("clicked()"), SLOT("slot_addAppToLADISH()"))
self.connect(self.b_refresh, SIGNAL("clicked()"), SLOT("slot_refreshStudioList()"))
self.b_start.clicked.connect(self.slot_startApp)
self.b_add.clicked.connect(self.slot_addAppToLADISH)
self.b_refresh.clicked.connect(self.slot_refreshStudioList)

self.connect(self.co_ladi_room, SIGNAL("currentIndexChanged(int)"), SLOT("slot_checkSelectedRoom(int)"))
self.connect(self.groupLADISH, SIGNAL("toggled(bool)"), SLOT("slot_enableLADISH(bool)"))
self.co_ladi_room.currentIndexChanged.connect(self.slot_checkSelectedRoom)
self.groupLADISH.toggled.connect(self.slot_enableLADISH)

self.connect(self.le_url, SIGNAL("textChanged(QString)"), SLOT("slot_checkFolderUrl(QString)"))
self.connect(self.b_open, SIGNAL("clicked()"), SLOT("slot_getAndSetPath()"))
self.le_url.textChanged.connect(self.slot_checkFolderUrl)
self.b_open.clicked.connect(self.slot_getAndSetPath)

def getIcon(self, icon):
return self.launcher.getIcon(icon)


+ 9
- 5
src/clickablelabel.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# Clickable Label, a custom Qt4 widget
# Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
#
# 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,23 +19,27 @@
# ------------------------------------------------------------------------------------------------------------
# Imports (Global)

from PyQt4.QtCore import pyqtSlot, Qt, QTimer, SIGNAL, SLOT
from PyQt4.QtGui import QLabel
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer
from PyQt5.QtWidgets import QLabel

# ------------------------------------------------------------------------------------------------------------
# Widget Class

class ClickableLabel(QLabel):
clicked = pyqtSignal()

def __init__(self, parent):
QLabel.__init__(self, parent)

self.setCursor(Qt.PointingHandCursor)

def mousePressEvent(self, event):
self.emit(SIGNAL("clicked()"))
self.clicked.emit()

# Use busy cursor for 2 secs
self.setCursor(Qt.WaitCursor)
QTimer.singleShot(2000, self, SLOT("slot_setNormalCursor()"))
QTimer.singleShot(2000, self.slot_setNormalCursor)

QLabel.mousePressEvent(self, event)

@pyqtSlot()


+ 1
- 1
src/shared.py View File

@@ -31,7 +31,7 @@ from PyQt5.QtWidgets import QApplication, QFileDialog, QMessageBox
# Set Platform

if sys.platform == "darwin":
from PyQt4.QtGui import qt_mac_set_menubar_icons
from PyQt5.QtGui import qt_mac_set_menubar_icons
qt_mac_set_menubar_icons(False)
HAIKU = False
LINUX = False


+ 9
- 0
src/shared_canvasjack.py View File

@@ -96,6 +96,15 @@ gJack.client = None
# Abstract Canvas and JACK Class

class AbstractCanvasJackClass(QMainWindow):
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()

SIGTERM = pyqtSignal()
SIGUSR1 = pyqtSignal()
SIGUSR2 = pyqtSignal()


+ 19
- 41
src/systray.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-

# KDE, App-Indicator or Qt Systray
# Copyright (C) 2011-2012 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
#
# 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
@@ -18,41 +18,20 @@

# Imports (Global)
import os, sys
from PyQt4.QtCore import QTimer, SIGNAL
from PyQt4.QtGui import QAction, QIcon, QMainWindow, QMenu, QSystemTrayIcon
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QAction, QMainWindow, QMenu, QSystemTrayIcon

try:
if False and os.getenv("DESKTOP_SESSION") in ("ubuntu", "ubuntu-2d") and not os.path.exists("/var/cadence/no_app_indicators"):
# Check current Qt theme. If Gtk+, use Gtk2 AppIndicator
style = None
if len(sys.argv) > 2 and "-style" in sys.argv:
i = sys.argv.index("-style")
if i < len(sys.argv):
style = sys.argv[i+1]

check_cmd = "python3 -c 'import sys; from PyQt4.QtGui import QApplication; app = QApplication(sys.argv); print(app.style().objectName())'"

if style:
check_cmd += " -style %s" % style

from subprocess import getoutput
needsGtk2 = bool(getoutput(check_cmd).strip().lower() in ("gtk", "gtk+"))

if needsGtk2:
from gi import pygtkcompat
pygtkcompat.enable()
pygtkcompat.enable_gtk(version="2.0")
from gi.repository import Gtk, AppIndicator
else:
from gi.repository import Gtk, AppIndicator3 as AppIndicator

if os.getenv("DESKTOP_SESSION") in ("ubuntu", "ubuntu-2d") and not os.path.exists("/var/cadence/no_app_indicators"):
from gi.repository import Gtk, AppIndicator3 as AppIndicator
TrayEngine = "AppIndicator"

elif os.getenv("KDE_SESSION_VERSION") >= 5:
TrayEngine = "Qt"

elif (os.getenv("KDE_FULL_SESSION") or os.getenv("DESKTOP_SESSION") == "kde-plasma") and not os.path.exists("/etc/debian_version"):
from PyKDE4.kdeui import KAction, KIcon, KMenu, KStatusNotifierItem
elif os.getenv("KDE_FULL_SESSION") or os.getenv("DESKTOP_SESSION") == "kde-plasma":
from PyKDE5.kdeui import KAction, KIcon, KMenu, KStatusNotifierItem
TrayEngine = "KDE"

else:
@@ -117,7 +96,7 @@ class GlobalSysTray(object):
self.tray = QSystemTrayIcon(getIcon(icon))
self.tray.setContextMenu(self.menu)
self.tray.setParent(parent)
self.tray.connect(self.tray, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.qt_systray_clicked)
self.tray.activated.connect(self.qt_systray_clicked)

# -------------------------------------------------------------------------------------------

@@ -289,14 +268,11 @@ class GlobalSysTray(object):

act_widget = self.act_indexes[i][iActWidget]

if TrayEngine == "KDE":
self.tray.connect(act_widget, SIGNAL("triggered()"), act_func)

elif TrayEngine == "AppIndicator":
if TrayEngine == "AppIndicator":
act_widget.connect("activate", self.gtk_call_func, act_name_id)

elif TrayEngine == "Qt":
self.tray.connect(act_widget, SIGNAL("triggered()"), act_func)
elif TrayEngine in ("KDE", "Qt"):
act_widget.triggered.connect(act_func)

self.act_indexes[i][iActFunc] = act_func

@@ -488,12 +464,14 @@ class GlobalSysTray(object):

def isTrayAvailable(self):
if TrayEngine in ("KDE", "Qt"):
# Ask Qt
return QSystemTrayIcon.isSystemTrayAvailable()
elif TrayEngine == "AppIndicator":

if TrayEngine == "AppIndicator":
# Ubuntu/Unity always has a systray
return True
else:
return False
return False

def handleQtCloseEvent(self, event):
if self.isTrayAvailable() and self._parent.isVisible():
@@ -660,7 +638,7 @@ class GlobalSysTray(object):

#--------------- main ------------------
if __name__ == '__main__':
from PyQt4.QtGui import QApplication, QDialog, QMessageBox
from PyQt5.QtWidgets import QApplication, QDialog, QMessageBox

class ExampleGUI(QDialog):
def __init__(self, parent=None):


Loading…
Cancel
Save