diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-25 14:18:39 +0200 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-08-08 15:25:40 -0400 |
commit | 1d964e27f4c927c9ea16d9ee48cd9ab713492330 (patch) | |
tree | 4342557829548aa565617e0c98b645263548e58f /gtk2_ardour/level_meter.h | |
parent | afb9578462f4b38f2d526ef68be5cdbf83ac55b0 (diff) |
prepare horizontal meters (level-meter H/V Box abstraction)
Diffstat (limited to 'gtk2_ardour/level_meter.h')
-rw-r--r-- | gtk2_ardour/level_meter.h | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h index d3fd4f9bbd..0a59f1a337 100644 --- a/gtk2_ardour/level_meter.h +++ b/gtk2_ardour/level_meter.h @@ -37,6 +37,7 @@ #include <gtkmm2ext/click_box.h> #include <gtkmm2ext/focus_entry.h> #include <gtkmm2ext/slider_controller.h> +#include <gtkmm2ext/fastmeter.h> #include "enums.h" @@ -44,18 +45,16 @@ namespace ARDOUR { class Session; class PeakMeter; } -namespace Gtkmm2ext { - class FastMeter; -} namespace Gtk { class Menu; } -class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr +class LevelMeterBase : public sigc::trackable, public ARDOUR::SessionHandlePtr { public: - LevelMeter (ARDOUR::Session*); - ~LevelMeter (); + LevelMeterBase (ARDOUR::Session*, + Gtkmm2ext::FastMeter::Orientation o = Gtkmm2ext::FastMeter::Vertical); + ~LevelMeterBase (); virtual void set_meter (ARDOUR::PeakMeter* meter); @@ -74,8 +73,13 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr PBD::Signal1<bool, GdkEventButton *> ButtonPress; PBD::Signal1<void, ARDOUR::MeterType> MeterTypeChanged; + protected: + virtual void mtr_pack(Gtk::Widget &w) = 0; + virtual void mtr_remove(Gtk::Widget &w) = 0; + private: ARDOUR::PeakMeter* _meter; + Gtkmm2ext::FastMeter::Orientation _meter_orientation; Width _width; @@ -121,5 +125,27 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr void color_handler (); }; +class LevelMeterHBox : public LevelMeterBase, public Gtk::HBox +{ + public: + LevelMeterHBox (ARDOUR::Session*); + ~LevelMeterHBox(); + + protected: + void mtr_pack(Gtk::Widget &w); + void mtr_remove(Gtk::Widget &w); +}; + +class LevelMeterVBox : public LevelMeterBase, public Gtk::VBox +{ + public: + LevelMeterVBox (ARDOUR::Session*); + ~LevelMeterVBox(); + + protected: + void mtr_pack(Gtk::Widget &w); + void mtr_remove(Gtk::Widget &w); +}; + #endif /* __ardour_gtk_track_meter_h__ */ |