diff options
author | Carl Hetherington <carl@carlh.net> | 2009-06-26 11:22:16 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-06-26 11:22:16 +0000 |
commit | 676f32d6777c8125addd3b3d1b377865fc8a2503 (patch) | |
tree | c7bac02067515b019fe7352c1075fd517595aeda /gtk2_ardour/editor_ops.cc | |
parent | 498afeb63edeb8a5ce0103296ffda4216d64186d (diff) |
Make a few region operations undoable and responsive to route groups.
git-svn-id: svn://localhost/ardour2/branches/3.0@5274 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 82 |
1 files changed, 67 insertions, 15 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 61a103ead0..ac9fa89256 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4888,9 +4888,7 @@ Editor::brush (nframes64_t pos) void Editor::reset_region_gain_envelopes () { - RegionSelection rs; - - get_regions_for_action (rs); + RegionSelection rs = get_equivalent_regions (selection->regions, RouteGroup::Edit); if (!session || rs.empty()) { return; @@ -4915,80 +4913,134 @@ Editor::reset_region_gain_envelopes () void Editor::toggle_gain_envelope_visibility () { - RegionSelection rs; + RegionSelection rs = get_equivalent_regions (selection->regions, RouteGroup::Edit); - get_regions_for_action (rs); + if (!session || rs.empty()) { + return; + } + + session->begin_reversible_command (_("region gain envelope visible")); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); if (arv) { + XMLNode &before = arv->region()->get_state (); arv->set_envelope_visible (!arv->envelope_visible()); + XMLNode &after = arv->region()->get_state (); + session->add_command (new MementoCommand<Region> (*(arv->region().get()), &before, &after)); } } + + session->commit_reversible_command (); } void Editor::toggle_gain_envelope_active () { - RegionSelection rs; + RegionSelection rs = get_equivalent_regions (selection->regions, RouteGroup::Edit); - get_regions_for_action (rs); + if (!session || rs.empty()) { + return; + } + + session->begin_reversible_command (_("region gain envelope active")); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); if (arv) { + XMLNode &before = arv->region()->get_state (); arv->audio_region()->set_envelope_active (!arv->audio_region()->envelope_active()); + XMLNode &after = arv->region()->get_state (); + session->add_command (new MementoCommand<Region> (*(arv->region().get()), &before, &after)); } } + + session->commit_reversible_command (); } void Editor::toggle_region_lock () { - RegionSelection rs; + RegionSelection rs = get_equivalent_regions (selection->regions, RouteGroup::Edit); - get_regions_for_action (rs); + if (!session || rs.empty()) { + return; + } + + session->begin_reversible_command (_("region lock")); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { + XMLNode &before = (*i)->region()->get_state (); (*i)->region()->set_locked (!(*i)->region()->locked()); + XMLNode &after = (*i)->region()->get_state (); + session->add_command (new MementoCommand<Region> (*((*i)->region().get()), &before, &after)); } + + session->commit_reversible_command (); } void Editor::set_region_lock_style (Region::PositionLockStyle ps) { - RegionSelection rs; + RegionSelection rs = get_equivalent_regions (selection->regions, RouteGroup::Edit); - get_regions_for_action (rs); + if (!session || rs.empty()) { + return; + } + + session->begin_reversible_command (_("region lock style")); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { + XMLNode &before = (*i)->region()->get_state (); (*i)->region()->set_position_lock_style (ps); + XMLNode &after = (*i)->region()->get_state (); + session->add_command (new MementoCommand<Region> (*((*i)->region().get()), &before, &after)); } + + session->commit_reversible_command (); } void Editor::toggle_region_mute () { - RegionSelection rs; + RegionSelection rs = get_equivalent_regions (selection->regions, RouteGroup::Edit); - get_regions_for_action (rs); + if (!session || rs.empty()) { + return; + } + + session->begin_reversible_command (_("region mute")); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { + XMLNode &before = (*i)->region()->get_state (); (*i)->region()->set_muted (!(*i)->region()->muted()); + XMLNode &after = (*i)->region()->get_state (); + session->add_command (new MementoCommand<Region> (*((*i)->region().get()), &before, &after)); } + + session->commit_reversible_command (); } void Editor::toggle_region_opaque () { - RegionSelection rs; + RegionSelection rs = get_equivalent_regions (selection->regions, RouteGroup::Edit); - get_regions_for_action (rs); + if (!session || rs.empty()) { + return; + } + + session->begin_reversible_command (_("region opacity")); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { + XMLNode &before = (*i)->region()->get_state (); (*i)->region()->set_opaque (!(*i)->region()->opaque()); + XMLNode &after = (*i)->region()->get_state (); + session->add_command (new MementoCommand<Region> (*((*i)->region().get()), &before, &after)); } + + session->commit_reversible_command (); } void |