| @@ -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); | ||||
| @@ -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; | ||||
| @@ -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) | ||||
| @@ -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) | ||||
| @@ -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() | ||||
| @@ -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 | ||||
| @@ -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: | ||||
| @@ -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): | ||||
| @@ -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 * | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||