+ Gtk::StateType _visual_state;
+ PBD::ScopedConnection active_connection;
+ PBD::ScopedConnection name_connection;
+
+ class Control : public sigc::trackable {
+ public:
+ Control (boost::shared_ptr<ARDOUR::AutomationControl>, std::string const &);
+
+ void set_visible (bool);
+ void add_state (XMLNode *) const;
+ void set_state (XMLNode const *);
+ void hide_things ();
+ void hide_label ();
+
+ bool visible () const {
+ return _visible;
+ }
+
+ std::string name () const {
+ return _name;
+ }
+
+ Gtk::VBox box;
+
+ private:
+ void slider_adjusted ();
+ void button_clicked ();
+ void control_changed ();
+ std::string state_id () const;
+ void set_tooltip ();
+
+ boost::weak_ptr<ARDOUR::AutomationControl> _control;
+ /* things for a slider */
+ Gtk::Adjustment _adjustment;
+ Gtkmm2ext::HSliderController _slider;
+ Gtk::Label _label;
+ Gtkmm2ext::PersistentTooltip _slider_persistant_tooltip;
+ /* things for a button */
+ ArdourButton _button;
+ bool _ignore_ui_adjustment;
+ PBD::ScopedConnection _connection;
+ bool _visible;
+ std::string _name;
+ };
+
+ std::list<Control*> _controls;
+
+ void toggle_control_visibility (Control *);