summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-12-28 03:19:28 +0100
committerRobin Gareus <robin@gareus.org>2015-12-28 03:19:28 +0100
commitd7475e14193ebed3a325dc1034d02c084ab4f222 (patch)
treea9cf8cee14be0d2d9704525105eb893cbd93ae0a
parentf09c1016d47cdb69488997a49b88d8334df3539c (diff)
add preset-delete to context menu
-rw-r--r--gtk2_ardour/mixer_ui.cc53
-rw-r--r--gtk2_ardour/mixer_ui.h2
2 files changed, 41 insertions, 14 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 7bbfb843c6..f6ebfe827d 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -2344,7 +2344,6 @@ Mixer_UI::popup_note_context_menu (GdkEventButton *ev)
if (_selection.routes.empty()) {
items.push_back (MenuElem (_("No Track/Bus is selected.")));
} else {
-
items.push_back (MenuElem (_("Add at the top"),
sigc::bind (sigc::mem_fun (*this, &Mixer_UI::add_selected_processor), AddTop)));
items.push_back (MenuElem (_("Add Pre-Fader"),
@@ -2354,8 +2353,16 @@ Mixer_UI::popup_note_context_menu (GdkEventButton *ev)
items.push_back (MenuElem (_("Add at the end"),
sigc::bind (sigc::mem_fun (*this, &Mixer_UI::add_selected_processor), AddBottom)));
}
+
items.push_back (SeparatorElem());
+
items.push_back (MenuElem (_("Remove from favorites"), sigc::mem_fun (*this, &Mixer_UI::remove_selected_from_favorites)));
+
+ ARDOUR::PluginPresetPtr ppp = selected_plugin();
+ if (ppp && ppp->_preset.valid) {
+ items.push_back (MenuElem (_("Delete Preset"), sigc::mem_fun (*this, &Mixer_UI::delete_selected_preset)));
+ }
+
m->popup (ev->button, ev->time);
}
@@ -2368,39 +2375,57 @@ Mixer_UI::plugin_row_button_press (GdkEventButton *ev)
return false;
}
-void
-Mixer_UI::add_selected_processor (ProcessorPosition pos)
+
+PluginPresetPtr
+Mixer_UI::selected_plugin ()
{
Glib::RefPtr<Gtk::TreeView::Selection> selection = favorite_plugins_display.get_selection();
if (!selection) {
- return;
+ return PluginPresetPtr();
}
Gtk::TreeModel::iterator iter = selection->get_selected();
if (!iter) {
- return;
+ return PluginPresetPtr();
}
- ARDOUR::PluginPresetPtr ppp = (*iter)[favorite_plugins_columns.plugin];
- add_favorite_processor (ppp, pos);
+ return (*iter)[favorite_plugins_columns.plugin];
}
void
-Mixer_UI::remove_selected_from_favorites ()
+Mixer_UI::add_selected_processor (ProcessorPosition pos)
{
- Glib::RefPtr<Gtk::TreeView::Selection> selection = favorite_plugins_display.get_selection();
- if (!selection) {
+ ARDOUR::PluginPresetPtr ppp = selected_plugin();
+ if (ppp) {
+ add_favorite_processor (ppp, pos);
+ }
+}
+
+void
+Mixer_UI::delete_selected_preset ()
+{
+ if (!_session) {
return;
}
- Gtk::TreeModel::iterator iter = selection->get_selected();
- if (!iter) {
+ ARDOUR::PluginPresetPtr ppp = selected_plugin();
+ if (!ppp || !ppp->_preset.valid) {
+ return;
+ }
+ PluginPtr plugin = ppp->_pip->load (*_session);
+ plugin->get_presets();
+ plugin->remove_preset (ppp->_preset.label);
+}
+
+void
+Mixer_UI::remove_selected_from_favorites ()
+{
+ ARDOUR::PluginPresetPtr ppp = selected_plugin();
+ if (!ppp) {
return;
}
- ARDOUR::PluginPresetPtr ppp = (*iter)[favorite_plugins_columns.plugin];
PluginManager::PluginStatusType status = PluginManager::Normal;
PluginManager& manager (PluginManager::instance());
manager.set_status (ppp->_pip->type, ppp->_pip->unique_id, status);
manager.save_statuses ();
- sync_treeview_from_favorite_order ();
}
void
diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h
index 492ecd3a14..331128c2d1 100644
--- a/gtk2_ardour/mixer_ui.h
+++ b/gtk2_ardour/mixer_ui.h
@@ -212,6 +212,8 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
void add_selected_processor (ProcessorPosition);
void add_favorite_processor (ARDOUR::PluginPresetPtr, ProcessorPosition);
void remove_selected_from_favorites ();
+ void delete_selected_preset ();
+ ARDOUR::PluginPresetPtr selected_plugin ();
void initial_track_display ();
void show_track_list_menu ();