cheat-engine/Cheat Engine/LuaCheckbox.pas

160 lines
4.3 KiB
ObjectPascal
Raw Permalink Normal View History

unit LuaCheckbox;
{$mode delphi}
interface
uses
2020-12-10 23:39:40 +01:00
Classes, SysUtils,lua, lualib, lauxlib, controls, StdCtrls, betterControls;
procedure initializeLuaCheckbox;
implementation
uses luahandler, luacaller, luaclass, LuaWinControl, ceguicomponents;
function createCheckBox(L: Plua_State): integer; cdecl;
var
CheckBox: TCECheckBox;
parameters: integer;
owner: TWincontrol;
begin
result:=0;
parameters:=lua_gettop(L);
if parameters>=1 then
owner:=lua_toceuserdata(L, -parameters)
else
owner:=nil;
lua_pop(L, lua_gettop(L));
CheckBox:=TCECheckBox.Create(owner);
if owner<>nil then
CheckBox.Parent:=owner;
luaclass_newClass(L, CheckBox);
result:=1;
end;
function checkbox_getAllowGrayed(L: PLua_State): integer; cdecl;
var
checkbox: Tcustomcheckbox;
begin
checkbox:=luaclass_getClassObject(L);
lua_pushboolean(L, checkbox.AllowGrayed);
result:=1;
end;
function checkbox_setAllowGrayed(L: PLua_State): integer; cdecl;
var
parameters: integer;
checkbox: Tcustomcheckbox;
begin
result:=0;
checkbox:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
checkbox.AllowGrayed:=lua_toboolean(L,-1);
end;
function checkbox_getState(L: PLua_State): integer; cdecl;
var
checkbox: Tcustomcheckbox;
begin
checkbox:=luaclass_getClassObject(L);
lua_pushinteger(L, integer(checkbox.state));
result:=1;
end;
function checkbox_setState(L: PLua_State): integer; cdecl;
var
parameters: integer;
checkbox: Tcustomcheckbox;
paramstart, paramcount: integer;
begin
result:=0;
checkbox:=luaclass_getClassObject(L, @paramstart, @paramcount);
if paramcount>=1 then
checkbox.state:=tcheckboxstate(lua_tointeger(L,paramstart));
end;
function checkbox_getonChange(L: PLua_State): integer; cdecl;
var
c: TCustomCheckBox;
begin
c:=luaclass_getClassObject(L);
LuaCaller_pushMethodProperty(L, TMethod(c.OnChange), 'TNotifyEvent');
result:=1;
end;
function checkbox_setonChange(L: PLua_State): integer; cdecl;
var
control: TCustomCheckBox;
f: integer;
routine: string;
lc: TLuaCaller;
begin
result:=0;
control:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
begin
CleanupLuaCall(tmethod(control.onChange));
control.onChange:=nil;
if lua_isfunction(L,-1) then
begin
routine:=Lua_ToString(L,-1);
f:=luaL_ref(L,LUA_REGISTRYINDEX);
lc:=TLuaCaller.create;
lc.luaroutineIndex:=f;
control.OnChange:=lc.NotifyEvent;
end
else
if lua_isstring(L,-1) then
begin
routine:=lua_tostring(L,-1);
lc:=TLuaCaller.create;
lc.luaroutine:=routine;
control.OnChange:=lc.NotifyEvent;
end;
end;
end;
procedure checkbox_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
wincontrol_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getAllowGrayed', checkbox_getAllowGrayed);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setAllowGrayed', checkbox_setAllowGrayed);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getState', checkbox_getState);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setState', checkbox_setState);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setOnChange', checkbox_setonChange);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getOnChange', checkbox_getonChange);
2014-04-07 21:33:26 +00:00
luaclass_addPropertyToTable(L, metatable, userdata, 'AllowGrayed', checkbox_getAllowGrayed, checkbox_setAllowGrayed);
2014-04-07 21:32:50 +00:00
luaclass_addPropertyToTable(L, metatable, userdata, 'State', checkbox_getState, checkbox_setState);
2014-04-07 21:33:26 +00:00
luaclass_addPropertyToTable(L, metatable, userdata, 'OnChange', checkbox_getOnChange, checkbox_setOnChange);
end;
procedure initializeLuaCheckbox;
begin
lua_register(LuaVM, 'createCheckBox', createCheckBox);
lua_register(LuaVM, 'checkbox_getAllowGrayed', checkbox_getAllowGrayed);
lua_register(LuaVM, 'checkbox_setAllowGrayed', checkbox_setAllowGrayed);
lua_register(LuaVM, 'checkbox_getState', checkbox_getState);
lua_register(LuaVM, 'checkbox_setState', checkbox_setState);
lua_register(LuaVM, 'checkbox_onChange', checkbox_setonChange);
end;
initialization
luaclass_register(TCustomCheckbox, checkbox_addMetaData);
end.