/
luaapplication.pas
executable file
·129 lines (98 loc) · 3.35 KB
/
luaapplication.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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.