diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-05 10:31:26 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-05 10:31:26 +0000 |
commit | 302d88d60448753be8755192716e77cefdfb1187 (patch) | |
tree | 2359dc3289140d334702e474f6defd850baabff2 /gtk2_ardour/editor_ops.cc | |
parent | d572ed2ed4d867009a1ca365ca5316867c824690 (diff) |
apply/merge/redo carl & colin's patches for making range markers from the region selection so that there are now 1 actions: 1 range for all selected regions, or 1 range per selected region; add these to the relevant menus
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4291 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 6b867500ae..bc934ead1d 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1991,7 +1991,7 @@ Editor::add_location_from_playhead_cursor () } void -Editor::add_location_from_audio_region () +Editor::add_locations_from_audio_region () { RegionSelection rs; @@ -2001,15 +2001,61 @@ Editor::add_location_from_audio_region () return; } - RegionView* rv = *(rs.begin()); - boost::shared_ptr<Region> region = rv->region(); + session->begin_reversible_command (rs.size () > 1 ? _("add markers") : _("add marker")); + XMLNode &before = session->locations()->get_state(); - Location *location = new Location (region->position(), region->last_frame(), region->name(), Location::IsRangeMarker); + cerr << "Add locations\n"; + + for (RegionSelection::iterator i = rs.begin (); i != rs.end (); ++i) { + + boost::shared_ptr<Region> region = (*i)->region (); + + Location *location = new Location (region->position(), region->last_frame(), region->name(), Location::IsRangeMarker); + + session->locations()->add (location, true); + } + + XMLNode &after = session->locations()->get_state(); + session->add_command (new MementoCommand<Locations>(*(session->locations()), &before, &after)); + session->commit_reversible_command (); +} + +void +Editor::add_location_from_audio_region () +{ + RegionSelection rs; + + get_regions_for_action (rs); + + if (rs.empty()) { + return; + } + session->begin_reversible_command (_("add marker")); - XMLNode &before = session->locations()->get_state(); + XMLNode &before = session->locations()->get_state(); + + string markername; + + if (rs.size() > 1) { // more than one region selected + session->locations()->next_available_name(markername, "regions"); + } else { + RegionView* rv = *(rs.begin()); + boost::shared_ptr<Region> region = rv->region(); + markername = region->name(); + } + + if (!choose_new_marker_name(markername)) { + return; + } + + cerr << "Add location\n"; + + // single range spanning all selected + Location *location = new Location (rs.start(), rs.end_frame(), markername, Location::IsRangeMarker); session->locations()->add (location, true); - XMLNode &after = session->locations()->get_state(); - session->add_command(new MementoCommand<Locations>(*(session->locations()), &before, &after)); + + XMLNode &after = session->locations()->get_state(); + session->add_command (new MementoCommand<Locations>(*(session->locations()), &before, &after)); session->commit_reversible_command (); } |