reduce actual size of tool_cut.png to avoid blowing up h-padding on all other tool...
[ardour.git] / gtk2_ardour / mixer_strip.cc
index 981b6913c360ce43e7ae57b9b7481bd04fab528e..d21efb2a75131e242277e12e1b52c245026f8365 100644 (file)
@@ -292,6 +292,14 @@ MixerStrip::init ()
        width_hide_box.pack_start (top_event_box, true, true);
        width_hide_box.pack_end (hide_button, false, true);
 
+       number_label.set_text ("-");
+       number_label.set_no_show_all ();
+       number_label.set_name ("tracknumber label");
+       number_label.set_fixed_colors (0x80808080, 0x80808080);
+       number_label.set_elements (ArdourButton::Element(ArdourButton::Body | ArdourButton::Text));
+       number_label.set_alignment (.5, .5);
+       top_event_box.add (number_label);
+
        whvbox.pack_start (width_hide_box, true, true);
 
        global_vpacker.set_spacing (2);
@@ -335,6 +343,7 @@ MixerStrip::init ()
 
        /* ditto for this button and busses */
 
+       number_label.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::name_button_button_press), false);
        name_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::name_button_button_press), false);
        group_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::select_route_group), false);
 
@@ -380,6 +389,7 @@ MixerStrip::init ()
        parameter_changed (X_("mixer-strip-visibility"));
 
        Config->ParameterChanged.connect (_config_connection, MISSING_INVALIDATOR, boost::bind (&MixerStrip::parameter_changed, this, _1), gui_context());
+       _session->config.ParameterChanged.connect (_config_connection, MISSING_INVALIDATOR, boost::bind (&MixerStrip::parameter_changed, this, _1), gui_context());
 
        gpm.LevelMeterButtonPress.connect_same_thread (_level_meter_connection, boost::bind (&MixerStrip::level_meter_button_press, this, _1));
 }
@@ -585,12 +595,14 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
        if (!route()->is_master() && !route()->is_monitor()) {
                /* we don't allow master or control routes to be hidden */
                hide_button.show();
+               number_label.show();
        }
 
        gpm.reset_peak_display ();
        gpm.gain_display.show ();
        gpm.peak_display.show ();
 
+       top_event_box.show();
        width_button.show();
        width_hide_box.show();
        whvbox.show ();
@@ -1498,6 +1510,7 @@ MixerStrip::route_color_changed ()
 {
        name_button.modify_bg (STATE_NORMAL, color());
        top_event_box.modify_bg (STATE_NORMAL, color());
+       number_label.set_fixed_colors (gdk_color_to_rgba (color()), gdk_color_to_rgba (color()));
        reset_strip_style ();
 }
 
@@ -1602,10 +1615,28 @@ MixerStrip::name_changed ()
 {
        switch (_width) {
        case Wide:
+               if (_session->config.get_track_name_number()) {
+                       const int64_t track_number = _route->track_number ();
+                       if (track_number == 0) {
+                               number_label.set_text ("-");
+                               number_label.hide();
+                       } else {
+                               number_label.set_text (PBD::to_string (abs(_route->track_number ()), std::dec));
+                               number_label.show();
+                       }
+               } else {
+                       number_label.hide();
+               }
                name_button.set_text (_route->name());
                break;
        case Narrow:
-               name_button.set_text (PBD::short_version (_route->name(), 5));
+               number_label.hide();
+               if (_session->config.get_track_name_number()) {
+                       name_button.set_markup(track_number_to_string (_route->track_number (), " ",
+                                               PBD::short_version (_route->name (), 5)));
+               } else {
+                       name_button.set_text (PBD::short_version (_route->name(), 5));
+               }
                break;
        }
 
@@ -2079,6 +2110,9 @@ MixerStrip::parameter_changed (string p)
                */
                _visibility.set_state (Config->get_mixer_strip_visibility ());
        }
+       else if (p == "track-name-number") {
+               name_changed ();
+       }
 }
 
 /** Called to decide whether the solo isolate / solo lock button visibility should