| @@ -102,26 +102,7 @@ class CarlaMultiW(QTabWidget): | |||
| host.PluginUnavailableCallback.connect(self.fRack.slot_handlePluginUnavailableCallback) | |||
| host.PluginUnavailableCallback.connect(self.fPatchbay.slot_handlePluginUnavailableCallback) | |||
| host.ParameterValueChangedCallback.connect(self.fRack.slot_handleParameterValueChangedCallback) | |||
| host.ParameterValueChangedCallback.connect(self.fPatchbay.slot_handleParameterValueChangedCallback) | |||
| host.ParameterDefaultChangedCallback.connect(self.fRack.slot_handleParameterDefaultChangedCallback) | |||
| host.ParameterMidiChannelChangedCallback.connect(self.fRack.slot_handleParameterMidiChannelChangedCallback) | |||
| host.ParameterMidiCcChangedCallback.connect(self.fRack.slot_handleParameterMidiCcChangedCallback) | |||
| host.ProgramChangedCallback.connect(self.fRack.slot_handleProgramChangedCallback) | |||
| host.MidiProgramChangedCallback.connect(self.fRack.slot_handleMidiProgramChangedCallback) | |||
| host.OptionChangedCallback.connect(self.fRack.slot_handleOptionChangedCallback) | |||
| host.UiStateChangedCallback.connect(self.fRack.slot_handleUiStateChangedCallback) | |||
| host.NoteOnCallback.connect(self.fRack.slot_handleNoteOnCallback) | |||
| host.NoteOnCallback.connect(self.fPatchbay.slot_handleNoteOnCallback) | |||
| host.NoteOffCallback.connect(self.fRack.slot_handleNoteOffCallback) | |||
| host.NoteOffCallback.connect(self.fPatchbay.slot_handleNoteOffCallback) | |||
| host.UpdateCallback.connect(self.fRack.slot_handleUpdateCallback) | |||
| host.ReloadInfoCallback.connect(self.fRack.slot_handleReloadInfoCallback) | |||
| host.ReloadParametersCallback.connect(self.fRack.slot_handleReloadParametersCallback) | |||
| host.ReloadParametersCallback.connect(self.fPatchbay.slot_handleReloadParametersCallback) | |||
| host.ReloadProgramsCallback.connect(self.fRack.slot_handleReloadProgramsCallback) | |||
| host.ReloadAllCallback.connect(self.fRack.slot_handleReloadAllCallback) | |||
| host.ReloadAllCallback.connect(self.fPatchbay.slot_handleReloadAllCallback) | |||
| host.PatchbayClientAddedCallback.connect(self.fPatchbay.slot_handlePatchbayClientAddedCallback) | |||
| host.PatchbayClientRemovedCallback.connect(self.fPatchbay.slot_handlePatchbayClientRemovedCallback) | |||
| @@ -31,9 +31,9 @@ from platform import architecture | |||
| from sys import platform, maxsize | |||
| if config_UseQt5: | |||
| from PyQt5.QtCore import pyqtSignal, QObject | |||
| from PyQt5.QtCore import pyqtSignal, pyqtWrapperType, QObject | |||
| else: | |||
| from PyQt4.QtCore import pyqtSignal, QObject | |||
| from PyQt4.QtCore import pyqtSignal, pyqtWrapperType, QObject | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # 64bit check | |||
| @@ -1244,11 +1244,17 @@ elif WINDOWS: | |||
| else: | |||
| BINARY_NATIVE = BINARY_OTHER | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # An empty class used to resolve metaclass conflicts between ABC and PyQt modules | |||
| class PyQtMetaClass(pyqtWrapperType, ABCMeta): | |||
| pass | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Carla Host object (Meta) | |||
| class CarlaHostMeta(QObject): | |||
| #class CarlaHostMeta(QObject, metaclass=ABCMeta): | |||
| #class CarlaHostMeta(QObject, metaclass=PyQtMetaClass): | |||
| # signals | |||
| DebugCallback = pyqtSignal(int, int, int, float, str) | |||
| PluginAddedCallback = pyqtSignal(int, str) | |||
| @@ -2820,7 +2826,7 @@ class PluginStoreInfo(object): | |||
| # Carla Host object for plugins (using pipes) | |||
| class CarlaHostPlugin(CarlaHostMeta): | |||
| #class CarlaHostPlugin(CarlaHostMeta, metaclass=ABCMeta): | |||
| #class CarlaHostPlugin(CarlaHostMeta, metaclass=PyQtMetaClass): | |||
| def __init__(self): | |||
| CarlaHostMeta.__init__(self) | |||
| @@ -62,18 +62,6 @@ class HostWidgetMeta(object): | |||
| # -------------------------------------------------------------------------------------------------------- | |||
| #def addPlugin(self, pluginId, isProjectLoading): | |||
| #raise NotImplementedError | |||
| #def removePlugin(self, pluginId): | |||
| #raise NotImplementedError | |||
| #def renamePlugin(self, pluginId, newName): | |||
| #raise NotImplementedError | |||
| #def disablePlugin(self, pluginId, errorMsg): | |||
| #raise NotImplementedError | |||
| def removeAllPlugins(self): | |||
| raise NotImplementedError | |||
| @@ -297,8 +285,7 @@ class HostWindow(QMainWindow): | |||
| self.fLadspaRdfNeedsUpdate = True | |||
| def openSettingsWindow(self, hasCanvas, hasCanvasGL): | |||
| hasEngine = bool(self.fSessionManagerName != "Non Session Manager") | |||
| dialog = CarlaSettingsW(self, self.host, hasCanvas, hasCanvasGL, hasEngine) | |||
| dialog = CarlaSettingsW(self, self.host, hasCanvas, hasCanvasGL) | |||
| return dialog.exec_() | |||
| def setupContainer(self, showCanvas, canvasThemeData = []): | |||
| @@ -1070,16 +1057,13 @@ def engineCallback(host, action, pluginId, value1, value2, value3, valueStr): | |||
| # FIXME | |||
| if host is None: host = gCarla.gui.host | |||
| if action in (ENGINE_CALLBACK_ENGINE_STARTED, | |||
| ENGINE_CALLBACK_PROCESS_MODE_CHANGED, | |||
| ENGINE_CALLBACK_TRANSPORT_MODE_CHANGED): | |||
| if action == ENGINE_CALLBACK_ENGINE_STARTED: | |||
| host.processMode = value1 | |||
| host.transportMode = value2 | |||
| elif action == ENGINE_CALLBACK_PROCESS_MODE_CHANGED: | |||
| host.processMode = value1 | |||
| elif action == ENGINE_CALLBACK_TRANSPORT_MODE_CHANGED: | |||
| host.transportMode = value1 | |||
| if action == ENGINE_CALLBACK_ENGINE_STARTED: | |||
| host.processMode = value1 | |||
| host.transportMode = value2 | |||
| elif action == ENGINE_CALLBACK_PROCESS_MODE_CHANGED: | |||
| host.processMode = value1 | |||
| elif action == ENGINE_CALLBACK_TRANSPORT_MODE_CHANGED: | |||
| host.transportMode = value1 | |||
| valueStr = charPtrToString(valueStr) | |||
| @@ -235,20 +235,6 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta): | |||
| host.PluginRemovedCallback.connect(self.slot_handlePluginRemovedCallback) | |||
| host.PluginRenamedCallback.connect(self.slot_handlePluginRenamedCallback) | |||
| host.PluginUnavailableCallback.connect(self.slot_handlePluginUnavailableCallback) | |||
| host.ParameterValueChangedCallback.connect(self.slot_handleParameterValueChangedCallback) | |||
| host.ParameterDefaultChangedCallback.connect(self.slot_handleParameterDefaultChangedCallback) | |||
| host.ParameterMidiChannelChangedCallback.connect(self.slot_handleParameterMidiChannelChangedCallback) | |||
| host.ParameterMidiCcChangedCallback.connect(self.slot_handleParameterMidiCcChangedCallback) | |||
| host.ProgramChangedCallback.connect(self.slot_handleProgramChangedCallback) | |||
| host.MidiProgramChangedCallback.connect(self.slot_handleMidiProgramChangedCallback) | |||
| host.OptionChangedCallback.connect(self.slot_handleOptionChangedCallback) | |||
| host.NoteOnCallback.connect(self.slot_handleNoteOnCallback) | |||
| host.NoteOffCallback.connect(self.slot_handleNoteOffCallback) | |||
| host.UpdateCallback.connect(self.slot_handleUpdateCallback) | |||
| host.ReloadInfoCallback.connect(self.slot_handleReloadInfoCallback) | |||
| host.ReloadParametersCallback.connect(self.slot_handleReloadParametersCallback) | |||
| host.ReloadProgramsCallback.connect(self.slot_handleReloadProgramsCallback) | |||
| host.ReloadAllCallback.connect(self.slot_handleReloadAllCallback) | |||
| host.PatchbayClientAddedCallback.connect(self.slot_handlePatchbayClientAddedCallback) | |||
| host.PatchbayClientRemovedCallback.connect(self.slot_handlePatchbayClientRemovedCallback) | |||
| host.PatchbayClientRenamedCallback.connect(self.slot_handlePatchbayClientRenamedCallback) | |||
| @@ -266,7 +252,8 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta): | |||
| # ----------------------------------------------------------------- | |||
| def addPlugin(self, pluginId, isProjectLoading): | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginAddedCallback(self, pluginId, pluginName): | |||
| if self.fIsOnlyPatchbay: | |||
| pitem = PluginEdit(self, self.host, pluginId) | |||
| else: | |||
| @@ -275,10 +262,11 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta): | |||
| self.fPluginList.append(pitem) | |||
| self.fPluginCount += 1 | |||
| if self.fIsOnlyPatchbay and not isProjectLoading: | |||
| if self.fIsOnlyPatchbay and not self.fParent.isProjectLoading(): | |||
| self.host.set_active(pluginId, True) | |||
| def removePlugin(self, pluginId): | |||
| @pyqtSlot(int) | |||
| def slot_handlePluginRemovedCallback(self, pluginId): | |||
| patchcanvas.handlePluginRemoved(pluginId) | |||
| if pluginId in self.fSelectedPlugins: | |||
| @@ -300,9 +288,10 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta): | |||
| # push all plugins 1 slot back | |||
| for i in range(pluginId, self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| pitem.setId(i) | |||
| pitem.setPluginId(i) | |||
| def renamePlugin(self, pluginId, newName): | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginRenamedCallback(self, pluginId, newName): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| @@ -312,7 +301,8 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta): | |||
| pitem.setName(newName) | |||
| def disablePlugin(self, pluginId, errorMsg): | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginUnavailableCallback(self, pluginId, errorMsg): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| @@ -320,6 +310,8 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta): | |||
| if pitem is None: | |||
| return | |||
| # ----------------------------------------------------------------- | |||
| def removeAllPlugins(self): | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| @@ -681,198 +673,6 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta): | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginAddedCallback(self, pluginId, pluginName): | |||
| self.addPlugin(pluginId, self.fParent.isProjectLoading()) | |||
| @pyqtSlot(int) | |||
| def slot_handlePluginRemovedCallback(self, pluginId): | |||
| self.removePlugin(pluginId) | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginRenamedCallback(self, pluginId, newName): | |||
| self.renamePlugin(pluginId, newName) | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginUnavailableCallback(self, pluginId, errorMsg): | |||
| self.disablePlugin(pluginId, errorMsg) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, float) | |||
| def slot_handleParameterValueChangedCallback(self, pluginId, index, value): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.setParameterValue(index, value) | |||
| @pyqtSlot(int, int, float) | |||
| def slot_handleParameterDefaultChangedCallback(self, pluginId, index, value): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.setParameterDefault(index, value) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleParameterMidiCcChangedCallback(self, pluginId, index, cc): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.setParameterMidiControl(index, cc) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleParameterMidiChannelChangedCallback(self, pluginId, index, channel): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.setParameterMidiChannel(index, channel) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int) | |||
| def slot_handleProgramChangedCallback(self, pluginId, index): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.setProgram(index) | |||
| @pyqtSlot(int, int) | |||
| def slot_handleMidiProgramChangedCallback(self, pluginId, index): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.setMidiProgram(index) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, bool) | |||
| def slot_handleOptionChangedCallback(self, pluginId, option, yesNo): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.setOption(option, yesNo) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, int, int) | |||
| def slot_handleNoteOnCallback(self, pluginId, channel, note, velo): | |||
| if pluginId in self.fSelectedPlugins: | |||
| self.fKeys.keyboard.sendNoteOn(note, False) | |||
| if not self.fIsOnlyPatchbay: | |||
| return | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.sendNoteOn(channel, note) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleNoteOffCallback(self, pluginId, channel, note): | |||
| if pluginId in self.fSelectedPlugins: | |||
| self.fKeys.keyboard.sendNoteOff(note, False) | |||
| if not self.fIsOnlyPatchbay: | |||
| return | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.sendNoteOff(channel, note) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int) | |||
| def slot_handleUpdateCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.updateInfo() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadInfoCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.reloadInfo() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadParametersCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.reloadParameters() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadProgramsCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.reloadPrograms() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadAllCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.reloadAll() | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, int, str) | |||
| def slot_handlePatchbayClientAddedCallback(self, clientId, clientIcon, pluginId, clientName): | |||
| pcSplit = patchcanvas.SPLIT_UNDEF | |||
| @@ -43,35 +43,58 @@ from carla_skin import * | |||
| class CarlaRackItem(QListWidgetItem): | |||
| kRackItemType = QListWidgetItem.UserType + 1 | |||
| def __init__(self, parent, pluginId): | |||
| def __init__(self, parent, pluginId, useSkins): | |||
| QListWidgetItem.__init__(self, parent, self.kRackItemType) | |||
| self.fParent = parent | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Internal stuff | |||
| self.fParent = parent | |||
| self.fPluginId = pluginId | |||
| self.fUseSkins = useSkins | |||
| self.fWidget = None | |||
| self.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled) | |||
| #self.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled|Qt.ItemIsDragEnabled|Qt.ItemIsDropEnabled) | |||
| self.createWidget(pluginId) | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Set-up GUI | |||
| # ----------------------------------------------------------------- | |||
| self.recreateWidget() | |||
| def createWidget(self, pluginId): | |||
| self.widget = createPluginSlot(self.fParent, self.fParent.host, pluginId, True) # FIXME useSkins opt | |||
| self.widget.setFixedHeight(self.widget.getFixedHeight()) | |||
| if False: | |||
| self.fWidget = AbstractPluginSlot(parent, parent.host, pluginId) | |||
| self.setSizeHint(QSize(640, self.widget.getFixedHeight())) | |||
| # -------------------------------------------------------------------------------------------------------- | |||
| self.fParent.setItemWidget(self, self.widget) | |||
| def setPluginId(self, pluginId): | |||
| self.fPluginId = pluginId | |||
| self.fWidget.setPluginId(pluginId) | |||
| # ----------------------------------------------------------------- | |||
| # -------------------------------------------------------------------------------------------------------- | |||
| def getEditDialog(self): | |||
| return self.fWidget.fEditDialog | |||
| def closeEditDialog(self): | |||
| self.fWidget.fEditDialog.close() | |||
| def close(self): | |||
| self.widget.fEditDialog.close() | |||
| # -------------------------------------------------------------------------------------------------------- | |||
| def reloadAll(self, pluginId): | |||
| self.widget.fEditDialog.close() | |||
| del self.widget | |||
| self.createWidget(pluginId) | |||
| def getWidget(self): | |||
| return self.fWidget | |||
| def recreateWidget(self): | |||
| if self.fWidget is not None: | |||
| #self.fWidget.fEditDialog.close() | |||
| del self.fWidget | |||
| self.fWidget = createPluginSlot(self.fParent, self.fParent.host, self.fPluginId, self.fUseSkins) | |||
| self.fWidget.setFixedHeight(self.fWidget.getFixedHeight()) | |||
| self.setSizeHint(QSize(640, self.fWidget.getFixedHeight())) | |||
| self.fParent.setItemWidget(self, self.fWidget) | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Rack widget list | |||
| @@ -311,83 +334,64 @@ class CarlaRackW(QFrame): | |||
| host.PluginRemovedCallback.connect(self.slot_handlePluginRemovedCallback) | |||
| host.PluginRenamedCallback.connect(self.slot_handlePluginRenamedCallback) | |||
| host.PluginUnavailableCallback.connect(self.slot_handlePluginUnavailableCallback) | |||
| host.ParameterValueChangedCallback.connect(self.slot_handleParameterValueChangedCallback) | |||
| host.ParameterDefaultChangedCallback.connect(self.slot_handleParameterDefaultChangedCallback) | |||
| host.ParameterMidiChannelChangedCallback.connect(self.slot_handleParameterMidiChannelChangedCallback) | |||
| host.ParameterMidiCcChangedCallback.connect(self.slot_handleParameterMidiCcChangedCallback) | |||
| host.ProgramChangedCallback.connect(self.slot_handleProgramChangedCallback) | |||
| host.MidiProgramChangedCallback.connect(self.slot_handleMidiProgramChangedCallback) | |||
| host.OptionChangedCallback.connect(self.slot_handleOptionChangedCallback) | |||
| host.UiStateChangedCallback.connect(self.slot_handleUiStateChangedCallback) | |||
| host.NoteOnCallback.connect(self.slot_handleNoteOnCallback) | |||
| host.NoteOffCallback.connect(self.slot_handleNoteOffCallback) | |||
| host.UpdateCallback.connect(self.slot_handleUpdateCallback) | |||
| host.ReloadInfoCallback.connect(self.slot_handleReloadInfoCallback) | |||
| host.ReloadParametersCallback.connect(self.slot_handleReloadParametersCallback) | |||
| host.ReloadProgramsCallback.connect(self.slot_handleReloadProgramsCallback) | |||
| host.ReloadAllCallback.connect(self.slot_handleReloadAllCallback) | |||
| # ----------------------------------------------------------------- | |||
| def addPlugin(self, pluginId, isProjectLoading): | |||
| pitem = CarlaRackItem(self.fRack, pluginId) | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginAddedCallback(self, pluginId, pluginName): | |||
| pitem = CarlaRackItem(self.fRack, pluginId, self.fParent.getSavedSettings()[CARLA_KEY_MAIN_USE_CUSTOM_SKINS]) | |||
| self.fPluginList.append(pitem) | |||
| self.fPluginCount += 1 | |||
| if not isProjectLoading: | |||
| pitem.widget.setActive(True, True, True) | |||
| if not self.fParent.isProjectLoading(): | |||
| pitem.getWidget().setActive(True, True, True) | |||
| def removePlugin(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| @pyqtSlot(int) | |||
| def slot_handlePluginRemovedCallback(self, pluginId): | |||
| pitem = self.getPluginItem(pluginId) | |||
| self.fPluginCount -= 1 | |||
| self.fPluginList.pop(pluginId) | |||
| self.fRack.takeItem(pluginId) | |||
| pitem.close() | |||
| del pitem | |||
| if pitem is not None: | |||
| pitem.closeEditDialog() | |||
| del pitem | |||
| # push all plugins 1 slot back | |||
| for i in range(pluginId, self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| pitem.widget.setId(i) | |||
| pitem.setPluginId(i) | |||
| def renamePlugin(self, pluginId, newName): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginRenamedCallback(self, pluginId, newName): | |||
| widget = self.getPluginSlotWidget(pluginId) | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| if widget is None: | |||
| return | |||
| pitem.widget.setName(newName) | |||
| widget.setName(newName) | |||
| def disablePlugin(self, pluginId, errorMsg): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginUnavailableCallback(self, pluginId, errorMsg): | |||
| widget = self.getPluginSlotWidget(pluginId) | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| if widget is None: | |||
| return | |||
| # ----------------------------------------------------------------- | |||
| def removeAllPlugins(self): | |||
| while self.fRack.takeItem(0): | |||
| pass | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.close() | |||
| pitem.closeEditDialog() | |||
| del pitem | |||
| self.fPluginCount = 0 | |||
| @@ -404,22 +408,18 @@ class CarlaRackW(QFrame): | |||
| # ----------------------------------------------------------------- | |||
| def idleFast(self): | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.idleFast() | |||
| pitem.getWidget().idleFast() | |||
| def idleSlow(self): | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.idleSlow() | |||
| pitem.getWidget().idleSlow() | |||
| # ----------------------------------------------------------------- | |||
| @@ -435,14 +435,12 @@ class CarlaRackW(QFrame): | |||
| pass | |||
| def showEditDialog(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| dialog = self.getPluginEditDialog(pluginId) | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| if dialog is None: | |||
| return | |||
| pitem.widget.slot_showEditDialog(True) | |||
| dialog.show() | |||
| # ----------------------------------------------------------------- | |||
| @@ -451,86 +449,79 @@ class CarlaRackW(QFrame): | |||
| if not self.host.is_engine_running(): | |||
| return | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.setActive(True, True, True) | |||
| pitem.getWidget().setActive(True, True, True) | |||
| @pyqtSlot() | |||
| def slot_pluginsDisable(self): | |||
| if not self.host.is_engine_running(): | |||
| return | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.setActive(False, True, True) | |||
| pitem.getWidget().setActive(False, True, True) | |||
| @pyqtSlot() | |||
| def slot_pluginsVolume100(self): | |||
| if not self.host.is_engine_running(): | |||
| return | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.setInternalParameter(PLUGIN_CAN_VOLUME, 1.0) | |||
| pitem.getWidget().setInternalParameter(PLUGIN_CAN_VOLUME, 1.0) | |||
| @pyqtSlot() | |||
| def slot_pluginsMute(self): | |||
| if not self.host.is_engine_running(): | |||
| return | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.setInternalParameter(PLUGIN_CAN_VOLUME, 0.0) | |||
| pitem.getWidget().setInternalParameter(PLUGIN_CAN_VOLUME, 0.0) | |||
| @pyqtSlot() | |||
| def slot_pluginsWet100(self): | |||
| if not self.host.is_engine_running(): | |||
| return | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.setInternalParameter(PLUGIN_CAN_DRYWET, 1.0) | |||
| pitem.getWidget().setInternalParameter(PLUGIN_CAN_DRYWET, 1.0) | |||
| @pyqtSlot() | |||
| def slot_pluginsBypass(self): | |||
| if not self.host.is_engine_running(): | |||
| return | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.setInternalParameter(PLUGIN_CAN_DRYWET, 0.0) | |||
| pitem.getWidget().setInternalParameter(PLUGIN_CAN_DRYWET, 0.0) | |||
| @pyqtSlot() | |||
| def slot_pluginsCenter(self): | |||
| if not self.host.is_engine_running(): | |||
| return | |||
| for i in range(self.fPluginCount): | |||
| pitem = self.fPluginList[i] | |||
| for pitem in self.fPluginList: | |||
| if pitem is None: | |||
| break | |||
| pitem.widget.setInternalParameter(PARAMETER_BALANCE_LEFT, -1.0) | |||
| pitem.widget.setInternalParameter(PARAMETER_BALANCE_RIGHT, 1.0) | |||
| pitem.widget.setInternalParameter(PARAMETER_PANNING, 0.0) | |||
| pitem.getWidget().setInternalParameter(PARAMETER_BALANCE_LEFT, -1.0) | |||
| pitem.getWidget().setInternalParameter(PARAMETER_BALANCE_RIGHT, 1.0) | |||
| pitem.getWidget().setInternalParameter(PARAMETER_PANNING, 0.0) | |||
| # ----------------------------------------------------------------- | |||
| @@ -543,122 +534,8 @@ class CarlaRackW(QFrame): | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginAddedCallback(self, pluginId, pluginName): | |||
| self.addPlugin(pluginId, self.fParent.isProjectLoading()) | |||
| @pyqtSlot(int) | |||
| def slot_handlePluginRemovedCallback(self, pluginId): | |||
| self.removePlugin(pluginId) | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginRenamedCallback(self, pluginId, newName): | |||
| self.renamePlugin(pluginId, newName) | |||
| @pyqtSlot(int, str) | |||
| def slot_handlePluginUnavailableCallback(self, pluginId, errorMsg): | |||
| self.disablePlugin(pluginId, errorMsg) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, float) | |||
| def slot_handleParameterValueChangedCallback(self, pluginId, index, value): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.setParameterValue(index, value, True) | |||
| @pyqtSlot(int, int, float) | |||
| def slot_handleParameterDefaultChangedCallback(self, pluginId, index, value): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.setParameterDefault(index, value) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleParameterMidiCcChangedCallback(self, pluginId, index, cc): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.setParameterMidiControl(index, cc) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleParameterMidiChannelChangedCallback(self, pluginId, index, channel): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.setParameterMidiChannel(index, channel) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int) | |||
| def slot_handleProgramChangedCallback(self, pluginId, index): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.setProgram(index, True) | |||
| @pyqtSlot(int, int) | |||
| def slot_handleMidiProgramChangedCallback(self, pluginId, index): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.setMidiProgram(index, True) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, bool) | |||
| def slot_handleOptionChangedCallback(self, pluginId, option, yesNo): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.setOption(option, yesNo) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int) | |||
| def slot_handleUiStateChangedCallback(self, pluginId, state): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.customUiStateChanged(state) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, int, int) | |||
| def slot_handleNoteOnCallback(self, pluginId, channel, note, velo): | |||
| def slot_handleReloadAllCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| @@ -666,95 +543,65 @@ class CarlaRackW(QFrame): | |||
| if pitem is None: | |||
| return | |||
| pitem.widget.sendNoteOn(channel, note) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleNoteOffCallback(self, pluginId, channel, note): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| self.fRack.setCurrentRow(-1) | |||
| self.fCurrentRow = -1 | |||
| self.fLastSelectedItem = None | |||
| pitem.widget.sendNoteOff(channel, note) | |||
| pitem.recreateWidget() | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int) | |||
| def slot_handleUpdateCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| def slot_currentRowChanged(self, row): | |||
| self.fCurrentRow = row | |||
| pitem.widget.fEditDialog.updateInfo() | |||
| if self.fLastSelectedItem is not None: | |||
| self.fLastSelectedItem.setSelected(False) | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadInfoCallback(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| if row < 0 or row >= self.fPluginCount or self.fPluginList[row] is None: | |||
| self.fLastSelectedItem = None | |||
| return | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| pitem = self.fPluginList[row] | |||
| pitem.getWidget().setSelected(True) | |||
| self.fLastSelectedItem = pitem.getWidget() | |||
| pitem.widget.fEditDialog.reloadInfo() | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadParametersCallback(self, pluginId): | |||
| def getPluginItem(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| return None | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| return None | |||
| if False: | |||
| pitem = CarlaRackItem(self, 0, False) | |||
| pitem.widget.fEditDialog.reloadParameters() | |||
| return pitem | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadProgramsCallback(self, pluginId): | |||
| def getPluginEditDialog(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| return None | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| return None | |||
| if False: | |||
| pitem = CarlaRackItem(self, 0, False) | |||
| pitem.widget.fEditDialog.reloadPrograms() | |||
| return pitem.getEditDialog() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadAllCallback(self, pluginId): | |||
| def getPluginSlotWidget(self, pluginId): | |||
| if pluginId >= self.fPluginCount: | |||
| return | |||
| return None | |||
| pitem = self.fPluginList[pluginId] | |||
| if pitem is None: | |||
| return | |||
| self.fRack.setCurrentRow(-1) | |||
| self.fCurrentRow = -1 | |||
| self.fLastSelectedItem = None | |||
| pitem.reloadAll(pluginId) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int) | |||
| def slot_currentRowChanged(self, row): | |||
| self.fCurrentRow = row | |||
| if self.fLastSelectedItem is not None: | |||
| self.fLastSelectedItem.setSelected(False) | |||
| if row < 0 or row >= self.fPluginCount or self.fPluginList[row] is None: | |||
| self.fLastSelectedItem = None | |||
| return | |||
| return None | |||
| if False: | |||
| pitem = CarlaRackItem(self, 0, False) | |||
| pitem = self.fPluginList[row] | |||
| pitem.widget.setSelected(True) | |||
| self.fLastSelectedItem = pitem.widget | |||
| return pitem.getWidget() | |||
| # ----------------------------------------------------------------- | |||
| @@ -207,7 +207,7 @@ class CarlaSettingsW(QDialog): | |||
| # -------------------------------------------------------------------------------------------------------- | |||
| def __init__(self, parent, host, hasCanvas, hasCanvasGL, hasEngine): | |||
| def __init__(self, parent, host, hasCanvas, hasCanvasGL): | |||
| QDialog.__init__(self, parent) | |||
| self.host = host | |||
| self.ui = ui_carla_settings.Ui_CarlaSettingsW() | |||
| @@ -244,9 +244,6 @@ class CarlaSettingsW(QDialog): | |||
| self.ui.cb_canvas_use_opengl.setEnabled(False) | |||
| self.ui.cb_canvas_render_hq_aa.setEnabled(False) | |||
| if not hasEngine: | |||
| self.ui.lw_page.hideRow(self.TAB_INDEX_ENGINE) | |||
| if host.isPlugin: | |||
| self.ui.cb_engine_audio_driver.setEnabled(False) | |||
| @@ -685,7 +682,7 @@ class CarlaSettingsW(QDialog): | |||
| @pyqtSlot() | |||
| def slot_getAndSetProjectPath(self): | |||
| # FIXME | |||
| getAndSetPath(self, self.ui.le_main_proj_folder.text(), self.ui.le_main_proj_folder) | |||
| getAndSetPath(self, self.ui.le_main_proj_folder) | |||
| # -------------------------------------------------------------------------------------------------------- | |||
| @@ -29,12 +29,12 @@ import sys | |||
| if config_UseQt5: | |||
| from PyQt5.Qt import PYQT_VERSION_STR | |||
| from PyQt5.QtCore import pyqtWrapperType, qFatal, qVersion, qWarning, QDir | |||
| from PyQt5.QtCore import qFatal, qVersion, qWarning, QDir | |||
| from PyQt5.QtGui import QIcon | |||
| from PyQt5.QtWidgets import QFileDialog, QMessageBox | |||
| else: | |||
| from PyQt4.Qt import PYQT_VERSION_STR | |||
| from PyQt4.QtCore import pyqtWrapperType, qFatal, qVersion, qWarning, QDir | |||
| from PyQt4.QtCore import qFatal, qVersion, qWarning, QDir | |||
| from PyQt4.QtGui import QFileDialog, QIcon, QMessageBox | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| @@ -554,8 +554,8 @@ def setUpSignals(): | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # QLineEdit and QPushButton combo | |||
| def getAndSetPath(parent, currentPath, lineEdit): | |||
| newPath = QFileDialog.getExistingDirectory(parent, parent.tr("Set Path"), currentPath, QFileDialog.ShowDirsOnly) | |||
| def getAndSetPath(parent, lineEdit): | |||
| newPath = QFileDialog.getExistingDirectory(parent, parent.tr("Set Path"), lineEdit.text(), QFileDialog.ShowDirsOnly) | |||
| if newPath: | |||
| lineEdit.setText(newPath) | |||
| return newPath | |||
| @@ -574,9 +574,3 @@ def CustomMessageBox(parent, icon, title, text, extraText="", buttons=QMessageBo | |||
| return msgBox.exec_() | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # An empty class used to resolve metaclass conflicts between ABC and PyQt modules | |||
| class PyQtMetaClass(pyqtWrapperType, ABCMeta): | |||
| pass | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| @@ -91,6 +91,11 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): | |||
| QFrame.__init__(self, parent) | |||
| self.host = host | |||
| if False: | |||
| # kdevelop likes this :) | |||
| host = CarlaHostMeta() | |||
| self.host = host | |||
| # ------------------------------------------------------------- | |||
| # Get plugin info | |||
| @@ -153,6 +158,72 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): | |||
| self.peak_in = None | |||
| self.peak_out = None | |||
| # ------------------------------------------------------------- | |||
| # Set-up connections | |||
| host.ParameterValueChangedCallback.connect(self.slot_handleParameterValueChangedCallback) | |||
| host.ParameterDefaultChangedCallback.connect(self.slot_handleParameterDefaultChangedCallback) | |||
| host.ParameterMidiChannelChangedCallback.connect(self.slot_handleParameterMidiChannelChangedCallback) | |||
| host.ParameterMidiCcChangedCallback.connect(self.slot_handleParameterMidiCcChangedCallback) | |||
| host.ProgramChangedCallback.connect(self.slot_handleProgramChangedCallback) | |||
| host.MidiProgramChangedCallback.connect(self.slot_handleMidiProgramChangedCallback) | |||
| host.OptionChangedCallback.connect(self.slot_handleOptionChangedCallback) | |||
| host.UiStateChangedCallback.connect(self.slot_handleUiStateChangedCallback) | |||
| host.NoteOnCallback.connect(self.slot_handleNoteOnCallback) | |||
| host.NoteOffCallback.connect(self.slot_handleNoteOffCallback) | |||
| # ----------------------------------------------------------------- | |||
| @pyqtSlot(int, int, float) | |||
| def slot_handleParameterValueChangedCallback(self, pluginId, index, value): | |||
| if self.fPluginId == pluginId: | |||
| self.setParameterValue(index, value, True) | |||
| @pyqtSlot(int, int, float) | |||
| def slot_handleParameterDefaultChangedCallback(self, pluginId, index, value): | |||
| if self.fPluginId == pluginId: | |||
| self.setParameterDefault(index, value) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleParameterMidiCcChangedCallback(self, pluginId, index, cc): | |||
| if self.fPluginId == pluginId: | |||
| self.setParameterMidiControl(index, cc) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleParameterMidiChannelChangedCallback(self, pluginId, index, channel): | |||
| if self.fPluginId == pluginId: | |||
| self.setParameterMidiChannel(index, channel) | |||
| @pyqtSlot(int, int) | |||
| def slot_handleProgramChangedCallback(self, pluginId, index): | |||
| if self.fPluginId == pluginId: | |||
| self.setProgram(index, True) | |||
| @pyqtSlot(int, int) | |||
| def slot_handleMidiProgramChangedCallback(self, pluginId, index): | |||
| if self.fPluginId == pluginId: | |||
| self.setMidiProgram(index, True) | |||
| @pyqtSlot(int, int, bool) | |||
| def slot_handleOptionChangedCallback(self, pluginId, option, yesNo): | |||
| if self.fPluginId == pluginId: | |||
| self.setOption(option, yesNo) | |||
| @pyqtSlot(int, int) | |||
| def slot_handleUiStateChangedCallback(self, pluginId, state): | |||
| if self.fPluginId == pluginId: | |||
| self.customUiStateChanged(state) | |||
| @pyqtSlot(int, int, int, int) | |||
| def slot_handleNoteOnCallback(self, pluginId, channel, note, velo): | |||
| if self.fPluginId == pluginId: | |||
| self.sendNoteOn(channel, note) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleNoteOffCallback(self, pluginId, channel, note): | |||
| if self.fPluginId == pluginId: | |||
| self.sendNoteOff(channel, note) | |||
| #------------------------------------------------------------------ | |||
| def ready(self): | |||
| @@ -226,9 +297,9 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): | |||
| #------------------------------------------------------------------ | |||
| def setId(self, idx): | |||
| def setPluginId(self, idx): | |||
| self.fPluginId = idx | |||
| self.fEditDialog.setId(idx) | |||
| self.fEditDialog.setPluginId(idx) | |||
| def setName(self, name): | |||
| self.fEditDialog.setName(name) | |||
| @@ -1560,8 +1631,8 @@ class PluginSlot_ZynFX(AbstractPluginSlot): | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| def createPluginSlot(parent, host, pluginId, useCustomSkins): | |||
| if not useCustomSkins: | |||
| def createPluginSlot(parent, host, pluginId, useSkins): | |||
| if not useSkins: | |||
| return PluginSlot_Default(parent, host, pluginId) | |||
| pluginInfo = host.get_plugin_info(pluginId) | |||
| @@ -574,6 +574,39 @@ class PluginEdit(QDialog): | |||
| self.ui.b_save_state.clicked.connect(self.slot_stateSave) | |||
| self.ui.b_load_state.clicked.connect(self.slot_stateLoad) | |||
| host.UpdateCallback.connect(self.slot_handleUpdateCallback) | |||
| host.ReloadInfoCallback.connect(self.slot_handleReloadInfoCallback) | |||
| host.ReloadParametersCallback.connect(self.slot_handleReloadParametersCallback) | |||
| host.ReloadProgramsCallback.connect(self.slot_handleReloadProgramsCallback) | |||
| host.ReloadAllCallback.connect(self.slot_handleReloadAllCallback) | |||
| #------------------------------------------------------------------ | |||
| @pyqtSlot(int) | |||
| def slot_handleUpdateCallback(self, pluginId): | |||
| if self.fPluginId == pluginId: | |||
| self.updateInfo() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadInfoCallback(self, pluginId): | |||
| if self.fPluginId == pluginId: | |||
| self.reloadInfo() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadParametersCallback(self, pluginId): | |||
| if self.fPluginId == pluginId: | |||
| self.reloadParameters() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadProgramsCallback(self, pluginId): | |||
| if self.fPluginId == pluginId: | |||
| self.reloadPrograms() | |||
| @pyqtSlot(int) | |||
| def slot_handleReloadAllCallback(self, pluginId): | |||
| if self.fPluginId == pluginId: | |||
| self.reloadAll() | |||
| #------------------------------------------------------------------ | |||
| def updateInfo(self): | |||
| @@ -913,7 +946,7 @@ class PluginEdit(QDialog): | |||
| def getHints(self): | |||
| return self.fPluginInfo['hints'] | |||
| def setId(self, idx): | |||
| def setPluginId(self, idx): | |||
| self.fPluginId = idx | |||
| def setName(self, name): | |||