mirror of
https://github.com/cheat-engine/cheat-engine
synced 2026-08-15 02:26:08 -04:00
158 lines
4.2 KiB
ObjectPascal
158 lines
4.2 KiB
ObjectPascal
unit LuaCheckbox;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,lua, lualib, lauxlib, controls, StdCtrls;
|
|
|
|
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;
|
|
begin
|
|
result:=0;
|
|
checkbox:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
checkbox.state:=tcheckboxstate(lua_tointeger(L,-1));
|
|
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);
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'AllowGrayed', checkbox_getAllowGrayed, checkbox_setAllowGrayed);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'State', checkbox_getState, checkbox_setState);
|
|
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.
|
|
|