mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 15:25:01 +01:00
Move track_organizer Lua script to ardour
This commit is contained in:
parent
49d8d4ad77
commit
a54a501ad6
1 changed files with 106 additions and 0 deletions
106
scripts/track_organizer.lua
Normal file
106
scripts/track_organizer.lua
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
ardour {
|
||||
["type"] = "EditorAction",
|
||||
name = "Track Organizer",
|
||||
author = "Mixbus Lua Taskforce",
|
||||
description = [[Easily modifiable session overview and track property editor]]
|
||||
}
|
||||
|
||||
function factory () return function ()
|
||||
|
||||
local rbow = { ["----"] = "", ["Red"] = 0xD10000FF, ["Orange"] = 0xFF6622FF, ["Yellow"] = 0xFFDA21FF,
|
||||
["Green"] = 0x33DD00FF, ["Blue"] = 0x1133CCFF, ["Indigo"] = 0x220066FF, ["Violet"] = 0x330044FF
|
||||
}
|
||||
|
||||
--now starting to build our dialog
|
||||
local dialog_options = {
|
||||
{ type = "label", colspan="4", title = "Change your Track settings here:" },
|
||||
{ type = "heading", title = "Track", col = 0, colspan = 1 },
|
||||
{ type = "heading", title = "Group", col = 1, colspan = 1 },
|
||||
{ type = "heading", title = "Comment", col = 2, colspan = 1 },
|
||||
{ type = "heading", title = "Color", col = 3, colspan = 1 },
|
||||
}
|
||||
|
||||
--group option payload
|
||||
--@ToDo: Add 'fake' groups for people to select, create them if they want it
|
||||
local pl = {["----"] = "", ["Drums"] = "Drums", ["Bass"] = "Bass", ["Guitars"] = "Guitars",
|
||||
["Keys"] = "Keys", ["Strings"] = "Strings", ["Vox"] = "Vox"
|
||||
}
|
||||
|
||||
for g in Session:route_groups():iter() do
|
||||
pl[g:name()] = g
|
||||
end
|
||||
|
||||
--helper function to find default group option
|
||||
function interrogate(t)
|
||||
local v = "----"
|
||||
for g in Session:route_groups():iter() do
|
||||
for r in g:route_list():iter() do
|
||||
if r:name() == t:name() then v = g:name() end
|
||||
end
|
||||
end return v
|
||||
end
|
||||
|
||||
function find_color(t)
|
||||
local c = "----"
|
||||
for k, v in pairs(rbow) do
|
||||
if(t:presentation_info_ptr():color() == v) then c = k end
|
||||
end return c
|
||||
end
|
||||
|
||||
--insert an entry into our dialog_options table for each track with appropriate info
|
||||
for t in Session:get_tracks():iter() do
|
||||
table.insert(dialog_options, {
|
||||
type = "entry", key = t:name() .. ' n', col = 0, colspan = 1, default = t:name(), title = "" --@ToDo: Shorten Names so they can still see what track they're changing?
|
||||
}) --name
|
||||
table.insert(dialog_options, {
|
||||
type = "dropdown", key = t:name() .. ' g', col = 1, colspan = 1, title = "", values = pl, default = interrogate(t)
|
||||
}) --group
|
||||
table.insert(dialog_options, {
|
||||
type = "entry", key = t:name() .. ' cm', col = 2, colspan = 1, default = t:comment(), title = ""
|
||||
}) --comment
|
||||
table.insert(dialog_options, {
|
||||
type = "dropdown", key = t:name() .. ' c', col = 3, colspan = 1, title = "", values = rbow, default = find_color(t)
|
||||
}) --color
|
||||
end
|
||||
|
||||
table.insert(dialog_options, {
|
||||
{ type = "label", colspan="3", title = "" },
|
||||
{ type = "label", colspan="3", title = "Note that this is a script which can be user-edited to match your needs." },
|
||||
{ type = "label", colspan="3", title = "" },
|
||||
})
|
||||
|
||||
--run dialog_options
|
||||
local rv = LuaDialog.Dialog("Track Organizer", dialog_options):run()
|
||||
if not(rv) then goto script_end end
|
||||
assert(rv, 'Dialog box was cancelled or is ' .. type(rv))
|
||||
|
||||
--begin track operation
|
||||
for t in Session:get_tracks():iter() do
|
||||
local cgrp = interrogate(t)
|
||||
local name = rv[t:name() .. ' n' ]
|
||||
local ngrp = rv[t:name() .. ' g' ]
|
||||
local cmnt = rv[t:name() .. ' cm']
|
||||
local colr = rv[t:name() .. ' c' ]
|
||||
|
||||
if t:name() ~= name then t:set_name(name) end
|
||||
|
||||
if t:comment() ~= cmnt then t:set_comment(cmnt, nil) end
|
||||
|
||||
if not(colr == "") then t:presentation_info_ptr():set_color(colr) end
|
||||
|
||||
if type(ngrp) == "userdata" then
|
||||
if cgrp ~= ngrp:name() then
|
||||
ngrp:add(t)
|
||||
end
|
||||
end
|
||||
|
||||
if type(ngrp) == "string" and not(ngrp == "") then
|
||||
ngrp = Session:new_route_group(ngrp)
|
||||
if cgrp ~= ngrp:name() then
|
||||
ngrp:add(t)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
::script_end::
|
||||
end end
|
||||
Loading…
Add table
Add a link
Reference in a new issue