Browse Source

Use Qt4 in python code

tags/1.9.4
falkTX 11 years ago
parent
commit
f7710e7a5f
17 changed files with 202 additions and 184 deletions
  1. +2
    -2
      source/backend/engine/CarlaEngineJack.cpp
  2. +4
    -0
      source/backend/standalone/CarlaStandalone.cpp
  3. +1
    -1
      source/carla-patchbay
  4. +1
    -1
      source/carla-rack
  5. +77
    -77
      source/carla_host.py
  6. +4
    -4
      source/carla_patchbay.py
  7. +9
    -13
      source/carla_settings.py
  8. +29
    -11
      source/carla_widgets.py
  9. +18
    -18
      source/patchcanvas.py
  10. +6
    -6
      source/patchcanvas_theme.py
  11. +7
    -7
      source/widgets/canvaspreviewframe.py
  12. +7
    -7
      source/widgets/digitalpeakmeter.py
  13. +7
    -7
      source/widgets/ledbutton.py
  14. +7
    -7
      source/widgets/paramspinbox.py
  15. +7
    -7
      source/widgets/pixmapbutton.py
  16. +9
    -9
      source/widgets/pixmapdial.py
  17. +7
    -7
      source/widgets/pixmapkeyboard.py

+ 2
- 2
source/backend/engine/CarlaEngineJack.cpp View File

@@ -1854,7 +1854,7 @@ private:
if (thisPortId == -1) if (thisPortId == -1)
continue; continue;


if (const char** connections = jackbridge_port_get_connections(jackPort))
if (const char** connections = jackbridge_port_get_all_connections(jackPort))
{ {
for (int j=0; connections[j] != nullptr; ++j) for (int j=0; connections[j] != nullptr; ++j)
{ {
@@ -1869,7 +1869,7 @@ private:
jackbridge_free(connections); jackbridge_free(connections);
} }
else else
carla_stderr("jack_port_get_connections failed for port %s", fullPortName);
carla_stderr("jack_port_get_all_connections failed for port %s", fullPortName);
} }


jackbridge_free(ports); jackbridge_free(ports);


+ 4
- 0
source/backend/standalone/CarlaStandalone.cpp View File

@@ -663,6 +663,10 @@ void carla_set_engine_option(EngineOption option, int value, const char* valueSt


case CB::ENGINE_OPTION_AUDIO_DEVICE: case CB::ENGINE_OPTION_AUDIO_DEVICE:
CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',);

if (gStandalone.engineOptions.audioDevice != nullptr)
delete[] gStandalone.engineOptions.audioDevice;

gStandalone.engineOptions.audioDevice = valueStr; gStandalone.engineOptions.audioDevice = valueStr;
break; break;




+ 1
- 1
source/carla-patchbay View File

@@ -75,7 +75,7 @@ if __name__ == '__main__':
Carla.isControl = False Carla.isControl = False
Carla.isLocal = True Carla.isLocal = True
Carla.isPlugin = False Carla.isPlugin = False
Carla.processMode = PROCESS_MODE_MULTIPLE_CLIENTS
Carla.processMode = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS


initHost(appName, libPrefix) initHost(appName, libPrefix)




+ 1
- 1
source/carla-rack View File

@@ -75,7 +75,7 @@ if __name__ == '__main__':
Carla.isControl = False Carla.isControl = False
Carla.isLocal = True Carla.isLocal = True
Carla.isPlugin = False Carla.isPlugin = False
Carla.processMode = PROCESS_MODE_CONTINUOUS_RACK
Carla.processMode = ENGINE_PROCESS_MODE_CONTINUOUS_RACK


initHost(appName, libPrefix) initHost(appName, libPrefix)




+ 77
- 77
source/carla_host.py View File

@@ -24,7 +24,7 @@
#from PyQt5.QtGui import QPalette #from PyQt5.QtGui import QPalette
#from PyQt5.QtWidgets import QApplication, QFileSystemModel, QMainWindow #from PyQt5.QtWidgets import QApplication, QFileSystemModel, QMainWindow
#except: #except:
from PyQt4.QtCore import QModelIndex, QTimer
from PyQt4.QtCore import qCritical, QModelIndex, QTimer
from PyQt4.QtGui import QApplication, QFileSystemModel, QMainWindow, QPalette from PyQt4.QtGui import QApplication, QFileSystemModel, QMainWindow, QPalette


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -220,7 +220,7 @@ class HostWindow(QMainWindow):
# Set up GUI (right panel) # Set up GUI (right panel)


self.fDirModel = QFileSystemModel(self) self.fDirModel = QFileSystemModel(self)
self.fDirModel.setNameFilters(cString(Carla.host.get_supported_file_types()).split(";"))
self.fDirModel.setNameFilters(charPtrToString(Carla.host.get_supported_file_extensions()).split(";"))
self.fDirModel.setRootPath(HOME) self.fDirModel.setRootPath(HOME)


self.ui.fileTreeView.setModel(self.fDirModel) self.ui.fileTreeView.setModel(self.fDirModel)
@@ -357,33 +357,33 @@ class HostWindow(QMainWindow):


if audioDriver == "JACK": if audioDriver == "JACK":
#transportMode = settings.value("Engine/TransportMode", TRANSPORT_MODE_JACK, type=int) #transportMode = settings.value("Engine/TransportMode", TRANSPORT_MODE_JACK, type=int)
transportMode = TRANSPORT_MODE_JACK
transportMode = ENGINE_TRANSPORT_MODE_JACK
else: else:
transportMode = TRANSPORT_MODE_INTERNAL
transportMode = ENGINE_TRANSPORT_MODE_INTERNAL
audioNumPeriods = settings.value("Engine/AudioBufferSize", CARLA_DEFAULT_AUDIO_NUM_PERIODS, type=int) audioNumPeriods = settings.value("Engine/AudioBufferSize", CARLA_DEFAULT_AUDIO_NUM_PERIODS, type=int)
audioBufferSize = settings.value("Engine/AudioBufferSize", CARLA_DEFAULT_AUDIO_BUFFER_SIZE, type=int) audioBufferSize = settings.value("Engine/AudioBufferSize", CARLA_DEFAULT_AUDIO_BUFFER_SIZE, type=int)
audioSampleRate = settings.value("Engine/AudioSampleRate", CARLA_DEFAULT_AUDIO_SAMPLE_RATE, type=int) audioSampleRate = settings.value("Engine/AudioSampleRate", CARLA_DEFAULT_AUDIO_SAMPLE_RATE, type=int)
audioDevice = settings.value("Engine/AudioDevice", "", type=str) audioDevice = settings.value("Engine/AudioDevice", "", type=str)


Carla.host.set_engine_option(OPTION_AUDIO_NUM_PERIODS, audioNumPeriods, "")
Carla.host.set_engine_option(OPTION_AUDIO_BUFFER_SIZE, audioBufferSize, "")
Carla.host.set_engine_option(OPTION_AUDIO_SAMPLE_RATE, audioSampleRate, "")
Carla.host.set_engine_option(OPTION_AUDIO_DEVICE, 0, audioDevice)
Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_NUM_PERIODS, audioNumPeriods, "")
Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_BUFFER_SIZE, audioBufferSize, "")
Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_SAMPLE_RATE, audioSampleRate, "")
Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_DEVICE, 0, audioDevice)


