diff options
author | Robin Gareus <robin@gareus.org> | 2013-03-12 22:00:09 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-03-13 20:28:15 +0100 |
commit | 0c3e840700a915fc1476cef73c591048f688f81e (patch) | |
tree | 3241845f899cfed86217db2f6f589740b2b9c04a /gtk2_ardour/editor_rulers.cc | |
parent | d91565093965b3405774acd878b3baf38839f4e4 (diff) |
videotimline
squashed 694 commits from http://gareus.org/gitweb/?p=ardour3.git
Diffstat (limited to 'gtk2_ardour/editor_rulers.cc')
-rw-r--r-- | gtk2_ardour/editor_rulers.cc | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 3c73f0ce23..76152208c3 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -131,6 +131,9 @@ Editor::initialize_rulers () lab_children.push_back (Element(transport_mark_label, PACK_SHRINK, PACK_START)); lab_children.push_back (Element(cd_mark_label, PACK_SHRINK, PACK_START)); lab_children.push_back (Element(mark_label, PACK_SHRINK, PACK_START)); +#ifdef WITH_VIDEOTIMELINE + lab_children.push_back (Element(videotl_label, PACK_SHRINK, PACK_START)); +#endif ruler_lab_children.push_back (Element(minsec_label, PACK_SHRINK, PACK_START)); ruler_children.insert (canvaspos, Element(*minsec_ruler, PACK_SHRINK, PACK_START)); @@ -368,6 +371,32 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) ruler_items.push_back (SeparatorElem ()); break; +#ifdef WITH_VIDEOTIMELINE + case VideoBarItem: + ruler_items.push_back (MenuElem (_("Timeline height"))); + static_cast<MenuItem*>(&ruler_items.back())->set_sensitive(false); + ruler_items.push_back (CheckMenuElem (_("Large"), sigc::bind ( sigc::mem_fun(*this, &Editor::set_video_timeline_height), 6))); + if (videotl_bar_height == 6) { static_cast<CheckMenuItem*>(&ruler_items.back())->set_active(true);} + ruler_items.push_back (CheckMenuElem (_("Normal"), sigc::bind ( sigc::mem_fun(*this, &Editor::set_video_timeline_height), 4))); + if (videotl_bar_height == 4) { static_cast<CheckMenuItem*>(&ruler_items.back())->set_active(true);} + ruler_items.push_back (CheckMenuElem (_("Small"), sigc::bind ( sigc::mem_fun(*this, &Editor::set_video_timeline_height), 3))); + if (videotl_bar_height == 3) { static_cast<CheckMenuItem*>(&ruler_items.back())->set_active(true);} + ruler_items.push_back (SeparatorElem ()); + + ruler_items.push_back (MenuElem (_("Align Video Track"))); + static_cast<MenuItem*>(&ruler_items.back())->set_sensitive(false); + + ruler_items.push_back (CheckMenuElem (_("Lock"))); + { + CheckMenuItem* vtl_lock = static_cast<CheckMenuItem*>(&ruler_items.back()); + vtl_lock->set_active(is_video_timeline_locked()); + vtl_lock->signal_activate().connect (sigc::mem_fun(*this, &Editor::toggle_video_timeline_locked)); + } + + ruler_items.push_back (SeparatorElem ()); + break; +#endif + default: break; } @@ -418,6 +447,12 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) if (action) { ruler_items.push_back (MenuElem (*action->create_menu_item())); } +#ifdef WITH_VIDEOTIMELINE + action = ActionManager::get_action ("Rulers", "toggle-video-ruler"); + if (action) { + ruler_items.push_back (MenuElem (*action->create_menu_item())); + } +#endif editor_ruler_menu->popup (1, gtk_get_current_event_time()); @@ -439,6 +474,9 @@ Editor::store_ruler_visibility () node->add_property (X_("rangemarker"), ruler_range_action->get_active() ? "yes": "no"); node->add_property (X_("transportmarker"), ruler_loop_punch_action->get_active() ? "yes": "no"); node->add_property (X_("cdmarker"), ruler_cd_marker_action->get_active() ? "yes": "no"); +#ifdef WITH_VIDEOTIMELINE + node->add_property (X_("videotl"), ruler_video_action->get_active() ? "yes": "no"); +#endif _session->add_extra_xml (*node); _session->set_dirty (); @@ -539,6 +577,16 @@ Editor::restore_ruler_visibility () } } +#ifdef WITH_VIDEOTIMELINE + if ((prop = node->property ("videotl")) != 0) { + if (string_is_affirmative (prop->value())) { + ruler_video_action->set_active (true); + } else { + ruler_video_action->set_active (false); + } + } +#endif + } no_ruler_shown_update = false; @@ -604,6 +652,9 @@ Editor::update_ruler_visibility () transport_mark_label.hide(); cd_mark_label.hide(); mark_label.hide(); + #ifdef WITH_VIDEOTIMELINE + videotl_label.hide(); + #endif #endif if (ruler_meter_action->get_active()) { old_unit_pos = meter_group->property_y(); @@ -736,6 +787,32 @@ Editor::update_ruler_visibility () mark_label.hide(); } +#ifdef WITH_VIDEOTIMELINE + + if (ruler_video_action->get_active()) { + old_unit_pos = videotl_group->property_y(); + if (tbpos != old_unit_pos) { + videotl_group->move ( 0.0, tbpos - old_unit_pos); + } + old_unit_pos = videotl_bar_group->property_y(); + if (tbgpos != old_unit_pos) { + videotl_bar_group->move ( 0.0, tbgpos - old_unit_pos); + } + videotl_bar_group->show(); + videotl_group->show(); + videotl_label.show(); + tbpos += timebar_height * videotl_bar_height; + tbgpos += timebar_height * videotl_bar_height; + visible_timebars+=videotl_bar_height; + queue_visual_videotimeline_update(); + } else { + videotl_bar_group->hide(); + videotl_group->hide(); + videotl_label.hide(); + update_video_timeline(true); + } +#endif + gdouble old_canvas_timebars_vsize = canvas_timebars_vsize; canvas_timebars_vsize = (timebar_height * visible_timebars) - 1; gdouble vertical_pos_delta = canvas_timebars_vsize - old_canvas_timebars_vsize; |