Subversion Repositories Kolibri OS

Rev

Rev 9187 | Rev 9208 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9187 Rev 9197
Line 17... Line 17...
17
    along with CEdit. If not, see .
17
    along with CEdit. If not, see .
18
*)
18
*)
Line 19... Line 19...
19
 
19
 
Line 20... Line 20...
20
MODULE EditBox;
20
MODULE EditBox;
-
 
21
 
-
 
22
IMPORT SYSTEM, KOSAPI, Encodings;
-
 
23
 
-
 
24
CONST
Line 21... Line 25...
21
 
25
 
Line 22... Line 26...
22
IMPORT sys := SYSTEM, KOSAPI;
26
	MAX_LENGTH = 1024;
Line 50... Line 54...
50
VAR
54
VAR
Line 51... Line 55...
51
 
55
 
52
	key_proc: EditBoxKey;
56
	key_proc: EditBoxKey;
53
	paint    *: PROCEDURE (eb: tEditBox);
57
	paint     *: PROCEDURE (eb: tEditBox);
54
	mouse    *: PROCEDURE (eb: tEditBox);
58
	mouse     *: PROCEDURE (eb: tEditBox);
Line 55... Line 59...
55
	setValue *: PROCEDURE (eb: tEditBox; text: INTEGER);
59
	_setValue  : PROCEDURE (eb: tEditBox; text: INTEGER);
56
 
60
 
57
 
61
 
58
PROCEDURE _key (key: INTEGER; key_proc: EditBoxKey; text: tEditBox);
62
PROCEDURE _key (key: INTEGER; key_proc: EditBoxKey; text: tEditBox);
59
BEGIN
63
BEGIN
60
    sys.CODE(
64
    SYSTEM.CODE(
61
    08BH, 045H, 008H,   (*  mov     eax, dword [ebp +  8]  *)
65
    08BH, 045H, 008H,   (*  mov     eax, dword [ebp +  8]  *)
62
    08BH, 055H, 00CH,   (*  mov     edx, dword [ebp + 12]  *)
66
    08BH, 055H, 00CH,   (*  mov     edx, dword [ebp + 12]  *)
Line 81... Line 85...
81
    ptr := text.text;
85
    ptr := text.text;
82
    max := text.max;
86
    max := text.max;
83
    ASSERT(max < LEN(str));
87
    ASSERT(max < LEN(str));
84
    i := 0;
88
    i := 0;
85
    REPEAT
89
    REPEAT
86
        sys.GET(ptr, str[i]);
90
        SYSTEM.GET(ptr, str[i]);
87
        INC(i);
91
        INC(i);
88
        INC(ptr)
92
        INC(ptr)
89
    UNTIL (str[i - 1] = 0X) OR (i = max);
93
    UNTIL (str[i - 1] = 0X) OR (i = max);
90
    str[i] := 0X
94
    str[i] := 0X
91
END getValue;
95
END getValue;
Line -... Line 96...
-
 
96
 
-
 
97
 
-
 
98
PROCEDURE setValue* (text: tEditBox; str: ARRAY OF WCHAR);
-
 
99
VAR
-
 
100
	i: INTEGER;
-
 
101
	temp: ARRAY MAX_LENGTH OF CHAR;
-
 
102
BEGIN
-
 
103
	ASSERT(LENGTH(str) < LEN(temp));
-
 
104
	i := 0;
-
 
105
	REPEAT
-
 
106
		temp[i] := CHR(Encodings.UNI[ORD(str[i]), Encodings.CP866] MOD 256);
-
 
107
		INC(i)
-
 
108
	UNTIL str[i - 1] = 0X;
-
 
109
	_setValue(text, SYSTEM.ADR(temp[0]))
-
 
110
END setValue;
92
 
111
 
93
 
112
 
94
PROCEDURE create* (tlx, tly, width, max_chars: INTEGER; editbox_interlock: tEditBox): tEditBox;
113
PROCEDURE create* (tlx, tly, width, max_chars: INTEGER; editbox_interlock: tEditBox): tEditBox;
Line 95... Line 114...
95
VAR
114
VAR
Line 120... Line 139...
120
VAR
139
VAR
121
	a: INTEGER;
140
	a: INTEGER;
122
BEGIN
141
BEGIN
123
	a := KOSAPI.GetProcAdr(name, Lib);
142
	a := KOSAPI.GetProcAdr(name, Lib);
124
	ASSERT(a # 0);
143
	ASSERT(a # 0);
125
	sys.PUT(v, a)
144
	SYSTEM.PUT(v, a)
126
END GetProc;
145
END GetProc;
Line 127... Line 146...
127
 
146
 
128
 
147
 
129
PROCEDURE main;
148
PROCEDURE main;
130
VAR
149
VAR
131
	Lib: INTEGER;
150
	Lib: INTEGER;
132
BEGIN
151
BEGIN
133
	Lib := KOSAPI.LoadLib("/rd/1/lib/box_lib.obj");
152
	Lib := KOSAPI.LoadLib("/rd/1/lib/box_lib.obj");
134
	ASSERT(Lib # 0);
153
	ASSERT(Lib # 0);
135
	GetProc(Lib, sys.ADR(paint),    "edit_box");
154
	GetProc(Lib, SYSTEM.ADR(paint),     "edit_box");
136
	GetProc(Lib, sys.ADR(key_proc), "edit_box_key");
155
	GetProc(Lib, SYSTEM.ADR(key_proc),  "edit_box_key");
137
	GetProc(Lib, sys.ADR(mouse),    "edit_box_mouse");
156
	GetProc(Lib, SYSTEM.ADR(mouse),     "edit_box_mouse");
Line 138... Line 157...
138
	GetProc(Lib, sys.ADR(setValue), "edit_box_set_text");
157
	GetProc(Lib, SYSTEM.ADR(_setValue), "edit_box_set_text");
139
END main;
158
END main;