X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmeter_strip.cc;h=b2ff7ecf1b8d5492548a5b01530b9c2ba05c5fb6;hb=4a00bdf04a8c1a88a3041b409c6a8db601b8adc9;hp=e7e0063f40b02148a1696e0eb60c3547cfc13857;hpb=353f857d6e6afb2782009fd556fe3d6b80da3d2a;p=ardour.git diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index e7e0063f40..b2ff7ecf1b 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -154,6 +154,7 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr rt) // peak display peak_display.set_name ("meterbridge peakindicator"); peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body)); + ARDOUR_UI::instance()->set_tip (peak_display, _("Reset Peak")); max_peak = minus_infinity(); peak_display.unset_flags (Gtk::CAN_FOCUS); peak_display.set_size_request(12, 8); @@ -171,19 +172,21 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr rt) name_changed(); name_label.set_corner_radius(2); + name_label.set_elements((ArdourButton::Element)(ArdourButton::Edge|ArdourButton::Body|ArdourButton::Text|ArdourButton::Inactive)); name_label.set_name("meterbridge label"); name_label.set_angle(-90.0); - name_label.layout()->set_ellipsize (Pango::ELLIPSIZE_END); - name_label.layout()->set_width(48 * PANGO_SCALE); + name_label.set_text_ellipsize (Pango::ELLIPSIZE_END); + name_label.set_layout_ellisize_width(48 * PANGO_SCALE); name_label.set_size_request(18, 50); name_label.set_alignment(-1.0, .5); ARDOUR_UI::instance()->set_tip (name_label, _route->name()); ARDOUR_UI::instance()->set_tip (*level_meter, _route->name()); number_label.set_corner_radius(2); + number_label.set_elements((ArdourButton::Element)(ArdourButton::Edge|ArdourButton::Body|ArdourButton::Text|ArdourButton::Inactive)); number_label.set_name("tracknumber label"); number_label.set_angle(-90.0); - number_label.layout()->set_width(18 * PANGO_SCALE); + number_label.set_layout_ellisize_width(18 * PANGO_SCALE); number_label.set_alignment(.5, .5); namebx.set_size_request(18, 52); @@ -204,25 +207,25 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr rt) btnbox.pack_start(solobox, false, false, 1); rec_enable_button->set_corner_radius(2); - rec_enable_button->set_size_request(16, 16); + rec_enable_button->set_size_request(18, 18); mute_button->set_corner_radius(2); - mute_button->set_size_request(16, 16); + mute_button->set_size_request(18, 18); solo_button->set_corner_radius(2); - solo_button->set_size_request(16, 16); + solo_button->set_size_request(18, 18); monitor_input_button->set_corner_radius(2); - monitor_input_button->set_size_request(16, 16); + monitor_input_button->set_size_request(18, 18); monitor_disk_button->set_corner_radius(2); - monitor_disk_button->set_size_request(16, 16); + monitor_disk_button->set_size_request(18, 18); - mutebox.set_size_request(16, 16); - solobox.set_size_request(16, 16); - recbox.set_size_request(16, 16); - mon_in_box.set_size_request(16, 16); - mon_disk_box.set_size_request(16, 16); + mutebox.set_size_request(18, 18); + solobox.set_size_request(18, 18); + recbox.set_size_request(18, 18); + mon_in_box.set_size_request(18, 18); + mon_disk_box.set_size_request(18, 18); spacer.set_size_request(-1,0); update_button_box(); @@ -339,9 +342,9 @@ MeterStrip::set_session (Session* s) } void -MeterStrip::update_rec_display () +MeterStrip::blink_rec_display (bool onoff) { - RouteUI::update_rec_display (); + RouteUI::blink_rec_display (onoff); } std::string @@ -354,8 +357,6 @@ void MeterStrip::set_button_names() { mute_button->set_text (_("M")); - rec_enable_button->set_text (""); - rec_enable_button->set_image (::get_icon (X_("record_normal_red"))); if (_route && _route->solo_safe()) { solo_button->set_visual_state (Gtkmm2ext::VisualState (solo_button->visual_state() | Gtkmm2ext::Insensitive)); @@ -393,6 +394,13 @@ MeterStrip::strip_property_changed (const PropertyChange& what_changed) } } +void +MeterStrip::route_color_changed () +{ + number_label.set_fixed_colors (gdk_color_to_rgba (color()), gdk_color_to_rgba (color())); +} + + void MeterStrip::fast_update () { @@ -400,8 +408,7 @@ MeterStrip::fast_update () if (mpeak > max_peak) { max_peak = mpeak; if (mpeak >= Config->get_meter_peak()) { - peak_display.set_name ("meterbridge peakindicator on"); - peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body)); + peak_display.set_active_state ( Gtkmm2ext::ExplicitActive ); } } } @@ -526,13 +533,14 @@ MeterStrip::on_size_allocate (Gtk::Allocation& a) } int tnh = 0; if (_session && _session->config.get_track_name_number()) { - tnh = 4 + _session->track_number_decimals() * 8; + // NB numbers are rotated 90deg. on the meterbridge + tnh = 4 + std::max(2u, _session->track_number_decimals()) * 8; // TODO 8 = max_with_of_digit_0_to_9() } namebx.set_size_request(18, nh + tnh); namenumberbx.set_size_request(18, nh + tnh); if (_route) { name_label.set_size_request(18, nh + (_route->is_master() ? tnh : -1)); - name_label.layout()->set_width((nh - 4 + (_route->is_master() ? tnh : 0)) * PANGO_SCALE); + name_label.set_layout_ellisize_width ((nh - 4 + (_route->is_master() ? tnh : 0)) * PANGO_SCALE); } VBox::on_size_allocate(a); } @@ -645,8 +653,7 @@ MeterStrip::reset_peak_display () _route->shared_peak_meter()->reset_max(); level_meter->clear_meters(); max_peak = -INFINITY; - peak_display.set_name ("meterbridge peakindicator"); - peak_display.set_elements((ArdourButton::Element) (ArdourButton::Edge|ArdourButton::Body)); + peak_display.set_active_state ( Gtkmm2ext::Off ); } bool @@ -661,7 +668,7 @@ MeterStrip::peak_button_release (GdkEventButton* ev) } else { ResetRoutePeakDisplays (_route.get()); } - return true; + return false; } void @@ -678,32 +685,32 @@ MeterStrip::update_button_box () if (!_session) return; int height = 0; if (_session->config.get_show_mute_on_meterbridge()) { - height += 18; + height += 20; mutebox.show(); } else { mutebox.hide(); } if (_session->config.get_show_solo_on_meterbridge()) { - height += 18; + height += 20; solobox.show(); } else { solobox.hide(); } if (_session->config.get_show_rec_on_meterbridge()) { - height += 18; + height += 20; recbox.show(); } else { recbox.hide(); } if (_session->config.get_show_monitor_on_meterbridge()) { - height += 18 + 18; + height += 20 + 20; mon_in_box.show(); mon_disk_box.show(); } else { mon_in_box.hide(); mon_disk_box.hide(); } - btnbox.set_size_request(16, height); + btnbox.set_size_request(18, height); check_resize(); } @@ -763,7 +770,9 @@ MeterStrip::name_changed () { number_label.set_text (PBD::to_string (abs(_route->track_number ()), std::dec)); number_label.show(); } - number_label.set_size_request(18, 4 + _session->track_number_decimals() * 8); + const int tnh = 4 + std::max(2u, _session->track_number_decimals()) * 8; // TODO 8 = max_width_of_digit_0_to_9() + // NB numbers are rotated 90deg. on the meterbridge -> use height + number_label.set_size_request(18, tnh); } else { number_label.hide(); }