From 614ea1f966df774717ffcc930382cb4fecbc729f Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 2 Feb 2014 15:01:00 +0000 Subject: [PATCH] Make the new keyboard/canvas features work in main Carla --- source/carla | 6 +++++- source/carla_patchbay.py | 46 +++++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/source/carla b/source/carla index be7f97169..e4ed369f3 100755 --- a/source/carla +++ b/source/carla @@ -36,7 +36,7 @@ class CarlaMultiW(QTabWidget): QTabWidget.__init__(self, parent) self.fRack = CarlaRackW(parent, False) - self.fPatchbay = CarlaPatchbayW(parent, False) + self.fPatchbay = CarlaPatchbayW(parent, False, False) self.fParent = parent self.fUseCustomPaint = False @@ -74,7 +74,9 @@ class CarlaMultiW(QTabWidget): parent.MidiProgramChangedCallback.connect(self.fRack.slot_handleMidiProgramChangedCallback) parent.UiStateChangedCallback.connect(self.fRack.slot_handleUiStateChangedCallback) parent.NoteOnCallback.connect(self.fRack.slot_handleNoteOnCallback) + parent.NoteOnCallback.connect(self.fPatchbay.slot_handleNoteOnCallback) parent.NoteOffCallback.connect(self.fRack.slot_handleNoteOffCallback) + parent.NoteOffCallback.connect(self.fPatchbay.slot_handleNoteOffCallback) parent.UpdateCallback.connect(self.fRack.slot_handleUpdateCallback) parent.ReloadInfoCallback.connect(self.fRack.slot_handleReloadInfoCallback) parent.ReloadParametersCallback.connect(self.fRack.slot_handleReloadParametersCallback) @@ -100,9 +102,11 @@ class CarlaMultiW(QTabWidget): def addPlugin(self, pluginId, isProjectLoading): self.fRack.addPlugin(pluginId, isProjectLoading) + self.fPatchbay.addPlugin(pluginId, isProjectLoading) def removePlugin(self, pluginId): self.fRack.removePlugin(pluginId) + self.fPatchbay.removePlugin(pluginId) def renamePlugin(self, pluginId, newName): self.fRack.renamePlugin(pluginId, newName) diff --git a/source/carla_patchbay.py b/source/carla_patchbay.py index 789ff1820..2f551f03b 100644 --- a/source/carla_patchbay.py +++ b/source/carla_patchbay.py @@ -49,7 +49,7 @@ CARLA_DEFAULT_CANVAS_SIZE_HEIGHT = 2400 # Patchbay widget class CarlaPatchbayW(QFrame): - def __init__(self, parent, doSetup = True): + def __init__(self, parent, doSetup = True, onlyPatchbay = True): QFrame.__init__(self, parent) self.fLayout = QVBoxLayout(self) @@ -69,6 +69,8 @@ class CarlaPatchbayW(QFrame): self.fParent = parent self.fPluginCount = 0 self.fPluginList = [] + + self.fIsOnlyPatchbay = onlyPatchbay self.fSelectedPlugins = [] self.fCanvasWidth = 0 @@ -165,6 +167,10 @@ class CarlaPatchbayW(QFrame): # ----------------------------------------------------------------- def addPlugin(self, pluginId, isProjectLoading): + if not self.fIsOnlyPatchbay: + self.fPluginCount += 1 + return + pitem = PluginEdit(self, pluginId) self.fPluginList.append(pitem) @@ -174,6 +180,10 @@ class CarlaPatchbayW(QFrame): Carla.host.set_active(pluginId, True) def removePlugin(self, pluginId): + if not self.fIsOnlyPatchbay: + self.fPluginCount -= 1 + return + if pluginId >= self.fPluginCount: return @@ -564,6 +574,11 @@ class CarlaPatchbayW(QFrame): @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 @@ -573,11 +588,13 @@ class CarlaPatchbayW(QFrame): pitem.sendNoteOn(channel, note) - if pluginId in self.fSelectedPlugins: - self.fKeys.keyboard.sendNoteOn(note, False) - @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 @@ -587,9 +604,6 @@ class CarlaPatchbayW(QFrame): pitem.sendNoteOff(channel, note) - if pluginId in self.fSelectedPlugins: - self.fKeys.keyboard.sendNoteOff(note, False) - # ----------------------------------------------------------------- @pyqtSlot(int) @@ -671,15 +685,11 @@ class CarlaPatchbayW(QFrame): if pluginId < 0: return - if pluginId >= self.getPluginCount(): - print("sorry, can't map this plugin to canvas client", pluginId, self.getPluginCount()) - return - - pitem = self.fPluginList[pluginId] - if pitem is None: + if pluginId >= self.fPluginCount: + print("sorry, can't map this plugin to canvas client", pluginId, self.fPluginCount) return - patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(pitem.fPluginInfo['hints'] & PLUGIN_HAS_CUSTOM_UI)) + patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(Carla.host.get_plugin_info(pluginId)['hints'] & PLUGIN_HAS_CUSTOM_UI)) @pyqtSlot(int) def slot_handlePatchbayClientRemovedCallback(self, clientId): @@ -712,15 +722,11 @@ class CarlaPatchbayW(QFrame): if pluginId < 0: return - if pluginId >= self.getPluginCount(): + if pluginId >= self.fPluginCount: print("sorry, can't map this plugin to canvas client", pluginId, self.getPluginCount()) return - pitem = self.fPluginList[pluginId] - if pitem is None: - return - - patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(pitem.fPluginInfo['hints'] & PLUGIN_HAS_CUSTOM_UI)) + patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(Carla.host.get_plugin_info(pluginId)['hints'] & PLUGIN_HAS_CUSTOM_UI)) @pyqtSlot(int, int, int, str) def slot_handlePatchbayPortAddedCallback(self, clientId, portId, portFlags, portName):