diff options
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/new_plugin_preset_dialog.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/new_plugin_preset_dialog.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/processor_box.cc | 15 |
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; |