};
PluginSelector::PluginSelector (PluginManager *mgr)
- : ArdourDialog (_("ardour: plugins"), true, false),
+ : ArdourDialog (_("Plugin Manager"), true, false),
filter_button (Stock::CLEAR)
{
set_position (Gtk::WIN_POS_MOUSE);
manager = mgr;
in_row_change = false;
- manager->PluginListChanged.connect (sigc::mem_fun (*this, &PluginSelector::build_plugin_menu));
+ manager->PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::build_plugin_menu, this), gui_context());
build_plugin_menu ();
plugin_model = Gtk::ListStore::create (plugin_columns);
ascroller.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
ascroller.add(added_list);
btn_add = manage(new Gtk::Button(Stock::ADD));
- ARDOUR_UI::instance()->tooltips().set_tip(*btn_add, _("Add a plugin to the effect list"));
+ ARDOUR_UI::instance()->set_tip(*btn_add, _("Add a plugin to the effect list"));
btn_add->set_sensitive (false);
btn_remove = manage(new Gtk::Button(Stock::REMOVE));
btn_remove->set_sensitive (false);
- ARDOUR_UI::instance()->tooltips().set_tip(*btn_remove, _("Remove a plugin from the effect list"));
+ 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()->tooltips().set_tip(*btn_update, _("Update available plugins"));
+ ARDOUR_UI::instance()->set_tip(*btn_update, _("Update available plugins"));
btn_add->set_name("PluginSelectorButton");
btn_remove->set_name("PluginSelectorButton");
void
PluginSelector::row_clicked(GdkEventButton* event)
{
- if (event->type == GDK_2BUTTON_PRESS)
+ if (event->type == GDK_2BUTTON_PRESS) {
btn_add_clicked();
+ }
}
bool
{
ResponseType r;
TreeModel::Children::iterator i;
- SelectedPlugins plugins;
- r = (ResponseType) Dialog::run ();
+ bool finish = false;
+
+ while (!finish) {
- switch (r) {
- case RESPONSE_APPLY:
- for (i = amodel->children().begin(); i != amodel->children().end(); ++i) {
- PluginInfoPtr pp = (*i)[acols.plugin];
- PluginPtr p = load_plugin (pp);
- if (p) {
- plugins.push_back (p);
+ SelectedPlugins plugins;
+ r = (ResponseType) Dialog::run ();
+
+ switch (r) {
+ case RESPONSE_APPLY:
+ for (i = amodel->children().begin(); i != amodel->children().end(); ++i) {
+ PluginInfoPtr pp = (*i)[acols.plugin];
+ PluginPtr p = load_plugin (pp);
+ if (p) {
+ plugins.push_back (p);
+ }
}
+ if (interested_object && !plugins.empty()) {
+ finish = !interested_object->use_plugins (plugins);
+ }
+
+ break;
+
+ default:
+ finish = true;
+ break;
}
- if (interested_object && !plugins.empty()) {
- interested_object->use_plugins (plugins);
- }
-
- break;
-
- default:
- break;
}
-
+
+
hide();
amodel->clear();
interested_object = 0;
delete _plugin_menu;
- _plugin_menu = new Menu;
+ _plugin_menu = manage (new Menu);
_plugin_menu->set_name("ArdourContextMenu");
MenuList& items = _plugin_menu->items();
Gtk::Menu* favs = create_favs_menu(all_plugs);
items.push_back (MenuElem (_("Favorites"), *manage (favs)));
- items.push_back (MenuElem (_("Plugin Manager"), sigc::mem_fun (*this, &PluginSelector::show_manager)));
+ items.push_back (MenuElem (_("Plugin Manager..."), sigc::mem_fun (*this, &PluginSelector::show_manager)));
items.push_back (SeparatorElem ());
Menu* by_creator = create_by_creator_menu(all_plugs);