diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-03 19:06:07 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-12-03 19:06:07 +0000 |
commit | 523952e655d27f0ff6e5f2eff0f272fc5aca6fa5 (patch) | |
tree | 3eda8d4af6b140056bc37240d9c9eb242c5d149f /gtk2_ardour/editor_ops.cc | |
parent | 10140d119d185a8da17582bbfe5cc2108f14e3e8 (diff) |
add single-layer zoom toggle; add toggle-fade-active commands (& bindings for SAE); add zoom-to-region; allow 2 digits in the tempo dialog
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2735 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 05695e5db5..5edd0e15c4 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1541,6 +1541,32 @@ Editor::temporal_zoom (gdouble fpu) } void +Editor::temporal_zoom_region () +{ + + nframes64_t start = max_frames; + nframes64_t end = 0; + + ensure_entered_region_selected (true); + + if (selection->regions.empty()) { + info << _("cannot set loop: no region selected") << endmsg; + return; + } + + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { + if ((*i)->region()->position() < start) { + start = (*i)->region()->position(); + } + if ((*i)->region()->last_frame() + 1 > end) { + end = (*i)->region()->last_frame() + 1; + } + } + + temporal_zoom_by_frame (start, end, "zoom to region"); +} + +void Editor::temporal_zoom_selection () { if (!selection) return; @@ -4055,7 +4081,7 @@ Editor::toggle_region_opaque () void Editor::set_fade_length (bool in) { - ensure_entered_region_selected (); + ensure_entered_region_selected (true); /* we need a region to measure the offset from the start */ @@ -4116,6 +4142,44 @@ Editor::set_fade_length (bool in) commit_reversible_command (); } + +void +Editor::toggle_fade_active (bool in) +{ + ensure_entered_region_selected (true); + + if (selection->regions.empty()) { + return; + } + + const char* cmd = (in ? _("toggle fade in active") : _("toggle fade out active")); + + begin_reversible_command (cmd); + + for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) { + AudioRegionView* tmp = dynamic_cast<AudioRegionView*> (*x); + + if (!tmp) { + return; + } + + boost::shared_ptr<AudioRegion> region (tmp->audio_region()); + + XMLNode &before = region->get_state(); + + if (in) { + region->set_fade_in_active (!region->fade_in_active()); + } else { + region->set_fade_out_active (!region->fade_out_active()); + } + + XMLNode &after = region->get_state(); + session->add_command(new MementoCommand<AudioRegion>(*region.get(), &before, &after)); + } + + commit_reversible_command (); +} + void Editor::set_fade_in_shape (AudioRegion::FadeShape shape) { |