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..
This commit is contained in:
Robin Gareus 2019-10-11 00:03:41 +02:00
parent 32b97031cf
commit 71fa4fa75c
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 34 additions and 0 deletions

View File

@ -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
@ -697,6 +705,28 @@ PlugUIBase::has_descriptive_presets () const
return false;
}
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 ()
{

View File

@ -132,6 +132,8 @@ protected:
ArdourWidgets::ArdourButton save_button;
/** a button to delete the current preset (if it is a user one) */
ArdourWidgets::ArdourButton delete_button;
/** a button to show a preset browser */
ArdourWidgets::ArdourButton preset_browser_button;
/** a button to delete the reset the plugin params */
ArdourWidgets::ArdourButton reset_button;
/** a button to bypass the plugin */
@ -166,6 +168,7 @@ protected:
PluginEqGui* eqgui;
PluginLoadStatsGui* stats_gui;
PluginPresetsUI* preset_gui;
ArdourWindow* preset_dialog;
Gtk::Image* focus_out_image;
Gtk::Image* focus_in_image;
@ -176,6 +179,7 @@ protected:
void save_plugin_setting ();
void delete_plugin_setting ();
void reset_plugin_parameters ();
void browse_presets ();
void manage_pins ();
bool focus_toggled(GdkEventButton*);
bool bypass_button_release(GdkEventButton*);