X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_selector.cc;h=3c3d08c2d0da68f6449cc80e412054b5b25359b9;hb=fc1e7dbb55939c708ce572d3a5c2518ea926a682;hp=f11753819a4405789c6fc524ac776982beba88c7;hpb=e279b9892b467aa823e253d97b6e9504cca0e252;p=ardour.git diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc index f11753819a..3c3d08c2d0 100644 --- a/gtk2_ardour/plugin_selector.cc +++ b/gtk2_ardour/plugin_selector.cc @@ -73,6 +73,7 @@ PluginSelector::PluginSelector (PluginManager& mgr) in_row_change = false; manager.PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::build_plugin_menu, this), gui_context()); + manager.PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::refill, this), gui_context()); build_plugin_menu (); plugin_model = Gtk::ListStore::create (plugin_columns); @@ -130,8 +131,6 @@ PluginSelector::PluginSelector (PluginManager& mgr) btn_remove = manage(new Gtk::Button(Stock::REMOVE)); btn_remove->set_sensitive (false); ARDOUR_UI::instance()->set_tip(*btn_remove, _("Remove a plugin from the effect list")); - Gtk::Button *btn_update = manage(new Gtk::Button(Stock::REFRESH)); - ARDOUR_UI::instance()->set_tip(*btn_update, _("Update available plugins")); btn_add->set_name("PluginSelectorButton"); btn_remove->set_name("PluginSelectorButton"); @@ -162,8 +161,7 @@ PluginSelector::PluginSelector (PluginManager& mgr) table->attach (*filter_box, 0, 7, 5, 6, FILL|EXPAND, FILL, 5, 5); table->attach(*btn_add, 1, 2, 6, 7, FILL, FILL, 5, 5); - table->attach(*btn_remove, 3, 4, 6, 7, FILL, FILL, 5, 5); - table->attach(*btn_update, 5, 6, 6, 7, FILL, FILL, 5, 5); + table->attach(*btn_remove, 5, 6, 6, 7, FILL, FILL, 5, 5); table->attach(ascroller, 0, 7, 8, 10); @@ -182,10 +180,10 @@ PluginSelector::PluginSelector (PluginManager& mgr) plugin_display.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::display_selection_changed)); plugin_display.grab_focus(); - btn_update->signal_clicked().connect (sigc::mem_fun(*this, &PluginSelector::btn_update_clicked)); btn_add->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_add_clicked)); btn_remove->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_remove_clicked)); added_list.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::added_list_selection_changed)); + added_list.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::added_row_clicked)); refill (); } @@ -201,6 +199,13 @@ PluginSelector::row_activated(Gtk::TreeModel::Path, Gtk::TreeViewColumn*) btn_add_clicked(); } +void +PluginSelector::added_row_clicked(GdkEventButton* event) +{ + if (event->type == GDK_2BUTTON_PRESS) + btn_remove_clicked(); +} + bool PluginSelector::show_this_plugin (const PluginInfoPtr& info, const std::string& filterstr) { @@ -310,9 +315,17 @@ PluginSelector::refiller (const PluginInfoList& plugs, const::std::string& filte string::size_type pos = 0; /* stupid LADSPA creator strings */ - +#ifdef PLATFORM_WINDOWS + while (pos < creator.length() && creator[pos] > -2 && creator[pos] < 256 && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos; +#else while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos; - creator = creator.substr (0, pos); +#endif + // If there were too few characters to create a + // meaningful name, mark this creator as 'Unknown' + if (creator.length()<2 || pos<3) + creator = "Unknown"; + else + creator = creator.substr (0, pos); newrow[plugin_columns.creator] = creator; @@ -429,13 +442,6 @@ PluginSelector::btn_remove_clicked() } } -void -PluginSelector::btn_update_clicked() -{ - manager.refresh (); - refill(); -} - void PluginSelector::display_selection_changed() { @@ -681,8 +687,21 @@ PluginSelector::create_by_creator_menu (ARDOUR::PluginInfoList& all_plugs) /* stupid LADSPA creator strings */ string::size_type pos = 0; +#ifdef PLATFORM_WINDOWS + while (pos < creator.length() && creator[pos]>(-2) && creator[pos]<256 && (isprint (creator[pos]))) ++pos; +#else while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos; - creator = creator.substr (0, pos); +#endif + + // Check to see if we found any invalid characters. + if (creator.length() != pos) { + // If there were too few characters to create a + // meaningful name, mark this creator as 'Unknown' + if (pos<3) + creator = "Unknown?"; + else + creator = creator.substr (0, pos); + } SubmenuMap::iterator x; Gtk::Menu* submenu;