if Carla.processMode == PROCESS_MODE_CONTINUOUS_RACK:
if Carla.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK:
forceStereo = True forceStereo = True
elif Carla.processMode == PROCESS_MODE_MULTIPLE_CLIENTS and LADISH_APP_NAME:
elif Carla.processMode == ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS and LADISH_APP_NAME:
print("LADISH detected but using multiple clients (not allowed), forcing single client now") print("LADISH detected but using multiple clients (not allowed), forcing single client now")
Carla.processMode = PROCESS_MODE_SINGLE_CLIENT
Carla.processMode = ENGINE_PROCESS_MODE_SINGLE_CLIENT


Carla.host.set_engine_option(OPTION_FORCE_STEREO, forceStereo, "")
Carla.host.set_engine_option(OPTION_PREFER_PLUGIN_BRIDGES, preferPluginBridges, "")
Carla.host.set_engine_option(OPTION_PREFER_UI_BRIDGES, preferUiBridges, "")
Carla.host.set_engine_option(OPTION_UIS_ALWAYS_ON_TOP, uisAlwaysOnTop, "")
Carla.host.set_engine_option(OPTION_UI_BRIDGES_TIMEOUT, uiBridgesTimeout, "")
Carla.host.set_engine_option(OPTION_PROCESS_MODE, Carla.processMode, "")
Carla.host.set_engine_option(OPTION_MAX_PARAMETERS, Carla.maxParameters, "")
Carla.host.set_engine_option(OPTION_TRANSPORT_MODE, transportMode, "")
Carla.host.set_engine_option(ENGINE_OPTION_FORCE_STEREO, forceStereo, "")
Carla.host.set_engine_option(ENGINE_OPTION_PREFER_PLUGIN_BRIDGES, preferPluginBridges, "")
Carla.host.set_engine_option(ENGINE_OPTION_PREFER_UI_BRIDGES, preferUiBridges, "")
Carla.host.set_engine_option(ENGINE_OPTION_UIS_ALWAYS_ON_TOP, uisAlwaysOnTop, "")
Carla.host.set_engine_option(ENGINE_OPTION_UI_BRIDGES_TIMEOUT, uiBridgesTimeout, "")
Carla.host.set_engine_option(ENGINE_OPTION_PROCESS_MODE, Carla.processMode, "")
Carla.host.set_engine_option(ENGINE_OPTION_MAX_PARAMETERS, Carla.maxParameters, "")
Carla.host.set_engine_option(ENGINE_OPTION_TRANSPORT_MODE, transportMode, "")


return audioDriver return audioDriver


@@ -395,7 +395,7 @@ class HostWindow(QMainWindow):
#self.fFirstEngineInit = False #self.fFirstEngineInit = False
#return #return


audioError = cString(Carla.host.get_last_error())
audioError = Carla.host.get_last_error()


