summaryrefslogtreecommitdiff
path: root/gtk2_ardour/plugin_ui.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-10-11 00:03:41 +0200
committerRobin Gareus <robin@gareus.org>2019-10-11 00:03:41 +0200
commit71fa4fa75c8eebdc2f9c09306fb19900bb61d1cc (patch)
tree2af9784228597fd670d012c200a913a7537bd8c6 /gtk2_ardour/plugin_ui.cc
parent32b97031cfdb35b4c75abe2967d2513a1486d575 (diff)
Add a plugin-preset browser window
Previously preset-browser was only used instead of "generic control" display if a plugin does not have any controls (but presets). This allows for showing a dedicated window..
Diffstat (limited to 'gtk2_ardour/plugin_ui.cc')
-rw-r--r--gtk2_ardour/plugin_ui.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index 5d0f260615..60ec17ff66 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -466,6 +466,7 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
, add_button (_("Add"))
, save_button (_("Save"))
, delete_button (_("Delete"))
+ , preset_browser_button (_("Preset Browser"))
, reset_button (_("Reset"))
, bypass_button (ArdourButton::led_default_elements)
, pin_management_button (_("Pinout"))
@@ -477,6 +478,7 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
, eqgui (0)
, stats_gui (0)
, preset_gui (0)
+ , preset_dialog (0)
{
_preset_modified.set_size_request (16, -1);
_preset_combo.set_text("(default)");
@@ -484,6 +486,7 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
set_tooltip (add_button, _("Save a new preset"));
set_tooltip (save_button, _("Save the current preset"));
set_tooltip (delete_button, _("Delete the current preset"));
+ set_tooltip (preset_browser_button, _("Show Preset Browser Dialog"));
set_tooltip (reset_button, _("Reset parameters to default (if no parameters are in automation play mode)"));
set_tooltip (pin_management_button, _("Show Plugin Pin Management Dialog"));
set_tooltip (bypass_button, _("Disable signal processing by the plugin"));
@@ -508,6 +511,10 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
delete_button.set_icon (ArdourIcon::PsetDelete);
delete_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::delete_plugin_setting));
+ preset_browser_button.set_name ("generic button");
+ preset_browser_button.set_icon (ArdourIcon::PsetBrowse);
+ preset_browser_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::browse_presets));
+
reset_button.set_name ("generic button");
reset_button.set_icon (ArdourIcon::PluginReset);
reset_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::reset_plugin_parameters));
@@ -568,6 +575,7 @@ PlugUIBase::~PlugUIBase()
delete preset_gui;
delete latency_gui;
delete latency_dialog;
+ delete preset_dialog;
}
void
@@ -698,6 +706,28 @@ PlugUIBase::has_descriptive_presets () const
}
void
+PlugUIBase::browse_presets ()
+{
+ if (!preset_dialog) {
+ if (preset_gui) {
+ /* Do not allow custom window, if preset_gui is used.
+ * e.g. generic-plugin UI.
+ */
+ return;
+ }
+ preset_dialog = new ArdourWindow (_("Select Preset"));
+ preset_dialog->set_keep_above (true);
+ Window* win = dynamic_cast<Window*> (preset_browser_button.get_toplevel ());
+ if (win) {
+ preset_dialog->set_transient_for (*win);
+ }
+ preset_gui = new PluginPresetsUI (insert);
+ preset_dialog->add (*preset_gui);
+ }
+ preset_dialog->show_all ();
+}
+
+void
PlugUIBase::manage_pins ()
{
PluginPinWindowProxy* proxy = insert->pinmgr_proxy ();