diff options
author | David Robillard <d@drobilla.net> | 2006-11-19 16:45:16 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-11-19 16:45:16 +0000 |
commit | ef6b25432d9c46d71b08c0f7d5f2686df428c4e8 (patch) | |
tree | 9b30d87b6670aadce365c9b112321dd674a0bab4 /gtk2_ardour/editor_ops.cc | |
parent | af105afe6cde5b0088647cea7d5e4e3314f8478b (diff) |
Merged with trunk R1141
git-svn-id: svn://localhost/ardour2/branches/midi@1142 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 129 |
1 files changed, 94 insertions, 35 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 7122d4663c..93e90f4c2c 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -162,9 +162,9 @@ Editor::remove_clicked_region () void Editor::destroy_clicked_region () { - int32_t selected = selection->regions.size(); + uint32_t selected = selection->regions.size(); - if (!session || clicked_regionview == 0 && selected == 0) { + if (!session || !selected) { return; } @@ -191,7 +191,7 @@ Do you really want to destroy %1 ?"), return; } - if (selected > 0) { + if (selected) { list<boost::shared_ptr<Region> > r; for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { @@ -199,9 +199,6 @@ Do you really want to destroy %1 ?"), } session->destroy_regions (r); - - } else if (clicked_regionview) { - session->destroy_region (clicked_regionview->region()); } } @@ -1088,7 +1085,7 @@ Editor::temporal_zoom (gdouble fpu) case ZoomFocusEdit: /* try to keep the edit cursor in the center */ - if (edit_cursor->current_frame > leftmost_frame + (new_page/2)) { + if (edit_cursor->current_frame > new_page/2) { leftmost_after_zoom = edit_cursor->current_frame - (new_page/2); } else { leftmost_after_zoom = 0; @@ -1275,6 +1272,9 @@ Editor::select_all_in_track (Selection::Operation op) case Selection::Extend: /* not defined yet */ break; + case Selection::Add: + selection->add (touched); + break; } } @@ -1291,6 +1291,7 @@ Editor::select_all (Selection::Operation op) } begin_reversible_command (_("select all")); switch (op) { + case Selection::Add: case Selection::Toggle: selection->add (touched); break; @@ -1348,6 +1349,7 @@ Editor::select_all_within (nframes_t start, nframes_t end, double top, double bo begin_reversible_command (_("select all within")); switch (op) { + case Selection::Add: case Selection::Toggle: cerr << "toggle\n"; selection->add (touched); @@ -1840,7 +1842,7 @@ Editor::toggle_playback (bool with_abort) if (session->transport_rolling()) { session->request_stop (with_abort); - if (Config->get_auto_loop()) { + if (session->get_play_loop()) { session->request_play_loop (false); } } else { @@ -1855,6 +1857,12 @@ Editor::play_from_start () } void +Editor::play_from_edit_cursor () +{ + session->request_locate (edit_cursor->current_frame, true); +} + +void Editor::play_selection () { if (selection->time.empty()) { @@ -1922,28 +1930,6 @@ Editor::loop_location (Location& location) } } -void -Editor::toggle_region_mute () -{ - if (clicked_regionview) { - clicked_regionview->region()->set_muted (!clicked_regionview->region()->muted()); - } else if (!selection->regions.empty()) { - bool yn = ! (*selection->regions.begin())->region()->muted(); - selection->foreach_region (&Region::set_muted, yn); - } -} - -void -Editor::toggle_region_opaque () -{ - if (clicked_regionview) { - clicked_regionview->region()->set_opaque (!clicked_regionview->region()->opaque()); - } else if (!selection->regions.empty()) { - bool yn = ! (*selection->regions.begin())->region()->opaque(); - selection->foreach_region (&Region::set_opaque, yn); - } -} - void Editor::raise_region () { @@ -3340,7 +3326,7 @@ Editor::normalize_region () continue; XMLNode &before = arv->region()->get_state(); arv->audio_region()->normalize_to (0.0f); - // session->add_command (new MementoCommand<Region>(*(arv->region().get()), &before, &arv->region()->get_state())); + session->add_command (new MementoCommand<Region>(*(arv->region().get()), &before, &arv->region()->get_state())); } commit_reversible_command (); @@ -3489,12 +3475,39 @@ Editor::brush (nframes_t pos) } void +Editor::reset_region_gain_envelopes () +{ + if (!session || selection->regions.empty()) { + return; + } + + session->begin_reversible_command (_("reset region gain")); + + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { + AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); + if (arv) { + AutomationList& alist (arv->audio_region()->envelope()); + XMLNode& before (alist.get_state()); + + arv->audio_region()->set_default_envelope (); + session->add_command (new MementoCommand<AutomationList>(arv->audio_region()->envelope(), &before, &alist.get_state())); + } + } + + session->commit_reversible_command (); +} + +void Editor::toggle_gain_envelope_visibility () { for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); - if (arv) - arv->set_envelope_visible (!arv->envelope_visible()); + if (arv) { + bool x = region_envelope_visible_item->get_active(); + if (x != arv->envelope_visible()) { + arv->set_envelope_visible (x); + } + } } } @@ -3503,7 +3516,53 @@ Editor::toggle_gain_envelope_active () { for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); - if (arv) - arv->audio_region()->set_envelope_active (true); + if (arv) { + bool x = region_envelope_active_item->get_active(); + if (x != arv->audio_region()->envelope_active()) { + arv->audio_region()->set_envelope_active (x); + } + } + } +} + +void +Editor::toggle_region_lock () +{ + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { + AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); + if (arv) { + bool x = region_lock_item->get_active(); + if (x != arv->audio_region()->locked()) { + arv->audio_region()->set_locked (x); + } + } + } +} + +void +Editor::toggle_region_mute () +{ + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { + AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); + if (arv) { + bool x = region_mute_item->get_active(); + if (x != arv->audio_region()->muted()) { + arv->audio_region()->set_muted (x); + } + } + } +} + +void +Editor::toggle_region_opaque () +{ + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { + AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); + if (arv) { + bool x = region_opaque_item->get_active(); + if (x != arv->audio_region()->opaque()) { + arv->audio_region()->set_opaque (x); + } + } } } |