if audioError: if audioError:
QMessageBox.critical(self, self.tr("Error"), self.tr("Could not connect to Audio backend '%s', possible reasons:\n%s" % (audioDriver, audioError))) QMessageBox.critical(self, self.tr("Error"), self.tr("Could not connect to Audio backend '%s', possible reasons:\n%s" % (audioDriver, audioError)))
@@ -425,7 +425,7 @@ class HostWindow(QMainWindow):
self.fContainer.removeAllPlugins() self.fContainer.removeAllPlugins()


if Carla.host.is_engine_running() and not Carla.host.engine_close(): if Carla.host.is_engine_running() and not Carla.host.engine_close():
print(cString(Carla.host.get_last_error()))
print(Carla.host.get_last_error())


self.fBufferSize = 0 self.fBufferSize = 0
self.fSampleRate = 0.0 self.fSampleRate = 0.0
@@ -441,7 +441,7 @@ class HostWindow(QMainWindow):
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# Internal stuff (plugins) # Internal stuff (plugins)


def getExtraStuff(self, plugin):
def getExtraPtr(self, plugin):
ptype = plugin['type'] ptype = plugin['type']


if ptype == PLUGIN_LADSPA: if ptype == PLUGIN_LADSPA:
@@ -461,7 +461,7 @@ class HostWindow(QMainWindow):
addr = addressof(int1) addr = addressof(int1)
return cast(addr, INTPOINTER) return cast(addr, INTPOINTER)


return c_nullptr
return None


def maybeLoadRDFs(self): def maybeLoadRDFs(self):
if not self.fLadspaRdfNeedsUpdate: if not self.fLadspaRdfNeedsUpdate:
@@ -783,10 +783,10 @@ class HostWindow(QMainWindow):
ptype = dialog.fRetPlugin['type'] ptype = dialog.fRetPlugin['type']
filename = dialog.fRetPlugin['binary'] filename = dialog.fRetPlugin['binary']
label = dialog.fRetPlugin['label'] label = dialog.fRetPlugin['label']
extraStuff = self.getExtraStuff(dialog.fRetPlugin)
extraPtr = self.getExtraPtr(dialog.fRetPlugin)


if not Carla.host.add_plugin(btype, ptype, filename, None, label, c_nullptr):
CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), self.tr("Failed to load plugin"), cString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok)
if not Carla.host.add_plugin(btype, ptype, filename, None, label, extraPtr):
CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), self.tr("Failed to load plugin"), charPtrToString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok)
return return


@pyqtSlot() @pyqtSlot()
@@ -895,7 +895,7 @@ class HostWindow(QMainWindow):
if not Carla.host.load_filename(filename): if not Carla.host.load_filename(filename):
CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"),
self.tr("Failed to load file"), self.tr("Failed to load file"),
cString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok)
Carla.host.get_last_error(), QMessageBox.Ok, QMessageBox.Ok)


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


@@ -1018,77 +1018,77 @@ def EngineCallback(ptr, action, pluginId, value1, value2, value3, valueStr):
if pluginId < 0 or not Carla.gui: if pluginId < 0 or not Carla.gui:
return return


