+ c->set_visible (!c->visible ());
+ _parent->update_gui_object_state (this);
+}
+
+ProcessorEntry::Control::Control (boost::shared_ptr<AutomationControl> c, string const & n)
+ : _control (c)
+ , _adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0, 1, 0.01, 0.1)
+ , _slider (&_adjustment, 0, 13, false)
+ , _slider_persistant_tooltip (&_slider)
+ , _button (ArdourButton::Element (ArdourButton::Text | ArdourButton::Indicator))
+ , _ignore_ui_adjustment (false)
+ , _visible (false)
+ , _name (n)
+{
+ _slider.set_controllable (c);
+
+ if (c->toggled()) {
+ _button.set_text (_name);
+ _button.set_led_left (true);
+ _button.set_name ("processor control button");
+ box.pack_start (_button);
+ _button.show ();
+
+ _button.signal_clicked.connect (sigc::mem_fun (*this, &Control::button_clicked));
+ _button.signal_led_clicked.connect (sigc::mem_fun (*this, &Control::button_clicked));
+ c->Changed.connect (_connection, MISSING_INVALIDATOR, boost::bind (&Control::control_changed, this), gui_context ());
+
+ } else {
+
+ _slider.set_name ("PluginSlider");
+ _slider.set_text (_name);
+
+ box.pack_start (_slider);
+ _slider.show ();
+
+ double const lo = c->internal_to_interface (c->lower ());
+ double const up = c->internal_to_interface (c->upper ());
+
+ _adjustment.set_lower (lo);
+ _adjustment.set_upper (up);
+ _adjustment.set_step_increment ((up - lo) / 100);
+ _adjustment.set_page_increment ((up - lo) / 10);
+ _slider.set_default_value (c->internal_to_interface (c->normal ()));
+
+ _adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Control::slider_adjusted));
+ c->Changed.connect (_connection, MISSING_INVALIDATOR, boost::bind (&Control::control_changed, this), gui_context ());
+ }