Browse Source

Associate a canvas group with a plugin Id if possible

tags/1.9.4
falkTX 11 years ago
parent
commit
43d6ecba22
4 changed files with 58 additions and 8 deletions
  1. +1
    -0
      source/backend/engine/CarlaEngineJack.cpp
  2. +2
    -2
      source/carla_host.py
  3. +26
    -2
      source/carla_patchbay.py
  4. +29
    -4
      source/patchcanvas.py

+ 1
- 0
source/backend/engine/CarlaEngineJack.cpp View File

@@ -1696,6 +1696,7 @@ private:
carla_stdout("CarlaEngineJack::findPluginIdAndIcon(\"%s\", ...) - found plugin, yes!!!", clientName);

pluginId = static_cast<int>(i);
icon = PATCHBAY_ICON_PLUGIN;

if (const char* const pluginIcon = plugin->getIconName())
{


+ 2
- 2
source/carla_host.py View File

@@ -121,7 +121,7 @@ class HostWindow(QMainWindow):
ReloadParametersCallback = pyqtSignal(int)
ReloadProgramsCallback = pyqtSignal(int)
ReloadAllCallback = pyqtSignal(int)
PatchbayClientAddedCallback = pyqtSignal(int, int, str)
PatchbayClientAddedCallback = pyqtSignal(int, int, int, str)
PatchbayClientRemovedCallback = pyqtSignal(int)
PatchbayClientRenamedCallback = pyqtSignal(int, str)
PatchbayClientDataChangedCallback = pyqtSignal(int, int, int)
@@ -1173,7 +1173,7 @@ def engineCallback(ptr, action, pluginId, value1, value2, value3, valueStr):
elif action == ENGINE_CALLBACK_RELOAD_ALL:
Carla.gui.ReloadAllCallback.emit(pluginId)
elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED:
Carla.gui.PatchbayClientAddedCallback.emit(pluginId, value1, valueStr)
Carla.gui.PatchbayClientAddedCallback.emit(pluginId, value1, value2, valueStr)
elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_REMOVED:
Carla.gui.PatchbayClientRemovedCallback.emit(pluginId)
elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_RENAMED:


+ 26
- 2
source/carla_patchbay.py View File

@@ -609,8 +609,8 @@ class CarlaPatchbayW(QGraphicsView):

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

@pyqtSlot(int, int, str)
def slot_handlePatchbayClientAddedCallback(self, clientId, clientIcon, clientName):
@pyqtSlot(int, int, int, str)
def slot_handlePatchbayClientAddedCallback(self, clientId, clientIcon, pluginId, clientName):
pcSplit = patchcanvas.SPLIT_UNDEF
pcIcon = patchcanvas.ICON_APPLICATION

@@ -629,6 +629,18 @@ class CarlaPatchbayW(QGraphicsView):

QTimer.singleShot(0, self.fMiniCanvasPreview.update)

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:
return

patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(pitem.fPluginInfo['hints'] & PLUGIN_HAS_CUSTOM_UI))

@pyqtSlot(int)
def slot_handlePatchbayClientRemovedCallback(self, clientId):
#if not self.fEngineStarted: return
@@ -658,6 +670,18 @@ class CarlaPatchbayW(QGraphicsView):
patchcanvas.setGroupIcon(clientId, pcIcon)
QTimer.singleShot(0, self.fMiniCanvasPreview.update)

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:
return

patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(pitem.fPluginInfo['hints'] & PLUGIN_HAS_CUSTOM_UI))

@pyqtSlot(int, int, int, str)
def slot_handlePatchbayPortAddedCallback(self, clientId, portId, portFlags, portName):
if (portFlags & PATCHBAY_PORT_IS_INPUT):


+ 29
- 4
source/patchcanvas.py View File

@@ -257,11 +257,17 @@ def port_type2str(port_type):
return "PORT_TYPE_???"

def icon2str(icon):
if icon == ICON_HARDWARE:
return "ICON_HARDWARE"
elif ICON_APPLICATION:
if icon == ICON_APPLICATION:
return "ICON_APPLICATION"
elif ICON_LADISH_ROOM:
elif icon == ICON_HARDWARE:
return "ICON_HARDWARE"
elif icon == ICON_DISTRHO:
return "ICON_DISTRHO"
elif icon == ICON_FILE:
return "ICON_FILE"
elif icon == ICON_PLUGIN:
return "ICON_PLUGIN"
elif icon == ICON_LADISH_ROOM:
return "ICON_LADISH_ROOM"
else:
return "ICON_???"
@@ -720,6 +726,22 @@ def setGroupIcon(group_id, icon):

qCritical("PatchCanvas::setGroupIcon(%i, %s) - unable to find group to change icon" % (group_id, icon2str(icon)))

def setGroupAsPlugin(group_id, plugin_id, hasUi):
if canvas.debug:
qDebug("PatchCanvas::setGroupAsPlugin(%i, %i, %s)" % (group_id, plugin_id, bool2str(hasUi)))

for group in canvas.group_list:
if group.group_id == group_id:
group.widgets[0].setAsPlugin(plugin_id, hasUi)

if group.split and group.widgets[1]:
group.widgets[1].setAsPlugin(plugin_id, hasUi)

QTimer.singleShot(0, canvas.scene.update)
return

qCritical("PatchCanvas::setGroupAsPlugin(%i, %i, %s) - unable to find group to set as plugin" % (group_id, plugin_id, bool2str(hasUi)))

def addPort(group_id, port_id, port_name, port_mode, port_type):
if canvas.debug:
qDebug("PatchCanvas::addPort(%i, %i, %s, %s, %s)" % (group_id, port_id, port_name.encode(), port_mode2str(port_mode), port_type2str(port_type)))
@@ -2048,6 +2070,9 @@ class CanvasBox(QGraphicsItem):
def getPortList(self):
return self.m_port_list_ids

def setAsPlugin(self, plugin_id, hasUi):
print("GOT CANVAS AS PLUGIN!!!")

def setIcon(self, icon):
if self.icon_svg:
self.icon_svg.setIcon(icon, self.m_group_name)


Loading…
Cancel
Save