if action == CALLBACK_DEBUG:
Carla.gui.DebugCallback.emit(pluginId, value1, value2, value3, cString(valueStr))
elif action == CALLBACK_PLUGIN_ADDED:
if action == ENGINE_CALLBACK_DEBUG:
Carla.gui.DebugCallback.emit(pluginId, value1, value2, value3, charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_PLUGIN_ADDED:
Carla.gui.PluginAddedCallback.emit(pluginId) Carla.gui.PluginAddedCallback.emit(pluginId)
elif action == CALLBACK_PLUGIN_REMOVED:
elif action == ENGINE_CALLBACK_PLUGIN_REMOVED:
Carla.gui.PluginRemovedCallback.emit(pluginId) Carla.gui.PluginRemovedCallback.emit(pluginId)
elif action == CALLBACK_PLUGIN_RENAMED:
elif action == ENGINE_CALLBACK_PLUGIN_RENAMED:
Carla.gui.PluginRenamedCallback.emit(pluginId, valueStr) Carla.gui.PluginRenamedCallback.emit(pluginId, valueStr)
elif action == CALLBACK_PARAMETER_VALUE_CHANGED:
elif action == ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED:
Carla.gui.ParameterValueChangedCallback.emit(pluginId, value1, value3) Carla.gui.ParameterValueChangedCallback.emit(pluginId, value1, value3)
elif action == CALLBACK_PARAMETER_DEFAULT_CHANGED:
elif action == ENGINE_CALLBACK_PARAMETER_DEFAULT_CHANGED:
Carla.gui.ParameterDefaultChangedCallback.emit(pluginId, value1, value3) Carla.gui.ParameterDefaultChangedCallback.emit(pluginId, value1, value3)
elif action == CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED:
elif action == ENGINE_CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED:
Carla.gui.ParameterMidiChannelChangedCallback.emit(pluginId, value1, value2) Carla.gui.ParameterMidiChannelChangedCallback.emit(pluginId, value1, value2)
elif action == CALLBACK_PARAMETER_MIDI_CC_CHANGED:
elif action == ENGINE_CALLBACK_PARAMETER_MIDI_CC_CHANGED:
Carla.gui.ParameterMidiCcChangedCallback.emit(pluginId, value1, value2) Carla.gui.ParameterMidiCcChangedCallback.emit(pluginId, value1, value2)
elif action == CALLBACK_PROGRAM_CHANGED:
elif action == ENGINE_CALLBACK_PROGRAM_CHANGED:
Carla.gui.ProgramChangedCallback.emit(pluginId, value1) Carla.gui.ProgramChangedCallback.emit(pluginId, value1)
elif action == CALLBACK_MIDI_PROGRAM_CHANGED:
elif action == ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED:
Carla.gui.MidiProgramChangedCallback.emit(pluginId, value1) Carla.gui.MidiProgramChangedCallback.emit(pluginId, value1)
elif action == CALLBACK_NOTE_ON:
elif action == ENGINE_CALLBACK_NOTE_ON:
Carla.gui.NoteOnCallback.emit(pluginId, value1, value2, value3) Carla.gui.NoteOnCallback.emit(pluginId, value1, value2, value3)
elif action == CALLBACK_NOTE_OFF:
elif action == ENGINE_CALLBACK_NOTE_OFF:
Carla.gui.NoteOffCallback.emit(pluginId, value1, value2) Carla.gui.NoteOffCallback.emit(pluginId, value1, value2)
elif action == CALLBACK_SHOW_GUI:
elif action == ENGINE_CALLBACK_UI_STATE_CHANGED:
Carla.gui.ShowGuiCallback.emit(pluginId, value1) Carla.gui.ShowGuiCallback.emit(pluginId, value1)
elif action == CALLBACK_UPDATE:
elif action == ENGINE_CALLBACK_UPDATE:
Carla.gui.UpdateCallback.emit(pluginId) Carla.gui.UpdateCallback.emit(pluginId)
elif action == CALLBACK_RELOAD_INFO:
elif action == ENGINE_CALLBACK_RELOAD_INFO:
Carla.gui.ReloadInfoCallback.emit(pluginId) Carla.gui.ReloadInfoCallback.emit(pluginId)
elif action == CALLBACK_RELOAD_PARAMETERS:
elif action == ENGINE_CALLBACK_RELOAD_PARAMETERS:
Carla.gui.ReloadParametersCallback.emit(pluginId) Carla.gui.ReloadParametersCallback.emit(pluginId)
elif action == CALLBACK_RELOAD_PROGRAMS:
elif action == ENGINE_CALLBACK_RELOAD_PROGRAMS:
Carla.gui.ReloadProgramsCallback.emit(pluginId) Carla.gui.ReloadProgramsCallback.emit(pluginId)
elif action == CALLBACK_RELOAD_ALL:
elif action == ENGINE_CALLBACK_RELOAD_ALL:
Carla.gui.ReloadAllCallback.emit(pluginId) Carla.gui.ReloadAllCallback.emit(pluginId)
elif action == CALLBACK_PATCHBAY_CLIENT_ADDED:
Carla.gui.PatchbayClientAddedCallback.emit(value1, cString(valueStr))
elif action == CALLBACK_PATCHBAY_CLIENT_REMOVED:
Carla.gui.PatchbayClientRemovedCallback.emit(value1, cString(valueStr))
elif action == CALLBACK_PATCHBAY_CLIENT_RENAMED:
Carla.gui.PatchbayClientRenamedCallback.emit(value1, cString(valueStr))
elif action == CALLBACK_PATCHBAY_PORT_ADDED:
Carla.gui.PatchbayPortAddedCallback.emit(value1, value2, int(value3), cString(valueStr))
elif action == CALLBACK_PATCHBAY_PORT_REMOVED:
Carla.gui.PatchbayPortRemovedCallback.emit(value1, value2, cString(valueStr))
elif action == CALLBACK_PATCHBAY_PORT_RENAMED:
Carla.gui.PatchbayPortRenamedCallback.emit(value1, value2, cString(valueStr))
elif action == CALLBACK_PATCHBAY_CONNECTION_ADDED:
elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED:
Carla.gui.PatchbayClientAddedCallback.emit(value1, charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_REMOVED:
Carla.gui.PatchbayClientRemovedCallback.emit(value1, charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_RENAMED:
Carla.gui.PatchbayClientRenamedCallback.emit(value1, charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_PATCHBAY_PORT_ADDED:
Carla.gui.PatchbayPortAddedCallback.emit(value1, value2, int(value3), charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_PATCHBAY_PORT_REMOVED:
Carla.gui.PatchbayPortRemovedCallback.emit(value1, value2, charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_PATCHBAY_PORT_RENAMED:
Carla.gui.PatchbayPortRenamedCallback.emit(value1, value2, charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_PATCHBAY_CONNECTION_ADDED:
Carla.gui.PatchbayConnectionAddedCallback.emit(value1, value2, value3) Carla.gui.PatchbayConnectionAddedCallback.emit(value1, value2, value3)
elif action == CALLBACK_PATCHBAY_CONNECTION_REMOVED:
elif action == ENGINE_CALLBACK_PATCHBAY_CONNECTION_REMOVED:
Carla.gui.PatchbayConnectionRemovedCallback.emit(value1) Carla.gui.PatchbayConnectionRemovedCallback.emit(value1)
elif action == CALLBACK_PATCHBAY_ICON_CHANGED:
Carla.gui.PatchbayIconChangedCallback.emit(value1, cString(valueStr))
elif action == CALLBACK_BUFFER_SIZE_CHANGED:
#elif action == ENGINE_CALLBACK_PATCHBAY_ICON_CHANGED:
#Carla.gui.PatchbayIconChangedCallback.emit(value1, charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_BUFFER_SIZE_CHANGED:
Carla.gui.BufferSizeChangedCallback.emit(value1) Carla.gui.BufferSizeChangedCallback.emit(value1)
elif action == CALLBACK_SAMPLE_RATE_CHANGED:
elif action == ENGINE_CALLBACK_SAMPLE_RATE_CHANGED:
Carla.gui.SampleRateChangedCallback.emit(value3) Carla.gui.SampleRateChangedCallback.emit(value3)
elif action == CALLBACK_PROCESS_MODE_CHANGED:
elif action == ENGINE_CALLBACK_PROCESS_MODE_CHANGED:
Carla.gui.ProcessModeChangedCallback.emit(value1) Carla.gui.ProcessModeChangedCallback.emit(value1)
elif action == CALLBACK_ENGINE_STARTED:
Carla.gui.EngineStartedCallback.emit(cString(valueStr))
elif action == CALLBACK_ENGINE_STOPPED:
elif action == ENGINE_CALLBACK_ENGINE_STARTED:
Carla.gui.EngineStartedCallback.emit(charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_ENGINE_STOPPED:
Carla.gui.EngineStoppedChangedCallback.emit() Carla.gui.EngineStoppedChangedCallback.emit()
elif action == CALLBACK_NSM_ANNOUNCE:
Carla.gui.NSM_AnnounceCallback.emit(cString(valueStr))
elif action == CALLBACK_NSM_OPEN:
Carla.gui.NSM_OpenCallback.emit(cString(valueStr))
elif action == CALLBACK_NSM_SAVE:
Carla.gui.NSM_SaveCallback.emit()
elif action == CALLBACK_ERROR:
Carla.gui.ErrorCallback.emit(cString(valueStr))
elif action == CALLBACK_QUIT:
#elif action == CALLBACK_NSM_ANNOUNCE:
#Carla.gui.NSM_AnnounceCallback.emit(charPtrToString(valueStr))
#elif action == CALLBACK_NSM_OPEN:
#Carla.gui.NSM_OpenCallback.emit(charPtrToString(valueStr))
#elif action == CALLBACK_NSM_SAVE:
#Carla.gui.NSM_SaveCallback.emit()
elif action == ENGINE_CALLBACK_ERROR:
Carla.gui.ErrorCallback.emit(charPtrToString(valueStr))
elif action == ENGINE_CALLBACK_QUIT:
Carla.gui.QuitCallback.emit() Carla.gui.QuitCallback.emit()

+ 4
- 4
source/carla_patchbay.py View File

@@ -38,10 +38,10 @@ from carla_widgets import *
# Try Import OpenGL # Try Import OpenGL


try: try:
try:
from PyQt5.QtOpenGL import QGLWidget
except:
from PyQt4.QtOpenGL import QGLWidget
#try:
#from PyQt5.QtOpenGL import QGLWidget
#except:
from PyQt4.QtOpenGL import QGLWidget
hasGL = True hasGL = True
except: except:
hasGL = False hasGL = False


+ 9
- 13
source/carla_settings.py View File

@@ -84,11 +84,11 @@ else:
CARLA_DEFAULT_AUDIO_DRIVER = "JACK" CARLA_DEFAULT_AUDIO_DRIVER = "JACK"


if LINUX: if LINUX:
CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_MULTIPLE_CLIENTS
CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_JACK
CARLA_DEFAULT_PROCESS_MODE = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS
CARLA_DEFAULT_TRANSPORT_MODE = ENGINE_TRANSPORT_MODE_JACK
else: else:
CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_CONTINUOUS_RACK
CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_INTERNAL
CARLA_DEFAULT_PROCESS_MODE = ENGINE_PROCESS_MODE_CONTINUOUS_RACK
CARLA_DEFAULT_TRANSPORT_MODE = ENGINE_TRANSPORT_MODE_INTERNAL


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# ... # ...
@@ -105,10 +105,6 @@ class DriverSettingsW(QDialog):
self.ui = ui_carla_settings_driver.Ui_DriverSettingsW() self.ui = ui_carla_settings_driver.Ui_DriverSettingsW()
self.ui.setupUi(self) self.ui.setupUi(self)


if driverName == "JACK":
print("This dialog is not compatible with JACK")
return

# ------------------------------------------------------------- # -------------------------------------------------------------
# Internal stuff # Internal stuff


@@ -218,7 +214,7 @@ class CarlaSettingsW(QDialog):


if Carla.host is not None: if Carla.host is not None:
for i in range(Carla.host.get_engine_driver_count()): for i in range(Carla.host.get_engine_driver_count()):
self.ui.cb_engine_audio_driver.addItem(cString(Carla.host.get_engine_driver_name(i)))
self.ui.cb_engine_audio_driver.addItem(Carla.host.get_engine_driver_name(i))
else: else:
self.ui.tb_engine_driver_config.setEnabled(False) self.ui.tb_engine_driver_config.setEnabled(False)


@@ -324,11 +320,11 @@ class CarlaSettingsW(QDialog):
self.ui.cb_engine_audio_driver.setCurrentIndex(-1) self.ui.cb_engine_audio_driver.setCurrentIndex(-1)


if audioDriver == "JACK": if audioDriver == "JACK":
processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, PROCESS_MODE_MULTIPLE_CLIENTS, type=int)
processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS, type=int)
self.ui.cb_engine_process_mode_jack.setCurrentIndex(processModeIndex) self.ui.cb_engine_process_mode_jack.setCurrentIndex(processModeIndex)
self.ui.sw_engine_process_mode.setCurrentIndex(0) self.ui.sw_engine_process_mode.setCurrentIndex(0)
else: else:
processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, PROCESS_MODE_CONTINUOUS_RACK, type=int)
processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, ENGINE_PROCESS_MODE_CONTINUOUS_RACK, type=int)
processModeIndex -= self.PROCESS_MODE_NON_JACK_PADDING processModeIndex -= self.PROCESS_MODE_NON_JACK_PADDING
self.ui.cb_engine_process_mode_other.setCurrentIndex(processModeIndex) self.ui.cb_engine_process_mode_other.setCurrentIndex(processModeIndex)
self.ui.sw_engine_process_mode.setCurrentIndex(1) self.ui.sw_engine_process_mode.setCurrentIndex(1)
@@ -517,10 +513,10 @@ class CarlaSettingsW(QDialog):
self.ui.ch_engine_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES) self.ui.ch_engine_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES)


if self.ui.cb_engine_audio_driver.currentText() == "JACK": if self.ui.cb_engine_audio_driver.currentText() == "JACK":
self.ui.cb_engine_process_mode_jack.setCurrentIndex(PROCESS_MODE_MULTIPLE_CLIENTS)
self.ui.cb_engine_process_mode_jack.setCurrentIndex(ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS)
self.ui.sw_engine_process_mode.setCurrentIndex(0) # show all modes self.ui.sw_engine_process_mode.setCurrentIndex(0) # show all modes
else: else:
self.ui.cb_engine_process_mode_other.setCurrentIndex(PROCESS_MODE_CONTINUOUS_RACK-self.PROCESS_MODE_NON_JACK_PADDING)
self.ui.cb_engine_process_mode_other.setCurrentIndex(ENGINE_PROCESS_MODE_CONTINUOUS_RACK-self.PROCESS_MODE_NON_JACK_PADDING)
self.ui.sw_engine_process_mode.setCurrentIndex(1) # hide single+multi client modes self.ui.sw_engine_process_mode.setCurrentIndex(1) # hide single+multi client modes


elif self.ui.lw_page.currentRow() == self.TAB_INDEX_PATHS: elif self.ui.lw_page.currentRow() == self.TAB_INDEX_PATHS:


+ 29
- 11
source/carla_widgets.py View File

@@ -1055,6 +1055,9 @@ class PluginEdit(QDialog):


@pyqtSlot(bool) @pyqtSlot(bool)
def slot_optionChanged(self, clicked): def slot_optionChanged(self, clicked):
if Carla.host is None:
return

sender = self.sender() sender = self.sender()


if sender == self.ui.ch_fixed_buffer: if sender == self.ui.ch_fixed_buffer:
@@ -1082,52 +1085,67 @@ class PluginEdit(QDialog):


@pyqtSlot(int) @pyqtSlot(int)
def slot_dryWetChanged(self, value): def slot_dryWetChanged(self, value):
Carla.host.set_drywet(self.fPluginId, float(value)/1000)
if Carla.host is not None:
Carla.host.set_drywet(self.fPluginId, float(value)/1000)


@pyqtSlot(int) @pyqtSlot(int)
def slot_volumeChanged(self, value): def slot_volumeChanged(self, value):
Carla.host.set_volume(self.fPluginId, float(value)/1000)
if Carla.host is not None:
Carla.host.set_volume(self.fPluginId, float(value)/1000)


@pyqtSlot(int) @pyqtSlot(int)
def slot_balanceLeftChanged(self, value): def slot_balanceLeftChanged(self, value):
Carla.host.set_balance_left(self.fPluginId, float(value)/1000)
if Carla.host is not None:
Carla.host.set_balance_left(self.fPluginId, float(value)/1000)


@pyqtSlot(int) @pyqtSlot(int)
def slot_balanceRightChanged(self, value): def slot_balanceRightChanged(self, value):
Carla.host.set_balance_right(self.fPluginId, float(value)/1000)
if Carla.host is not None:
Carla.host.set_balance_right(self.fPluginId, float(value)/1000)


@pyqtSlot(int) @pyqtSlot(int)
def slot_panningChanged(self, value): def slot_panningChanged(self, value):
Carla.host.set_panning(self.fPluginId, float(value)/1000)
if Carla.host is not None:
Carla.host.set_panning(self.fPluginId, float(value)/1000)


@pyqtSlot(int) @pyqtSlot(int)
def slot_ctrlChannelChanged(self, value): def slot_ctrlChannelChanged(self, value):
self.fControlChannel = value-1 self.fControlChannel = value-1
Carla.host.set_ctrl_channel(self.fPluginId, self.fControlChannel)

if Carla.host is not None:
Carla.host.set_ctrl_channel(self.fPluginId, self.fControlChannel)

self.ui.keyboard.allNotesOff() self.ui.keyboard.allNotesOff()
self._updateCtrlMidiProgram() self._updateCtrlMidiProgram()


@pyqtSlot(int, float) @pyqtSlot(int, float)
def slot_parameterValueChanged(self, parameterId, value): def slot_parameterValueChanged(self, parameterId, value):
Carla.host.set_parameter_value(self.fPluginId, parameterId, value)
if Carla.host is not None:
Carla.host.set_parameter_value(self.fPluginId, parameterId, value)


@pyqtSlot(int, int) @pyqtSlot(int, int)
def slot_parameterMidiControlChanged(self, parameterId, control): def slot_parameterMidiControlChanged(self, parameterId, control):
Carla.host.set_parameter_midi_cc(self.fPluginId, parameterId, control)
if Carla.host is not None:
Carla.host.set_parameter_midi_cc(self.fPluginId, parameterId, control)


@pyqtSlot(int, int) @pyqtSlot(int, int)
def slot_parameterMidiChannelChanged(self, parameterId, channel): def slot_parameterMidiChannelChanged(self, parameterId, channel):
Carla.host.set_parameter_midi_channel(self.fPluginId, parameterId, channel-1)
if Carla.host is not None:
Carla.host.set_parameter_midi_channel(self.fPluginId, parameterId, channel-1)


@pyqtSlot(int) @pyqtSlot(int)
def slot_programIndexChanged(self, index): def slot_programIndexChanged(self, index):
self.fCurrentProgram = index self.fCurrentProgram = index
Carla.host.set_program(self.fPluginId, index)

if Carla.host is not None:
Carla.host.set_program(self.fPluginId, index)


@pyqtSlot(int) @pyqtSlot(int)
def slot_midiProgramIndexChanged(self, index): def slot_midiProgramIndexChanged(self, index):
self.fCurrentMidiProgram = index self.fCurrentMidiProgram = index
Carla.host.set_midi_program(self.fPluginId, index)

if Carla.host is not None:
Carla.host.set_midi_program(self.fPluginId, index)


@pyqtSlot(int) @pyqtSlot(int)
def slot_noteOn(self, note): def slot_noteOn(self, note):


+ 18
- 18
source/patchcanvas.py View File

@@ -17,24 +17,24 @@
# For a full copy of the GNU General Public License see the GPL.txt file # For a full copy of the GNU General Public License see the GPL.txt file


# Imports (Global) # Imports (Global)
try:
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.QtSvg import QGraphicsSvgItem, QSvgRenderer
from PyQt5.QtWidgets import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem
from PyQt5.QtWidgets import QGraphicsColorizeEffect, QGraphicsDropShadowEffect
from PyQt5.QtWidgets import QInputDialog, QLineEdit, QMenu
except:
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
#try:
#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.QtSvg import QGraphicsSvgItem, QSvgRenderer
#from PyQt5.QtWidgets import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem
#from PyQt5.QtWidgets import QGraphicsColorizeEffect, QGraphicsDropShadowEffect
#from PyQt5.QtWidgets import QInputDialog, QLineEdit, QMenu
#except:
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


# Imports (Theme) # Imports (Theme)
from patchcanvas_theme import * from patchcanvas_theme import *


+ 6
- 6
source/patchcanvas_theme.py View File

@@ -19,12 +19,12 @@
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)


try:
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor, QFont, QPen, QPixmap
except:
from PyQt4.QtCore import Qt
from PyQt4.QtGui import QColor, QFont, QPen, QPixmap
#try:
#from PyQt5.QtCore import Qt
#from PyQt5.QtGui import QColor, QFont, QPen, QPixmap
#except:
from PyQt4.QtCore import Qt
from PyQt4.QtGui import QColor, QFont, QPen, QPixmap


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# patchcanvas-theme.cpp # patchcanvas-theme.cpp


+ 7
- 7
source/widgets/canvaspreviewframe.py View File

@@ -20,13 +20,13 @@
# Imports (Global) # Imports (Global)


# TODO - SIGNAL, SLOT # TODO - SIGNAL, SLOT
try:
from PyQt5.QtCore import Qt, QRectF, QTimer
from PyQt5.QtGui import QBrush, QColor, QCursor, QPainter, QPen
from PyQt5.QtWidgets import QFrame
except:
from PyQt4.QtCore import Qt, QRectF, QTimer
from PyQt4.QtGui import QBrush, QColor, QCursor, QFrame, QPainter, QPen
#try:
#from PyQt5.QtCore import Qt, QRectF, QTimer
#from PyQt5.QtGui import QBrush, QColor, QCursor, QPainter, QPen
#from PyQt5.QtWidgets import QFrame
#except:
from PyQt4.QtCore import Qt, QRectF, QTimer
from PyQt4.QtGui import QBrush, QColor, QCursor, QFrame, QPainter, QPen


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Static Variables # Static Variables


+ 7
- 7
source/widgets/digitalpeakmeter.py View File

@@ -19,13 +19,13 @@
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)


