diff options
author | Carl Hetherington <cth@carlh.net> | 2014-04-29 12:42:49 +0100 |
---|---|---|
committer | Carl Hetherington <cth@carlh.net> | 2014-04-29 12:42:49 +0100 |
commit | 152935e736eaf06f85bc7f5cb27337a62d95edd4 (patch) | |
tree | b80a9d2c65d8bfbfbf471b329ace51089180d0e5 /gtk2_ardour | |
parent | e36f74e071d4c14862d23da5ff0d49df0940d536 (diff) | |
parent | 1f70e9472a81303a9ec4ceca177fab57105f8167 (diff) |
Merge branch 'cairocanvas' of git.ardour.org:ardour/ardour into cairocanvas
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardev_common.sh.in | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour.menus.in | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 54 |
5 files changed, 61 insertions, 1 deletions
diff --git a/gtk2_ardour/ardev_common.sh.in b/gtk2_ardour/ardev_common.sh.in index 565ea0b865..d65a287701 100644 --- a/gtk2_ardour/ardev_common.sh.in +++ b/gtk2_ardour/ardev_common.sh.in @@ -17,7 +17,7 @@ export ARDOUR_DATA_PATH=$TOP:$TOP/build:$TOP/gtk2_ardour:$TOP/build/gtk2_ardour: export ARDOUR_MIDIMAPS_PATH=$TOP/midi_maps:. export ARDOUR_MCP_PATH=$TOP/mcp:. export ARDOUR_EXPORT_FORMATS_PATH=$TOP/export:. -export ARDOUR_BACKEND_PATH=$libs/backends/jack:$libs/backends/wavesaudio +export ARDOUR_BACKEND_PATH=$libs/backends/jack:$libs/backends/wavesaudio:$libs/backends/dummy # # even though we set the above variables, ardour requires that these diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index 6c5e08c8f8..6d08937cf0 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -288,6 +288,7 @@ <menuitem action='nudge-backward'/> <menuitem action='nudge-forward-by-capture-offset'/> <menuitem action='nudge-backward-by-capture-offset'/> + <menuitem action='sequence-regions'/> </menu> <menu action='RegionMenuTrim'> <menuitem action='trim-front'/> @@ -647,6 +648,7 @@ <menuitem action='nudge-backward'/> <menuitem action='nudge-forward-by-capture-offset'/> <menuitem action='nudge-backward-by-capture-offset'/> + <menuitem action='sequence-regions'/> </menu> <menu action='RegionMenuTrim'> <menuitem action='trim-front'/> diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index f3f6bfeee7..1398936979 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -319,6 +319,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void nudge_forward_capture_offset (); void nudge_backward_capture_offset (); + void sequence_regions (); + /* playhead/screen stuff */ void set_stationary_playhead (bool yn); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 674952781d..48d56193a6 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -1897,6 +1897,8 @@ Editor::register_region_actions () reg_sens (_region_actions, "nudge-forward", _("Nudge Later"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_forward), false, false)); reg_sens (_region_actions, "nudge-backward", _("Nudge Earlier"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_backward), false, false)); + reg_sens (_region_actions, "sequence-regions", _("Sequence Regions"), sigc::mem_fun (*this, &Editor::sequence_regions)); + reg_sens ( _region_actions, "nudge-forward-by-capture-offset", diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index f7dc46659a..08d6297faa 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -512,6 +512,60 @@ Editor::nudge_backward_capture_offset () commit_reversible_command (); } +struct RegionSelectionPositionSorter { + bool operator() (RegionView* a, RegionView* b) { + return a->region()->position() < b->region()->position(); + } +}; + +void +Editor::sequence_regions () +{ + framepos_t r_end; + framepos_t r_end_prev; + + int iCount=0; + + if (!_session) { + return; + } + + RegionSelection rs = get_regions_from_selection_and_entered (); + rs.sort(RegionSelectionPositionSorter()); + + if (!rs.empty()) { + + begin_reversible_command (_("sequence regions")); + for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { + boost::shared_ptr<Region> r ((*i)->region()); + + r->clear_changes(); + + if(r->locked()) + { + continue; + } + if(r->position_locked()) + { + continue; + } + if(iCount>0) + { + r_end_prev=r_end; + r->set_position(r_end_prev); + } + + _session->add_command (new StatefulDiffCommand (r)); + + r_end=r->position() + r->length(); + + iCount++; + } + commit_reversible_command (); + } +} + + /* DISPLAY MOTION */ void |