#define __ardour_gtk_gain_meter_h__
#include <vector>
+#include <map>
+
+#include <gtkmm/box.h>
+#include <gtkmm/adjustment.h>
+#include <gtkmm/frame.h>
+#include <gtkmm/eventbox.h>
+#include <gtkmm/button.h>
+#include <gtkmm/table.h>
+#include <gtkmm/drawingarea.h>
#include <ardour/types.h>
-#include <gtk--.h>
-#include <gtkmmext/slider_controller.h>
-#include <gtkmmext/click_box.h>
+#include <gtkmm2ext/slider_controller.h>
+#include <gtkmm2ext/click_box.h>
#include "enums.h"
class Route;
class RouteGroup;
}
-namespace Gtkmmext {
+namespace Gtkmm2ext {
class FastMeter;
class BarController;
- class Pix;
+}
+namespace Gtk {
+ class Menu;
}
class GainMeter : public Gtk::VBox
void set_width (Width);
void setup_meters ();
- void set_meter_strip_name (string name);
- void set_fader_name (string name);
+ void set_meter_strip_name (const char * name);
+ void set_fader_name (const char * name);
private:
+
+ friend class MixerStrip;
ARDOUR::IO& _io;
ARDOUR::Session& _session;
bool ignore_toggle;
- Gtkmmext::VSliderController *gain_slider;
+ Gtkmm2ext::VSliderController *gain_slider;
Gtk::Adjustment gain_adjustment;
Gtk::Frame gain_display_frame;
- Gtkmmext::ClickBox gain_display;
+ Gtkmm2ext::ClickBox gain_display;
Gtk::Frame peak_display_frame;
Gtk::EventBox peak_display;
Gtk::Label peak_display_label;
- Gtk::Button gain_unit_button;
- Gtk::Label gain_unit_label;
Gtk::HBox gain_display_box;
Gtk::HBox fader_box;
Gtk::DrawingArea meter_metric_area;
- Gtk::Button meter_point_button;
- Gtk::Label meter_point_label;
- Gtk::Table top_table;
+
+ sigc::connection gain_watching;
+
+ Gtk::Button gain_automation_style_button;
+ Gtk::ToggleButton gain_automation_state_button;
+
+ Gtk::Menu gain_astate_menu;
+ Gtk::Menu gain_astyle_menu;
+
+ gint gain_automation_style_button_event (GdkEventButton *);
+ gint gain_automation_state_button_event (GdkEventButton *);
+ gint pan_automation_style_button_event (GdkEventButton *);
+ gint pan_automation_state_button_event (GdkEventButton *);
+
+ void gain_automation_state_changed();
+ void gain_automation_style_changed();
+
+ std::string astate_string (ARDOUR::AutoState);
+ std::string short_astate_string (ARDOUR::AutoState);
+ std::string _astate_string (ARDOUR::AutoState, bool);
+
+ std::string astyle_string (ARDOUR::AutoStyle);
+ std::string short_astyle_string (ARDOUR::AutoStyle);
+ std::string _astyle_string (ARDOUR::AutoStyle, bool);
+
Width _width;
+ static std::map<std::string,Glib::RefPtr<Gdk::Pixmap> > metric_pixmaps;
+ static Glib::RefPtr<Gdk::Pixmap> 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&);
struct MeterInfo {
- Gtkmmext::FastMeter *meter;
+ Gtkmm2ext::FastMeter *meter;
gint16 width;
bool packed;
vector<MeterInfo> meters;
float max_peak;
-
+ Gtk::VBox* fader_vbox;
Gtk::HBox hbox;
Gtk::HBox meter_packer;
void gain_changed (void *);
void meter_point_clicked ();
- void meter_changed (void *);
void gain_unit_changed ();
void hide_all_meters ();
gint start_gain_touch (GdkEventButton*);
gint end_gain_touch (GdkEventButton*);
- gint entry_focus_event (GdkEventFocus* ev);
-
void set_mix_group_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint);
void set_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint);
gint meter_release (GdkEventButton*);
void reset_peak_display ();
void reset_group_peak_display (ARDOUR::RouteGroup*);
- static SigC::Signal0<void> ResetAllPeakDisplays;
- static SigC::Signal1<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
+ static sigc::signal<void> ResetAllPeakDisplays;
+ static sigc::signal<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
- static Gtkmmext::Pix* slider_pix;
+ static Glib::RefPtr<Gdk::Pixbuf> slider;
+ static Glib::RefPtr<Gdk::Pixbuf> rail;
static int setup_slider_pix ();
};