forked from maxkleiner/python4delphi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuPSI_PythonAction.pas
More file actions
196 lines (159 loc) · 7.71 KB
/
uPSI_PythonAction.pas
File metadata and controls
196 lines (159 loc) · 7.71 KB
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
unit uPSI_PythonAction;
{
This file has been generated by UnitParser v0.7, written by M. Knight
and updated by NP. v/d Spek and George Birbilis.
Source Code from Carlo Kok has been used to implement various sections of
UnitParser. Components of ROPS are used in the construction of UnitParser,
code implementing the class wrapper is taken from Carlo Kok's conv utility
}
interface
uses
SysUtils
,Classes
,uPSComponent
,uPSRuntime
,uPSCompiler
;
type
(*----------------------------------------------------------------------------*)
TPSImport_PythonAction = class(TPSPlugin)
public
procedure CompileImport1(CompExec: TPSScript); override;
procedure ExecImport1(CompExec: TPSScript; const ri: TPSRuntimeClassImporter); override;
end;
{ compile-time registration functions }
procedure SIRegister_TPythonAction(CL: TPSPascalCompiler);
procedure SIRegister_PythonAction(CL: TPSPascalCompiler);
{ run-time registration functions }
procedure RIRegister_PythonAction_Routines(S: TPSExec);
procedure RIRegister_TPythonAction(CL: TPSRuntimeClassImporter);
procedure RIRegister_PythonAction(CL: TPSRuntimeClassImporter);
procedure Register;
implementation
uses
Windows
,Messages
,Graphics
,Controls
,Forms
,Dialogs
,ActnList
,PythonEngine
,PythonAction
;
procedure Register;
begin
RegisterComponents('Pascal Script', [TPSImport_PythonAction]);
end;
(* === compile-time registration functions === *)
(*----------------------------------------------------------------------------*)
procedure SIRegister_TPythonAction(CL: TPSPascalCompiler);
begin
//with RegClassS(CL,'TAction', 'TPythonAction') do
with CL.AddClassN(CL.FindClass('TAction'),'TPythonAction') do
begin
RegisterProperty('fRegisteredMethods', 'TList', iptrw);
RegisterProperty('fPythonModule', 'TPythonModule', iptrw);
RegisterProperty('fClearname', 'string', iptrw);
RegisterProperty('fRegistername', 'string', iptrw);
RegisterProperty('fUnregistername', 'string', iptrw);
RegisterMethod('Procedure ClearMethods');
RegisterMethod('Constructor Create( AOwner : TComponent)');
RegisterMethod('Function HandlesTarget( Target : TObject) : Boolean');
RegisterMethod('Function Execute : Boolean');
RegisterMethod('Procedure UpdateTarget( Target : TObject)');
RegisterMethod('Procedure InitializeAction');
RegisterProperty('RegisteredMethods', 'TList', iptr);
RegisterProperty('PythonModule', 'TPythonModule', iptrw);
end;
end;
(*----------------------------------------------------------------------------*)
procedure SIRegister_PythonAction(CL: TPSPascalCompiler);
begin
SIRegister_TPythonAction(CL);
CL.AddDelphiFunction('Procedure Register');
end;
(* === run-time registration functions === *)
(*----------------------------------------------------------------------------*)
procedure TPythonActionPythonModule_W(Self: TPythonAction; const T: TPythonModule);
begin Self.PythonModule := T; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionPythonModule_R(Self: TPythonAction; var T: TPythonModule);
begin T := Self.PythonModule; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionRegisteredMethods_R(Self: TPythonAction; var T: TList);
begin T := Self.RegisteredMethods; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfUnregistername_W(Self: TPythonAction; const T: string);
Begin Self.fUnregistername := T; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfUnregistername_R(Self: TPythonAction; var T: string);
Begin T := Self.fUnregistername; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfRegistername_W(Self: TPythonAction; const T: string);
Begin Self.fRegistername := T; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfRegistername_R(Self: TPythonAction; var T: string);
Begin T := Self.fRegistername; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfClearname_W(Self: TPythonAction; const T: string);
Begin Self.fClearname := T; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfClearname_R(Self: TPythonAction; var T: string);
Begin T := Self.fClearname; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfPythonModule_W(Self: TPythonAction; const T: TPythonModule);
Begin Self.fPythonModule := T; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfPythonModule_R(Self: TPythonAction; var T: TPythonModule);
Begin T := Self.fPythonModule; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfRegisteredMethods_W(Self: TPythonAction; const T: TList);
Begin Self.fRegisteredMethods := T; end;
(*----------------------------------------------------------------------------*)
procedure TPythonActionfRegisteredMethods_R(Self: TPythonAction; var T: TList);
Begin T := Self.fRegisteredMethods; end;
(*----------------------------------------------------------------------------*)
procedure RIRegister_PythonAction_Routines(S: TPSExec);
begin
S.RegisterDelphiFunction(@Register, 'Register', cdRegister);
end;
(*----------------------------------------------------------------------------*)
procedure RIRegister_TPythonAction(CL: TPSRuntimeClassImporter);
begin
with CL.Add(TPythonAction) do
begin
RegisterPropertyHelper(@TPythonActionfRegisteredMethods_R,@TPythonActionfRegisteredMethods_W,'fRegisteredMethods');
RegisterPropertyHelper(@TPythonActionfPythonModule_R,@TPythonActionfPythonModule_W,'fPythonModule');
RegisterPropertyHelper(@TPythonActionfClearname_R,@TPythonActionfClearname_W,'fClearname');
RegisterPropertyHelper(@TPythonActionfRegistername_R,@TPythonActionfRegistername_W,'fRegistername');
RegisterPropertyHelper(@TPythonActionfUnregistername_R,@TPythonActionfUnregistername_W,'fUnregistername');
RegisterMethod(@TPythonAction.ClearMethods, 'ClearMethods');
RegisterConstructor(@TPythonAction.Create, 'Create');
RegisterMethod(@TPythonAction.HandlesTarget, 'HandlesTarget');
RegisterMethod(@TPythonAction.Execute, 'Execute');
RegisterMethod(@TPythonAction.UpdateTarget, 'UpdateTarget');
RegisterMethod(@TPythonAction.InitializeAction, 'InitializeAction');
RegisterPropertyHelper(@TPythonActionRegisteredMethods_R,nil,'RegisteredMethods');
RegisterPropertyHelper(@TPythonActionPythonModule_R,@TPythonActionPythonModule_W,'PythonModule');
end;
end;
(*----------------------------------------------------------------------------*)
procedure RIRegister_PythonAction(CL: TPSRuntimeClassImporter);
begin
RIRegister_TPythonAction(CL);
end;
{ TPSImport_PythonAction }
(*----------------------------------------------------------------------------*)
procedure TPSImport_PythonAction.CompileImport1(CompExec: TPSScript);
begin
SIRegister_PythonAction(CompExec.Comp);
end;
(*----------------------------------------------------------------------------*)
procedure TPSImport_PythonAction.ExecImport1(CompExec: TPSScript; const ri: TPSRuntimeClassImporter);
begin
RIRegister_PythonAction(ri);
RIRegister_PythonAction_Routines(CompExec.Exec); // comment it if no routines
end;
(*----------------------------------------------------------------------------*)
end.