[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src plugins/LV2/LV2Plugin.cpp plugins/...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso/src plugins/LV2/LV2Plugin.cpp plugins/... |
Date: |
Thu, 07 Jun 2007 11:33:43 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/06/07 11:33:43
Modified files:
src/plugins/LV2: LV2Plugin.cpp LV2Plugin.h
src/plugins : Plugin.h
src/traverso : PluginSelectorDialog.cpp
src/traverso/ui: PluginSelectorDialog.ui
Log message:
* only show plugins in the selector dialog that should work with
traverso
* sort on and show plugin type, mono/stereo
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/plugins/LV2/LV2Plugin.cpp?cvsroot=traverso&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/traverso/src/plugins/LV2/LV2Plugin.h?cvsroot=traverso&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/traverso/src/plugins/Plugin.h?cvsroot=traverso&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/PluginSelectorDialog.cpp?cvsroot=traverso&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ui/PluginSelectorDialog.ui?cvsroot=traverso&r1=1.5&r2=1.6
Patches:
Index: plugins/LV2/LV2Plugin.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/plugins/LV2/LV2Plugin.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- plugins/LV2/LV2Plugin.cpp 30 May 2007 13:14:46 -0000 1.8
+++ plugins/LV2/LV2Plugin.cpp 7 Jun 2007 11:33:42 -0000 1.9
@@ -195,8 +195,9 @@
}
/* Get the plugin's name */
+ // TODO check if newer versions of slv2 DO NOT REQUIRE THIS CALL
+ // TO SUCCESFULLY INSTANTIATE THE PLUGIN !!!!!!!!!!!!!!!!!!
char* name = slv2_plugin_get_name(m_slv2plugin);
-
// printf("Name:\t%s\n", name);
/* Instantiate the plugin */
@@ -390,5 +391,55 @@
return 0;
}
+PluginInfo LV2Plugin::get_plugin_info(const QString& uri)
+{
+ SLV2Plugin plugin =
slv2_plugins_get_by_uri(PluginManager::instance()->get_slv2_plugin_list(),
QS_C(uri));
+
+ // TODO WHY THE HACK DO I NEED TO CALL THIS TO BE ABLE TO QUERY PLUGIN
RDF DATA ????
+ char* name = slv2_plugin_get_name(plugin);
+
+ int portcount = slv2_plugin_get_num_ports(plugin);
+ PluginInfo info;
+
+ for (int i=0; i < portcount; ++i) {
+ SLV2Port slvport = slv2_plugin_get_port_by_index(plugin, i);
+ SLV2PortClass portClass = slv2_port_get_class(plugin, slvport);
+ switch (portClass) {
+ case SLV2_AUDIO_INPUT:
+ info.audioPortInCount++;
+ continue;
+ case SLV2_AUDIO_OUTPUT:
+ info.audioPortOutCount++;
+ continue;
+ case SLV2_CONTROL_INPUT: break;
+ case SLV2_CONTROL_OUTPUT: break;
+ case SLV2_MIDI_INPUT: break;
+ case SLV2_MIDI_OUTPUT: break;
+ case SLV2_UNKNOWN_PORT_CLASS: break;
+ }
+ }
+
+ return info;
+}
+
+QString LV2Plugin::plugin_type(const QString & uri)
+{
+ SLV2Plugin plugin =
slv2_plugins_get_by_uri(PluginManager::instance()->get_slv2_plugin_list(),
QS_C(uri));
+
+ // TODO WHY THE HACK DO I NEED TO CALL THIS TO BE ABLE TO QUERY PLUGIN
RDF DATA ????
+ char* name = slv2_plugin_get_name(plugin);
+ Q_UNUSED(name);
+
+ SLV2Strings list = slv2_plugin_get_value_for_subject(plugin, "<>",
"a");
+ for (unsigned i=0; i < slv2_strings_size(list); ++i) {
+ QString type = slv2_strings_get_at(list, i);
+ if (type.contains("http://lv2plug.in/ontology#")) {
+ return type.remove("http://lv2plug.in/ontology#");
+ }
+ }
+
+ return "";
+}
+
//eof
Index: plugins/LV2/LV2Plugin.h
===================================================================
RCS file: /sources/traverso/traverso/src/plugins/LV2/LV2Plugin.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- plugins/LV2/LV2Plugin.h 30 May 2007 13:14:46 -0000 1.8
+++ plugins/LV2/LV2Plugin.h 7 Jun 2007 11:33:42 -0000 1.9
@@ -58,6 +58,9 @@
int init();
int set_state(const QDomNode & node );
+ static PluginInfo get_plugin_info(const QString& uri);
+ static QString plugin_type(const QString& uri);
+
private:
QString m_pluginUri;
SLV2Instance m_instance;
Index: plugins/Plugin.h
===================================================================
RCS file: /sources/traverso/traverso/src/plugins/Plugin.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- plugins/Plugin.h 30 May 2007 13:14:47 -0000 1.7
+++ plugins/Plugin.h 7 Jun 2007 11:33:42 -0000 1.8
@@ -37,6 +37,15 @@
class Curve;
class Song;
+struct PluginInfo {
+ PluginInfo() {
+ audioPortInCount = 0;
+ audioPortOutCount = 0;
+ }
+ int audioPortInCount;
+ int audioPortOutCount;
+};
+
class Plugin : public ContextItem
{
Q_OBJECT
@@ -61,7 +70,6 @@
void automate_port(int index, bool automate);
-
protected:
Plugin* m_slave;
Song* m_song;
Index: traverso/PluginSelectorDialog.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/PluginSelectorDialog.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- traverso/PluginSelectorDialog.cpp 30 May 2007 19:36:54 -0000 1.11
+++ traverso/PluginSelectorDialog.cpp 7 Jun 2007 11:33:43 -0000 1.12
@@ -45,19 +45,41 @@
{
setupUi(this);
- pluginTreeWidget->header()->setResizeMode(0,
QHeaderView::ResizeToContents);
+ pluginTreeWidget->header()->resizeSection(0, 250);
+ pluginTreeWidget->header()->setResizeMode(1,
QHeaderView::ResizeToContents);
+ pluginTreeWidget->header()->resizeSection(2, 60);
#if defined (LV2_SUPPORT)
SLV2Plugins pluginList =
PluginManager::instance()->get_slv2_plugin_list();
+ QMap<QString, SLV2Plugin> plugins;
+
for (uint i=0; i < slv2_plugins_size(pluginList); ++i) {
- const SLV2Plugin p = slv2_plugins_get_at(pluginList, i);
+ const SLV2Plugin plugin = slv2_plugins_get_at(pluginList, i);
+ const char* uri = slv2_plugin_get_uri(plugin);
+ QString type = LV2Plugin::plugin_type(uri);
+ plugins.insertMulti(type, plugin);
+ }
- QTreeWidgetItem* item = new QTreeWidgetItem(pluginTreeWidget);
- item->setText(0, QString( (char*) slv2_plugin_get_name(p)));
- item->setData(0, Qt::UserRole, QString( (char*)
slv2_plugin_get_uri(p)));
+ foreach(SLV2Plugin plugin, plugins) {
+ const char* uri = slv2_plugin_get_uri(plugin);
+ PluginInfo pinfo = LV2Plugin::get_plugin_info(uri);
+
+ if ( (pinfo.audioPortInCount == 1 && pinfo.audioPortOutCount ==
1) ||
+ (pinfo.audioPortInCount == 2 && pinfo.audioPortOutCount ==
2) ) {
+
+ QString inoutcount = pinfo.audioPortInCount == 1 ?
"Mono" : "Stereo";
+ QString name = QString( (char*)
slv2_plugin_get_name(plugin));
+ QString type =
LV2Plugin::plugin_type(uri).remove("Plugin");
+ QTreeWidgetItem* item = new
QTreeWidgetItem(pluginTreeWidget);
+ item->setText(0, name);
+ item->setText(1, type);
+ item->setText(2, inoutcount);
+ item->setData(0, Qt::UserRole, QString(uri));
+ item->setToolTip(0, name);
+ }
}
#endif
Index: traverso/ui/PluginSelectorDialog.ui
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/ui/PluginSelectorDialog.ui,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- traverso/ui/PluginSelectorDialog.ui 25 May 2007 04:13:12 -0000 1.5
+++ traverso/ui/PluginSelectorDialog.ui 7 Jun 2007 11:33:43 -0000 1.6
@@ -5,8 +5,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>432</width>
- <height>414</height>
+ <width>471</width>
+ <height>433</height>
</rect>
</property>
<property name="windowTitle" >
@@ -33,6 +33,16 @@
<string>Plugin Name</string>
</property>
</column>
+ <column>
+ <property name="text" >
+ <string>Type</string>
+ </property>
+ </column>
+ <column>
+ <property name="text" >
+ <string>In/Out</string>
+ </property>
+ </column>
</widget>
</item>
<item>
- [Traverso-commit] traverso/src plugins/LV2/LV2Plugin.cpp plugins/...,
Remon Sijrier <=