Add a double-click handler for items in the editor window.
[ardour.git] / gtk2_ardour / plugin_selector.cc
index 75040eca06738ce6cf6567c732118944aabfdc1a..ebfcc677ac6c4de2331cfb219ef22982bca826e0 100644 (file)
@@ -37,8 +37,6 @@
 
 #include "ardour/plugin_manager.h"
 #include "ardour/plugin.h"
-#include "ardour/configuration.h"
-#include "ardour/session.h"
 
 #include "ardour_ui.h"
 #include "plugin_selector.h"
@@ -68,7 +66,6 @@ PluginSelector::PluginSelector (PluginManager& mgr)
        , manager (mgr)
          
 {
-       set_position (Gtk::WIN_POS_MOUSE);
        set_name ("PluginSelectorWindow");
        add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK);
 
@@ -85,7 +82,7 @@ PluginSelector::PluginSelector (PluginManager& mgr)
           related to "hidden"
        */
        plugin_display.append_column (_("Fav"), plugin_columns.favorite);
-       plugin_display.append_column (_("Hid"), plugin_columns.hidden);
+       plugin_display.append_column (_("Hide"), plugin_columns.hidden);
        plugin_display.append_column (_("Available Plugins"), plugin_columns.name);
        plugin_display.append_column (_("Type"), plugin_columns.type_name);
        plugin_display.append_column (_("Category"), plugin_columns.category);
@@ -199,7 +196,7 @@ PluginSelector::~PluginSelector ()
 }
 
 void
-PluginSelector::row_activated(Gtk::TreeModel::Path path, Gtk::TreeViewColumn* col)
+PluginSelector::row_activated(Gtk::TreeModel::Path, Gtk::TreeViewColumn*)
 {
        btn_add_clicked();
 }
@@ -319,15 +316,22 @@ PluginSelector::refiller (const PluginInfoList& plugs, const::std::string& filte
 
                        newrow[plugin_columns.creator] = creator;
 
-                       snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_audio());
-                       newrow[plugin_columns.audio_ins] = buf;
-                       snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_midi());
-                       newrow[plugin_columns.midi_ins] = buf;
-
-                       snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_audio());
-                       newrow[plugin_columns.audio_outs] = buf;
-                       snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_midi());
-                       newrow[plugin_columns.midi_outs] = buf;
+                       if ((*i)->reconfigurable_io ()) {
+                               newrow[plugin_columns.audio_ins] = _("variable");
+                               newrow[plugin_columns.midi_ins] = _("variable");
+                               newrow[plugin_columns.audio_outs] = _("variable");
+                               newrow[plugin_columns.midi_outs] = _("variable");
+                       } else {
+                               snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_audio());
+                               newrow[plugin_columns.audio_ins] = buf;
+                               snprintf (buf, sizeof(buf), "%d", (*i)->n_inputs.n_midi());
+                               newrow[plugin_columns.midi_ins] = buf;
+                               
+                               snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_audio());
+                               newrow[plugin_columns.audio_outs] = buf;
+                               snprintf (buf, sizeof(buf), "%d", (*i)->n_outputs.n_midi());
+                               newrow[plugin_columns.midi_outs] = buf;
+                       }
 
                        newrow[plugin_columns.plugin] = *i;
                }
@@ -534,13 +538,13 @@ struct PluginMenuCompareByCreator {
     bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
            int cmp;
 
-           cmp = strcasecmp (a->creator.c_str(), b->creator.c_str());
+           cmp = g_strcasecmp (a->creator.c_str(), b->creator.c_str());
 
            if (cmp < 0) {
                    return true;
            } else if (cmp == 0) {
                    /* same creator ... compare names */
-                   if (strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
+                   if (g_strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
                            return true;
                    }
            }
@@ -552,7 +556,7 @@ struct PluginMenuCompareByName {
     bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
            int cmp;
 
-           cmp = strcasecmp (a->name.c_str(), b->name.c_str());
+           cmp = g_strcasecmp (a->name.c_str(), b->name.c_str());
 
            if (cmp < 0) {
                    return true;
@@ -570,13 +574,13 @@ struct PluginMenuCompareByCategory {
     bool operator() (PluginInfoPtr a, PluginInfoPtr b) const {
            int cmp;
 
-           cmp = strcasecmp (a->category.c_str(), b->category.c_str());
+           cmp = g_strcasecmp (a->category.c_str(), b->category.c_str());
 
            if (cmp < 0) {
                    return true;
            } else if (cmp == 0) {
                    /* same category ... compare names */
-                   if (strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
+                   if (g_strcasecmp (a->name.c_str(), b->name.c_str()) < 0) {
                            return true;
                    }
            }
@@ -815,6 +819,8 @@ PluginSelector::hidden_changed (const std::string& path)
                manager.set_status (pi->type, pi->unique_id, status);
 
                manager.save_statuses ();
+
+               build_plugin_menu ();
        }
        in_row_change = false;
 }