X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fgain_meter.h;h=d15d8dfd59453e753d618ea4265942473fdd7aa9;hb=a606a83d2ec43d9fbf9b65969afb3b3c46c546fa;hp=bbc12ccb6ce37567c906f2cb3747c8da14e003ef;hpb=ac1272c0d4d4632106f7ed636ff1a9182b671a05;p=ardour.git diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index bbc12ccb6c..d15d8dfd59 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_gain_meter_h__ @@ -31,10 +30,12 @@ #include #include #include +#include #include #include +#include #include #include "enums.h" @@ -66,12 +67,16 @@ class GainMeter : public Gtk::VBox void effective_gain_display (); - void set_width (Width); - void setup_meters (); + 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); + void clear_meters (); + private: friend class MixerStrip; @@ -79,14 +84,12 @@ class GainMeter : public Gtk::VBox ARDOUR::Session& _session; bool ignore_toggle; + bool next_release_selects; Gtkmm2ext::VSliderController *gain_slider; Gtk::Adjustment gain_adjustment; - Gtk::Frame gain_display_frame; - Gtkmm2ext::ClickBox gain_display; - Gtk::Frame peak_display_frame; - Gtk::EventBox peak_display; - Gtk::Label peak_display_label; + Gtkmm2ext::FocusEntry gain_display; + Gtk::Button peak_display; Gtk::HBox gain_display_box; Gtk::HBox fader_box; Gtk::DrawingArea meter_metric_area; @@ -115,29 +118,32 @@ class GainMeter : public Gtk::VBox std::string short_astyle_string (ARDOUR::AutoStyle); std::string _astyle_string (ARDOUR::AutoStyle, bool); - Width _width; + Width _width; static std::map > metric_pixmaps; static Glib::RefPtr render_metrics (Gtk::Widget&); gint meter_metrics_expose (GdkEventExpose *); - static void _gain_printer (char buf[32], Gtk::Adjustment&, void *); - void gain_printer (char buf[32], Gtk::Adjustment&); - + void show_gain (); + void gain_activated (); + bool gain_focused (GdkEventFocus*); + struct MeterInfo { Gtkmm2ext::FastMeter *meter; - gint16 width; - bool packed; + gint16 width; + int length; + bool packed; MeterInfo() { meter = 0; width = 0; + length = 0; packed = false; } }; - static const guint16 regular_meter_width = 5; + guint16 regular_meter_width; static const guint16 thin_meter_width = 2; vector meters; float max_peak; @@ -147,7 +153,7 @@ class GainMeter : public Gtk::VBox Gtk::HBox meter_packer; void gain_adjusted (); - void gain_changed (void *); + void gain_changed (); void meter_point_clicked (); void gain_unit_changed (); @@ -157,7 +163,8 @@ class GainMeter : public Gtk::VBox gint meter_button_press (GdkEventButton*, uint32_t); gint meter_button_release (GdkEventButton*, uint32_t); - gint peak_button_release (GdkEventButton*); + bool peak_button_release (GdkEventButton*); + bool gain_key_press (GdkEventKey*); Gtk::Menu* meter_menu; void popup_meter_menu (GdkEventButton*); @@ -183,6 +190,12 @@ class GainMeter : public Gtk::VBox static Glib::RefPtr slider; static Glib::RefPtr rail; static int setup_slider_pix (); + + void on_theme_changed (); + bool style_changed; + bool dpi_changed; + bool color_changed; + void color_handler(bool); }; #endif /* __ardour_gtk_gain_meter_h__ */