Browse Source

Carla: Implement findDSSIGUI for bridges

tags/v0.9.0
falkTX 12 years ago
parent
commit
761ce77b7c
5 changed files with 61 additions and 6 deletions
  1. +2
    -1
      c++/carla-bridge/Makefile
  2. +5
    -4
      c++/carla-bridge/carla_bridge_plugin.cpp
  3. +42
    -0
      c++/carla/Shared.cpp
  4. +8
    -0
      c++/carla/Shared.hpp
  5. +4
    -1
      src/claudia_launcher.py

+ 2
- 1
c++/carla-bridge/Makefile View File

@@ -471,9 +471,10 @@ doxygen: carla_bridge.doxygen

clean:
rm -f *.o *.dll *.so *.exe
rm -f $(OBJS_NATIVE)
rm -f $(OBJS_POSIX32)
rm -f $(OBJS_POSIX64)
rm -f $(OBJS_WIN32)
rm -f $(OBJS_WIN64)
rm -f carla-bridge-lv2-gtk2 carla-bridge-lv2-gtk3 carla-bridge-lv2-qt4 carla-bridge-lv2-qt5 carla-bridge-lv2-x11 carla-bridge-vst-x11
rm -f carla-bridge-posix32 carla-bridge-posix64
rm -f carla-bridge-native carla-bridge-posix32 carla-bridge-posix64

+ 5
- 4
c++/carla-bridge/carla_bridge_plugin.cpp View File

@@ -1098,10 +1098,8 @@ int main(int argc, char* argv[])

void* extraStuff = nullptr;

#if 1 // TESTING
static const char* const dssiGUI = "/usr/lib/dssi/calf/calf_gtk";
extraStuff = (void*)dssiGUI;
#endif
if (itype == CarlaBackend::PLUGIN_DSSI)
extraStuff = findDSSIGUI(filename, name, label);

// Init plugin
short id = engine->addPlugin(itype, filename, name, label, extraStuff);
@@ -1132,6 +1130,9 @@ int main(int argc, char* argv[])
ret = 1;
}

if (extraStuff && itype == CarlaBackend::PLUGIN_DSSI)
free((char*)extraStuff);

engine->aboutToClose();
engine->removeAllPlugins();
engine->close();


+ 42
- 0
c++/carla/Shared.cpp View File

@@ -17,6 +17,9 @@

#include "Shared.hpp"

#include <QtCore/QDir>
#include <QtCore/QFileInfo>

//#define __STDC_LIMIT_MACROS
//#include <cstdint>

@@ -255,3 +258,42 @@ QString xmlSafeString(QString string, const bool toXml)
else
return string.replace("&amp;", "&").replace("&lt;","<").replace("&gt;",">").replace("&apos;","'").replace("&quot;","\"");
}

// ------------------------------------------------------------------------------------------------------------
// Plugin Query (helper functions)

char* findDSSIGUI(const char* const filename, const char* const name, const char* const label)
{
static QString guiFilename;
guiFilename.clear();

QString pluginDir(filename);
pluginDir.resize(pluginDir.lastIndexOf("."));

QString shortName = QFileInfo(pluginDir).baseName();

QString checkName = QString(name).replace(" ", "_");
QString checkLabel = QString(label);
QString checkSName = shortName;

if (! checkName.endsWith("_")) checkName += "_";
if (! checkLabel.endsWith("_")) checkLabel += "_";
if (! checkSName.endsWith("_")) checkSName += "_";

QStringList guiFiles = QDir(pluginDir).entryList();

foreach (const QString& gui, guiFiles)
{
if (gui.startsWith(checkName) || gui.startsWith(checkLabel) || gui.startsWith(checkSName))
{
QFileInfo finalname(pluginDir + QDir::separator() + gui);
guiFilename = finalname.absoluteFilePath();
break;
}
}

if (guiFilename.isEmpty())
return nullptr;

return strdup(guiFilename.toUtf8().constData());
}

+ 8
- 0
c++/carla/Shared.hpp View File

@@ -148,4 +148,12 @@ const CarlaSaveState* getSaveStateDictFromXML(const QDomNode& xmlNode);

QString xmlSafeString(QString string, const bool toXml);

// ------------------------------------------------------------------------------------------------------------
// Plugin Query (helper functions)

// needs free() afterwars if valid
char* findDSSIGUI(const char* const filename, const char* const name, const char* const label);

// ------------------------------------------------------------------------------------------------------------

#endif // SHARED_HPP

+ 4
- 1
src/claudia_launcher.py View File

@@ -213,6 +213,9 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
if binary.startswith("startBristol"):
self.createAppTemplate("bristol", app, binary)

elif binary.startswith("carla-standalone"):
self.createAppTemplate("carla-standalone", app, binary)

elif app == "Ardour 2.8":
self.createAppTemplate("ardour2", app, binary)

@@ -737,7 +740,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
if not "bristol" in pkglist:
self.tabWidget.setTabEnabled(iTabBristol, False)

if not ("carla-bridge-linux32" in pkglist or "carla-bridge-linux64" in pkglist):
if not ("carla" in pkglist or "cadence-git" in pkglist):
self.tabWidget.setTabEnabled(iTabPlugin, False)

last_pos = 0


Loading…
Cancel
Save