| @@ -108,14 +108,15 @@ enum BinaryType { | |||
| * \note Some plugin classes might provide more than 1 plugin type. | |||
| */ | |||
| enum PluginType { | |||
| PLUGIN_NONE = 0, //!< Null plugin type. | |||
| PLUGIN_LADSPA = 1, //!< LADSPA plugin.\see LadspaPlugin | |||
| PLUGIN_DSSI = 2, //!< DSSI plugin.\see DssiPlugin | |||
| PLUGIN_LV2 = 3, //!< LV2 plugin.\see Lv2Plugin | |||
| PLUGIN_VST = 4, //!< VST plugin.\see VstPlugin | |||
| PLUGIN_GIG = 5, //!< GIG sound kit, implemented via LinuxSampler.\see LinuxSamplerPlugin | |||
| PLUGIN_SF2 = 6, //!< SF2 sound kit (aka SoundFont), implemented via FluidSynth.\see FluidSynthPlugin | |||
| PLUGIN_SFZ = 7 //!< SFZ sound kit, implemented via LinuxSampler.\see LinuxSamplerPlugin | |||
| PLUGIN_NONE = 0, //!< Null plugin type. | |||
| PLUGIN_INTERNAL = 1, //!< Internal plugin. | |||
| PLUGIN_LADSPA = 2, //!< LADSPA plugin.\see LadspaPlugin | |||
| PLUGIN_DSSI = 3, //!< DSSI plugin.\see DssiPlugin | |||
| PLUGIN_LV2 = 4, //!< LV2 plugin.\see Lv2Plugin | |||
| PLUGIN_VST = 5, //!< VST plugin.\see VstPlugin | |||
| PLUGIN_GIG = 6, //!< GIG sound kit, implemented via LinuxSampler.\see LinuxSamplerPlugin | |||
| PLUGIN_SF2 = 7, //!< SF2 sound kit (aka SoundFont), implemented via FluidSynth.\see FluidSynthPlugin | |||
| PLUGIN_SFZ = 8 //!< SFZ sound kit, implemented via LinuxSampler.\see LinuxSamplerPlugin | |||
| }; | |||
| enum PluginCategory { | |||
| @@ -17,6 +17,7 @@ | |||
| #include "carla_backend_standalone.h" | |||
| #include "carla_plugin.h" | |||
| #include "plugins/carla_native.h" | |||
| // ------------------------------------------------------------------------------------------------------------------- | |||
| @@ -90,6 +91,39 @@ const char* get_engine_driver_name(unsigned int index) | |||
| // ------------------------------------------------------------------------------------------------------------------- | |||
| unsigned int get_internal_plugin_count() | |||
| { | |||
| qDebug("CarlaBackendStandalone::get_internal_plugin_count()"); | |||
| return CarlaBackend::CarlaPlugin::getNativePluginCount(); | |||
| } | |||
| const PluginInfo* get_internal_plugin_info(unsigned int plugin_id) | |||
| { | |||
| qDebug("CarlaBackendStandalone::get_internal_plugin_info(%i)", plugin_id); | |||
| static PluginInfo info; | |||
| const PluginDescriptor* const nativePlugin = CarlaBackend::CarlaPlugin::getNativePlugin(plugin_id); | |||
| Q_ASSERT(nativePlugin); | |||
| if (! nativePlugin) | |||
| return nullptr; | |||
| info.type = CarlaBackend::PLUGIN_NONE; | |||
| info.category = (CarlaBackend::PluginCategory)nativePlugin->category; | |||
| info.hints = CarlaBackend::getPluginHintsFromNative(nativePlugin->hints); | |||
| info.name = nativePlugin->name; | |||
| info.label = nativePlugin->label; | |||
| info.maker = nativePlugin->maker; | |||
| info.copyright = nativePlugin->copyright; | |||
| return &info; | |||
| } | |||
| // ------------------------------------------------------------------------------------------------------------------- | |||
| bool engine_init(const char* driver_name, const char* client_name) | |||
| { | |||
| qDebug("CarlaBackendStandalone::engine_init(\"%s\", \"%s\")", driver_name, client_name); | |||
| @@ -98,6 +98,9 @@ struct GuiInfo { | |||
| CARLA_EXPORT unsigned int get_engine_driver_count(); | |||
| CARLA_EXPORT const char* get_engine_driver_name(unsigned int index); | |||
| CARLA_EXPORT unsigned int get_internal_plugin_count(); | |||
| CARLA_EXPORT const PluginInfo* get_internal_plugin_info(unsigned int plugin_id); | |||
| CARLA_EXPORT bool engine_init(const char* driver_name, const char* client_name); | |||
| CARLA_EXPORT bool engine_close(); | |||
| CARLA_EXPORT bool is_engine_running(); | |||
| @@ -285,6 +285,9 @@ short CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, con | |||
| { | |||
| case PLUGIN_NONE: | |||
| break; | |||
| case PLUGIN_INTERNAL: | |||
| plugin = CarlaPlugin::newNative(init); | |||
| break; | |||
| case PLUGIN_LADSPA: | |||
| plugin = CarlaPlugin::newLADSPA(init, extra); | |||
| break; | |||
| @@ -65,7 +65,7 @@ public: | |||
| { | |||
| qDebug("NativePlugin::NativePlugin()"); | |||
| m_type = PLUGIN_NONE; | |||
| m_type = PLUGIN_INTERNAL; | |||
| descriptor = nullptr; | |||
| handle = nullptr; | |||
| @@ -164,6 +164,16 @@ public: | |||
| return pluginDescriptors.size(); | |||
| } | |||
| static const PluginDescriptor* getPlugin(size_t index) | |||
| { | |||
| Q_ASSERT(index < pluginDescriptors.size()); | |||
| if (index < pluginDescriptors.size()) | |||
| return pluginDescriptors[index]; | |||
| return nullptr; | |||
| } | |||
| static void registerPlugin(const PluginDescriptor* desc) | |||
| { | |||
| pluginDescriptors.push_back(desc); | |||
| @@ -258,6 +268,11 @@ size_t CarlaPlugin::getNativePluginCount() | |||
| return NativePlugin::getPluginCount(); | |||
| } | |||
| const PluginDescriptor* CarlaPlugin::getNativePlugin(size_t index) | |||
| { | |||
| return NativePlugin::getPlugin(index); | |||
| } | |||
| CARLA_BACKEND_END_NAMESPACE | |||
| void carla_register_native_plugin(const PluginDescriptor* desc) | |||
| @@ -42,6 +42,8 @@ typedef QX11EmbedContainer GuiContainer; | |||
| typedef QWidget GuiContainer; | |||
| #endif | |||
| typedef struct _PluginDescriptor PluginDescriptor; | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| /*! | |||
| @@ -2108,6 +2110,7 @@ public: | |||
| static CarlaPlugin* newNative(const initializer& init); | |||
| static size_t getNativePluginCount(); | |||
| static const PluginDescriptor* getNativePlugin(size_t index); | |||
| // ------------------------------------------------------------------- | |||
| @@ -17,6 +17,10 @@ | |||
| #include "carla_shared.h" | |||
| #ifndef BUILD_BRIDGE | |||
| # include "plugins/carla_native.h" | |||
| #endif | |||
| #include <QtCore/QString> | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| @@ -58,6 +62,8 @@ const char* PluginType2str(const PluginType type) | |||
| { | |||
| case PLUGIN_NONE: | |||
| return "PLUGIN_NONE"; | |||
| case PLUGIN_INTERNAL: | |||
| return "PLUGIN_INTERNAL"; | |||
| case PLUGIN_LADSPA: | |||
| return "PLUGIN_LADSPA"; | |||
| case PLUGIN_DSSI: | |||
| @@ -393,6 +399,8 @@ const char* getPluginTypeString(const PluginType type) | |||
| { | |||
| case PLUGIN_NONE: | |||
| return "NONE"; | |||
| case PLUGIN_INTERNAL: | |||
| return "INTERNAL"; | |||
| case PLUGIN_LADSPA: | |||
| return "LADSPA"; | |||
| case PLUGIN_DSSI: | |||
| @@ -520,6 +528,20 @@ void setLastError(const char* const error) | |||
| // ------------------------------------------------------------------------------------------------------------------- | |||
| #ifndef BUILD_BRIDGE | |||
| uint32_t getPluginHintsFromNative(const uint32_t nativeHints) | |||
| { | |||
| uint32_t realHints = 0; | |||
| if (nativeHints & ::PLUGIN_IS_SYNTH) | |||
| realHints |= PLUGIN_IS_SYNTH; | |||
| if (nativeHints & ::PLUGIN_HAS_GUI) | |||
| realHints |= PLUGIN_HAS_GUI; | |||
| if (nativeHints & ::PLUGIN_USES_SINGLE_THREAD) | |||
| realHints |= PLUGIN_USES_SINGLE_THREAD; | |||
| return realHints; | |||
| } | |||
| void setOption(const OptionsType option, const int value, const char* const valueStr) | |||
| { | |||
| qDebug("CarlaBackend::setOption(%s, %i, \"%s\")", OptionsType2str(option), value, valueStr); | |||
| @@ -51,6 +51,8 @@ const char* getLastError(); | |||
| void setLastError(const char* const error); | |||
| #ifndef BUILD_BRIDGE | |||
| uint32_t getPluginHintsFromNative(const uint32_t nativeHints); | |||
| void setOption(const OptionsType option, const int value, const char* const valueStr); | |||
| void resetOptions(); | |||
| @@ -576,8 +576,8 @@ class PluginRefreshW(QDialog, ui_carla_refresh.Ui_PluginRefreshW): | |||
| self.b_close.setVisible(False) | |||
| native, posix32, posix64, win32, win64 = (self.ch_native.isChecked(), self.ch_posix32.isChecked(), self.ch_posix64.isChecked(), self.ch_win32.isChecked(), self.ch_win64.isChecked()) | |||
| ladspa, dssi, lv2, vst, gig, sf2, sfz = (self.ch_ladspa.isChecked(), self.ch_dssi.isChecked(), self.ch_lv2.isChecked(), self.ch_vst.isChecked(), | |||
| self.ch_gig.isChecked(), self.ch_sf2.isChecked(), self.ch_sfz.isChecked()) | |||
| ladspa, dssi, lv2, vst, gig, sf2, sfz = (self.ch_ladspa.isChecked(), self.ch_dssi.isChecked(), self.ch_lv2.isChecked(), self.ch_vst.isChecked(), | |||
| self.ch_gig.isChecked(), self.ch_sf2.isChecked(), self.ch_sfz.isChecked()) | |||
| self.pThread.setSearchBinaryTypes(native, posix32, posix64, win32, win64) | |||
| self.pThread.setSearchPluginTypes(ladspa, dssi, lv2, vst, gig, sf2, sfz) | |||
| @@ -693,6 +693,7 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| self.connect(self.ch_midi, SIGNAL("clicked()"), SLOT("slot_checkFilters()")) | |||
| self.connect(self.ch_other, SIGNAL("clicked()"), SLOT("slot_checkFilters()")) | |||
| self.connect(self.ch_kits, SIGNAL("clicked()"), SLOT("slot_checkFilters()")) | |||
| self.connect(self.ch_internal, SIGNAL("clicked()"), SLOT("slot_checkFilters()")) | |||
| self.connect(self.ch_ladspa, SIGNAL("clicked()"), SLOT("slot_checkFilters()")) | |||
| self.connect(self.ch_dssi, SIGNAL("clicked()"), SLOT("slot_checkFilters()")) | |||
| self.connect(self.ch_lv2, SIGNAL("clicked()"), SLOT("slot_checkFilters()")) | |||
| @@ -709,6 +710,28 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| self.tb_filters.setArrowType(Qt.UpArrow if yesno else Qt.DownArrow) | |||
| self.frame.setVisible(yesno) | |||
| def checkInternalPlugins(self): | |||
| internals = toList(self.settings_db.value("Plugins/Internal", [])) | |||
| count = 0 | |||
| for plugins in internals: | |||
| for plugin in plugins: | |||
| count += 1 | |||
| if count != Carla.Host.get_internal_plugin_count(): | |||
| internal_plugins = [] | |||
| for i in range(Carla.Host.get_internal_plugin_count()): | |||
| descInfo = Carla.Host.get_internal_plugin_info(i) | |||
| plugins = checkPluginInternal(descInfo) | |||
| if plugins: | |||
| internal_plugins.append(plugins) | |||
| self.settings_db.setValue("Plugins/Internal", internal_plugins) | |||
| self.settings_db.sync() | |||
| def reAddPlugins(self): | |||
| row_count = self.tableWidget.rowCount() | |||
| for x in range(row_count): | |||
| @@ -717,6 +740,10 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| self.last_table_index = 0 | |||
| self.tableWidget.setSortingEnabled(False) | |||
| self.checkInternalPlugins() | |||
| internals = toList(self.settings_db.value("Plugins/Internal", [])) | |||
| ladspa_plugins = [] | |||
| ladspa_plugins += toList(self.settings_db.value("Plugins/LADSPA_native", [])) | |||
| ladspa_plugins += toList(self.settings_db.value("Plugins/LADSPA_posix32", [])) | |||
| @@ -749,12 +776,18 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| sf2s = toList(self.settings_db.value("Plugins/SF2", [])) | |||
| sfzs = toList(self.settings_db.value("Plugins/SFZ", [])) | |||
| internal_count = 0 | |||
| ladspa_count = 0 | |||
| dssi_count = 0 | |||
| lv2_count = 0 | |||
| vst_count = 0 | |||
| kit_count = 0 | |||
| for plugins in internals: | |||
| for plugin in plugins: | |||
| self.addPluginToTable(plugin, self.tr("Internal")) | |||
| internal_count += 1 | |||
| for plugins in ladspa_plugins: | |||
| for plugin in plugins: | |||
| self.addPluginToTable(plugin, "LADSPA") | |||
| @@ -794,7 +827,7 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| self.tableWidget.setSortingEnabled(True) | |||
| self.tableWidget.sortByColumn(0, Qt.AscendingOrder) | |||
| self.label.setText(self.tr("Have %i LADSPA, %i DSSI, %i LV2, %i VST and %i Sound Kits" % (ladspa_count, dssi_count, lv2_count, vst_count, kit_count))) | |||
| self.label.setText(self.tr("Have %i %s, %i LADSPA, %i DSSI, %i LV2, %i VST and %i Sound Kits" % (internal_count, self.tr("Internal"), ladspa_count, dssi_count, lv2_count, vst_count, kit_count))) | |||
| def addPluginToTable(self, plugin, ptype): | |||
| index = self.last_table_index | |||
| @@ -888,11 +921,12 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| hide_midi = not self.ch_midi.isChecked() | |||
| hide_other = not self.ch_other.isChecked() | |||
| hide_ladspa = not self.ch_ladspa.isChecked() | |||
| hide_dssi = not self.ch_dssi.isChecked() | |||
| hide_lv2 = not self.ch_lv2.isChecked() | |||
| hide_vst = not self.ch_vst.isChecked() | |||
| hide_kits = not self.ch_kits.isChecked() | |||
| hide_internal = not self.ch_internal.isChecked() | |||
| hide_ladspa = not self.ch_ladspa.isChecked() | |||
| hide_dssi = not self.ch_dssi.isChecked() | |||
| hide_lv2 = not self.ch_lv2.isChecked() | |||
| hide_vst = not self.ch_vst.isChecked() | |||
| hide_kits = not self.ch_kits.isChecked() | |||
| hide_native = not self.ch_native.isChecked() | |||
| hide_bridged = not self.ch_bridged.isChecked() | |||
| @@ -943,6 +977,8 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| self.tableWidget.hideRow(i) | |||
| elif (hide_kits and is_kit): | |||
| self.tableWidget.hideRow(i) | |||
| elif (hide_internal and ptype == self.tr("Internal")): | |||
| self.tableWidget.hideRow(i) | |||
| elif (hide_ladspa and ptype == "LADSPA"): | |||
| self.tableWidget.hideRow(i) | |||
| elif (hide_dssi and ptype == "DSSI"): | |||
| @@ -977,6 +1013,7 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| self.settings.setValue("PluginDatabase/ShowInstruments", self.ch_instruments.isChecked()) | |||
| self.settings.setValue("PluginDatabase/ShowMIDI", self.ch_midi.isChecked()) | |||
| self.settings.setValue("PluginDatabase/ShowOther", self.ch_other.isChecked()) | |||
| self.settings.setValue("PluginDatabase/ShowInternal", self.ch_internal.isChecked()) | |||
| self.settings.setValue("PluginDatabase/ShowLADSPA", self.ch_ladspa.isChecked()) | |||
| self.settings.setValue("PluginDatabase/ShowDSSI", self.ch_dssi.isChecked()) | |||
| self.settings.setValue("PluginDatabase/ShowLV2", self.ch_lv2.isChecked()) | |||
| @@ -996,6 +1033,7 @@ class PluginDatabaseW(QDialog, ui_carla_database.Ui_PluginDatabaseW): | |||
| self.ch_instruments.setChecked(self.settings.value("PluginDatabase/ShowInstruments", True, type=bool)) | |||
| self.ch_midi.setChecked(self.settings.value("PluginDatabase/ShowMIDI", True, type=bool)) | |||
| self.ch_other.setChecked(self.settings.value("PluginDatabase/ShowOther", True, type=bool)) | |||
| self.ch_internal.setChecked(self.settings.value("PluginDatabase/ShowInternal", True, type=bool)) | |||
| self.ch_ladspa.setChecked(self.settings.value("PluginDatabase/ShowLADSPA", True, type=bool)) | |||
| self.ch_dssi.setChecked(self.settings.value("PluginDatabase/ShowDSSI", True, type=bool)) | |||
| self.ch_lv2.setChecked(self.settings.value("PluginDatabase/ShowLV2", True, type=bool)) | |||
| @@ -1570,6 +1608,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): | |||
| QMessageBox.critical(self, self.tr("Error"), self.tr("Not a valid Carla project file")) | |||
| return | |||
| x_internal_plugins = None | |||
| x_ladspa_plugins = None | |||
| x_dssi_plugins = None | |||
| x_lv2_plugins = None | |||
| @@ -1595,7 +1634,11 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): | |||
| binaryS = os.path.basename(binary) | |||
| unique_id = x_save_state_dict['UniqueID'] | |||
| if ptype == "LADSPA": | |||
| if ptype == "Internal": | |||
| if not x_internal_plugins: x_internal_plugins = toList(self.settings_db.value("Plugins/Internal", [])) | |||
| x_plugins = x_internal_plugins | |||
| elif ptype == "LADSPA": | |||
| if not x_ladspa_plugins: | |||
| x_ladspa_plugins = [] | |||
| x_ladspa_plugins += toList(self.settings_db.value("Plugins/LADSPA_native", [])) | |||
| @@ -1648,7 +1691,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): | |||
| x_plugins = x_sfz_plugins | |||
| else: | |||
| print("load_project() - ptype '%s' not recognized", ptype) | |||
| print("load_project() - ptype '%s' not recognized" % ptype) | |||
| x_failed_plugins.append(x_save_state_dict['Name']) | |||
| continue | |||
| @@ -1721,26 +1764,27 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): | |||
| plugin_ul = None | |||
| plugin_u = None | |||
| plugin_l = None | |||
| plugin_B = binary | |||
| if (plugin_ulB): | |||
| if plugin_ulB: | |||
| plugin = plugin_ulB | |||
| elif (plugin_ulb): | |||
| elif plugin_ulb: | |||
| plugin = plugin_ulb | |||
| elif (plugin_ul): | |||
| elif plugin_ul: | |||
| plugin = plugin_ul | |||
| elif (plugin_uB): | |||
| elif plugin_uB: | |||
| plugin = plugin_uB | |||
| elif (plugin_ub): | |||
| elif plugin_ub: | |||
| plugin = plugin_ub | |||
| elif (plugin_lB): | |||
| elif plugin_lB: | |||
| plugin = plugin_lB | |||
| elif (plugin_lb): | |||
| elif plugin_lb: | |||
| plugin = plugin_lb | |||
| elif (plugin_u): | |||
| elif plugin_u: | |||
| plugin = plugin_u | |||
| elif (plugin_l): | |||
| elif plugin_l: | |||
| plugin = plugin_l | |||
| elif (plugin_B): | |||
| elif plugin_B: | |||
| plugin = plugin_B | |||
| else: | |||
| plugin = None | |||
| @@ -615,6 +615,21 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False): | |||
| return plugins | |||
| def checkPluginInternal(desc): | |||
| plugins = [] | |||
| pinfo = deepcopy(PyPluginInfo) | |||
| pinfo['type'] = PLUGIN_INTERNAL | |||
| pinfo['name'] = cString(desc['name']) | |||
| pinfo['label'] = cString(desc['label']) | |||
| pinfo['maker'] = cString(desc['maker']) | |||
| pinfo['copyright'] = cString(desc['copyright']) | |||
| pinfo['hints'] = int(desc['hints']) | |||
| pinfo['build'] = BINARY_NATIVE | |||
| plugins.append(pinfo) | |||
| return plugins | |||
| def checkPluginLADSPA(filename, tool, isWine=False): | |||
| return runCarlaDiscovery(PLUGIN_LADSPA, "LADSPA", filename, tool, isWine) | |||
| @@ -750,6 +765,12 @@ class Host(object): | |||
| self.lib.get_engine_driver_name.argtypes = [c_uint] | |||
| self.lib.get_engine_driver_name.restype = c_char_p | |||
| self.lib.get_internal_plugin_count.argtypes = None | |||
| self.lib.get_internal_plugin_count.restype = c_uint | |||
| self.lib.get_internal_plugin_info.argtypes = [c_uint] | |||
| self.lib.get_internal_plugin_info.restype = POINTER(PluginInfo) | |||
| self.lib.engine_init.argtypes = [c_char_p, c_char_p] | |||
| self.lib.engine_init.restype = c_bool | |||
| @@ -927,6 +948,12 @@ class Host(object): | |||
| def get_engine_driver_name(self, index): | |||
| return self.lib.get_engine_driver_name(index) | |||
| def get_internal_plugin_count(self): | |||
| return self.lib.get_internal_plugin_count() | |||
| def get_internal_plugin_info(self, index): | |||
| return struct_to_dict(self.lib.get_internal_plugin_info(index).contents) | |||
| def engine_init(self, driver_name, client_name): | |||
| return self.lib.engine_init(driver_name.encode("utf-8"), client_name.encode("utf-8")) | |||
| @@ -87,14 +87,15 @@ BINARY_WIN64 = 4 | |||
| BINARY_OTHER = 5 | |||
| # enum PluginType | |||
| PLUGIN_NONE = 0 | |||
| PLUGIN_LADSPA = 1 | |||
| PLUGIN_DSSI = 2 | |||
| PLUGIN_LV2 = 3 | |||
| PLUGIN_VST = 4 | |||
| PLUGIN_GIG = 5 | |||
| PLUGIN_SF2 = 6 | |||
| PLUGIN_SFZ = 7 | |||
| PLUGIN_NONE = 0 | |||
| PLUGIN_INTERNAL = 1 | |||
| PLUGIN_LADSPA = 2 | |||
| PLUGIN_DSSI = 3 | |||
| PLUGIN_LV2 = 4 | |||
| PLUGIN_VST = 5 | |||
| PLUGIN_GIG = 6 | |||
| PLUGIN_SF2 = 7 | |||
| PLUGIN_SFZ = 8 | |||
| # enum PluginCategory | |||
| PLUGIN_CATEGORY_NONE = 0 | |||
| @@ -632,7 +633,9 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit): | |||
| self.tab_programs.setCurrentIndex(1) | |||
| # Set Meta-Data | |||
| if pluginType == PLUGIN_LADSPA: | |||
| if pluginType == PLUGIN_INTERNAL: | |||
| self.le_type.setText(self.tr("Internal")) | |||
| elif pluginType == PLUGIN_LADSPA: | |||
| self.le_type.setText("LADSPA") | |||
| elif pluginType == PLUGIN_DSSI: | |||
| self.le_type.setText("DSSI") | |||
| @@ -1488,7 +1491,9 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): | |||
| def getSaveXMLContent(self): | |||
| Carla.Host.prepare_for_save(self.m_pluginId) | |||
| if self.m_pluginInfo['type'] == PLUGIN_LADSPA: | |||
| if self.m_pluginInfo['type'] == PLUGIN_INTERNAL: | |||
| typeStr = "Internal" | |||
| elif self.m_pluginInfo['type'] == PLUGIN_LADSPA: | |||
| typeStr = "LADSPA" | |||
| elif self.m_pluginInfo['type'] == PLUGIN_DSSI: | |||
| typeStr = "DSSI" | |||
| @@ -61,66 +61,73 @@ | |||
| <enum>QFrame::Sunken</enum> | |||
| </property> | |||
| <layout class="QGridLayout" name="gridLayout"> | |||
| <item row="0" column="1"> | |||
| <widget class="QCheckBox" name="ch_effects"> | |||
| <item row="2" column="0"> | |||
| <widget class="QCheckBox" name="ch_dssi"> | |||
| <property name="text"> | |||
| <string>Effects</string> | |||
| <string>DSSI</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="1"> | |||
| <widget class="QCheckBox" name="ch_instruments"> | |||
| <item row="3" column="0"> | |||
| <widget class="QCheckBox" name="ch_lv2"> | |||
| <property name="text"> | |||
| <string>Instruments</string> | |||
| <string>LV2</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="2" column="1"> | |||
| <widget class="QCheckBox" name="ch_midi"> | |||
| <item row="4" column="0"> | |||
| <widget class="QCheckBox" name="ch_vst"> | |||
| <property name="text"> | |||
| <string>MIDI Plugins</string> | |||
| <string>VST</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="3" column="1"> | |||
| <widget class="QCheckBox" name="ch_other"> | |||
| <item row="1" column="0"> | |||
| <widget class="QCheckBox" name="ch_ladspa"> | |||
| <property name="text"> | |||
| <string>Other/Misc</string> | |||
| <string>LADSPA</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="4" column="0"> | |||
| <item row="5" column="0"> | |||
| <widget class="QCheckBox" name="ch_kits"> | |||
| <property name="text"> | |||
| <string>Sound Kits</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="2" column="0"> | |||
| <widget class="QCheckBox" name="ch_lv2"> | |||
| <item row="0" column="0"> | |||
| <widget class="QCheckBox" name="ch_internal"> | |||
| <property name="text"> | |||
| <string>LV2</string> | |||
| <string>Internal</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="3" column="0"> | |||
| <widget class="QCheckBox" name="ch_vst"> | |||
| <item row="0" column="1"> | |||
| <widget class="QCheckBox" name="ch_effects"> | |||
| <property name="text"> | |||
| <string>VST</string> | |||
| <string>Effects</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="0" column="0"> | |||
| <widget class="QCheckBox" name="ch_ladspa"> | |||
| <item row="1" column="1"> | |||
| <widget class="QCheckBox" name="ch_instruments"> | |||
| <property name="text"> | |||
| <string>LADSPA</string> | |||
| <string>Instruments</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="0"> | |||
| <widget class="QCheckBox" name="ch_dssi"> | |||
| <item row="2" column="1"> | |||
| <widget class="QCheckBox" name="ch_midi"> | |||
| <property name="text"> | |||
| <string>DSSI</string> | |||
| <string>MIDI Plugins</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="3" column="1"> | |||
| <widget class="QCheckBox" name="ch_other"> | |||
| <property name="text"> | |||
| <string>Other/Misc</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||