refine add preset/favorite dialog
authorRobin Gareus <robin@gareus.org>
Mon, 28 Dec 2015 15:08:35 +0000 (16:08 +0100)
committerRobin Gareus <robin@gareus.org>
Mon, 28 Dec 2015 16:23:45 +0000 (17:23 +0100)
dedicated "Add to Favorites only" mode.

gtk2_ardour/mixer_ui.cc
gtk2_ardour/new_plugin_preset_dialog.cc
gtk2_ardour/new_plugin_preset_dialog.h
gtk2_ardour/plugin_ui.cc
gtk2_ardour/processor_box.cc

index 97702b15bc76e7e6e08de7bdf458f050027c3364..51659b55e192dffa7aae78925372e57a6aab0b19 100644 (file)
@@ -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));
 
index 828344b1bf888f824c814d13b38faa2e4c4f6fbb..cc5c4b9b612d3b87849c26442f2b37b013de6742 100644 (file)
@@ -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 ();
index 8dddf6c6e54ed1d2a156a0479b56ba2c7b273380..feb1bf0354b4dece7819213049a6786547edeef5 100644 (file)
@@ -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;
index 19dbee422fb8a08e074f0aa08d5a669ff2ac7954..256a90d1c11fb892ef95635634fc20030ad06fa2 100644 (file)
@@ -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:
index 96d291e725a4e28ca95a98e2ed8543f56809467d..73abc02c43ea00d1097392b9623f779c869203cf 100644 (file)
@@ -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;