ResetAllPeakDisplays.connect (sigc::mem_fun(*this, &GainMeterBase::reset_peak_display));
ResetRoutePeakDisplays.connect (sigc::mem_fun(*this, &GainMeterBase::reset_route_peak_display));
ResetGroupPeakDisplays.connect (sigc::mem_fun(*this, &GainMeterBase::reset_group_peak_display));
+ RedrawMetrics.connect (sigc::mem_fun(*this, &GainMeterBase::redraw_metrics));
UI::instance()->theme_changed.connect (sigc::mem_fun(*this, &GainMeterBase::on_theme_changed));
ColorsChanged.connect (sigc::bind(sigc::mem_fun (*this, &GainMeterBase::color_handler), false));
void
GainMeter::hide_all_meters ()
{
- bool remove_metric_area = false;
-
GainMeterBase::hide_all_meters ();
-
- if (remove_metric_area) {
- if (meter_metric_area.get_parent()) {
- level_meter->remove (meter_metric_area);
- }
- }
}
void
GainMeterBase::setup_meters (int len)
{
int meter_width = 5;
- if (_width == Wide && _route && _route->shared_peak_meter()->input_streams().n_total() == 1) {
- meter_width = 10;
- }
- level_meter->setup_meters(len, meter_width);
switch (_width) {
- case Wide:
- //meter_metric_area.show();
- meter_ticks1_area.show();
- meter_ticks2_area.show();
- break;
- case Narrow:
- //meter_metric_area.hide();
- meter_ticks1_area.hide();
- meter_ticks2_area.hide();
- break;
+ case Wide:
+ meter_ticks1_area.show();
+ meter_ticks2_area.show();
+ if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) {
+ meter_width = 10;
+ }
+ break;
+ case Narrow:
+ meter_width = 2;
+ meter_ticks1_area.hide();
+ meter_ticks2_area.hide();
+ break;
}
+ level_meter->setup_meters(len, meter_width);
+}
+
+void
+GainMeterBase::set_type (MeterType t)
+{
+ level_meter->set_type(t);
}
void
GainMeter::setup_meters (int len)
{
+ switch (_width) {
+ case Wide:
+ hbox.set_homogeneous(true);
+ break;
+ case Narrow:
+ hbox.set_homogeneous(false);
+ break;
+ }
GainMeterBase::setup_meters (len);
}
+void
+GainMeter::set_type (MeterType t)
+{
+ GainMeterBase::set_type (t);
+}
+
bool
GainMeterBase::gain_key_press (GdkEventKey* ev)
{
snprintf (buf, sizeof(buf), "%.1f", mpeak);
peak_display.set_label (buf);
}
-
- if (mpeak >= 0.0f) {
- peak_display.set_name ("MixerStripPeakDisplayPeak");
- }
+ }
+ if (mpeak >= Config->get_meter_peak()) {
+ peak_display.set_name ("MixerStripPeakDisplayPeak");
}
}
void GainMeterBase::color_handler(bool dpi)
{
- meter_clear_pattern_cache();
setup_meters();
- meter_metric_area.queue_draw ();
- meter_ticks1_area.queue_draw ();
- meter_ticks2_area.queue_draw ();
}
void
void
GainMeterBase::on_theme_changed()
{
- meter_clear_pattern_cache();
+}
+
+void
+GainMeterBase::redraw_metrics()
+{
meter_metric_area.queue_draw ();
meter_ticks1_area.queue_draw ();
meter_ticks2_area.queue_draw ();
gain_display_box.pack_start (gain_display, true, true);
meter_metric_area.set_name ("AudioTrackMetrics");
- set_size_request_to_display_given_text (meter_metric_area, "-8888", 1, 0);
+ meter_metric_area.set_size_request(24, -1);
gain_automation_style_button.set_name ("mixer strip button");
gain_automation_state_button.set_name ("mixer strip button");
sigc::mem_fun(*this, &GainMeter::meter_ticks2_expose));
meter_hbox.pack_start (meter_ticks1_area, false, false);
- meter_hbox.pack_start (meter_alignment, true, true);
+ meter_hbox.pack_start (meter_alignment, false, false);
meter_hbox.pack_start (meter_ticks2_area, false, false);
meter_hbox.pack_start (meter_metric_area, false, false);
}
_meter->ConfigurationChanged.connect (
model_connections, invalidator (*this), boost::bind (&GainMeter::meter_configuration_changed, this, _1), gui_context()
);
+ _meter->TypeChanged.connect (
+ model_connections, invalidator (*this), boost::bind (&GainMeter::meter_type_changed, this, _1), gui_context()
+ );
meter_configuration_changed (_meter->input_streams ());
}
GainMeter::get_gm_width ()
{
Gtk::Requisition sz;
- hbox.size_request (sz);
- return sz.width;
+ int min_w = 0;
+ meter_metric_area.size_request (sz);
+ min_w += sz.width;
+ level_meter->size_request (sz);
+ min_w += sz.width;
+
+ fader_alignment.size_request (sz);
+ if (_width == Wide)
+ return max(sz.width * 2, min_w * 2) + 6;
+ else
+ return sz.width + min_w + 6;
+
}
gint
set_meter_strip_name ("AudioMidiTrackMetricsInactive");
}
}
-
- meter_clear_pattern_cache();
- meter_metric_area.queue_draw ();
- meter_ticks1_area.queue_draw ();
- meter_ticks2_area.queue_draw ();
+ meter_clear_pattern_cache(); // XXX only once
}
+void
+GainMeter::meter_type_changed (MeterType t)
+{
+ _route->set_meter_type(t);
+}