, eqgui (0)
{
_preset_modified.set_size_request (16, -1);
- _preset_combo.signal_changed().connect(sigc::mem_fun(*this, &PlugUIBase::preset_selected));
+ _preset_combo.set_text("(default)");
ARDOUR_UI::instance()->set_tip (_preset_combo, _("Presets (if any) for this plugin\n(Both factory and user-created)"));
ARDOUR_UI::instance()->set_tip (add_button, _("Save a new preset"));
ARDOUR_UI::instance()->set_tip (save_button, _("Save the current preset"));
update_preset_list ();
update_preset ();
- add_button.set_name ("PluginAddButton");
- add_button.signal_clicked().connect (sigc::mem_fun (*this, &PlugUIBase::add_plugin_setting));
+ add_button.set_name ("generic button");
+ add_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::add_plugin_setting));
- save_button.set_name ("PluginSaveButton");
- save_button.signal_clicked().connect(sigc::mem_fun(*this, &PlugUIBase::save_plugin_setting));
+ save_button.set_name ("generic button");
+ save_button.signal_clicked.connect(sigc::mem_fun(*this, &PlugUIBase::save_plugin_setting));
- delete_button.set_name ("PluginDeleteButton");
- delete_button.signal_clicked().connect (sigc::mem_fun (*this, &PlugUIBase::delete_plugin_setting));
+ delete_button.set_name ("generic button");
+ delete_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::delete_plugin_setting));
insert->ActiveChanged.connect (active_connection, invalidator (*this), boost::bind (&PlugUIBase::processor_active_changed, this, boost::weak_ptr<Processor>(insert)), gui_context());
t = string_compose (_("latency (%1 ms)"), (float) l / ((float) sr / 1000.0f));
}
- latency_label.set_text (t);
+ latency_button.set_text (t);
}
void
}
void
-PlugUIBase::preset_selected ()
+PlugUIBase::preset_selected (Plugin::PresetRecord preset)
{
if (_no_load_preset) {
return;
}
-
- if (_preset_combo.get_active_text().length() > 0) {
- const Plugin::PresetRecord* pr = plugin->preset_by_label (_preset_combo.get_active_text());
- if (pr) {
- plugin->load_preset (*pr);
- } else {
- warning << string_compose(_("Plugin preset %1 not found"),
- _preset_combo.get_active_text()) << endmsg;
- }
+ if (!preset.label.empty()) {
+ plugin->load_preset (preset);
} else {
// blank selected = no preset
plugin->clear_preset();
PlugUIBase::save_plugin_setting ()
{
#ifndef NO_PLUGIN_STATE
- string const name = _preset_combo.get_active_text ();
+ string const name = _preset_combo.get_text ();
plugin->remove_preset (name);
Plugin::PresetRecord const r = plugin->save_preset (name);
if (!r.uri.empty ()) {
PlugUIBase::delete_plugin_setting ()
{
#ifndef NO_PLUGIN_STATE
- plugin->remove_preset (_preset_combo.get_active_text ());
+ plugin->remove_preset (_preset_combo.get_text ());
#else
if (!seen_saving_message) {
info << string_compose (_("Plugin presets are not supported in this build of %1. Consider paying for a newer version"),
void
PlugUIBase::update_preset_list ()
{
- vector<string> preset_labels;
+ using namespace Menu_Helpers;
+
vector<ARDOUR::Plugin::PresetRecord> presets = plugin->get_presets();
++_no_load_preset;
+ // Add a menu entry for each preset
+ _preset_combo.clear_items();
for (vector<ARDOUR::Plugin::PresetRecord>::const_iterator i = presets.begin(); i != presets.end(); ++i) {
- preset_labels.push_back (i->label);
+ _preset_combo.AddMenuElem(
+ MenuElem(i->label, sigc::bind(sigc::mem_fun(*this, &PlugUIBase::preset_selected), *i)));
}
- preset_labels.push_back("");
-
- set_popdown_strings (_preset_combo, preset_labels);
+ // Add an empty entry for un-setting current preset (see preset_selected)
+ Plugin::PresetRecord no_preset;
+ _preset_combo.AddMenuElem(
+ MenuElem("", sigc::bind(sigc::mem_fun(*this, &PlugUIBase::preset_selected), no_preset)));
--_no_load_preset;
}
Plugin::PresetRecord p = plugin->last_preset();
++_no_load_preset;
- _preset_combo.set_active_text (p.label);
+ if (p.uri.empty()) {
+ _preset_combo.set_text ("(none)");
+ } else {
+ _preset_combo.set_text (p.label);
+ }
--_no_load_preset;
save_button.set_sensitive (!p.uri.empty() && p.user);
#include "ardour/plugin.h"
#include "ardour/variant.h"
-#include "automation_controller.h"
#include "ardour_button.h"
+#include "ardour_dropdown.h"
#include "ardour_window.h"
+#include "automation_controller.h"
namespace ARDOUR {
class PluginInsert;
/* UI elements that can subclasses can add to their widgets */
/** a ComboBoxText which lists presets and manages their selection */
- Gtk::ComboBoxText _preset_combo;
+ ArdourDropdown _preset_combo;
/** a label which has a * in if the current settings are different from the preset being shown */
Gtk::Label _preset_modified;
/** a button to add a preset */
- Gtk::Button add_button;
+ ArdourButton add_button;
/** a button to save the current settings as a new user preset */
- Gtk::Button save_button;
+ ArdourButton save_button;
/** a button to delete the current preset (if it is a user one) */
- Gtk::Button delete_button;
+ ArdourButton delete_button;
/** a button to bypass the plugin */
ArdourButton bypass_button;
/** a button to acquire keyboard focus */
Gtk::Expander description_expander;
/** an expander containing the plugin analysis graph */
Gtk::Expander plugin_analysis_expander;
- /** a label indicating the plugin latency */
- Gtk::Label latency_label;
/** a button which, when clicked, opens the latency GUI */
- Gtk::Button latency_button;
+ ArdourButton latency_button;
/** a button which sets all controls' automation setting to Manual */
ArdourButton automation_manual_all_button;
/** a button which sets all controls' automation setting to Play */
Gtk::Image* focus_in_image;
int _no_load_preset;
- virtual void preset_selected ();
+ virtual void preset_selected (ARDOUR::Plugin::PresetRecord preset);
void add_plugin_setting ();
void save_plugin_setting ();
void delete_plugin_setting ();