summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_rulers.cc
diff options
context:
space:
mode:
authorJesse Chappell <jesse@essej.net>2007-11-23 04:57:39 +0000
committerJesse Chappell <jesse@essej.net>2007-11-23 04:57:39 +0000
commit90a5607604a6a8853fa780285561aff706531589 (patch)
tree0437e4e6d85667392f05b982401d569a2c389d87 /gtk2_ardour/editor_rulers.cc
parent8af8f2ee276e3f427895e0e57deab29dfa026d2b (diff)
added cd marker ruler, which displays and allows quick addition of cd track markers/ranges when visible, otherwise the cd markers are shown in the normal mark/range rulers.
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2711 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_rulers.cc')
-rw-r--r--gtk2_ardour/editor_rulers.cc54
1 files changed, 53 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc
index b0791f789a..b78ea7e497 100644
--- a/gtk2_ardour/editor_rulers.cc
+++ b/gtk2_ardour/editor_rulers.cc
@@ -90,6 +90,7 @@ Editor::initialize_rulers ()
ruler_shown[ruler_time_marker] = true;
ruler_shown[ruler_time_range_marker] = true;
ruler_shown[ruler_time_transport_marker] = true;
+ ruler_shown[ruler_time_cd_marker] = true;
ruler_shown[ruler_metric_frames] = false;
ruler_shown[ruler_metric_minsec] = false;
@@ -331,7 +332,7 @@ Editor::popup_ruler_menu (nframes_t where, ItemType t)
switch (t) {
case MarkerBarItem:
- ruler_items.push_back (MenuElem (_("New location marker"), bind ( mem_fun(*this, &Editor::mouse_add_new_marker), where)));
+ ruler_items.push_back (MenuElem (_("New location marker"), bind ( mem_fun(*this, &Editor::mouse_add_new_marker), where, false)));
ruler_items.push_back (MenuElem (_("Clear all locations"), mem_fun(*this, &Editor::clear_markers)));
ruler_items.push_back (MenuElem (_("Unhide locations"), mem_fun(*this, &Editor::unhide_markers)));
ruler_items.push_back (SeparatorElem ());
@@ -346,7 +347,13 @@ Editor::popup_ruler_menu (nframes_t where, ItemType t)
case TransportMarkerBarItem:
break;
+
+ case CdMarkerBarItem:
+ // TODO
+ ruler_items.push_back (MenuElem (_("New CD track marker"), bind ( mem_fun(*this, &Editor::mouse_add_new_marker), where, true)));
+ break;
+
case TempoBarItem:
ruler_items.push_back (MenuElem (_("New Tempo"), bind ( mem_fun(*this, &Editor::mouse_add_new_tempo_event), where)));
ruler_items.push_back (MenuElem (_("Clear tempo")));
@@ -413,6 +420,12 @@ Editor::popup_ruler_menu (nframes_t where, ItemType t)
mitem->set_active(true);
}
+ ruler_items.push_back (CheckMenuElem (_("CD Markers"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_cd_marker)));
+ mitem = (CheckMenuItem *) &ruler_items.back();
+ if (ruler_shown[ruler_time_cd_marker]) {
+ mitem->set_active(true);
+ }
+
ruler_items.push_back (CheckMenuElem (_("Loop/Punch Ranges"), bind (mem_fun(*this, &Editor::ruler_toggled), (int)ruler_time_transport_marker)));
mitem = (CheckMenuItem *) &ruler_items.back();
if (ruler_shown[ruler_time_transport_marker]) {
@@ -461,6 +474,7 @@ Editor::store_ruler_visibility ()
node->add_property (X_("marker"), ruler_shown[ruler_time_marker] ? "yes": "no");
node->add_property (X_("rangemarker"), ruler_shown[ruler_time_range_marker] ? "yes": "no");
node->add_property (X_("transportmarker"), ruler_shown[ruler_time_transport_marker] ? "yes": "no");
+ node->add_property (X_("cdmarker"), ruler_shown[ruler_time_cd_marker] ? "yes": "no");
session->add_extra_xml (*node);
session->set_dirty ();
@@ -528,6 +542,26 @@ Editor::restore_ruler_visibility ()
ruler_shown[ruler_time_transport_marker] = false;
}
+ if ((prop = node->property ("cdmarker")) != 0) {
+ if (prop->value() == "yes")
+ ruler_shown[ruler_time_cd_marker] = true;
+ else
+ ruler_shown[ruler_time_cd_marker] = false;
+ }
+ else {
+ // this session doesn't yet know about the cdmarker ruler
+ // as a benefit to the user who doesn't know the feature exists, show the ruler if
+ // any cd marks exist
+ ruler_shown[ruler_time_cd_marker] = false;
+ const Locations::LocationList & locs = session->locations()->list();
+ for (Locations::LocationList::const_iterator i = locs.begin(); i != locs.end(); ++i) {
+ if ((*i)->is_cd_marker()) {
+ ruler_shown[ruler_time_cd_marker] = true;
+ break;
+ }
+ }
+ }
+
}
update_ruler_visibility ();
@@ -682,6 +716,24 @@ Editor::update_ruler_visibility ()
else {
transport_marker_group->hide();
}
+
+ if (ruler_shown[ruler_time_cd_marker]) {
+ lab_children.push_back (Element(cd_mark_label, PACK_SHRINK, PACK_START));
+ old_unit_pos = cd_marker_group->property_y();
+ if (tbpos != old_unit_pos) {
+ cd_marker_group->move (0.0, tbpos - old_unit_pos);
+ }
+ cd_marker_group->show();
+ tbpos += timebar_height;
+ visible_timebars++;
+ // make sure all cd markers show up in their respective places
+ update_cd_marker_display();
+ }
+ else {
+ cd_marker_group->hide();
+ // make sure all cd markers show up in their respective places
+ update_cd_marker_display();
+ }
if (ruler_shown[ruler_time_marker]) {
lab_children.push_back (Element(mark_label, PACK_SHRINK, PACK_START));