};
PluginSelector::PluginSelector (PluginManager *mgr)
- : ArdourDialog (_("ardour: plugins"), true, false),
+ : ArdourDialog (_("Plugin Manager"), true, false),
filter_button (Stock::CLEAR)
{
set_position (Gtk::WIN_POS_MOUSE);
_plugin_menu = 0;
manager = mgr;
- session = 0;
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();
-}
-
-void
-PluginSelector::set_session (Session* s)
-{
- ENSURE_GUI_THREAD (*this, &PluginSelector::set_session, s)
-
- session = s;
-
- if (session) {
- session->GoingAway.connect (sigc::bind (sigc::mem_fun(*this, &PluginSelector::set_session), static_cast<Session*> (0)));
}
}
PluginPtr
PluginSelector::load_plugin (PluginInfoPtr pi)
{
- if (session == 0) {
+ if (_session == 0) {
return PluginPtr();
}
- return pi->load (*session);
+ return pi->load (*_session);
}
void
{
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();