X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Froute_time_axis.cc;h=e6a8f59be093fbf4299e5ae0783475d249a3a700;hb=471570705d58ee88f852009fee18f51562c34292;hp=ad2ad2233d77964e849c44251467850efa810cea;hpb=045ef69ac37550cf376d40443555a57a931fe7b0;p=ardour.git diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index ad2ad2233d..e6a8f59be0 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -50,8 +50,11 @@ #include "ardour/route_group.h" #include "ardour/session.h" #include "ardour/session_playlists.h" + #include "evoral/Parameter.hpp" +#include "canvas/debug.h" + #include "ardour_ui.h" #include "ardour_button.h" #include "debug.h" @@ -77,6 +80,7 @@ #include "i18n.h" using namespace ARDOUR; +using namespace ARDOUR_UI_UTILS; using namespace PBD; using namespace Gtkmm2ext; using namespace Gtk; @@ -104,6 +108,11 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCan , gm (sess, true, 125, 18) , _ignore_set_layer_display (false) { + number_label.set_corner_radius(2); + number_label.set_name("tracknumber label"); + number_label.set_alignment(.5, .5); + + sess->config.ParameterChanged.connect (*this, invalidator (*this), boost::bind (&RouteTimeAxisView::parameter_changed, this, _1), gui_context()); } void @@ -111,6 +120,10 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) { RouteUI::set_route (rt); + CANVAS_DEBUG_NAME (_canvas_display, string_compose ("main for %1", rt->name())); + CANVAS_DEBUG_NAME (selection_group, string_compose ("selections for %1", rt->name())); + CANVAS_DEBUG_NAME (_ghost_group, string_compose ("ghosts for %1", rt->name())); + int meter_width = 3; if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) { meter_width = 6; @@ -193,6 +206,7 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) _route->meter_change.connect (*this, invalidator (*this), bind (&RouteTimeAxisView::meter_changed, this), gui_context()); _route->input()->changed.connect (*this, invalidator (*this), boost::bind (&RouteTimeAxisView::io_changed, this, _1, _2), gui_context()); _route->output()->changed.connect (*this, invalidator (*this), boost::bind (&RouteTimeAxisView::io_changed, this, _1, _2), gui_context()); + _route->track_number_changed.connect (*this, invalidator (*this), boost::bind (&RouteTimeAxisView::label_view, this), gui_context()); controls_table.attach (*mute_button, 6, 7, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); @@ -200,8 +214,10 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) controls_table.attach (*solo_button, 7, 8, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); } - controls_table.attach (route_group_button, 7, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); - controls_table.attach (gm.get_gain_slider(), 0, 5, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::AttachOptions (0), 3, 0); + if (!ARDOUR::Profile->get_trx()) { + controls_table.attach (route_group_button, 7, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); + controls_table.attach (gm.get_gain_slider(), 0, 5, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::AttachOptions (0), 3, 0); + } ARDOUR_UI::instance()->set_tip(*solo_button,_("Solo")); ARDOUR_UI::instance()->set_tip(*mute_button,_("Mute")); @@ -213,11 +229,14 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) ARDOUR_UI::instance()->set_tip(automation_button, _("Automation")); } + update_track_number_visibility(); label_view (); - controls_table.attach (automation_button, 6, 7, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND); + if (!ARDOUR::Profile->get_trx()) { + controls_table.attach (automation_button, 6, 7, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND); + } - if (is_track() && track()->mode() == ARDOUR::Normal) { + if (!ARDOUR::Profile->get_trx() && is_track() && track()->mode() == ARDOUR::Normal) { controls_table.attach (playlist_button, 5, 6, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND); } @@ -325,12 +344,53 @@ RouteTimeAxisView::playlist_changed () void RouteTimeAxisView::label_view () { - string x = _route->name(); - - if (x != name_label.get_text()) { + string x = _route->name (); + if (x != name_label.get_text ()) { name_label.set_text (x); } + const int64_t track_number = _route->track_number (); + if (track_number == 0) { + number_label.set_text (""); + } else { + number_label.set_text (PBD::to_string (abs(_route->track_number ()), std::dec)); + } +} + +void +RouteTimeAxisView::update_track_number_visibility () +{ + bool show_label = _session->config.get_track_name_number(); + + if (_route && _route->is_master()) { + show_label = false; + } + + //if (show_label == number_label.is_visible()) { return; } + if (number_label.get_parent()) { + controls_table.remove (number_label); + } + if (name_hbox.get_parent()) { + controls_table.remove (name_hbox); + } + if (show_label) { + controls_table.attach (number_label, 0, 1, 0, 1, Gtk::SHRINK, Gtk::FILL|Gtk::EXPAND, 3, 0); + controls_table.attach (name_hbox, 1, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 3, 0); + number_label.set_size_request(3 + _session->track_number_decimals() * 8, -1); + name_hbox.show (); + number_label.show (); + } else { + controls_table.attach (name_hbox, 0, 5, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 3, 0); + name_hbox.show (); + number_label.hide (); + } +} +void +RouteTimeAxisView::parameter_changed (string const & p) +{ + if (p == "track-name-number") { + update_track_number_visibility(); + } } void @@ -691,7 +751,7 @@ RouteTimeAxisView::build_display_menu () } items.push_back (CheckMenuElem (_("Active"))); - CheckMenuItem* i = dynamic_cast (&items.back()); + Gtk::CheckMenuItem* i = dynamic_cast (&items.back()); bool click_sets_active = true; if (active > 0 && inactive == 0) { i->set_active (true); @@ -699,6 +759,7 @@ RouteTimeAxisView::build_display_menu () } else if (active > 0 && inactive > 0) { i->set_inconsistent (true); } + i->set_sensitive(! _session->transport_rolling()); i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::set_route_active), click_sets_active, true)); items.push_back (SeparatorElem()); @@ -718,7 +779,7 @@ RouteTimeAxisView::set_track_mode (TrackMode mode, bool apply_to_selection) _editor.get_selection().tracks.foreach_route_time_axis (boost::bind (&RouteTimeAxisView::set_track_mode, _1, mode, false)); } else { - bool needs_bounce; + bool needs_bounce = false; if (!track()->can_use_mode (mode, needs_bounce)) { @@ -2021,12 +2082,12 @@ RouteTimeAxisView::add_processor_to_subplugin_menu (boost::weak_ptr p for (std::set::const_iterator i = automatable.begin(); i != automatable.end(); ++i) { ProcessorAutomationNode* pan; - CheckMenuItem* mitem; + Gtk::CheckMenuItem* mitem; string name = processor->describe_parameter (*i); items.push_back (CheckMenuElem (name)); - mitem = dynamic_cast (&items.back()); + mitem = dynamic_cast (&items.back()); _subplugin_menu_map[*i] = mitem; @@ -2249,6 +2310,8 @@ RouteTimeAxisView::meter_changed () if (_route && !no_redraw) { request_redraw (); } + // reset peak when meter point changes + gm.reset_peak_display(); } void