unit LuaApplication; { This unit will be used to register TCanvas class methods to lua } {$mode delphi} interface uses Classes, SysUtils, forms, lua, lualib, lauxlib, LuaHandler, fpcanvas, LCLType, LCLIntf; implementation uses luaclass, luaobject; function application_bringToFront(L: PLua_State): integer; cdecl; begin TApplication(luaclass_getClassObject(L)).BringToFront; result:=0; end; function application_processMessages(L: PLua_State): integer; cdecl; begin TApplication(luaclass_getClassObject(L)).ProcessMessages; result:=0; end; function application_terminate(L: PLua_State): integer; cdecl; begin TApplication(luaclass_getClassObject(L)).Terminate; result:=0; end; function application_minimize(L: PLua_State): integer; cdecl; begin TApplication(luaclass_getClassObject(L)).Minimize; result:=0; end; function application_getExeName(L: PLua_State): integer; cdecl; var app: TApplication; begin result:=0; app:=luaclass_getClassObject(L); lua_pushstring(L, app.ExeName); result:=1; end; function application_getMainFormOnTaskBar(L: PLua_State): integer; cdecl; var app: TApplication; begin result:=0; app:=luaclass_getClassObject(L); lua_pushboolean(L, not app.MainFormOnTaskBar); //bug in laz 2.0.6, it's inverted result:=1; end; function application_setMainFormOnTaskBar(L: PLua_State): integer; cdecl; var app: TApplication; begin result:=0; if lua_gettop(L)>=1 then begin app:=luaclass_getClassObject(L); app.MainFormOnTaskBar:=not lua_toboolean(L,1); end; end; function application_getTitle(L: PLua_State): integer; cdecl; var app: TApplication; begin result:=0; app:=luaclass_getClassObject(L); lua_pushstring(L, app.Title); result:=1; end; function application_setTitle(L: PLua_State): integer; cdecl; begin TApplication(luaclass_getClassObject(L)).title:=Lua_ToString(L, 1); result:=0; end; function application_getIcon(L: PLua_State): integer; cdecl; begin luaclass_newClass(L, TApplication(luaclass_getClassObject(L)).Icon); result:=1; end; function application_setIcon(L: PLua_State): integer; cdecl; begin result:=0; TApplication(luaclass_getClassObject(L)).icon:=lua_ToCEUserData(L, 1); end; procedure application_addMetaData(L: PLua_state; metatable: integer; userdata: integer ); begin object_addMetaData(L, metatable, userdata); luaclass_addClassFunctionToTable(L, metatable, userdata, 'bringToFront', application_bringToFront); luaclass_addClassFunctionToTable(L, metatable, userdata, 'processMessages', application_processMessages); luaclass_addClassFunctionToTable(L, metatable, userdata, 'terminate', application_terminate); luaclass_addClassFunctionToTable(L, metatable, userdata, 'minimize', application_minimize); Luaclass_addPropertyToTable(L, metatable, userdata, 'Title', application_getTitle, application_setTitle); Luaclass_addPropertyToTable(L, metatable, userdata, 'Icon', application_getIcon, application_setIcon); Luaclass_addPropertyToTable(L, metatable, userdata, 'ExeName', application_getExeName, nil); Luaclass_addPropertyToTable(L, metatable, userdata, 'MainFormOnTaskBar', application_getMainFormOnTaskBar, application_setMainFormOnTaskBar); end; initialization luaclass_register(Tapplication, application_addMetaData); end.