+ void track_mode_changed ();
+
+ std::string route_state_id () const;
+
+ protected:
+ struct SoloMuteRelease {
+ SoloMuteRelease (bool was_active)
+ : active (was_active)
+ , exclusive (false) {}
+
+ boost::shared_ptr<ARDOUR::RouteList> routes;
+ boost::shared_ptr<ARDOUR::RouteList> routes_on;
+ boost::shared_ptr<ARDOUR::RouteList> routes_off;
+ boost::shared_ptr<ARDOUR::Route> route;
+ bool active;
+ bool exclusive;
+ };
+
+ SoloMuteRelease* _solo_release;
+ SoloMuteRelease* _mute_release;
+
+ ControlSlaveUI* csu;
+
+private:
+ void setup_invert_buttons ();
+ void set_invert_button_state ();
+ void invert_menu_toggled (uint32_t);
+ bool invert_press (GdkEventButton *);
+ bool invert_release (GdkEventButton *, uint32_t i);
+
+ int _i_am_the_modifier;
+ std::vector<ArdourButton*> _invert_buttons;
+ Gtk::Menu* _invert_menu;
+
+ static void set_showing_sends_to (boost::shared_ptr<ARDOUR::Route>);
+ static boost::weak_ptr<ARDOUR::Route> _showing_sends_to;
+
+ static uint32_t _max_invert_buttons;