traverso-commit
[Top][All Lists]
Advanced

[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>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]