try:
from PyQt5.QtCore import qCritical, Qt, QTimer, QSize
from PyQt5.QtGui import QColor, QLinearGradient, QPainter
from PyQt5.QtWidgets import QWidget
except:
from PyQt4.QtCore import qCritical, Qt, QTimer, QSize
from PyQt4.QtGui import QColor, QLinearGradient, QPainter, QWidget
#try:
#from PyQt5.QtCore import qCritical, Qt, QTimer, QSize
#from PyQt5.QtGui import QColor, QLinearGradient, QPainter
#from PyQt5.QtWidgets import QWidget
#except:
from PyQt4.QtCore import qCritical, Qt, QTimer, QSize
from PyQt4.QtGui import QColor, QLinearGradient, QPainter, QWidget


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


+ 7
- 7
source/widgets/ledbutton.py View File

@@ -19,13 +19,13 @@
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)


try:
from PyQt5.QtCore import qCritical, QRectF
from PyQt5.QtGui import QPainter, QPixmap
from PyQt5.QtWidgets import QPushButton
except:
from PyQt4.QtCore import qCritical, QRectF
from PyQt4.QtGui import QPainter, QPixmap, QPushButton
#try:
#from PyQt5.QtCore import qCritical, QRectF
#from PyQt5.QtGui import QPainter, QPixmap
#from PyQt5.QtWidgets import QPushButton
#except:
from PyQt4.QtCore import qCritical, QRectF
from PyQt4.QtGui import QPainter, QPixmap, QPushButton


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


