X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Flevel_meter.h;h=0e51758858e33fa897fe8e9e30521952b4cc313d;hb=eb1d3e48c822b4235e8dbf58e645ea733e4523b0;hp=0273a075c87dbbca639d08afb81650c2c518b2ab;hpb=aaa91db6d9592684258267981e619b44cc2b7c40;p=ardour.git diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h index 0273a075c8..0e51758858 100644 --- a/gtk2_ardour/level_meter.h +++ b/gtk2_ardour/level_meter.h @@ -30,7 +30,9 @@ #include #include -#include +#include "ardour/types.h" +#include "ardour/chan_count.h" +#include "ardour/session_handle.h" #include #include @@ -39,26 +41,23 @@ #include "enums.h" namespace ARDOUR { - class IO; class Session; - class Route; - class RouteGroup; + class PeakMeter; } namespace Gtkmm2ext { class FastMeter; - class BarController; } namespace Gtk { class Menu; } -class LevelMeter : public Gtk::HBox +class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr { public: - LevelMeter (ARDOUR::Session&); + LevelMeter (ARDOUR::Session*); ~LevelMeter (); - virtual void set_io (boost::shared_ptr io); + virtual void set_meter (ARDOUR::PeakMeter* meter); void update_gain_sensitive (); @@ -68,37 +67,43 @@ class LevelMeter : public Gtk::HBox void hide_meters (); void setup_meters (int len=0, int width=3); - private: + /** Emitted in the GUI thread when a button is pressed over the meter */ + PBD::Signal1 ButtonPress; - //friend class MixerStrip; - boost::shared_ptr _io; - ARDOUR::Session& _session; + private: + ARDOUR::PeakMeter* _meter; Width _width; struct MeterInfo { Gtkmm2ext::FastMeter *meter; - gint16 width; - int length; - bool packed; - - MeterInfo() { + gint16 width; + int length; + bool packed; + + MeterInfo() { meter = 0; width = 0; - length = 0; + length = 0; packed = false; } }; - guint16 regular_meter_width; - static const guint16 thin_meter_width = 2; - std::vector meters; - float max_peak; - + guint16 regular_meter_width; + int meter_length; + static const guint16 thin_meter_width = 2; + std::vector meters; + float max_peak; + + PBD::ScopedConnection _configuration_connection; + PBD::ScopedConnection _parameter_connection; + void hide_all_meters (); - gint meter_button_release (GdkEventButton*, uint32_t); + bool meter_button_press (GdkEventButton *); + bool meter_button_release (GdkEventButton *); - void parameter_changed (const char*); + void parameter_changed (std::string); + void configuration_changed (ARDOUR::ChanCount in, ARDOUR::ChanCount out); void on_theme_changed (); bool style_changed;