summaryrefslogtreecommitdiff
path: root/gtk2_ardour/level_meter.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-25 14:18:39 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2013-08-08 15:25:40 -0400
commit1d964e27f4c927c9ea16d9ee48cd9ab713492330 (patch)
tree4342557829548aa565617e0c98b645263548e58f /gtk2_ardour/level_meter.h
parentafb9578462f4b38f2d526ef68be5cdbf83ac55b0 (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.h38
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__ */