changeset 462:957e6a5c8495

* Add More Info URL to plugin finder
author Chris Cannam
date Thu, 23 Oct 2008 16:30:48 +0000 (2008-10-23)
parents 2019d89ebcf9
children 93806ad9481e
files data/model/TabularModel.h rdf/PluginRDFDescription.cpp rdf/PluginRDFDescription.h transform/TransformDescription.h transform/TransformFactory.cpp
diffstat 5 files changed, 88 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/data/model/TabularModel.h	Fri Oct 17 15:26:29 2008 +0000
+++ b/data/model/TabularModel.h	Thu Oct 23 16:30:48 2008 +0000
@@ -34,6 +34,8 @@
 class TabularModel
 {
 public:
+    virtual ~TabularModel() { }
+
     virtual int getRowCount() const = 0;
     virtual int getColumnCount() const = 0;
 
--- a/rdf/PluginRDFDescription.cpp	Fri Oct 17 15:26:29 2008 +0000
+++ b/rdf/PluginRDFDescription.cpp	Thu Oct 23 16:30:48 2008 +0000
@@ -77,6 +77,12 @@
     return m_pluginMaker;
 }
 
+QString
+PluginRDFDescription::getPluginInfoURL() const
+{
+    return m_pluginInfoURL;
+}
+
 QStringList
 PluginRDFDescription::getOutputIds() const
 {
@@ -232,6 +238,52 @@
         m_pluginMaker = v.value;
     }
 
+    // If we have a more-information URL for this plugin, then we take
+    // that.  Otherwise, a more-inforomation URL for the plugin
+    // library would do nicely.  Failing that, we could perhaps use
+    // any foaf:page URL at all that appears in the file -- but
+    // perhaps that would be unwise
+
+    v = SimpleSPARQLQuery::singleResultQuery
+        (QString(
+            " PREFIX vamp: <http://purl.org/ontology/vamp/> "
+            " PREFIX foaf: <http://xmlns.com/foaf/0.1/> "
+            " SELECT ?page from <%1> "
+            " WHERE { "
+            "   ?plugin a vamp:Plugin ; "
+            "           vamp:identifier \"%2\" ; "
+            "           foaf:page ?page . "
+            " }")
+         .arg(url)
+         .arg(label), "page");
+
+    if (v.type == SimpleSPARQLQuery::URIValue && v.value != "") {
+
+        m_pluginInfoURL = v.value;
+
+    } else {
+
+        v = SimpleSPARQLQuery::singleResultQuery
+            (QString(
+                " PREFIX vamp: <http://purl.org/ontology/vamp/> "
+                " PREFIX foaf: <http://xmlns.com/foaf/0.1/> "
+                " SELECT ?page from <%1> "
+                " WHERE { "
+                "   ?library a vamp:PluginLibrary ; "
+                "            vamp:available_plugin ?plugin ; "
+                "            foaf:page ?page . "
+                "   ?plugin a vamp:Plugin ; "
+                "           vamp:identifier \"%2\" . "
+                " }")
+             .arg(url)
+             .arg(label), "page");
+
+        if (v.type == SimpleSPARQLQuery::URIValue && v.value != "") {
+
+            m_pluginInfoURL = v.value;
+        }
+    }
+
     return true;
 }
 
--- a/rdf/PluginRDFDescription.h	Fri Oct 17 15:26:29 2008 +0000
+++ b/rdf/PluginRDFDescription.h	Thu Oct 23 16:30:48 2008 +0000
@@ -42,6 +42,7 @@
     QString getPluginName() const;
     QString getPluginDescription() const;
     QString getPluginMaker() const;
+    QString getPluginInfoURL() const;
 
     QStringList getOutputIds() const;
     QString getOutputName(QString outputId) const;
@@ -61,6 +62,7 @@
     QString m_pluginName;
     QString m_pluginDescription;
     QString m_pluginMaker;
+    QString m_pluginInfoURL;
     OutputStringMap m_outputNames;
     OutputDispositionMap m_outputDispositions;
     OutputStringMap m_outputEventTypeURIMap;
--- a/transform/TransformDescription.h	Fri Oct 17 15:26:29 2008 +0000
+++ b/transform/TransformDescription.h	Thu Oct 23 16:30:48 2008 +0000
@@ -65,6 +65,7 @@
     QString description; // sentence describing transform
     QString longDescription; // description "using" plugin name "by" maker
     QString maker;
+    QString infoUrl;
     QString units;
     bool configurable;
     
--- a/transform/TransformFactory.cpp	Fri Oct 17 15:26:29 2008 +0000
+++ b/transform/TransformFactory.cpp	Thu Oct 23 16:30:48 2008 +0000
@@ -551,6 +551,7 @@
 
         QString description = desc.getPluginDescription();
         QString maker = desc.getPluginMaker();
+        QString infoUrl = desc.getPluginInfoURL();
 
         QStringList oids = desc.getOutputIds();
 
@@ -581,14 +582,43 @@
                 td.name = tr("%1: %2").arg(name).arg(oname);
             }
 
+            QString longDescription = description;
+            //!!! basically duplicated from above
+            if (longDescription == "") {
+                if (oids.size() == 1) {
+                    longDescription = tr("Extract features using \"%1\" plugin (from %2)")
+                        .arg(name).arg(maker);
+                } else {
+                    longDescription = tr("Extract features using \"%1\" output of \"%2\" plugin (from %3)")
+                        .arg(oname).arg(name).arg(maker);
+                }
+            } else {
+                if (oids.size() == 1) {
+                    longDescription = tr("%1 using \"%2\" plugin (from %3)")
+                        .arg(longDescription).arg(name).arg(maker);
+                } else {
+                    longDescription = tr("%1 using \"%2\" output of \"%3\" plugin (from %4)")
+                        .arg(longDescription).arg(oname).arg(name).arg(maker);
+                }
+            }                    
+
             td.friendlyName = name; //!!!???
             td.description = description;
-            td.longDescription = ""; //!!!
+            td.longDescription = longDescription;
             td.maker = maker;
+            td.infoUrl = infoUrl;
             td.units = "";
             td.configurable = false;
 
             m_uninstalledTransforms[tid] = td;
+
+            if (td.infoUrl != "") {
+                if (m_transforms.find(tid) != m_transforms.end()) {
+                    if (m_transforms[tid].infoUrl == "") {
+                        m_transforms[tid].infoUrl = td.infoUrl;
+                    }
+                }
+            }
         }
     }