forked from mia/Aegisub
576f43249a
Originally committed to SVN as r691.
357 lines
9.7 KiB
Text
357 lines
9.7 KiB
Text
Automation 4 Basic Interface
|
|
|
|
This document described the basic functions needed to define an Automation 4
|
|
script. This covers Feature registration and the prototypes of functions used
|
|
to implement the various features.
|
|
|
|
---
|
|
|
|
Macro Registation Function
|
|
|
|
This is a function called from top-level of an Automation script to register
|
|
a new Macro Feature.
|
|
|
|
function aegisub.register_macro(
|
|
name,
|
|
description,
|
|
processing_function,
|
|
validation_function)
|
|
|
|
@name (string)
|
|
The displayed name of the menu item this macro will generate.
|
|
|
|
@description (string)
|
|
A longer description of the function of this macro. This will appear
|
|
on the status bar when hovering over the menu item.
|
|
|
|
@processing_function (function)
|
|
The actual function called for the macro execution.
|
|
This function must be an instance of the Macro Processing Function
|
|
described below.
|
|
|
|
@validation_function (function)
|
|
Optional. A function called when it is to be determined whether the
|
|
macro can act on the current subtitles.
|
|
This function, if provided, must execute very quickly to avoid lag
|
|
in the GUI.
|
|
This function must be an instance of the Macro Validation Function
|
|
described below.
|
|
|
|
Returns: nothing.
|
|
|
|
---
|
|
|
|
Filter Registration Function
|
|
|
|
This is a function called from top level of an Automation script to register
|
|
a new Export Filter Feature.
|
|
|
|
function aegisub.register_filter(
|
|
name,
|
|
description,
|
|
priority,
|
|
processing_function,
|
|
options_window_provider)
|
|
|
|
@name (string)
|
|
The name of the filter, as presented to the user.
|
|
|
|
@description (string)
|
|
A longer description of the filter presented to the user.
|
|
|
|
@priority (number)
|
|
A number determining the default order the enabled filters will be
|
|
processed. The order can be overridden by the user.
|
|
Priorities of some built-in filters:
|
|
o Clean Script Info = 0
|
|
o Fix Styles = -5000
|
|
o Transform Framerate = 1000
|
|
Filters with higher priority will be executed earlier by default.
|
|
|
|
@processing_function (function)
|
|
The function called to do the actual filter processing.
|
|
This function must be an instance of the Filter Processing Function
|
|
described below.
|
|
|
|
@options_window_provider (function)
|
|
Optional. A function providing a dialog template for setting options
|
|
prior to filter processing.
|
|
This function must be an instance of the Filter Options Window Provider
|
|
function described below.
|
|
|
|
Returns: nothing.
|
|
|
|
---
|
|
|
|
Format Reader Registration
|
|
|
|
This is a function called from top level in an Automation script to register
|
|
a new File Format Reader Feature.
|
|
|
|
function aegisub.register_reader(
|
|
name,
|
|
extension,
|
|
processing_function)
|
|
|
|
@name (string)
|
|
The name of the file format.
|
|
|
|
@extension (string)
|
|
The file extension usually given to this file format. This must not
|
|
include any wildcards. (Ie. extension could be "srt", "sub", "ssa" and
|
|
so on.)
|
|
|
|
@processing_function (function)
|
|
The function called to do the actual file import.
|
|
This function must be an instance of the Format Reader Function described
|
|
below.
|
|
|
|
Returns: nothing.
|
|
|
|
---
|
|
|
|
Format Writer Registration
|
|
|
|
This is a function called from top level in an Automation script to register
|
|
a new File Format Writer Feature.
|
|
|
|
function aegisub.register_writer(
|
|
name,
|
|
extension,
|
|
processing_function)
|
|
|
|
@name (string)
|
|
Name of the file format, as presented to the user.
|
|
|
|
@extension (string)
|
|
The usual file extension given to this file format. This is automatically
|
|
be attached to the file name on export, unless the user chooses to
|
|
override it.
|
|
|
|
@processing_function (function)
|
|
The function doing the actual file export.
|
|
This function must be an instance of the Format Writer Function described
|
|
below.
|
|
|
|
Returns: nothing.
|
|
|
|
---
|
|
|
|
Macro Processing Function
|
|
|
|
This function is called by Aegisub to execute a macro.
|
|
|
|
function process_macro(
|
|
subtitles,
|
|
selected_lines,
|
|
active_line)
|
|
|
|
The name of the function is script-defined. (It doesn't have to be
|
|
process_macro.)
|
|
|
|
@subtitles (user data)
|
|
A Subtitles Object, that can be used to retrieve information about the
|
|
subtitle file the macro is being applied on.
|
|
|
|
@selected_lines (table)
|
|
An Array Table of numbers, each entry being an index into the file
|
|
represented by @subtitles. Each of the entries in this table describe that
|
|
a line is marked as selected by the user.
|
|
|
|
@active_line (number)
|
|
Index of the currently active line in the subtitle file.
|
|
|
|
Returns: nothing.
|
|
|
|
---
|
|
|
|
Macro Validation Function
|
|
|
|
This function is called by Aegisub to determine whether a macro can be applied
|
|
to the current state of the subtitles and selection.
|
|
|
|
This function needs to execute very fast, since it may be called for several
|
|
macros whenever a menu is opened. It is suggested not to use @subtitles at all
|
|
in this function.
|
|
|
|
This function does not have to be defined. If it's undefined, it's taken as if
|
|
it always returned true.
|
|
|
|
function validate_macro(
|
|
subtitles,
|
|
selected_lines,
|
|
active_line)
|
|
|
|
The name of the function is script-defined. (It doesn't have to be
|
|
validate_macro.)
|
|
|
|
@subtitles (user data)
|
|
A Subtitles Object, that can be used to retrieve information about the
|
|
subtitle file the macro is to be be applied on.
|
|
|
|
@selected_lines (table)
|
|
An Array Table of numbers, each entry being an index into the file
|
|
represented by @subtitles. Each of the entries in this table describe that
|
|
a line is marked as selected by the user.
|
|
|
|
@active_line (number)
|
|
Index of the currently active line in the subtitle file.
|
|
|
|
Returns: Boolean.
|
|
true is the macro can be applied to the current state of the subtitles,
|
|
false if not.
|
|
|
|
---
|
|
|
|
Filter Processing Function
|
|
|
|
This function is called by Aegisub to filter the subtitles during an export
|
|
operation.
|
|
|
|
function process_filter(
|
|
subtitles,
|
|
config)
|
|
|
|
The name of the function is script-defined. (It doesn't have to be
|
|
process_filter.)
|
|
|
|
@subtitles (user data)
|
|
A Subtitles Object, that can be used to retrieve information about the
|
|
subtitle file the filter is being applied on.
|
|
|
|
@config (table)
|
|
A Dialog Result table representing the options the user selected for the
|
|
filter before starting the export operation. The fields present in this
|
|
table are defined by the dialog provided by the Filter Options Window
|
|
Provider function.
|
|
|
|
Returns: nothing.
|
|
|
|
---
|
|
|
|
Filter Options Window Provider function
|
|
|
|
This function is called by Aegisub to get a Dialog Window definition to prompt
|
|
the user for input before an export operation.
|
|
The data input into the dialog returned by this function are automatically
|
|
stored into the original subtitle file when an export operation is started.
|
|
|
|
function filter_options_dialog(
|
|
subtitles,
|
|
stored_options)
|
|
|
|
The name of the function is script-defined. (It doesn't have to be
|
|
filter_options_dialog.)
|
|
|
|
@subtitles (user data)
|
|
A Subtitles Object, that can be used to retrieve information about the
|
|
subtitle file the filter is to be applied on.
|
|
|
|
@stored_options (table)
|
|
The currently stored options for this export filter. The keys in this table
|
|
are the option names, and the values are the values stored for those options.
|
|
|
|
Returns: A Dialog Window table.
|
|
|
|
---
|
|
|
|
Format Reader Function
|
|
|
|
This function is called by Aegisub to import a file from a foreign file
|
|
format.
|
|
|
|
function read_format(
|
|
input_file,
|
|
output_subs)
|
|
|
|
The name of the function is script-defined. (It doesn't have to be
|
|
read_format.)
|
|
|
|
@input_file (user data)
|
|
An Input File Stream, representing the file selected for import.
|
|
|
|
@output_subs (user data)
|
|
An empty Subtitles Object the imported data should be added to.
|
|
|
|
Returns: Boolean.
|
|
True if the import succeeded, false if it failed.
|
|
|
|
---
|
|
|
|
Format Writer Function
|
|
|
|
This function is called by Aegisub to export a file to a foreign file format.
|
|
|
|
function write_format(
|
|
input_subs,
|
|
output_file)
|
|
|
|
The name of the function is script-defined. (It doesn't have to be
|
|
write_format.)
|
|
|
|
@input_subs (user data)
|
|
A Subtitles Object representing the subtitles to be exported.
|
|
|
|
@output_file (user data)
|
|
An Ouput File Stream, representing the file the exported data should be
|
|
written to.
|
|
|
|
Returns: Boolean.
|
|
True if the export succeeded, false if it failed.
|
|
If this function returns false, the output file is deleted from disk.
|
|
|
|
---
|
|
|
|
Script information globals
|
|
|
|
These are a series of global variables, the script author can set. They are
|
|
purely informational, and won't have any actual influence on how the script
|
|
is treated.
|
|
|
|
None of these are required, but it is recommended to provide them.
|
|
|
|
These should never be present in include files.
|
|
|
|
script_name (string)
|
|
A short, descriptive name for the script, used for presenting it to the
|
|
user in the UI.
|
|
|
|
script_description (string)
|
|
A longer description of the purpose of the script, presented to the user
|
|
in the UI.
|
|
|
|
script_author (string)
|
|
Name(s) of the author(s) of the script.
|
|
|
|
script_version (string)
|
|
Version number of the script.
|
|
|
|
---
|
|
|
|
Including other scripts
|
|
|
|
For implementation reasons (and partially compatibility reasons), the Lua
|
|
built-in dofile() and loadfile() functions are removed, and a custom include()
|
|
function is provided instead.
|
|
|
|
This function behaves almost the same as dofile(), except that it doesn't
|
|
support reading from stdin (no such thing exists/is supposed to exist for
|
|
Aegisub) and it follows some special search rules along a path.
|
|
|
|
function include(filename)
|
|
|
|
@filename (string)
|
|
The relative path to the script to include.
|
|
|
|
Returns: Any return-values of the included script.
|
|
|
|
File search rules:
|
|
1. If there are no path-components in the filename (ie. just a filename),
|
|
the directory of the original script is searched first. Afterwards, the
|
|
search path specified in the Aegisub configuration file is searched.
|
|
2. If the filename contains path components, it is only searched relative
|
|
to the location of the original script file.
|
|
3. Absolute paths are not mangled in any way. Using absolute paths is
|
|
discouraged. (Absolute paths were disallowed in Automation 3.)
|
|
|
|
---
|