diff options
author | Robin Gareus <robin@gareus.org> | 2015-12-25 17:11:47 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-12-25 17:13:17 +0100 |
commit | e6cb65a171e9455a94fb9e43409c9d178759d431 (patch) | |
tree | 8b651dd539e9b5fc539ab8672392d60e812bfdc7 | |
parent | 5417af48772f1ca16087ea6e38830487662fc72a (diff) |
allow to add plugin(s) to all selected routes
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 34 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.h | 2 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 73b128ca6b..22bb71945a 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -205,6 +205,7 @@ Mixer_UI::Mixer_UI () favorite_plugins_display.set_can_focus (false); favorite_plugins_display.add_object_drag (favorite_plugins_columns.plugin.index(), "PluginPresetPtr"); favorite_plugins_display.set_drag_column (favorite_plugins_columns.name.index()); + favorite_plugins_display.signal_row_activated().connect (sigc::mem_fun (*this, &Mixer_UI::plugin_row_activated)); favorite_plugins_scroller.add (favorite_plugins_display); favorite_plugins_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); @@ -2327,6 +2328,39 @@ Mixer_UI::sync_treeview_from_favorite_order () } } +void +Mixer_UI::plugin_row_activated (const TreeModel::Path& path, TreeViewColumn* column) +{ + if (!_session || _selection.routes.empty()) { + return; + } + + TreeIter iter; + if (!(iter = favorite_plugins_model->get_iter (path))) { + return; + } + + ARDOUR::PluginPresetPtr ppp = (*iter)[favorite_plugins_columns.plugin]; + PluginInfoPtr pip = ppp->_pip; + + for (RouteUISelection::iterator i = _selection.routes.begin(); i != _selection.routes.end(); ++i) { + boost::shared_ptr<ARDOUR::Route> rt = (*i)->route(); + if (!rt) { continue; } + + PluginPtr p = pip->load (*_session); + if (!p) { continue; } + + if (ppp->_preset.valid) { + p->load_preset (ppp->_preset); + } + + Route::ProcessorStreams err; + boost::shared_ptr<Processor> processor (new PluginInsert (*_session, p)); + rt->add_processor_by_index (processor, -1, &err, Config->get_new_plugins_active ()); + } +} + + bool PluginTreeStore::row_drop_possible_vfunc(const Gtk::TreeModel::Path& dest, const Gtk::SelectionData& data) const { diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index ffd67a22f2..77b61e4812 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -198,6 +198,8 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR void track_list_delete (const Gtk::TreeModel::Path&); void track_list_reorder (const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter, int* new_order); + void plugin_row_activated (const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column); + void initial_track_display (); void show_track_list_menu (); |