summaryrefslogtreecommitdiff
path: root/share/scripts/_sort_tracks_by_name.lua
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-02-23 20:48:02 +0100
committerRobin Gareus <robin@gareus.org>2020-02-23 20:48:02 +0100
commit180843f9bd28b191c7404245ba0a121107992511 (patch)
treec60312dc09f76c2f55ba2383245c427e15c38dea /share/scripts/_sort_tracks_by_name.lua
parentbf649cd68ad46c34a656700aa6cb89416d648c64 (diff)
Also move Lua scripts to share subfolder
Diffstat (limited to 'share/scripts/_sort_tracks_by_name.lua')
-rw-r--r--share/scripts/_sort_tracks_by_name.lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/share/scripts/_sort_tracks_by_name.lua b/share/scripts/_sort_tracks_by_name.lua
new file mode 100644
index 0000000000..36dfdc970c
--- /dev/null
+++ b/share/scripts/_sort_tracks_by_name.lua
@@ -0,0 +1,36 @@
+ardour {
+ ["type"] = "EditorAction",
+ name = "Track Sort",
+ author = "Ardour Lua Taskforce",
+ description = [[Sort tracks alphabetically by name]]
+}
+
+function factory () return function ()
+
+ -- sort compare function
+ -- a,b here are http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:Route
+ -- return true if route "a" should be ordered before route "b"
+ function tsort (a, b)
+ return a:name() < b:name()
+ end
+
+ -- create a sortable list of tracks
+ local tracklist = {}
+ for t in Session:get_tracks():iter() do
+ table.insert(tracklist, t)
+ end
+
+ -- sort the list using the compare function
+ table.sort(tracklist, tsort)
+
+ -- traverse the sorted list and assign "presentation-order" to each track
+ local pos = 1;
+ for _, t in ipairs(tracklist) do
+ t:set_presentation_order(pos)
+ pos = pos + 1
+ end
+
+ -- drop all track references
+ tracklist = nil
+ collectgarbage ()
+end end