X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fgain_meter.h;h=15948768a13a707ef8fde54b1f1404c5d6f57261;hb=1c0651f7f4974fb404cf89f2233df01192ec1b24;hp=98d1288b0c1d70ba70b3806c9892db9dc56afa94;hpb=3a8f5a9770c61a8546bec905301be3ea0b038c86;p=ardour.git diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 98d1288b0c..15948768a1 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -49,6 +49,7 @@ namespace ARDOUR { class IO; + class GainControl; class Session; class Route; class RouteGroup; @@ -58,7 +59,6 @@ namespace ARDOUR { } namespace Gtkmm2ext { class FastMeter; - class BarController; } namespace Gtk { class Menu; @@ -72,24 +72,25 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr virtual void set_controls (boost::shared_ptr route, boost::shared_ptr meter, - boost::shared_ptr amp); + boost::shared_ptr amp, + boost::shared_ptr control); void update_gain_sensitive (); void update_meters (); + const ARDOUR::ChanCount meter_channels () const; + void effective_gain_display (); void set_width (Width, int len=0); void set_meter_strip_name (const char * name); void set_fader_name (const char * name); - void set_flat_buttons (); - virtual void setup_meters (int len=0); virtual void set_type (ARDOUR::MeterType); boost::shared_ptr get_controllable(); - LevelMeter& get_level_meter() const { return *level_meter; } + LevelMeterHBox& get_level_meter() const { return *level_meter; } Gtkmm2ext::SliderController& get_gain_slider() const { return *gain_slider; } /** Emitted in the GUI thread when a button is pressed over the level meter; @@ -97,13 +98,23 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr */ PBD::Signal1 LevelMeterButtonPress; + static std::string astate_string (ARDOUR::AutoState); + static std::string short_astate_string (ARDOUR::AutoState); + static std::string _astate_string (ARDOUR::AutoState, bool); + + static std::string astyle_string (ARDOUR::AutoStyle); + static std::string short_astyle_string (ARDOUR::AutoStyle); + static std::string _astyle_string (ARDOUR::AutoStyle, bool); + protected: friend class MixerStrip; friend class MeterStrip; + friend class RouteTimeAxisView; boost::shared_ptr _route; boost::shared_ptr _meter; boost::shared_ptr _amp; + boost::shared_ptr _control; std::vector connections; PBD::ScopedConnectionList model_connections; @@ -113,11 +124,12 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr Gtkmm2ext::SliderController *gain_slider; Gtk::Adjustment gain_adjustment; Gtkmm2ext::FocusEntry gain_display; - Gtk::Button peak_display; + Gtkmm2ext::FocusEntry peak_display; +// Gtk::Button peak_display; Gtk::DrawingArea meter_metric_area; Gtk::DrawingArea meter_ticks1_area; Gtk::DrawingArea meter_ticks2_area; - LevelMeter *level_meter; + LevelMeterHBox *level_meter; sigc::connection gain_watching; @@ -127,6 +139,10 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr Gtk::Menu gain_astate_menu; Gtk::Menu gain_astyle_menu; + void set_gain_astate (ARDOUR::AutoState); + bool gain_astate_propagate; + static sigc::signal ChangeGainAutomationState; + gint gain_automation_style_button_event (GdkEventButton *); gint gain_automation_state_button_event (GdkEventButton *); gint pan_automation_style_button_event (GdkEventButton *); @@ -136,15 +152,6 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr void gain_automation_style_changed(); void setup_gain_adjustment (); - - std::string astate_string (ARDOUR::AutoState); - std::string short_astate_string (ARDOUR::AutoState); - std::string _astate_string (ARDOUR::AutoState, bool); - - std::string astyle_string (ARDOUR::AutoStyle); - std::string short_astyle_string (ARDOUR::AutoStyle); - std::string _astyle_string (ARDOUR::AutoStyle, bool); - Width _width; void show_gain (); @@ -153,7 +160,7 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr float max_peak; - void gain_adjusted (); + void fader_moved (); void gain_changed (); void meter_point_clicked (); @@ -169,8 +176,8 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr Gtk::Menu* meter_menu; void popup_meter_menu (GdkEventButton*); - bool gain_slider_button_press (GdkEventButton *); - bool gain_slider_button_release (GdkEventButton *); + void amp_stop_touch (); + void amp_start_touch (); void set_route_group_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint); void set_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint); @@ -201,15 +208,17 @@ class GainMeter : public GainMeterBase, public Gtk::VBox { public: GainMeter (ARDOUR::Session*, int); - ~GainMeter () {} + virtual ~GainMeter (); virtual void set_controls (boost::shared_ptr route, boost::shared_ptr meter, - boost::shared_ptr amp); + boost::shared_ptr amp, + boost::shared_ptr control); int get_gm_width (); void setup_meters (int len=0); void set_type (ARDOUR::MeterType); + void route_active_changed (); protected: void hide_all_meters (); @@ -217,14 +226,16 @@ class GainMeter : public GainMeterBase, public Gtk::VBox gint meter_metrics_expose (GdkEventExpose *); gint meter_ticks1_expose (GdkEventExpose *); gint meter_ticks2_expose (GdkEventExpose *); + void on_style_changed (const Glib::RefPtr&); private: void meter_configuration_changed (ARDOUR::ChanCount); + void meter_type_changed (ARDOUR::MeterType); Gtk::HBox gain_display_box; Gtk::HBox fader_box; - Gtk::VBox* fader_vbox; + Gtk::VBox fader_vbox; Gtk::HBox hbox; Gtk::HBox meter_hbox; Gtk::Alignment fader_alignment;