Don't de-select tracks when order changes
[ardour.git] / gtk2_ardour / level_meter.h
index a355d7d28540fedc065e19afc74bc97b2e25173d..9b2a648b0152c8f8f77ea7078edc1dea46b149c9 100644 (file)
@@ -49,7 +49,7 @@ namespace Gtk {
        class Menu;
 }
 
-class LevelMeterBase : public ARDOUR::SessionHandlePtr
+class LevelMeterBase : public ARDOUR::SessionHandlePtr, virtual public sigc::trackable
 {
   public:
        LevelMeterBase (ARDOUR::Session*, PBD::EventLoop::InvalidationRecord* ir,
@@ -65,9 +65,10 @@ class LevelMeterBase : public ARDOUR::SessionHandlePtr
        void clear_meters (bool reset_highlight = true);
        void hide_meters ();
        void setup_meters (int len=0, int width=3, int thin=2);
+       void set_max_audio_meter_count (uint32_t cnt = 0);
 
-       void set_type (ARDOUR::MeterType);
-       ARDOUR::MeterType get_type () { return meter_type; }
+       void set_meter_type (ARDOUR::MeterType);
+       ARDOUR::MeterType meter_type () { return _meter_type; }
 
        /** Emitted in the GUI thread when a button is pressed over the meter */
        PBD::Signal1<bool, GdkEventButton *> ButtonPress;
@@ -88,7 +89,7 @@ class LevelMeterBase : public ARDOUR::SessionHandlePtr
        struct MeterInfo {
            Gtkmm2ext::FastMeter *meter;
            gint16                width;
-            int                          length;
+               int                   length;
            bool                  packed;
            float                 max_peak;
 
@@ -106,8 +107,11 @@ class LevelMeterBase : public ARDOUR::SessionHandlePtr
        guint16                thin_meter_width;
        std::vector<MeterInfo> meters;
        float                  max_peak;
-       ARDOUR::MeterType      meter_type;
+       ARDOUR::MeterType      _meter_type;
        ARDOUR::MeterType      visible_meter_type;
+       uint32_t               midi_count;
+       uint32_t               meter_count;
+       uint32_t               max_visible_meters;
 
        PBD::ScopedConnection _configuration_connection;
        PBD::ScopedConnection _meter_type_connection;
@@ -121,8 +125,6 @@ class LevelMeterBase : public ARDOUR::SessionHandlePtr
        void configuration_changed (ARDOUR::ChanCount in, ARDOUR::ChanCount out);
        void meter_type_changed (ARDOUR::MeterType);
 
-       void on_theme_changed ();
-       bool style_changed;
        bool color_changed;
        void color_handler ();
 };