Make panner tolerate 0 audio inputs (fix #4353).
[ardour.git] / gtk2_ardour / monitor_section.h
index 8af84988f14ce609c43c0243a8127671ee44c5b6..5d791f332099fea270b351f86a8b3b8f9b8d965a 100644 (file)
@@ -28,6 +28,7 @@
 
 namespace Gtkmm2ext {
         class TearOff;
+        class MotionFeedback;
 }
 
 class VolumeController;
@@ -43,6 +44,8 @@ class MonitorSection : public RouteUI
 
         Gtkmm2ext::TearOff& tearoff() const { return *_tearoff; }
 
+       std::string state_id() const;
+
   private:
         Gtk::VBox vpacker;
         Gtk::HBox hpacker;
@@ -51,7 +54,7 @@ class MonitorSection : public RouteUI
         Gtk::VBox lower_packer;
         Gtkmm2ext::TearOff* _tearoff;
 
-        struct ChannelButtonSet { 
+        struct ChannelButtonSet {
             BindableToggleButton cut;
             BindableToggleButton dim;
             BindableToggleButton solo;
@@ -63,13 +66,9 @@ class MonitorSection : public RouteUI
         typedef std::vector<ChannelButtonSet*> ChannelButtons;
         ChannelButtons _channel_buttons;
 
-        Gtk::Adjustment   gain_adjustment;
         VolumeController* gain_control;
-        Gtk::Adjustment   dim_adjustment;
         VolumeController* dim_control;
-        Gtk::Adjustment   solo_boost_adjustment;
         VolumeController* solo_boost_control;
-        Gtk::Adjustment   solo_cut_adjustment;
         VolumeController* solo_cut_control;
 
         void populate_buttons ();
@@ -92,13 +91,12 @@ class MonitorSection : public RouteUI
         void dim_all ();
         void cut_all ();
         void mono ();
+        void toggle_exclusive_solo ();
+        void toggle_mute_overrides_solo ();
         void dim_level_changed ();
         void solo_boost_changed ();
         void gain_value_changed ();
 
-        bool nonlinear_gain_printer (Gtk::SpinButton*);
-        bool linear_gain_printer (Gtk::SpinButton*);
-
         Gtk::RadioButtonGroup solo_model_group;
         Gtk::RadioButton solo_in_place_button;
         Gtk::RadioButton afl_button;
@@ -113,7 +111,23 @@ class MonitorSection : public RouteUI
         BindableToggleButton dim_all_button;
         BindableToggleButton mono_button;
         BindableToggleButton rude_solo_button;
+        BindableToggleButton rude_iso_button;
+        BindableToggleButton rude_audition_button;
+        BindableToggleButton exclusive_solo_button;
+        BindableToggleButton solo_mute_override_button;
 
+        void do_blink (bool);
         void solo_blink (bool);
+        void audition_blink (bool);
         bool cancel_solo (GdkEventButton*);
+        bool cancel_isolate (GdkEventButton*);
+        bool cancel_audition (GdkEventButton*);
+        void update_solo_model ();
+        void parameter_changed (std::string);
+        void isolated_changed ();
+
+        PBD::ScopedConnection config_connection;
+        PBD::ScopedConnectionList control_connections;
+
+        void assign_controllables ();
 };