X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fmixer_strip.cc;h=d21efb2a75131e242277e12e1b52c245026f8365;hb=4d5782781939126a41702cb27453553d0041aa54;hp=80548ea20b71c60a4b6d2fd525ed13fefadc269c;hpb=2e27e21d3a09889311e18a8efe11abcaa6d9c8b3;p=ardour.git diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 80548ea20b..d21efb2a75 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -37,6 +37,7 @@ #include "ardour/audio_track.h" #include "ardour/audioengine.h" #include "ardour/internal_send.h" +#include "ardour/meter.h" #include "ardour/midi_track.h" #include "ardour/pannable.h" #include "ardour/panner.h" @@ -68,6 +69,7 @@ #include "i18n.h" using namespace ARDOUR; +using namespace ARDOUR_UI_UTILS; using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; @@ -90,7 +92,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, bool in_mixer) , rec_solo_table (2, 2) , top_button_table (1, 2) , middle_button_table (1, 2) - , bottom_button_table (1, 2) + , bottom_button_table (1, 3) , meter_point_button (_("pre")) , midi_input_enable_button (0) , _comment_button (_("Comments")) @@ -118,7 +120,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt , button_size_group (Gtk::SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL)) , button_table (3, 1) , middle_button_table (1, 2) - , bottom_button_table (1, 2) + , bottom_button_table (1, 3) , meter_point_button (_("pre")) , midi_input_enable_button (0) , _comment_button (_("Comments")) @@ -131,6 +133,8 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt void MixerStrip::init () { + int button_table_row = 0; + input_selector = 0; output_selector = 0; group_menu = 0; @@ -173,7 +177,7 @@ MixerStrip::init () */ set_size_request_to_display_given_text (meter_point_button, _("tupni"), 5, 5); - bottom_button_table.attach (meter_point_button, 1, 2, 0, 1); + bottom_button_table.attach (meter_point_button, 2, 3, 0, 1); meter_point_button.signal_button_press_event().connect (sigc::mem_fun (gpm, &GainMeter::meter_press), false); meter_point_button.signal_button_release_event().connect (sigc::mem_fun (gpm, &GainMeter::meter_release), false); @@ -206,15 +210,19 @@ MixerStrip::init () top_button_table.set_homogeneous (true); top_button_table.set_spacings (2); - top_button_table.attach (*monitor_input_button, 0, 1, 0, 1); - top_button_table.attach (*monitor_disk_button, 1, 2, 0, 1); + if (!ARDOUR::Profile->get_trx()) { + top_button_table.attach (*monitor_input_button, 0, 1, 0, 1); + top_button_table.attach (*monitor_disk_button, 1, 2, 0, 1); + } top_button_table.show (); rec_solo_table.set_homogeneous (true); rec_solo_table.set_row_spacings (2); rec_solo_table.set_col_spacings (2); - rec_solo_table.attach (*solo_isolated_led, 1, 2, 0, 1); - rec_solo_table.attach (*solo_safe_led, 1, 2, 1, 2); + if (!ARDOUR::Profile->get_trx()) { + rec_solo_table.attach (*solo_isolated_led, 1, 2, 0, 1); + rec_solo_table.attach (*solo_safe_led, 1, 2, 1, 2); + } rec_solo_table.show (); button_table.set_homogeneous (false); @@ -236,17 +244,24 @@ MixerStrip::init () button_size_group->add_widget (*monitor_input_button); } - button_table.attach (name_button, 0, 1, 0, 1); - button_table.attach (input_button_box, 0, 1, 1, 2); - button_table.attach (_invert_button_box, 0, 1, 2, 3); + if (!ARDOUR::Profile->get_trx()) { + button_table.attach (name_button, 0, 1, button_table_row, button_table_row+1); + button_table_row++; + button_table.attach (input_button_box, 0, 2, button_table_row, button_table_row+1); + button_table_row++; + button_table.attach (_invert_button_box, 0, 2, button_table_row, button_table_row+1); + button_table_row++; + } middle_button_table.set_homogeneous (true); middle_button_table.set_spacings (2); bottom_button_table.set_spacings (2); - bottom_button_table.set_homogeneous (true); -// bottom_button_table.attach (group_button, 0, 1, 0, 1); - bottom_button_table.attach (gpm.gain_automation_state_button, 0, 1, 0, 1); + bottom_button_table.set_homogeneous (false); + button_table_row = 0; + bottom_button_table.attach (group_button, 0, 1, button_table_row, button_table_row+1); + bottom_button_table.attach (gpm.gain_automation_state_button, 1, 2, button_table_row, button_table_row+1); + button_table_row++; name_button.set_name ("mixer strip button"); name_button.set_text (" "); /* non empty text, forces creation of the layout */ @@ -277,20 +292,34 @@ 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); - global_vpacker.pack_start (whvbox, Gtk::PACK_SHRINK); - global_vpacker.pack_start (button_table, Gtk::PACK_SHRINK); - global_vpacker.pack_start (processor_box, true, true); + if (!ARDOUR::Profile->get_trx()) { + global_vpacker.pack_start (whvbox, Gtk::PACK_SHRINK); + global_vpacker.pack_start (button_table, Gtk::PACK_SHRINK); + global_vpacker.pack_start (processor_box, true, true); + } global_vpacker.pack_start (panners, Gtk::PACK_SHRINK); global_vpacker.pack_start (top_button_table, Gtk::PACK_SHRINK); global_vpacker.pack_start (rec_solo_table, Gtk::PACK_SHRINK); global_vpacker.pack_start (middle_button_table, Gtk::PACK_SHRINK); global_vpacker.pack_start (gpm, Gtk::PACK_SHRINK); global_vpacker.pack_start (bottom_button_table, Gtk::PACK_SHRINK); - global_vpacker.pack_start (output_button, Gtk::PACK_SHRINK); - global_vpacker.pack_start (_comment_button, Gtk::PACK_SHRINK); + if (!ARDOUR::Profile->get_trx()) { + global_vpacker.pack_start (output_button, Gtk::PACK_SHRINK); + global_vpacker.pack_start (_comment_button, Gtk::PACK_SHRINK); + } else { + global_vpacker.pack_start (name_button, Gtk::PACK_SHRINK); + } global_frame.add (global_vpacker); global_frame.set_shadow_type (Gtk::SHADOW_IN); @@ -314,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); @@ -359,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)); } @@ -496,6 +527,10 @@ MixerStrip::set_route (boost::shared_ptr rt) rec_enable_button->set_sensitive (_session->writable()); rec_enable_button->show(); + if (ARDOUR::Profile->get_trx()) { + rec_solo_table.attach (*monitor_input_button, 1, 2, 0, 2); + } + } else { /* non-master bus */ @@ -560,12 +595,14 @@ MixerStrip::set_route (boost::shared_ptr 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 (); @@ -992,18 +1029,11 @@ MixerStrip::maybe_add_bundle_to_output_menu (boost::shared_ptr b, ARDOUR void MixerStrip::update_diskstream_display () { - if (is_track()) { - - if (input_selector) { - input_selector->hide_all (); - } + if (is_track() && input_selector) { + input_selector->hide_all (); + } - route_color_changed (); - - } else { - - show_passthru_color (); - } + route_color_changed (); } void @@ -1033,6 +1063,7 @@ MixerStrip::connect_to_pan () if (panners._panner == 0) { panners.panshell_changed (); } + update_panner_choices(); } void @@ -1479,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 (); } @@ -1508,6 +1540,7 @@ MixerStrip::build_route_ops_menu () items.push_back (CheckMenuElem (_("Active"))); Gtk::CheckMenuItem* i = dynamic_cast (&items.back()); i->set_active (_route->active()); + i->set_sensitive(! _session->transport_rolling()); i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::set_route_active), !_route->active(), false)); items.push_back (SeparatorElem()); @@ -1582,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; } @@ -1869,6 +1920,7 @@ MixerStrip::show_send (boost::shared_ptr send) set_current_delivery (send); + send->meter()->set_type(_route->shared_peak_meter()->get_type()); send->set_metering (true); _current_delivery->DropReferences.connect (send_gone_connection, invalidator (*this), boost::bind (&MixerStrip::revert_to_default_display, this), gui_context()); @@ -1881,6 +1933,7 @@ MixerStrip::show_send (boost::shared_ptr send) panner_ui().set_panner (_current_delivery->panner_shell(), _current_delivery->panner()); panner_ui().set_available_panners(PannerManager::instance().PannerManager::get_available_panners(in, out)); panner_ui().setup_pan (); + panner_ui().set_send_drawing_mode (true); panner_ui().show_all (); input_button.set_sensitive (false); @@ -1916,6 +1969,7 @@ MixerStrip::revert_to_default_display () panner_ui().set_panner (_route->main_outs()->panner_shell(), _route->main_outs()->panner()); update_panner_choices(); panner_ui().setup_pan (); + panner_ui().set_send_drawing_mode (false); if (has_audio_outputs ()) { panners.show_all (); @@ -2056,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 @@ -2159,8 +2216,8 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev) _suspend_menu_callbacks = true; add_level_meter_item_point (items, group, _("Input"), MeterInput); - add_level_meter_item_point (items, group, _("Pre-fader"), MeterPreFader); - add_level_meter_item_point (items, group, _("Post-fader"), MeterPostFader); + add_level_meter_item_point (items, group, _("Pre Fader"), MeterPreFader); + add_level_meter_item_point (items, group, _("Post Fader"), MeterPostFader); add_level_meter_item_point (items, group, _("Output"), MeterOutput); add_level_meter_item_point (items, group, _("Custom"), MeterCustom);