summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-03-21 15:38:54 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-03-21 15:38:54 +0000
commit9ce894d42cf1fda76e22474e504e4ad895c02e82 (patch)
tree70785db1532b0a70beb878c7c5daac2998c43402 /gtk2_ardour/editor_ops.cc
parent767984b486086e3682e521179c2fb8364b3bba76 (diff)
make crop-to-range work across all selected tracks; don't edit destructive tracks with several ops; removing debugging output
git-svn-id: svn://localhost/ardour2/trunk@1633 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r--gtk2_ardour/editor_ops.cc129
1 files changed, 68 insertions, 61 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index e6c5790133..f8e6f41a9e 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1508,19 +1508,13 @@ Editor::insert_region_list_drag (boost::shared_ptr<AudioRegion> region, int x, i
return;
}
- cerr << "drop target playlist, UC = " << playlist.use_count() << endl;
-
snap_to (where);
begin_reversible_command (_("insert dragged region"));
XMLNode &before = playlist->get_state();
- cerr << "pre add target playlist, UC = " << playlist.use_count() << endl;
playlist->add_region (RegionFactory::create (region), where, 1.0);
- cerr << "post add target playlist, UC = " << playlist.use_count() << endl;
session->add_command(new MementoCommand<Playlist>(*playlist, &before, &playlist->get_state()));
commit_reversible_command ();
-
- cerr << "post drop target playlist, UC = " << playlist.use_count() << endl;
}
void
@@ -1999,6 +1993,12 @@ Editor::separate_region_from_selection ()
if ((atv = dynamic_cast<AudioTimeAxisView*> ((*i))) != 0) {
if (atv->is_audio_track()) {
+
+ /* no edits to destructive tracks */
+
+ if (atv->audio_track()->audio_diskstream()->destructive()) {
+ continue;
+ }
if ((playlist = atv->playlist()) != 0) {
if (!doing_undo) {
@@ -2052,6 +2052,12 @@ Editor::separate_regions_using_location (Location& loc)
if (atv->is_audio_track()) {
+ /* no edits to destructive tracks */
+
+ if (atv->audio_track()->audio_diskstream()->destructive()) {
+ continue;
+ }
+
if ((playlist = atv->playlist()) != 0) {
XMLNode *before;
if (!doing_undo) {
@@ -2081,75 +2087,76 @@ Editor::separate_regions_using_location (Location& loc)
void
Editor::crop_region_to_selection ()
{
- if (selection->time.empty()) {
+ if (selection->time.empty() || selection->tracks.empty()) {
return;
}
vector<boost::shared_ptr<Playlist> > playlists;
boost::shared_ptr<Playlist> playlist;
- if (clicked_trackview != 0) {
-
- if ((playlist = clicked_trackview->playlist()) == 0) {
- return;
- }
-
- playlists.push_back (playlist);
-
- } else {
+ sort_track_selection ();
+
+ for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
- sort_track_selection ();
-
- for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
-
- AudioTimeAxisView* atv;
+ AudioTimeAxisView* atv;
+
+ if ((atv = dynamic_cast<AudioTimeAxisView*> ((*i))) != 0) {
+
+ if (atv->is_audio_track()) {
+
+ /* no edits to destructive tracks */
- if ((atv = dynamic_cast<AudioTimeAxisView*> ((*i))) != 0) {
+ if (atv->audio_track()->audio_diskstream()->destructive()) {
+ continue;
+ }
- if (atv->is_audio_track()) {
-
- if ((playlist = atv->playlist()) != 0) {
- playlists.push_back (playlist);
- }
+ if ((playlist = atv->playlist()) != 0) {
+ playlists.push_back (playlist);
}
}
}
}
- if (!playlists.empty()) {
-
- nframes_t start;
- nframes_t end;
- nframes_t cnt;
-
- begin_reversible_command (_("trim to selection"));
-
- for (vector<boost::shared_ptr<Playlist> >::iterator i = playlists.begin(); i != playlists.end(); ++i) {
-
- boost::shared_ptr<Region> region;
-
- start = selection->time.start();
-
- if ((region = (*i)->top_region_at(start)) == 0) {
- continue;
- }
-
- /* now adjust lengths to that we do the right thing
- if the selection extends beyond the region
- */
-
- start = max (start, region->position());
- end = min (selection->time.end_frame(), start + region->length() - 1);
- cnt = end - start + 1;
-
- XMLNode &before = (*i)->get_state();
- region->trim_to (start, cnt, this);
- XMLNode &after = (*i)->get_state();
- session->add_command (new MementoCommand<Playlist>(*(*i), &before, &after));
+ if (playlists.empty()) {
+ return;
+ }
+
+ nframes_t start;
+ nframes_t end;
+ nframes_t cnt;
+
+ begin_reversible_command (_("trim to selection"));
+
+ for (vector<boost::shared_ptr<Playlist> >::iterator i = playlists.begin(); i != playlists.end(); ++i) {
+
+ boost::shared_ptr<Region> region;
+
+ start = selection->time.start();
+
+ if ((region = (*i)->top_region_at(start)) == 0) {
+ continue;
}
-
- commit_reversible_command ();
+
+ /* now adjust lengths to that we do the right thing
+ if the selection extends beyond the region
+ */
+
+ start = max (start, region->position());
+ if (max_frames - start < region->length()) {
+ end = start + region->length() - 1;
+ } else {
+ end = max_frames;
+ }
+ end = min (selection->time.end_frame(), end);
+ cnt = end - start + 1;
+
+ XMLNode &before = (*i)->get_state();
+ region->trim_to (start, cnt, this);
+ XMLNode &after = (*i)->get_state();
+ session->add_command (new MementoCommand<Playlist>(*(*i), &before, &after));
}
+
+ commit_reversible_command ();
}
void
@@ -2581,7 +2588,7 @@ Editor::bounce_range_selection ()
nframes_t start = selection->time[clicked_selection].start;
nframes_t end = selection->time[clicked_selection].end;
nframes_t cnt = end - start + 1;
-
+
begin_reversible_command (_("bounce range"));
for (TrackViewList::iterator i = views.begin(); i != views.end(); ++i) {
@@ -2603,7 +2610,7 @@ Editor::bounce_range_selection ()
itt.done = false;
itt.cancel = false;
itt.progress = false;
-
+
XMLNode &before = playlist->get_state();
atv->audio_track()->bounce_range (start, cnt, itt);
XMLNode &after = playlist->get_state();