script_name = "Sor duplikálás"
script_description = "Duplikál egy sort és az előző sor hosszával lépteti előre."
script_author = "Hughes - isshotosho.info"
function table.shallow_copy(t)
local t2 = {}
for k,v in pairs(t) do
t2[k] = v
end
return t2
end
function dup(subtitles, selected_lines, active_line)
local result, line, duration = nil
-- lemasoljuk a kivalasztottak tablajat
-- mert minden table ertek adas referencia alapu
result = table.shallow_copy(selected_lines)
-- i -> kivalasztott sor index
-- v -> kivalasztott sor szama
for i,v in pairs(selected_lines) do
line = subtitles[v] -- line -> table object
duration = line.end_time - line.start_time
line.start_time = duration + line.start_time
line.end_time = duration + line.end_time
result[i] = line
end
return result
end
function duplicate_macro(subs, selected_lines, active_line)
-- i -> kivalasztott sor index
-- line -> table object
aegisub.set_undo_point("duplicateAndShift")
aegisub.progress.task('Sorok duplikálása...')
for i,line in pairs(dup(subs, selected_lines, active_line)) do
subs.insert(selected_lines[i] + i, line)
end
-- allitsuk be a kivalasztott sorokat
local result = {}
for k,v in pairs(selected_lines) do
result[#result+1] = k+v
end
aegisub.progress.task('kész...')
aegisub.progress.set(100)
return result
end
function duplicate_group_macro(subs, selected_lines, active_line)
aegisub.set_undo_point("duplicateAndShift")
-- duplikáljuk
subs.insert(selected_lines[#selected_lines] + 1, unpack(dup(subs, selected_lines, active_line)))
local result = {}
-- csoportosítsunk
for i = 1, #selected_lines do
result[#result + 1] = selected_lines[#selected_lines] + i
end
return result
end
function validate(subtitles, selected_lines)
if #selected_lines > 0 then
return true
end
return false
end
aegisub.register_macro(script_name, script_description, duplicate_macro, validate)
aegisub.register_macro(script_name .. " és csoportosítás", script_description, duplicate_group_macro, validate)
Comments