X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.cc;h=d525761140384c43e4fa42f62ba05cf14d06d60e;hb=e9f4c5fc1c9bfd5fa6d5abb88a5161630ad56ef0;hp=6a20d81316693d9f9f8a06f3bc54c39785a8a7d1;hpb=f9e5e4360e54f5ff5327b4384ee451d86f8dec91;p=ardour.git diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 6a20d81316..d525761140 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -302,9 +302,11 @@ Editor::Editor () , minsec_mark_interval (0) , minsec_mark_modulo (0) , minsec_nmarks (0) + , timecode_ruler_scale (timecode_show_many_hours) , timecode_mark_modulo (0) , timecode_nmarks (0) , _samples_ruler_interval (0) + , bbt_ruler_scale (bbt_show_many) , bbt_bars (0) , bbt_nmarks (0) , bbt_bar_helper_on (0) @@ -351,7 +353,7 @@ Editor::Editor () , cut_buffer_start (0) , cut_buffer_length (0) , button_bindings (0) - , last_paste_pos (0) + , last_paste_pos (-1) , paste_count (0) , sfbrowser (0) , current_interthread_info (0) @@ -684,33 +686,21 @@ Editor::Editor () editor_summary_pane.set_check_divider_position (true); editor_summary_pane.add (edit_packer); - Button* summary_arrows_left_left = manage (new Button); - summary_arrows_left_left->add (*manage (new Arrow (ARROW_LEFT, SHADOW_NONE))); - summary_arrows_left_left->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), LEFT))); - summary_arrows_left_left->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release)); + Button* summary_arrow_left = manage (new Button); + summary_arrow_left->add (*manage (new Arrow (ARROW_LEFT, SHADOW_NONE))); + summary_arrow_left->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), LEFT))); + summary_arrow_left->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release)); - Button* summary_arrows_left_right = manage (new Button); - summary_arrows_left_right->add (*manage (new Arrow (ARROW_RIGHT, SHADOW_NONE))); - summary_arrows_left_right->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), RIGHT))); - summary_arrows_left_right->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release)); + Button* summary_arrow_right = manage (new Button); + summary_arrow_right->add (*manage (new Arrow (ARROW_RIGHT, SHADOW_NONE))); + summary_arrow_right->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), RIGHT))); + summary_arrow_right->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release)); VBox* summary_arrows_left = manage (new VBox); - summary_arrows_left->pack_start (*summary_arrows_left_left); - summary_arrows_left->pack_start (*summary_arrows_left_right); - - Button* summary_arrows_right_up = manage (new Button); - summary_arrows_right_up->add (*manage (new Arrow (ARROW_UP, SHADOW_NONE))); - summary_arrows_right_up->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), UP))); - summary_arrows_right_up->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release)); - - Button* summary_arrows_right_down = manage (new Button); - summary_arrows_right_down->add (*manage (new Arrow (ARROW_DOWN, SHADOW_NONE))); - summary_arrows_right_down->signal_pressed().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &Editor::scroll_press), DOWN))); - summary_arrows_right_down->signal_released().connect (sigc::mem_fun (*this, &Editor::scroll_release)); + summary_arrows_left->pack_start (*summary_arrow_left); VBox* summary_arrows_right = manage (new VBox); - summary_arrows_right->pack_start (*summary_arrows_right_up); - summary_arrows_right->pack_start (*summary_arrows_right_down); + summary_arrows_right->pack_start (*summary_arrow_right); Frame* summary_frame = manage (new Frame); summary_frame->set_shadow_type (Gtk::SHADOW_ETCHED_IN); @@ -1142,7 +1132,7 @@ Editor::deferred_control_scroll (framepos_t /*target*/) } void -Editor::access_action (std::string action_group, std::string action_item) +Editor::access_action (const std::string& action_group, const std::string& action_item) { if (!_session) { return; @@ -1158,6 +1148,12 @@ Editor::access_action (std::string action_group, std::string action_item) } } +void +Editor::set_toggleaction (const std::string& action_group, const std::string& action_item, bool s) +{ + ActionManager::set_toggleaction_state (action_group.c_str(), action_item.c_str(), s); +} + void Editor::on_realize () { @@ -1323,6 +1319,10 @@ Editor::set_session (Session *t) return; } + //initialize leftmost_frame to the extents of the session + //this prevents a bogus setting of leftmost = "0" if the summary view asks for the leftmost frame before the visible state has been loaded from instant.xml + leftmost_frame = session_gui_extents().first; + _playlist_selector->set_session (_session); nudge_clock->set_session (_session); _summary->set_session (_session); @@ -3824,11 +3824,21 @@ Editor::set_visible_track_count (int32_t n) str = s.str(); } else if (_visible_track_count == 0) { uint32_t n = 0; - for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { + for (TrackViewList::const_iterator i = track_views.begin(); i != track_views.end(); ++i) { if ((*i)->marked_for_display()) { ++n; + TimeAxisView::Children cl ((*i)->get_child_list ()); + for (TimeAxisView::Children::const_iterator j = cl.begin(); j != cl.end(); ++j) { + if ((*j)->marked_for_display()) { + ++n; + } + } } } + if (n == 0) { + visible_tracks_selector.set_text (X_("*")); + return; + } h = trackviews_height() / n; str = _("All"); } else { @@ -5552,15 +5562,15 @@ Editor::foreach_time_axis_view (sigc::slot theslot) } } -/** Find a RouteTimeAxisView by the ID of its route */ -RouteTimeAxisView* -Editor::get_route_view_by_route_id (const PBD::ID& id) const +/** Find a StripableTimeAxisView by the ID of its stripable */ +StripableTimeAxisView* +Editor::get_stripable_time_axis_by_id (const PBD::ID& id) const { - RouteTimeAxisView* v; + StripableTimeAxisView* v; for (TrackViewList::const_iterator i = track_views.begin(); i != track_views.end(); ++i) { - if((v = dynamic_cast(*i)) != 0) { - if(v->route()->id() == id) { + if((v = dynamic_cast(*i)) != 0) { + if(v->stripable()->id() == id) { return v; } }