+ 7
- 7
source/widgets/paramspinbox.py View File

@@ -19,13 +19,13 @@
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)


try:
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer
from PyQt5.QtGui import QCursor
from PyQt5.QtWidgets import QAbstractSpinBox, QApplication, QComboBox, QDialog, QMenu, QProgressBar
except:
from PyQt4.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer
from PyQt4.QtGui import QAbstractSpinBox, QApplication, QComboBox, QCursor, QDialog, QMenu, QProgressBar
#try:
#from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer
#from PyQt5.QtGui import QCursor
#from PyQt5.QtWidgets import QAbstractSpinBox, QApplication, QComboBox, QDialog, QMenu, QProgressBar
#except:
from PyQt4.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer
from PyQt4.QtGui import QAbstractSpinBox, QApplication, QComboBox, QCursor, QDialog, QMenu, QProgressBar


from math import isnan from math import isnan




+ 7
- 7
source/widgets/pixmapbutton.py View File

@@ -19,13 +19,13 @@
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)


try:
from PyQt5.QtCore import QRectF
from PyQt5.QtGui import QPainter, QPixmap
from PyQt5.QtWidgets import QPushButton
except:
from PyQt4.QtCore import QRectF
from PyQt4.QtGui import QPainter, QPixmap, QPushButton
#try:
#from PyQt5.QtCore import QRectF
#from PyQt5.QtGui import QPainter, QPixmap
#from PyQt5.QtWidgets import QPushButton
#except:
from PyQt4.QtCore import QRectF
from PyQt4.QtGui import QPainter, QPixmap, QPushButton


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


