180 lines
5.1 KiB
ObjectPascal
Executable File
180 lines
5.1 KiB
ObjectPascal
Executable File
unit LuaRadioGroup;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, Controls, ExtCtrls, SysUtils;
|
|
|
|
procedure initializeLuaRadioGroup;
|
|
|
|
implementation
|
|
|
|
uses lua, lualib, lauxlib, LuaHandler, ceguicomponents, LuaCaller, LuaGroupbox, LuaClass, betterControls;
|
|
|
|
function createRadioGroup(L: Plua_State): integer; cdecl;
|
|
var
|
|
RadioGroup: TCERadioGroup;
|
|
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));
|
|
|
|
|
|
RadioGroup:=TCERadioGroup.Create(owner);
|
|
if owner<>nil then
|
|
RadioGroup.Parent:=owner;
|
|
|
|
luaclass_newClass(L, RadioGroup);
|
|
result:=1;
|
|
end;
|
|
|
|
function radiogroup_getRows(L: PLua_State): integer; cdecl;
|
|
var
|
|
radiogroup: TCustomRadioGroup;
|
|
begin
|
|
radiogroup:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, radiogroup.Rows);
|
|
result:=1;
|
|
end;
|
|
|
|
function radiogroup_getItems(L: PLua_State): integer; cdecl;
|
|
var
|
|
radiogroup: TCustomRadioGroup;
|
|
begin
|
|
radiogroup:=luaclass_getClassObject(L);
|
|
luaclass_newClass(L, radiogroup.items);
|
|
result:=1;
|
|
end;
|
|
|
|
function radiogroup_getColumns(L: PLua_State): integer; cdecl;
|
|
var
|
|
radiogroup: TCustomRadioGroup;
|
|
begin
|
|
radiogroup:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, radiogroup.Columns);
|
|
result:=1;
|
|
end;
|
|
|
|
function radiogroup_setColumns(L: PLua_State): integer; cdecl;
|
|
var
|
|
radiogroup: Tcustomradiogroup;
|
|
begin
|
|
result:=0;
|
|
radiogroup:=luaclass_getClassObject(L);
|
|
|
|
if lua_gettop(L)>=1 then
|
|
radiogroup.Columns:=lua_tointeger(L,-1);
|
|
end;
|
|
|
|
|
|
function radiogroup_getItemIndex(L: PLua_State): integer; cdecl;
|
|
var
|
|
radiogroup: TCustomRadioGroup;
|
|
begin
|
|
radiogroup:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, radiogroup.ItemIndex);
|
|
result:=1;
|
|
end;
|
|
|
|
function radiogroup_setItemIndex(L: PLua_State): integer; cdecl;
|
|
var
|
|
radiogroup: Tcustomradiogroup;
|
|
begin
|
|
result:=0;
|
|
radiogroup:=luaclass_getClassObject(L);
|
|
|
|
if lua_gettop(L)>=1 then
|
|
radiogroup.ItemIndex:=lua_tointeger(L,-1);
|
|
end;
|
|
|
|
function radiogroup_getonclick(L: PLua_State): integer; cdecl;
|
|
var
|
|
c: TCustomRadioGroup;
|
|
begin
|
|
c:=luaclass_getClassObject(L);
|
|
LuaCaller_pushMethodProperty(L, TMethod(c.OnClick), 'TNotifyEvent');
|
|
result:=1;
|
|
end;
|
|
|
|
function radiogroup_setonClick(L: PLua_State): integer; cdecl; //for some reason the radiogroup has it's own fonclick variable
|
|
var
|
|
control: TCustomRadioGroup;
|
|
f: integer;
|
|
routine: string;
|
|
|
|
lc: TLuaCaller;
|
|
begin
|
|
result:=0;
|
|
control:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
CleanupLuaCall(tmethod(control.onClick));
|
|
control.onClick:=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.OnClick:=lc.NotifyEvent;
|
|
end
|
|
else
|
|
if lua_isstring(L,-1) then
|
|
begin
|
|
routine:=lua_tostring(L,-1);
|
|
lc:=TLuaCaller.create;
|
|
lc.luaroutine:=routine;
|
|
control.OnClick:=lc.NotifyEvent;
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
procedure radiogroup_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
begin
|
|
groupbox_addMetaData(L, metatable, userdata);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getRows', radiogroup_getRows);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getItems', radioGroup_getItems);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getColumns', radiogroup_getColumns);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setColumns', radiogroup_setColumns);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getItemIndex', radiogroup_getItemIndex);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setItemIndex', radiogroup_setItemIndex);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setOnClick', radiogroup_setOnClick);
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Columns', radiogroup_getColumns, radiogroup_setColumns);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'ItemIndex', radiogroup_getItemIndex, radiogroup_setItemIndex);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'OnClick', radiogroup_getOnClick, radiogroup_setOnClick);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Items', radioGroup_getItems, nil);
|
|
|
|
end;
|
|
|
|
procedure initializeLuaRadioGroup;
|
|
begin
|
|
lua_register(LuaVM, 'createRadioGroup', createRadioGroup);
|
|
lua_register(LuaVM, 'radiogroup_getRows', radiogroup_getRows);
|
|
lua_register(LuaVM, 'radiogroup_getItems', radioGroup_getItems);
|
|
lua_register(LuaVM, 'radiogroup_getColumns', radiogroup_getColumns);
|
|
lua_register(LuaVM, 'radiogroup_setColumns', radiogroup_setColumns);
|
|
lua_register(LuaVM, 'radiogroup_getItemIndex', radiogroup_getItemIndex);
|
|
lua_register(LuaVM, 'radiogroup_setItemIndex', radiogroup_setItemIndex);
|
|
lua_register(LuaVM, 'radiogroup_onClick', radiogroup_setOnClick);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(TCustomRadioGroup, radiogroup_addMetaData);
|
|
|
|
end.
|
|
|