summaryrefslogtreecommitdiff
path: root/gtk2_ardour/plugin_ui.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-12-06 02:41:46 +0000
committerCarl Hetherington <carl@carlh.net>2010-12-06 02:41:46 +0000
commit5546fa38fc0ba2d33288914d4fb40fe4d3d837bf (patch)
tree4bf6e43baf9814e39cdd51784441f42887a05c2c /gtk2_ardour/plugin_ui.cc
parent433196a83ac5500291ab2dbadf15a25b1b74335d (diff)
Manage attempts to save plugin presets with the same name. Helps with #2662.
git-svn-id: svn://localhost/ardour2/branches/3.0@8191 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/plugin_ui.cc')
-rw-r--r--gtk2_ardour/plugin_ui.cc37
1 files changed, 17 insertions, 20 deletions
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index ce36b8a414..fc8411cbb6 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -66,6 +66,7 @@
#include "keyboard.h"
#include "latency_gui.h"
#include "plugin_eq_gui.h"
+#include "new_plugin_preset_dialog.h"
#include "i18n.h"
@@ -475,7 +476,7 @@ PlugUIBase::set_latency_label ()
framecnt_t const sr = insert->session().frame_rate ();
if (l < sr / 1000) {
- snprintf (buf, sizeof (buf), "latency (%d samples)", l);
+ snprintf (buf, sizeof (buf), "latency (%" PRId64 " samples)", l);
} else {
snprintf (buf, sizeof (buf), "latency (%.2f msecs)", (float) l / ((float) sr / 1000.0f));
}
@@ -527,27 +528,23 @@ PlugUIBase::setting_selected()
void
PlugUIBase::save_plugin_setting ()
{
- ArdourPrompter prompter (true);
- prompter.set_title(_("New Preset"));
- prompter.set_prompt(_("Name of New Preset:"));
- prompter.add_button (Gtk::Stock::ADD, Gtk::RESPONSE_ACCEPT);
- prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
- prompter.set_type_hint (Gdk::WINDOW_TYPE_HINT_UTILITY);
+ NewPluginPresetDialog d (plugin);
- prompter.show_all();
- prompter.present ();
-
- switch (prompter.run ()) {
+ switch (d.run ()) {
case Gtk::RESPONSE_ACCEPT:
- string name;
- prompter.get_result(name);
- if (name.length()) {
- if (plugin->save_preset(name)) {
- update_presets();
- no_load_preset = true;
- preset_combo.set_active_text (name);
- no_load_preset = false;
- }
+ if (d.name().empty()) {
+ break;
+ }
+
+ if (d.replace ()) {
+ plugin->remove_preset (d.name ());
+ }
+
+ if (plugin->save_preset (d.name())) {
+ update_presets ();
+ no_load_preset = true;
+ preset_combo.set_active_text (d.name());
+ no_load_preset = false;
}
break;
}