+ 9
- 9
source/widgets/pixmapdial.py View File

@@ -21,15 +21,15 @@


from math import floor from math import floor


try:
from PyQt5.QtCore import Qt, QPointF, QRectF, QTimer, QSize
from PyQt5.QtGui import QColor, QConicalGradient, QFont, QFontMetrics
from PyQt5.QtGui import QLinearGradient, QPainter, QPainterPath, QPen, QPixmap
from PyQt5.QtWidgets import QDial
except:
from PyQt4.QtCore import Qt, QPointF, QRectF, QTimer, QSize
from PyQt4.QtGui import QColor, QConicalGradient, QFont, QFontMetrics
from PyQt4.QtGui import QDial, QLinearGradient, QPainter, QPainterPath, QPen, QPixmap
#try:
#from PyQt5.QtCore import Qt, QPointF, QRectF, QTimer, QSize
#from PyQt5.QtGui import QColor, QConicalGradient, QFont, QFontMetrics
#from PyQt5.QtGui import QLinearGradient, QPainter, QPainterPath, QPen, QPixmap
#from PyQt5.QtWidgets import QDial
#except:
from PyQt4.QtCore import Qt, QPointF, QRectF, QTimer, QSize
from PyQt4.QtGui import QColor, QConicalGradient, QFont, QFontMetrics
from PyQt4.QtGui import QDial, QLinearGradient, QPainter, QPainterPath, QPen, QPixmap


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


+ 7
- 7
source/widgets/pixmapkeyboard.py View File

@@ -19,13 +19,13 @@
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)


try:
from PyQt5.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize
from PyQt5.QtGui import QFont, QPainter, QPixmap
from PyQt5.QtWidgets import QWidget
except:
from PyQt4.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize
from PyQt4.QtGui import QFont, QPainter, QPixmap, QWidget
#try:
#from PyQt5.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize
#from PyQt5.QtGui import QFont, QPainter, QPixmap
#from PyQt5.QtWidgets import QWidget
#except:
from PyQt4.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize
from PyQt4.QtGui import QFont, QPainter, QPixmap, QWidget


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




Loading…
Cancel
Save