X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fgain_meter.h;h=2513e4d2678618716bb9a3af7ddf6d14200afe6f;hb=faca3e5f5d666fc543b23f6ab7b93a14f6c8ff7f;hp=820e9ef0e76f5d0474e318073a63edac37fabf94;hpb=3be16e8afbd891c0bfe7227158384ed0d127597f;p=ardour.git diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 820e9ef0e7..2513e4d267 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -32,11 +32,15 @@ #include #include -#include +#include "pbd/signals.h" -#include -#include -#include +#include "ardour/chan_count.h" +#include "ardour/types.h" +#include "ardour/session_handle.h" + +#include "gtkmm2ext/click_box.h" +#include "gtkmm2ext/focus_entry.h" +#include "gtkmm2ext/slider_controller.h" #include "enums.h" #include "level_meter.h" @@ -46,6 +50,9 @@ namespace ARDOUR { class Session; class Route; class RouteGroup; + class PeakMeter; + class Amp; + class Automatable; } namespace Gtkmm2ext { class FastMeter; @@ -55,14 +62,16 @@ namespace Gtk { class Menu; } -class GainMeterBase : virtual public sigc::trackable +class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr { public: - GainMeterBase ( ARDOUR::Session&, const Glib::RefPtr& pix, - bool horizontal); + GainMeterBase (ARDOUR::Session*, const Glib::RefPtr& pix, + bool horizontal, int); virtual ~GainMeterBase (); - virtual void set_io (boost::shared_ptr); + virtual void set_controls (boost::shared_ptr route, + boost::shared_ptr meter, + boost::shared_ptr amp); void update_gain_sensitive (); void update_meters (); @@ -74,7 +83,7 @@ class GainMeterBase : virtual public sigc::trackable virtual void setup_meters (int len=0); - boost::shared_ptr get_controllable() { return _io->gain_control(); } + boost::shared_ptr get_controllable(); LevelMeter& get_level_meter() const { return *level_meter; } Gtkmm2ext::SliderController& get_gain_slider() const { return *gain_slider; } @@ -82,9 +91,11 @@ class GainMeterBase : virtual public sigc::trackable protected: friend class MixerStrip; - boost::shared_ptr _io; - ARDOUR::Session& _session; + boost::shared_ptr _route; + boost::shared_ptr _meter; + boost::shared_ptr _amp; std::vector connections; + PBD::ScopedConnectionList model_connections; bool ignore_toggle; bool next_release_selects; @@ -94,7 +105,7 @@ class GainMeterBase : virtual public sigc::trackable Gtkmm2ext::FocusEntry gain_display; Gtk::Button peak_display; Gtk::DrawingArea meter_metric_area; - LevelMeter *level_meter; + LevelMeter *level_meter; sigc::connection gain_watching; @@ -126,21 +137,21 @@ class GainMeterBase : virtual public sigc::trackable void gain_activated (); bool gain_focused (GdkEventFocus*); - float max_peak; - + float max_peak; + void gain_adjusted (); void gain_changed (); - + void meter_point_clicked (); void gain_unit_changed (); - + virtual void hide_all_meters (); gint meter_button_press (GdkEventButton*, uint32_t); bool peak_button_release (GdkEventButton*); bool gain_key_press (GdkEventKey*); - + Gtk::Menu* meter_menu; void popup_meter_menu (GdkEventButton*); @@ -167,15 +178,18 @@ class GainMeterBase : virtual public sigc::trackable bool dpi_changed; bool color_changed; void color_handler(bool); + bool _is_midi; }; class GainMeter : public GainMeterBase, public Gtk::VBox { public: - GainMeter (ARDOUR::Session&); + GainMeter (ARDOUR::Session*, int); ~GainMeter () {} - void set_io (boost::shared_ptr); + virtual void set_controls (boost::shared_ptr route, + boost::shared_ptr meter, + boost::shared_ptr amp); int get_gm_width (); void setup_meters (int len=0);