X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_selector.cc;h=cfc5f697748b266cbc82bb45a59aac380fc83d21;hb=6e0330a304e06311502f82ac1ebc969121695aa5;hp=63ec9abf372de920976ea8fd2a6208149633c3db;hpb=f450df300c9c057141a4caf79ff6dbfbf58492d9;p=ardour.git diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc index 63ec9abf37..cfc5f69774 100644 --- a/gtk2_ardour/plugin_selector.cc +++ b/gtk2_ardour/plugin_selector.cc @@ -63,7 +63,7 @@ static const char* _filter_mode_strings[] = { }; PluginSelector::PluginSelector (PluginManager *mgr) - : ArdourDialog (_("ardour: plugins"), true, false), + : ArdourDialog (_("Plugin Manager"), true, false), filter_button (Stock::CLEAR) { set_position (Gtk::WIN_POS_MOUSE); @@ -74,7 +74,7 @@ PluginSelector::PluginSelector (PluginManager *mgr) manager = mgr; in_row_change = false; - manager->PluginListChanged.connect (plugin_list_changed_connection, boost::bind (&PluginSelector::build_plugin_menu, this), gui_context()); + 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); @@ -127,13 +127,13 @@ PluginSelector::PluginSelector (PluginManager *mgr) 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"); @@ -200,8 +200,9 @@ PluginSelector::~PluginSelector () void PluginSelector::row_clicked(GdkEventButton* event) { - if (event->type == GDK_2BUTTON_PRESS) + if (event->type == GDK_2BUTTON_PRESS) { btn_add_clicked(); + } } bool @@ -441,29 +442,36 @@ PluginSelector::run () { 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; @@ -585,7 +593,7 @@ PluginSelector::build_plugin_menu () delete _plugin_menu; - _plugin_menu = new Menu; + _plugin_menu = manage (new Menu); _plugin_menu->set_name("ArdourContextMenu"); MenuList& items = _plugin_menu->items(); @@ -594,7 +602,7 @@ PluginSelector::build_plugin_menu () 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); @@ -628,7 +636,7 @@ PluginSelector::create_by_creator_menu (ARDOUR::PluginInfoList& all_plugs) { using namespace Menu_Helpers; - typedef std::map SubmenuMap; + typedef std::map SubmenuMap; SubmenuMap creator_submenu_map; Menu* by_creator = new Menu(); @@ -656,7 +664,7 @@ PluginSelector::create_by_creator_menu (ARDOUR::PluginInfoList& all_plugs) } else { submenu = new Gtk::Menu; by_creator_items.push_back (MenuElem (creator, *manage (submenu))); - creator_submenu_map.insert (pair (creator, submenu)); + creator_submenu_map.insert (pair (creator, submenu)); submenu->set_name("ArdourContextMenu"); } submenu->items().push_back (MenuElem ((*i)->name, (sigc::bind (sigc::mem_fun (*this, &PluginSelector::plugin_chosen_from_menu), *i)))); @@ -669,7 +677,7 @@ PluginSelector::create_by_category_menu (ARDOUR::PluginInfoList& all_plugs) { using namespace Menu_Helpers; - typedef std::map SubmenuMap; + typedef std::map SubmenuMap; SubmenuMap category_submenu_map; Menu* by_category = new Menu(); @@ -692,7 +700,7 @@ PluginSelector::create_by_category_menu (ARDOUR::PluginInfoList& all_plugs) } else { submenu = new Gtk::Menu; by_category_items.push_back (MenuElem (category, *manage (submenu))); - category_submenu_map.insert (pair (category, submenu)); + category_submenu_map.insert (pair (category, submenu)); submenu->set_name("ArdourContextMenu"); } submenu->items().push_back (MenuElem ((*i)->name, (sigc::bind (sigc::mem_fun (*this, &PluginSelector::plugin_chosen_from_menu), *i)))); @@ -715,7 +723,7 @@ PluginSelector::plugin_chosen_from_menu (const PluginInfoPtr& pi) } void -PluginSelector::favorite_changed (const Glib::ustring& path) +PluginSelector::favorite_changed (const std::string& path) { PluginInfoPtr pi; @@ -751,7 +759,7 @@ PluginSelector::favorite_changed (const Glib::ustring& path) } void -PluginSelector::hidden_changed (const Glib::ustring& path) +PluginSelector::hidden_changed (const std::string& path) { PluginInfoPtr pi;