summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-12-03 19:06:07 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-12-03 19:06:07 +0000
commit523952e655d27f0ff6e5f2eff0f272fc5aca6fa5 (patch)
tree3eda8d4af6b140056bc37240d9c9eb242c5d149f /gtk2_ardour/editor_ops.cc
parent10140d119d185a8da17582bbfe5cc2108f14e3e8 (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.cc66
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)
{