summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-12-28 16:08:35 +0100
committerRobin Gareus <robin@gareus.org>2015-12-28 17:23:45 +0100
commit9283e974358f5cd2646f69972bada8cab260e911 (patch)
treef46dadb788588cb3c8ddc8d282aee58d92d6948e
parent8e1a9f0adabc3f60193a78313d93317df5fddadf (diff)
refine add preset/favorite dialog
dedicated "Add to Favorites only" mode.
-rw-r--r--gtk2_ardour/mixer_ui.cc3
-rw-r--r--gtk2_ardour/new_plugin_preset_dialog.cc8
-rw-r--r--gtk2_ardour/new_plugin_preset_dialog.h2
-rw-r--r--gtk2_ardour/plugin_ui.cc2
-rw-r--r--gtk2_ardour/processor_box.cc15
5 files changed, 25 insertions, 5 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 97702b15bc..51659b55e1 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -2508,6 +2508,9 @@ Mixer_UI::plugin_drop (const Glib::RefPtr<Gdk::DragContext>&, const Gtk::Selecti
if (data.get_target() != "PluginPresetPtr") {
return;
}
+ if (data.get_length() != sizeof (PluginPresetPtr)) {
+ return;
+ }
const void *d = data.get_data();
const PluginPresetPtr ppp = *(static_cast<const PluginPresetPtr*> (d));
diff --git a/gtk2_ardour/new_plugin_preset_dialog.cc b/gtk2_ardour/new_plugin_preset_dialog.cc
index 828344b1bf..cc5c4b9b61 100644
--- a/gtk2_ardour/new_plugin_preset_dialog.cc
+++ b/gtk2_ardour/new_plugin_preset_dialog.cc
@@ -25,8 +25,8 @@
using namespace std;
using namespace Gtk;
-NewPluginPresetDialog::NewPluginPresetDialog (boost::shared_ptr<ARDOUR::Plugin> p)
- : ArdourDialog (_("New Preset"))
+NewPluginPresetDialog::NewPluginPresetDialog (boost::shared_ptr<ARDOUR::Plugin> p, std::string title, bool favorite_btn)
+ : ArdourDialog (title)
, _replace (_("Replace existing preset with this name"))
{
HBox* h = manage (new HBox);
@@ -40,10 +40,14 @@ NewPluginPresetDialog::NewPluginPresetDialog (boost::shared_ptr<ARDOUR::Plugin>
get_vbox()->pack_start (_replace);
add_button (Stock::CANCEL, RESPONSE_CANCEL);
+ if (favorite_btn) {
+ add_button (_("New Favorite Only"), RESPONSE_NO);
+ }
_add = add_button (Stock::ADD, RESPONSE_ACCEPT);
set_default_response (RESPONSE_ACCEPT);
_name.set_activates_default(true);
+
show_all ();
_presets = p->get_presets ();
diff --git a/gtk2_ardour/new_plugin_preset_dialog.h b/gtk2_ardour/new_plugin_preset_dialog.h
index 8dddf6c6e5..feb1bf0354 100644
--- a/gtk2_ardour/new_plugin_preset_dialog.h
+++ b/gtk2_ardour/new_plugin_preset_dialog.h
@@ -26,7 +26,7 @@
class NewPluginPresetDialog : public ArdourDialog
{
public:
- NewPluginPresetDialog (boost::shared_ptr<ARDOUR::Plugin>);
+ NewPluginPresetDialog (boost::shared_ptr<ARDOUR::Plugin>, std::string, bool fav = false);
std::string name () const;
bool replace () const;
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index 19dbee422f..256a90d1c1 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -589,7 +589,7 @@ void
PlugUIBase::add_plugin_setting ()
{
#ifndef NO_PLUGIN_STATE
- NewPluginPresetDialog d (plugin);
+ NewPluginPresetDialog d (plugin, _("New Preset"));
switch (d.run ()) {
case Gtk::RESPONSE_ACCEPT:
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 96d291e725..73abc02c43 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -225,11 +225,24 @@ ProcessorEntry::drag_data_get (Glib::RefPtr<Gdk::DragContext> const, Gtk::Select
boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert> (_processor);
boost::shared_ptr<ARDOUR::Plugin> plugin = pi->plugin();
assert (plugin);
- NewPluginPresetDialog d (plugin);
+
+ PluginManager& manager (PluginManager::instance());
+ bool fav = manager.get_status (_plugin_preset_pointer->_pip) == PluginManager::Favorite;
+
+ NewPluginPresetDialog d (plugin,
+ string_compose(_("New Favorite Preset for \"%1\""),_plugin_preset_pointer->_pip->name), !fav);
_plugin_preset_pointer->_preset.valid = false;
switch (d.run ()) {
+ case Gtk::RESPONSE_CANCEL:
+ data.set (data.get_target(), 8, NULL, 0);
+ return true;
+ break;
+
+ case Gtk::RESPONSE_NO:
+ break;
+
case Gtk::RESPONSE_ACCEPT:
if (d.name().empty()) {
break;