prepare plugin reset (#6297)
authorRobin Gareus <robin@gareus.org>
Mon, 4 May 2015 18:48:41 +0000 (20:48 +0200)
committerRobin Gareus <robin@gareus.org>
Mon, 4 May 2015 18:48:41 +0000 (20:48 +0200)
gtk2_ardour/plugin_ui.cc
gtk2_ardour/plugin_ui.h

index f9208369f13a791cae71ca45ba1721f209854bf1..2483cb35fae694a9f6ed39267236264357b96d59 100644 (file)
@@ -418,6 +418,7 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
        , add_button (_("Add"))
        , save_button (_("Save"))
        , delete_button (_("Delete"))
+       , reset_button (_("Reset"))
        , bypass_button (ArdourButton::led_default_elements)
        , description_expander (_("Description"))
        , plugin_analysis_expander (_("Plugin analysis"))
@@ -431,6 +432,7 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
        ARDOUR_UI::instance()->set_tip (add_button, _("Save a new preset"));
        ARDOUR_UI::instance()->set_tip (save_button, _("Save the current preset"));
        ARDOUR_UI::instance()->set_tip (delete_button, _("Delete the current preset"));
+       ARDOUR_UI::instance()->set_tip (reset_button, _("Reset parameters to default (if no parameters are in automation play mode)"));
        ARDOUR_UI::instance()->set_tip (bypass_button, _("Disable signal processing by the plugin"));
        _no_load_preset = 0;
 
@@ -446,6 +448,10 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
        delete_button.set_name ("generic button");
        delete_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::delete_plugin_setting));
 
+       reset_button.set_name ("generic button");
+       reset_button.signal_clicked.connect (sigc::mem_fun (*this, &PlugUIBase::reset_plugin_parameters));
+
+
        insert->ActiveChanged.connect (active_connection, invalidator (*this), boost::bind (&PlugUIBase::processor_active_changed, this,  boost::weak_ptr<Processor>(insert)), gui_context());
 
        bypass_button.set_name ("plugin bypass button");
@@ -479,6 +485,10 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
        plugin->PresetRemoved.connect (*this, invalidator (*this), boost::bind (&PlugUIBase::preset_added_or_removed, this), gui_context ());
        plugin->PresetLoaded.connect (*this, invalidator (*this), boost::bind (&PlugUIBase::update_preset, this), gui_context ());
        plugin->ParameterChanged.connect (*this, invalidator (*this), boost::bind (&PlugUIBase::parameter_changed, this, _1, _2), gui_context ());
+
+       insert->AutomationStateChanged.connect (*this, invalidator (*this), boost::bind (&PlugUIBase::automation_state_changed, this), gui_context());
+
+       automation_state_changed();
 }
 
 PlugUIBase::~PlugUIBase()
@@ -636,6 +646,18 @@ PlugUIBase::delete_plugin_setting ()
 #endif
 }
 
+void
+PlugUIBase::automation_state_changed ()
+{
+       reset_button.set_sensitive (insert->can_reset_all_parameters());
+}
+
+void
+PlugUIBase::reset_plugin_parameters ()
+{
+       insert->reset_parameters_to_default ();
+}
+
 bool
 PlugUIBase::bypass_button_release (GdkEventButton*)
 {
index 6ae548d8fbe0a43c65b6ce7260ed2b3e31068df8..4aed3648c7a4953413420fb343d7985568f158e5 100644 (file)
@@ -125,6 +125,8 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        ArdourButton save_button;
        /** a button to delete the current preset (if it is a user one) */
        ArdourButton delete_button;
+       /** a button to delete the reset the plugin params */
+       ArdourButton reset_button;
        /** a button to bypass the plugin */
        ArdourButton bypass_button;
        /** a button to acquire keyboard focus */
@@ -160,12 +162,14 @@ class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionL
        void add_plugin_setting ();
        void save_plugin_setting ();
        void delete_plugin_setting ();
+       void reset_plugin_parameters ();
        bool focus_toggled(GdkEventButton*);
        bool bypass_button_release(GdkEventButton*);
        void toggle_description ();
        void toggle_plugin_analysis ();
        void processor_active_changed (boost::weak_ptr<ARDOUR::Processor> p);
        void plugin_going_away ();
+       void automation_state_changed ();
        virtual void parameter_changed (uint32_t, float);
        void preset_added_or_removed ();
        void update_preset_modified ();