Add aegisub.cancel(), which immediates ends macro execution without applying any of the changes that have been made

Originally committed to SVN as r6325.
This commit is contained in:
Thomas Goyne 2012-01-20 21:33:20 +00:00
parent 632a02bcc9
commit 64c7043123
2 changed files with 13 additions and 3 deletions

View file

@ -263,6 +263,7 @@ namespace Automation4 {
set_field(L, "video_size", LuaVideoSize); set_field(L, "video_size", LuaVideoSize);
set_field(L, "keyframes", LuaGetKeyframes); set_field(L, "keyframes", LuaGetKeyframes);
set_field(L, "decode_path", LuaDecodePath); set_field(L, "decode_path", LuaDecodePath);
set_field(L, "cancel", LuaCancel);
set_field(L, "lua_automation_version", 4); set_field(L, "lua_automation_version", 4);
// store aegisub table to globals // store aegisub table to globals
@ -525,14 +526,22 @@ namespace Automation4 {
return 1; return 1;
} }
int LuaScript::LuaCancel(lua_State *L)
{
lua_pushnil(L);
return lua_error(L);
}
static void lua_threaded_call(ProgressSink *ps, lua_State *L, int nargs, int nresults, bool can_open_config, bool *failed) static void lua_threaded_call(ProgressSink *ps, lua_State *L, int nargs, int nresults, bool can_open_config, bool *failed)
{ {
LuaProgressSink lps(L, ps, can_open_config); LuaProgressSink lps(L, ps, can_open_config);
if (lua_pcall(L, nargs, nresults, 0)) { if (lua_pcall(L, nargs, nresults, 0)) {
// if the call failed, log the error here if (!lua_isnil(L, -1)) {
ps->Log("\n\nLua reported a runtime error:\n"); // if the call failed, log the error here
ps->Log(lua_tostring(L, -1)); ps->Log("\n\nLua reported a runtime error:\n");
ps->Log(lua_tostring(L, -1));
}
lua_pop(L, 1); lua_pop(L, 1);
*failed = true; *failed = true;
} }

View file

@ -310,6 +310,7 @@ namespace Automation4 {
static int LuaVideoSize(lua_State *L); static int LuaVideoSize(lua_State *L);
static int LuaGetKeyframes(lua_State *L); static int LuaGetKeyframes(lua_State *L);
static int LuaDecodePath(lua_State *L); static int LuaDecodePath(lua_State *L);
static int LuaCancel(lua_State *L);
public: public:
LuaScript(const wxString &filename); LuaScript(const wxString &filename);