fix re-drawing of splitting icon
[ardour.git] / gtk2_ardour / plugin_selector.cc
index 85f4a8d75b322a993c34f8fd3573e50deb2cd89f..81adf40896669fb753d96d983de55aca21e66cfd 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);
@@ -181,7 +178,6 @@ PluginSelector::PluginSelector (PluginManager& mgr)
        //plugin_display.set_name("PluginSelectorList");
        added_list.set_name("PluginSelectorList");
 
-       plugin_display.signal_button_press_event().connect_notify (sigc::mem_fun(*this, &PluginSelector::row_clicked));
        plugin_display.signal_row_activated().connect_notify (sigc::mem_fun(*this, &PluginSelector::row_activated));
        plugin_display.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::display_selection_changed));
        plugin_display.grab_focus();
@@ -200,15 +196,7 @@ PluginSelector::~PluginSelector ()
 }
 
 void
-PluginSelector::row_clicked(GdkEventButton* event)
-{
-       if (event->type == GDK_2BUTTON_PRESS) {
-               btn_add_clicked();
-       }
-}
-
-void
-PluginSelector::row_activated(Gtk::TreeModel::Path path, Gtk::TreeViewColumn* col)
+PluginSelector::row_activated(Gtk::TreeModel::Path, Gtk::TreeViewColumn*)
 {
        btn_add_clicked();
 }
@@ -328,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;
                }
@@ -824,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;
 }