forked from maxkleiner/python4delphi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuPSI_VclPythonGUIInputOutput.pas
More file actions
130 lines (104 loc) · 4.24 KB
/
uPSI_VclPythonGUIInputOutput.pas
File metadata and controls
130 lines (104 loc) · 4.24 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
unit uPSI_VclPythonGUIInputOutput;
{
to get the gui
}
interface
uses
SysUtils
,Classes
,uPSComponent
,uPSRuntime
,uPSCompiler
;
type
(*----------------------------------------------------------------------------*)
TPSImport_VclPythonGUIInputOutput = class(TPSPlugin)
public
procedure CompileImport1(CompExec: TPSScript); override;
procedure ExecImport1(CompExec: TPSScript; const ri: TPSRuntimeClassImporter); override;
end;
{ compile-time registration functions }
procedure SIRegister_TPythonGUIInputOutput(CL: TPSPascalCompiler);
procedure SIRegister_VclPythonGUIInputOutput(CL: TPSPascalCompiler);
{ run-time registration functions }
procedure RIRegister_VclPythonGUIInputOutput_Routines(S: TPSExec);
procedure RIRegister_TPythonGUIInputOutput(CL: TPSRuntimeClassImporter);
procedure RIRegister_VclPythonGUIInputOutput(CL: TPSRuntimeClassImporter);
procedure Register;
implementation
uses
Windows
,Messages
,Graphics
,Controls
,Forms
,Dialogs
,StdCtrls
,PythonEngine
,VclPythonGUIInputOutput
;
procedure Register;
begin
RegisterComponents('Pascal Script', [TPSImport_VclPythonGUIInputOutput]);
end;
(* === compile-time registration functions === *)
(*----------------------------------------------------------------------------*)
procedure SIRegister_TPythonGUIInputOutput(CL: TPSPascalCompiler);
begin
//with RegClassS(CL,'TPythonInputOutput', 'TPythonGUIInputOutput') do
with CL.AddClassN(CL.FindClass('TPythonInputOutput'),'TPythonGUIInputOutput') do
begin
RegisterMethod('Constructor Create( AOwner : TComponent)');
RegisterMethod('Procedure Free;');
RegisterMethod('Procedure DisplayString( const str : string)');
RegisterProperty('Output', 'TCustomMemo', iptrw);
end;
end;
(*----------------------------------------------------------------------------*)
procedure SIRegister_VclPythonGUIInputOutput(CL: TPSPascalCompiler);
begin
CL.AddConstantN('WM_WriteOutput','LongInt').SetInt( WM_USER + 1);
SIRegister_TPythonGUIInputOutput(CL);
CL.AddDelphiFunction('Procedure Register_PythonGUI');
end;
(* === run-time registration functions === *)
(*----------------------------------------------------------------------------*)
procedure TPythonGUIInputOutputOutput_W(Self: TPythonGUIInputOutput; const T: TCustomMemo);
begin Self.Output := T; end;
(*----------------------------------------------------------------------------*)
procedure TPythonGUIInputOutputOutput_R(Self: TPythonGUIInputOutput; var T: TCustomMemo);
begin T := Self.Output; end;
(*----------------------------------------------------------------------------*)
procedure RIRegister_VclPythonGUIInputOutput_Routines(S: TPSExec);
begin
S.RegisterDelphiFunction(@Register, 'Register_PythonGUI', cdRegister);
end;
(*----------------------------------------------------------------------------*)
procedure RIRegister_TPythonGUIInputOutput(CL: TPSRuntimeClassImporter);
begin
with CL.Add(TPythonGUIInputOutput) do begin
RegisterConstructor(@TPythonGUIInputOutput.Create, 'Create');
RegisterMethod(@TPythonGUIInputOutput.Destroy, 'Free');
RegisterMethod(@TPythonGUIInputOutput.DisplayString, 'DisplayString');
RegisterPropertyHelper(@TPythonGUIInputOutputOutput_R,@TPythonGUIInputOutputOutput_W,'Output');
end;
end;
(*----------------------------------------------------------------------------*)
procedure RIRegister_VclPythonGUIInputOutput(CL: TPSRuntimeClassImporter);
begin
RIRegister_TPythonGUIInputOutput(CL);
end;
{ TPSImport_VclPythonGUIInputOutput }
(*----------------------------------------------------------------------------*)
procedure TPSImport_VclPythonGUIInputOutput.CompileImport1(CompExec: TPSScript);
begin
SIRegister_VclPythonGUIInputOutput(CompExec.Comp);
end;
(*----------------------------------------------------------------------------*)
procedure TPSImport_VclPythonGUIInputOutput.ExecImport1(CompExec: TPSScript; const ri: TPSRuntimeClassImporter);
begin
RIRegister_VclPythonGUIInputOutput(ri);
RIRegister_VclPythonGUIInputOutput_Routines(CompExec.Exec); // comment it if no routines
end;
(*----------------------------------------------------------------------------*)
end.