diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-06-17 20:09:25 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-06-17 20:09:25 +0000 |
commit | 0a16f643a0ee233e917bae35d47dda183bc82a2f (patch) | |
tree | 66118d99f821751fad7d809a1363af7bd68e4ae8 /gtk2_ardour/gain_meter.h | |
parent | 5e58d036afd3428f61bb94d8671b896d586ed7f7 (diff) |
refactor GainMeter so that it can used by RouteTimeAxisView, and thus bring automation display to editor track faders and more
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3468 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/gain_meter.h')
-rw-r--r-- | gtk2_ardour/gain_meter.h | 62 |
1 files changed, 38 insertions, 24 deletions
diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 239d165d14..dc75b55996 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -54,28 +54,27 @@ namespace Gtk { class Menu; } -class GainMeter : public Gtk::VBox +class GainMeterBase { public: - GainMeter (boost::shared_ptr<ARDOUR::IO>, ARDOUR::Session&); - ~GainMeter (); + GainMeterBase (boost::shared_ptr<ARDOUR::IO>, ARDOUR::Session&, const Glib::RefPtr<Gdk::Pixbuf>& pix, + bool horizontal); + virtual ~GainMeterBase (); void update_gain_sensitive (); - void update_meters (); - void effective_gain_display (); - void set_width (Width, int len=0); - void setup_meters (int len=0); - - int get_gm_width (); - void set_meter_strip_name (const char * name); void set_fader_name (const char * name); - PBD::Controllable& get_controllable() { return _io->gain_control(); } - private: + virtual void setup_meters (int len=0); + + PBD::Controllable& get_controllable() { return _io->gain_control(); } + LevelMeter& get_level_meter() const { return *level_meter; } + Gtkmm2ext::SliderController& get_gain_slider() const { return *gain_slider; } + + protected: friend class MixerStrip; boost::shared_ptr<ARDOUR::IO> _io; @@ -84,14 +83,12 @@ class GainMeter : public Gtk::VBox bool ignore_toggle; bool next_release_selects; - Gtkmm2ext::VSliderController *gain_slider; + Gtkmm2ext::SliderController *gain_slider; Gtk::Adjustment gain_adjustment; Gtkmm2ext::FocusEntry gain_display; Gtk::Button peak_display; - Gtk::HBox gain_display_box; - Gtk::HBox fader_box; Gtk::DrawingArea meter_metric_area; - LevelMeter *level_meter; + LevelMeter *level_meter; sigc::connection gain_watching; @@ -130,16 +127,13 @@ class GainMeter : public Gtk::VBox float max_peak; - Gtk::VBox* fader_vbox; - Gtk::HBox hbox; - void gain_adjusted (); void gain_changed (void *); void meter_point_clicked (); void gain_unit_changed (); - void hide_all_meters (); + virtual void hide_all_meters (); gint meter_button_press (GdkEventButton*, uint32_t); @@ -167,10 +161,6 @@ class GainMeter : public Gtk::VBox static sigc::signal<void> ResetAllPeakDisplays; static sigc::signal<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays; - static Glib::RefPtr<Gdk::Pixbuf> slider; - static Glib::RefPtr<Gdk::Pixbuf> rail; - static int setup_slider_pix (); - void on_theme_changed (); bool style_changed; bool dpi_changed; @@ -178,5 +168,29 @@ class GainMeter : public Gtk::VBox void color_handler(bool); }; +class GainMeter : public GainMeterBase, public Gtk::VBox +{ + public: + GainMeter (boost::shared_ptr<ARDOUR::IO>, ARDOUR::Session&); + ~GainMeter () {} + + int get_gm_width (); + void setup_meters (int len=0); + + static void setup_slider_pix (); + + protected: + void hide_all_meters (); + + + private: + Gtk::HBox gain_display_box; + Gtk::HBox fader_box; + Gtk::VBox* fader_vbox; + Gtk::HBox hbox; + + static Glib::RefPtr<Gdk::Pixbuf> slider; +}; + #endif /* __ardour_gtk_gain_meter_h__ */ |