diff options
author | Nick Mainsbridge <beatroute@iprimus.com.au> | 2006-01-23 16:02:48 +0000 |
---|---|---|
committer | Nick Mainsbridge <beatroute@iprimus.com.au> | 2006-01-23 16:02:48 +0000 |
commit | dfcd837d67f7653addde7f8760a6b7dcf94b51fc (patch) | |
tree | 846395d244afc60cd655b1b963ba9d845fd12ca7 /gtk2_ardour/editor_markers.cc | |
parent | 51093cc589ff35d037b8ee77ffc6b834c219af86 (diff) |
select all, musical (fuzzy) loop/punch/range region selections, soundtouch patch for gcc 4.1, needs 's' key to not clear selection.
git-svn-id: svn://localhost/trunk/ardour2@289 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_markers.cc')
-rw-r--r-- | gtk2_ardour/editor_markers.cc | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 466aa09acd..568226fb60 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -386,10 +386,13 @@ Editor::marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* item) } marker_menu_item = item; transport_marker_menu->popup (1, ev->time); - } - else { + } else { if (marker_menu == 0) { + if (loc->is_mark()) { build_marker_menu (); + } else { + build_range_marker_menu (); + } } // GTK2FIX use action group sensitivity @@ -453,6 +456,33 @@ Editor::build_marker_menu () items.push_back (MenuElem (_("Rename"), mem_fun(*this, &Editor::marker_menu_rename))); items.push_back (MenuElem (_("Hide"), mem_fun(*this, &Editor::marker_menu_hide))); items.push_back (MenuElem (_("Remove"), mem_fun(*this, &Editor::marker_menu_remove))); + +} + +void +Editor::build_range_marker_menu () +{ + using namespace Menu_Helpers; + + marker_menu = new Menu; + MenuList& items = marker_menu->items(); + marker_menu->set_name ("ArdourContextMenu"); + + items.push_back (MenuElem (_("Locate to"), mem_fun(*this, &Editor::marker_menu_set_playhead))); + items.push_back (MenuElem (_("Play from"), mem_fun(*this, &Editor::marker_menu_play_from))); + items.push_back (MenuElem (_("Loop range"), mem_fun(*this, &Editor::marker_menu_loop_range))); + items.push_back (MenuElem (_("Set from playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead))); + items.push_back (MenuElem (_("Set from range"), mem_fun(*this, &Editor::marker_menu_set_from_selection))); + + items.push_back (SeparatorElem()); + + items.push_back (MenuElem (_("Rename"), mem_fun(*this, &Editor::marker_menu_rename))); + items.push_back (MenuElem (_("Hide"), mem_fun(*this, &Editor::marker_menu_hide))); + items.push_back (MenuElem (_("Remove"), mem_fun(*this, &Editor::marker_menu_remove))); + + items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Select all in Range"), mem_fun(*this, &Editor::marker_menu_select_all_from_range))); + } void @@ -498,6 +528,7 @@ Editor::build_transport_marker_menu () items.push_back (MenuElem (_("Set from range"), mem_fun(*this, &Editor::marker_menu_set_from_selection))); items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Hide"), mem_fun(*this, &Editor::marker_menu_hide))); + } void @@ -519,6 +550,25 @@ Editor::marker_menu_hide () } void +Editor::marker_menu_select_all_from_range () +{ + Marker* marker; + + if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) { + fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg; + /*NOTREACHED*/ + } + Location* l; + bool is_start; + + if ((l = find_location_from_marker (marker, is_start)) != 0) { + + select_all_within (l->start(), l->end(), 0, DBL_MAX, false); + } + +} + +void Editor::marker_menu_play_from () { Marker* marker; |