summaryrefslogtreecommitdiff
path: root/gtk2_ardour/gain_meter.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-06-17 20:09:25 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-06-17 20:09:25 +0000
commit0a16f643a0ee233e917bae35d47dda183bc82a2f (patch)
tree66118d99f821751fad7d809a1363af7bd68e4ae8 /gtk2_ardour/gain_meter.h
parent5e58d036afd3428f61bb94d8671b896d586ed7f7 (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.h62
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__ */