Advertisement
pushrbx

AegiSub script: Duplicate lines

Mar 4th, 2014
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.09 KB | None | 0 0
  1. script_name = "Sor duplikálás"
  2. script_description = "Duplikál egy sort és az előző sor hosszával lépteti előre."
  3. script_author = "Hughes - isshotosho.info"
  4.  
  5. function table.shallow_copy(t)
  6.     local t2 = {}
  7.     for k,v in pairs(t) do
  8.         t2[k] = v
  9.     end
  10.     return t2
  11. end
  12.  
  13.  
  14. function dup(subtitles, selected_lines, active_line)
  15.     local result, line, duration = nil
  16.     -- lemasoljuk a kivalasztottak tablajat
  17.     -- mert minden table ertek adas referencia alapu
  18.     result = table.shallow_copy(selected_lines)
  19.    
  20.     -- i -> kivalasztott sor index
  21.     -- v -> kivalasztott sor szama
  22.     for i,v in pairs(selected_lines) do
  23.         line = subtitles[v] -- line -> table object
  24.        
  25.         duration = line.end_time - line.start_time
  26.         line.start_time = duration + line.start_time
  27.         line.end_time = duration + line.end_time
  28.         result[i] = line
  29.     end
  30.    
  31.     return result
  32. end
  33.  
  34. function duplicate_macro(subs, selected_lines, active_line)
  35.     -- i -> kivalasztott sor index
  36.     -- line -> table object
  37.     aegisub.set_undo_point("duplicateAndShift")
  38.     aegisub.progress.task('Sorok duplikálása...')
  39.  
  40.     for i,line in pairs(dup(subs, selected_lines, active_line)) do
  41.         subs.insert(selected_lines[i] + i, line)
  42.     end
  43.    
  44.     -- allitsuk be a kivalasztott sorokat
  45.     local result = {}
  46.     for k,v in pairs(selected_lines) do
  47.         result[#result+1] = k+v
  48.     end
  49.     aegisub.progress.task('kész...')
  50.     aegisub.progress.set(100)
  51.     return result
  52. end
  53.  
  54. function duplicate_group_macro(subs, selected_lines, active_line)
  55.     aegisub.set_undo_point("duplicateAndShift")
  56.    
  57.     -- duplikáljuk
  58.     subs.insert(selected_lines[#selected_lines] + 1, unpack(dup(subs, selected_lines, active_line)))
  59.     local result = {}
  60.    
  61.     -- csoportosítsunk
  62.     for i = 1, #selected_lines do
  63.         result[#result + 1] = selected_lines[#selected_lines] + i
  64.     end
  65.    
  66.     return result
  67. end
  68.  
  69. function validate(subtitles, selected_lines)
  70.     if #selected_lines > 0 then
  71.         return true
  72.     end
  73.    
  74.     return false
  75. end
  76.  
  77. aegisub.register_macro(script_name, script_description, duplicate_macro, validate)
  78. aegisub.register_macro(script_name .. " és csoportosítás", script_description, duplicate_group_macro, validate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement