#include <ardour/types.h>
-#include <gtkmm2ext/slider_controller.h>
#include <gtkmm2ext/click_box.h>
+#include <gtkmm2ext/focus_entry.h>
+#include <gtkmm2ext/slider_controller.h>
#include "enums.h"
class GainMeter : public Gtk::VBox
{
public:
- GainMeter (ARDOUR::IO&, ARDOUR::Session&);
+ GainMeter (boost::shared_ptr<ARDOUR::IO>, ARDOUR::Session&);
~GainMeter ();
void update_gain_sensitive ();
private:
friend class MixerStrip;
- ARDOUR::IO& _io;
+ boost::shared_ptr<ARDOUR::IO> _io;
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;
- Gtk::Button gain_unit_button;
- Gtk::Label gain_unit_label;
+ Gtkmm2ext::FocusEntry gain_display;
+ Gtk::Entry peak_display;
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;
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;
vector<MeterInfo> meters;
float max_peak;
-Gtk::VBox* fader_vbox;
+ 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 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*);
bool wait_for_release;
ARDOUR::MeterPoint old_meter_point;
- void meter_hold_changed();
+ void parameter_changed (const char*);
void reset_peak_display ();
void reset_group_peak_display (ARDOUR::RouteGroup*);