X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Froute_time_axis.cc;h=2e3098bf4787e3fc92a614f2dd25b2312515f144;hb=b604dd24139b4c84f20521af91ec4c0cd721bd13;hp=0fbbd834701a335fdb7176707e22de140015a98c;hpb=5249f826035c35ae3ea75cbbd2457a0d8a510a79;p=ardour.git diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 0fbbd83470..2e3098bf47 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -57,7 +57,6 @@ #include "global_signals.h" #include "route_time_axis.h" #include "automation_time_axis.h" -#include "canvas_impl.h" #include "enums.h" #include "gui_thread.h" #include "keyboard.h" @@ -68,7 +67,6 @@ #include "region_view.h" #include "rgb_macros.h" #include "selection.h" -#include "simplerect.h" #include "streamview.h" #include "utils.h" #include "route_group_menu.h" @@ -85,22 +83,7 @@ using namespace Editing; using namespace std; using std::list; -Glib::RefPtr RouteTimeAxisView::slider; -Glib::RefPtr RouteTimeAxisView::slider_desensitised; - -void -RouteTimeAxisView::setup_slider_pix () -{ - if ((slider = ::get_icon ("fader_belt_h_medium")) == 0) { - throw failed_constructor (); - } - - if ((slider_desensitised = ::get_icon ("fader_belt_h_medium_desensitised")) == 0) { - throw failed_constructor (); - } -} - -RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, Canvas& canvas) +RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCanvas::Canvas& canvas) : AxisView(sess) , RouteUI(sess) , TimeAxisView(sess,ed,(TimeAxisView*) 0, canvas) @@ -117,7 +100,7 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, Canvas& c , playlist_action_menu (0) , mode_menu (0) , color_mode_menu (0) - , gm (sess, slider, slider_desensitised, true, 125) + , gm (sess, true, 125, 18) , _ignore_set_layer_display (false) { } @@ -126,7 +109,7 @@ void RouteTimeAxisView::set_route (boost::shared_ptr rt) { RouteUI::set_route (rt); - + gm.set_controls (_route, _route->shared_peak_meter(), _route->amp()); gm.get_level_meter().set_no_show_all(); gm.get_level_meter().setup_meters(50); @@ -139,7 +122,7 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) set_height (preset_height (HeightNormal)); } - if (!_route->is_hidden()) { + if (!_route->is_auditioner()) { if (gui_property ("visible").empty()) { set_gui_property ("visible", true); } @@ -181,8 +164,10 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) if (is_midi_track()) { ARDOUR_UI::instance()->set_tip(*rec_enable_button, _("Record (Right-click for Step Edit)")); + gm.set_fader_name ("MidiTrackFader"); } else { ARDOUR_UI::instance()->set_tip(*rec_enable_button, _("Record")); + gm.set_fader_name ("AudioTrackFader"); } rec_enable_button->set_sensitive (_session->writable()); @@ -190,7 +175,9 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) /* set playlist button tip to the current playlist, and make it update when it changes */ update_playlist_tip (); track()->PlaylistChanged.connect (*this, invalidator (*this), ui_bind(&RouteTimeAxisView::update_playlist_tip, this), gui_context()); - + + } else { + gm.set_fader_name ("AudioBusFader"); } controls_hbox.pack_start(gm.get_level_meter(), false, false); @@ -205,11 +192,7 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) } controls_table.attach (route_group_button, 7, 8, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); -// Gtk::VBox* pad = manage (new Gtk::VBox); -// pad->pack_start (gm.get_gain_slider(), false, false); -// pad->pack_start (*manage (new Gtk::Label), true, true); -// pad->show_all (); - controls_table.attach (gm.get_gain_slider(), 0, 5, 1, 2, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 3, 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")); @@ -246,27 +229,23 @@ RouteTimeAxisView::set_route (boost::shared_ptr rt) /* pick up the correct freeze state */ map_frozen (); - } - _editor.ZoomChanged.connect (sigc::mem_fun(*this, &RouteTimeAxisView::reset_samples_per_unit)); + } + + _editor.ZoomChanged.connect (sigc::mem_fun(*this, &RouteTimeAxisView::reset_samples_per_pixel)); _editor.HorizontalPositionChanged.connect (sigc::mem_fun (*this, &RouteTimeAxisView::horizontal_position_changed)); ColorsChanged.connect (sigc::mem_fun (*this, &RouteTimeAxisView::color_handler)); PropertyList* plist = new PropertyList(); - plist->add (ARDOUR::Properties::edit, true); plist->add (ARDOUR::Properties::mute, true); plist->add (ARDOUR::Properties::solo, true); route_group_menu = new RouteGroupMenu (_session, plist); gm.get_gain_slider().signal_scroll_event().connect(sigc::mem_fun(*this, &RouteTimeAxisView::controls_ebox_scroll), false); - gm.get_gain_slider().set_name ("GainFader"); gm.get_level_meter().signal_scroll_event().connect (sigc::mem_fun (*this, &RouteTimeAxisView::controls_ebox_scroll), false); - - show_name_entry (); - hide_name_label (); } RouteTimeAxisView::~RouteTimeAxisView () @@ -340,15 +319,10 @@ RouteTimeAxisView::label_view () { string x = _route->name(); - if (x != name_entry.get_text()) { - name_entry.set_text (x); - } - if (x != name_label.get_text()) { name_label.set_text (x); } - ARDOUR_UI::instance()->set_tip (name_entry, Glib::Markup::escape_text(x)); } void @@ -411,14 +385,13 @@ RouteTimeAxisView::build_automation_action_menu (bool for_selection) items.push_back (MenuElem (_("Hide All Automation"), sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::hide_all_automation), for_selection))); - items.push_back (SeparatorElem ()); - /* Attach the plugin submenu. It may have previously been used elsewhere, so it was detached above */ if (!subplugin_menu.items().empty()) { - items.push_back (MenuElem (_("Plugins"), subplugin_menu)); + items.push_back (SeparatorElem ()); + items.push_back (MenuElem (_("Processor automation"), subplugin_menu)); items.back().set_sensitive (!for_selection || _editor.get_selection().tracks.size() == 1);; } } @@ -663,10 +636,6 @@ RouteTimeAxisView::build_display_menu () items.push_back (MenuElem (_("Mode"), *mode_menu)); } - color_mode_menu = build_color_mode_menu(); - if (color_mode_menu) { - items.push_back (MenuElem (_("Color Mode"), *color_mode_menu)); - } items.push_back (SeparatorElem()); @@ -804,13 +773,9 @@ RouteTimeAxisView::show_timestretch (framepos_t start, framepos_t end, int layer #endif if (timestretch_rect == 0) { - timestretch_rect = new SimpleRect (*canvas_display ()); - timestretch_rect->property_x1() = 0.0; - timestretch_rect->property_y1() = 0.0; - timestretch_rect->property_x2() = 0.0; - timestretch_rect->property_y2() = 0.0; - timestretch_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get(); - timestretch_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get(); + timestretch_rect = new ArdourCanvas::Rectangle (canvas_display ()); + timestretch_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TimeStretchFill()); + timestretch_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_TimeStretchOutline()); } timestretch_rect->show (); @@ -819,10 +784,8 @@ RouteTimeAxisView::show_timestretch (framepos_t start, framepos_t end, int layer double const x1 = start / _editor.get_current_zoom(); double const x2 = (end - 1) / _editor.get_current_zoom(); - timestretch_rect->property_x1() = x1; - timestretch_rect->property_y1() = current_height() * (layers - layer - 1) / layers; - timestretch_rect->property_x2() = x2; - timestretch_rect->property_y2() = current_height() * (layers - layer) / layers; + timestretch_rect->set (ArdourCanvas::Rect (x1, current_height() * (layers - layer - 1) / layers, + x2, current_height() * (layers - layer) / layers)); } void @@ -927,9 +890,9 @@ RouteTimeAxisView::route_color_changed () } void -RouteTimeAxisView::reset_samples_per_unit () +RouteTimeAxisView::reset_samples_per_pixel () { - set_samples_per_unit (_editor.get_current_zoom()); + set_samples_per_pixel (_editor.get_current_zoom()); } void @@ -941,7 +904,7 @@ RouteTimeAxisView::horizontal_position_changed () } void -RouteTimeAxisView::set_samples_per_unit (double spu) +RouteTimeAxisView::set_samples_per_pixel (double fpp) { double speed = 1.0; @@ -950,10 +913,10 @@ RouteTimeAxisView::set_samples_per_unit (double spu) } if (_view) { - _view->set_samples_per_unit (spu * speed); + _view->set_samples_per_pixel (fpp * speed); } - TimeAxisView::set_samples_per_unit (spu * speed); + TimeAxisView::set_samples_per_pixel (fpp * speed); } void @@ -1062,7 +1025,7 @@ RouteTimeAxisView::use_copy_playlist (bool prompt, vectorname(); - if (route_group() && route_group()->is_active() && route_group()->enabled_property (ARDOUR::Properties::edit.property_id)) { + if (route_group() && route_group()->is_active() && route_group()->enabled_property (ARDOUR::Properties::select.property_id)) { name = resolve_new_group_playlist_name(name, playlists_before_op); } @@ -1117,7 +1080,7 @@ RouteTimeAxisView::use_new_playlist (bool prompt, vectorname(); - if (route_group() && route_group()->is_active() && route_group()->enabled_property (ARDOUR::Properties::edit.property_id)) { + if (route_group() && route_group()->is_active() && route_group()->enabled_property (ARDOUR::Properties::select.property_id)) { name = resolve_new_group_playlist_name(name,playlists_before_op); } @@ -1171,7 +1134,7 @@ RouteTimeAxisView::clear_playlist () void RouteTimeAxisView::speed_changed () { - Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&RouteTimeAxisView::reset_samples_per_unit, this)); + Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&RouteTimeAxisView::reset_samples_per_pixel, this)); } void @@ -1305,7 +1268,9 @@ RouteTimeAxisView::playlist () const void RouteTimeAxisView::name_entry_changed () { - string x = name_entry.get_text (); + TimeAxisView::name_entry_changed (); + + string x = name_entry->get_text (); if (x == _route->name()) { return; @@ -1314,18 +1279,18 @@ RouteTimeAxisView::name_entry_changed () strip_whitespace_edges (x); if (x.length() == 0) { - name_entry.set_text (_route->name()); + name_entry->set_text (_route->name()); return; } if (_session->route_name_internal (x)) { ARDOUR_UI::instance()->popup_error (string_compose (_("You cannot create a track with that name as it is reserved for %1"), PROGRAM_NAME)); - name_entry.grab_focus (); + name_entry->grab_focus (); } else if (RouteUI::verify_new_route_name (x)) { _route->set_name (x); } else { - name_entry.grab_focus (); + name_entry->grab_focus (); } } @@ -1498,7 +1463,7 @@ RouteTimeAxisView::build_playlist_menu () playlist_items.push_back (MenuElem (_("Rename..."), sigc::mem_fun(*this, &RouteTimeAxisView::rename_current_playlist))); playlist_items.push_back (SeparatorElem()); - if (!route_group() || !route_group()->is_active() || !route_group()->enabled_property (ARDOUR::Properties::edit.property_id)) { + if (!route_group() || !route_group()->is_active() || !route_group()->enabled_property (ARDOUR::Properties::select.property_id)) { playlist_items.push_back (MenuElem (_("New..."), sigc::bind(sigc::mem_fun(_editor, &PublicEditor::new_playlists), this))); playlist_items.push_back (MenuElem (_("New Copy..."), sigc::bind(sigc::mem_fun(_editor, &PublicEditor::copy_playlists), this))); @@ -1542,7 +1507,7 @@ RouteTimeAxisView::use_playlist (RadioMenuItem *item, boost::weak_ptr RouteGroup* rg = route_group(); - if (rg && rg->is_active() && rg->enabled_property (ARDOUR::Properties::edit.property_id)) { + if (rg && rg->is_active() && rg->enabled_property (ARDOUR::Properties::select.property_id)) { std::string group_string = "." + rg->name() + "."; std::string take_name = pl->name(); @@ -1588,7 +1553,7 @@ void RouteTimeAxisView::update_playlist_tip () { RouteGroup* rg = route_group (); - if (rg && rg->is_active() && rg->enabled_property (ARDOUR::Properties::edit.property_id)) { + if (rg && rg->is_active() && rg->enabled_property (ARDOUR::Properties::select.property_id)) { string group_string = "." + rg->name() + "."; string take_name = track()->playlist()->name(); @@ -1647,11 +1612,11 @@ RouteTimeAxisView::color_handler () { //case cTimeStretchOutline: if (timestretch_rect) { - timestretch_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get(); + timestretch_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_TimeStretchOutline()); } //case cTimeStretchFill: if (timestretch_rect) { - timestretch_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get(); + timestretch_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_TimeStretchFill()); } reset_meter(); @@ -2175,11 +2140,18 @@ RouteTimeAxisView::reset_processor_automation_curves () } } +bool +RouteTimeAxisView::can_edit_name () const +{ + /* we do not allow track name changes if it is record enabled + */ + return !_route->record_enabled(); +} + void RouteTimeAxisView::update_rec_display () { RouteUI::update_rec_display (); - name_entry.set_sensitive (!_route->record_enabled()); } void