dedicated "Add to Favorites only" mode.
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));
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);
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 ();
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;
PlugUIBase::add_plugin_setting ()
{
#ifndef NO_PLUGIN_STATE
- NewPluginPresetDialog d (plugin);
+ NewPluginPresetDialog d (plugin, _("New Preset"));
switch (d.run ()) {
case Gtk::RESPONSE_ACCEPT:
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;