summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/mixer_ui.cc34
-rw-r--r--gtk2_ardour/mixer_ui.h2
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 ();