Subversion Repositories Kolibri OS

Rev

Rev 305 | Rev 309 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 305 Rev 308
-
 
1
; 01.02.07 - ®¡­®¢«ñ­ editbox
-
 
2
; 31.01.07 - ¨á¯à ¢«¥­  ­¥ª®àà¥ªâ­ ï ®âà¨á®¢ª  ¯à¨ ¡®«ì讬 §­ ç¥­¨¨ ¢ëá®âë ᪨­ 
-
 
3
;            ¢ëà ¢­¨¢ ­¨¥ á­¨§ã ®â­®á¨â¥«ì­® à ¡®ç¥© ®¡« á⨠íªà ­ 
1
window_y=88
4
window_y=67
2
;window_x=320
5
;window_x=320
3
window_x=450
6
window_x=640
4
include 'macros.inc'
7
include 'macros.inc'
5
	meos_header par
8
	meos_header par
6
	use_edit_box
9
	use_edit_box
7
	use_txt_button
10
	use_txt_button
8
	app_start
11
	app_start
9
	cmp	[par],byte 0
12
	cmp	[par],byte 0
10
	jne	read_par
13
	jne	read_par
11
	set_events_mask evm_mouse+evm_button+evm_key+evm_redraw
14
	set_events_mask evm_mouse+evm_button+evm_key+evm_redraw
12
red:
15
red:
13
	get_sys_colors sc
16
	get_sys_colors sc
14
	set_sys_colors_txt_button run_but,sc
17
	set_sys_colors_txt_button run_but,sc
15
	push	dword [sc.work_graph]
18
	push	dword [sc.work_graph]
16
	pop	[input_fn.focus_border_color]
19
	pop	[input_fn.focus_border_color]
17
	call	draw_window
20
	call	draw_window
18
still:
21
still:
19
	wait_event red,key,button,mouse,,still
22
	wait_event red,key,button,mouse,,still
20
key:
23
key:
21
	get_key
24
	get_key
22
	cmp	ah,13
25
	cmp	ah,13
23
	je	run
26
	je	run
24
	key_edit_box input_fn
27
	key_edit_box input_fn
25
	jmp	still
28
	jmp	still
26
button:
29
button:
27
	get_pressed_button
30
	get_pressed_button
28
	dec	ah
31
	dec	ah
29
	jz	close
32
	jz	close
30
	dec	ah
33
	dec	ah
31
	jz	run
34
	jz	run
32
	jmp	still
35
	jmp	still
33
mouse:
36
mouse:
34
	mouse_edit_box input_fn
37
	mouse_edit_box input_fn
35
	jmp	still
38
	jmp	still
36
 
39
 
37
read_par:
40
read_par:
38
	mov	esi,par
41
	mov	esi,par
39
	mov	edi,fn
42
	mov	edi,fn
40
	mov	ecx,256
43
	mov	ecx,256
41
	rep	movsb
44
	rep	movsb
42
run:
45
run:
43
	xor	eax,eax
46
	xor	eax,eax
44
	mov	edi,file_info.name
47
	mov	edi,file_info.name
45
	mov	ecx,512
48
	mov	ecx,512
46
	rep	stosb
49
	rep	stosb
47
	mov	edi,run_par
50
	mov	edi,run_par
48
	mov	ecx,256
51
	mov	ecx,256
49
	rep	stosb
52
	rep	stosb
50
 
53
 
51
	mov	esi,fn
54
	mov	esi,fn
52
	mov	edi,file_info.name
55
	mov	edi,file_info.name
53
	cmp	[esi],byte '"'
56
	cmp	[esi],byte '"'
54
	je	copy_fn_with_spaces
57
	je	copy_fn_with_spaces
55
copy_fn:
58
copy_fn:
56
	cmp	[esi],byte ' '
59
	cmp	[esi],byte ' '
57
	je	.stop
60
	je	.stop
58
	cmp	[esi],byte 0
61
	cmp	[esi],byte 0
59
	je	.stop
62
	je	.stop
60
	mov	al,[esi]
63
	mov	al,[esi]
61
	mov	[edi],al
64
	mov	[edi],al
62
	inc	esi
65
	inc	esi
63
	inc	edi
66
	inc	edi
64
	jmp	copy_fn
67
	jmp	copy_fn
65
.stop:
68
.stop:
66
 
69
 
67
	jmp	copy_par
70
	jmp	copy_par
68
 
71
 
69
copy_fn_with_spaces:
72
copy_fn_with_spaces:
70
	inc	esi
73
	inc	esi
71
@@:
74
@@:
72
	cmp	[esi],byte '"'
75
	cmp	[esi],byte '"'
73
	je	.stop
76
	je	.stop
74
	cmp	[esi],byte 0
77
	cmp	[esi],byte 0
75
	je	.stop
78
	je	.stop
76
	mov	al,[esi]
79
	mov	al,[esi]
77
	mov	[edi],al
80
	mov	[edi],al
78
	inc	esi
81
	inc	esi
79
	inc	edi
82
	inc	edi
80
	jmp	@b
83
	jmp	@b
81
.stop:
84
.stop:
82
 
85
 
83
copy_par:
86
copy_par:
84
@@:
87
@@:
85
	inc	esi
88
	inc	esi
86
	cmp	[esi],byte ' '
89
	cmp	[esi],byte ' '
87
	je	@b
90
	je	@b
88
	mov	edi,run_par
91
	mov	edi,run_par
89
@@:
92
@@:
90
	cmp	[esi],byte 0
93
	cmp	[esi],byte 0
91
	je	.stop
94
	je	.stop
92
	mov	al,[esi]
95
	mov	al,[esi]
93
	mov	[edi],al
96
	mov	[edi],al
94
	inc	esi
97
	inc	esi
95
	inc	edi
98
	inc	edi
96
	jmp	@b
99
	jmp	@b
97
.stop:
100
.stop:
98
 
101
 
99
	mov	eax,70
102
	mov	eax,70
100
	mov	ebx,file_info
103
	mov	ebx,file_info
101
	int	0x40
104
	int	0x40
102
 
105
 
103
	;cmp     eax,0
106
	cmp	eax,0
104
	;jg      error
107
	jl	error
105
	bt	eax,31
108
	mov	[status],run_ok
106
	je	error
109
	call	draw_status
107
	jmp     still
110
	jmp	still
108
close:
111
close:
109
	app_close
112
	app_close
110
 
113
 
111
error:
114
error:
112
 
115
 
113
macro cmp_err code,text_ptr
116
macro cmp_err code,text_ptr
114
{
117
{
115
	cmp	al,code
118
	cmp	al,code
116
	jne	@f
119
	jne	@f
117
	mov	[status],text_ptr
120
	mov	[status],text_ptr
118
	;jmp     .draw_status
-
 
119
@@:
121
@@:
120
}
122
}
121
	neg	eax
123
	neg	eax
122
 
-
 
123
	;test    al,al
-
 
124
	;jz      close
-
 
125
 
124
 
126
	cmp_err 3,bad_file_sys
125
	cmp_err 3,bad_file_sys
127
 
126
 
128
	cmp_err 5,file_not_find
127
	cmp_err 5,file_not_find
129
 
128
 
130
	cmp_err 9,bad_fat_table
129
	cmp_err 9,bad_fat_table
131
 
130
 
132
	cmp_err 10,acces_denyied
131
	cmp_err 10,acces_denyied
133
 
132
 
134
	cmp_err 11,device_error
133
	cmp_err 11,device_error
135
 
134
 
136
	cmp_err 30,out_of_memory
135
	cmp_err 30,out_of_memory
137
 
136
 
138
	cmp_err 31,file_not_executable
137
	cmp_err 31,file_not_executable
139
 
138
 
140
	cmp_err 32,many_processes
139
	cmp_err 32,many_processes
141
 
140
 
142
.draw_status:
141
 
143
	call	draw_status
142
	call	draw_status
144
	jmp	still
143
	jmp	still
145
 
144
 
146
draw_window:
145
draw_window:
-
 
146
	push	48
-
 
147
	pop	eax
-
 
148
	mov	ebx,5
-
 
149
	int	0x40
-
 
150
	mov	si,bx
147
	start_draw_window
151
	start_draw_window
-
 
152
	get_skin_height
-
 
153
	mov	dx,ax
148
	get_screen_size
154
	get_screen_size
149
	mov	cx,ax
155
	xor	ecx,ecx
150
	sub	cx,window_y+20
156
	sub	cx,window_y+2
-
 
157
	sub	cx,dx
-
 
158
	add	cx,si
151
	shl	ecx,16
159
	shl	ecx,16
-
 
160
	mov	cx,dx
152
	mov	cx,window_y
161
	add	cx,window_y
153
	shr	eax,16
162
	shr	eax,16
154
	mov	bx,ax
163
	mov	bx,ax
155
	sub	bx,window_x
164
	sub	bx,window_x
156
	shl	ebx,15
165
	shl	ebx,15
157
	mov	bx,window_x
166
	mov	bx,window_x
158
	mov	edx,[sc.work]
167
	mov	edx,[sc.work]
159
	or	edx,0xb3000000
168
	or	edx,0x33000000
160
	xor	eax,eax
169
	xor	eax,eax
161
	mov	esi,[sc.grab_text]
170
	xor	esi,esi
162
	mov	edi,hed
171
	mov	edi,grab_text
163
	int	0x40
172
	int	0x40
164
 
173
 
165
	get_procinfo app
174
	get_procinfo app
166
 
175
 
167
	mov	ax,[app.width]
176
	mov	eax,[app.width]
168
	sub	ax,20
177
	sub	eax,20
169
	mov	[input_fn.width],eax
178
	mov	[input_fn.width],eax
170
	mov	[run_but.width],ax
179
	mov	[run_but.width],ax
-
 
180
 
171
 
181
	xor	bx,bx
172
	mov	ebx,10000
182
	shl	ebx,16
173
	mov	bx,ax
183
	mov	bx,ax
174
	add	bx,10
184
	add	bx,10
175
	mov	cx,47
185
	mov	cx,45
176
	push	cx
186
	push	cx
177
	shl	ecx,16
187
	shl	ecx,16
178
	pop	cx
188
	pop	cx
179
	mov	edx,[sc.work_graph]
189
	mov	edx,[sc.work_graph]
180
	mov	eax,38
190
	mov	eax,38
181
	int	0x40
191
	int	0x40
182
 
192
 
183
	draw_edit_box input_fn
193
	draw_edit_box input_fn
184
	draw_txt_button run_but
194
	draw_txt_button run_but
185
 
195
 
186
	call	draw_status_text
196
	call	draw_status_text
187
 
197
 
188
	stop_draw_window
198
	stop_draw_window
189
ret
199
ret
190
 
200
 
191
draw_status:
201
draw_status:
192
	mov	ebx,5*65536+(window_x-5-10)
202
	mov	ebx,[app.width]
-
 
203
	sub	bx,10
193
	mov	ecx,(window_y-39)*65536+12
204
	mov	ecx,(50)*65536+12
194
	mov	edx,[sc.work]
205
	mov	edx,[sc.work]
195
	mov	eax,13
206
	mov	eax,13
196
	int	0x40
207
	int	0x40
197
draw_status_text:
208
draw_status_text:
198
	mov	edx,[status]
209
	mov	edx,[status]
199
	xor	esi,esi
210
	xor	esi,esi
200
@@:
211
@@:
201
	cmp	[edx+esi],byte 0
212
	cmp	[edx+esi],byte 0
202
	je	@f
213
	je	@f
203
	inc	esi
214
	inc	esi
204
	jmp	@b
215
	jmp	@b
205
@@:
216
@@:
206
	mov	eax,4
-
 
207
	mov	ebx,6*65536+(window_y-37)
217
	mov	ebx,5*65536+(50)
208
	mov	ecx,[sc.work_text]
218
	mov	ecx,[sc.work_text]
-
 
219
	mov	eax,4
209
	int	0x40
220
	int	0x40
210
ret
221
ret
211
 
222
 
212
run_but txt_button 0,5,15,30,2,0,0,run_but_text,
-
 
213
if lang eq ru
223
run_but txt_button 0,5,15,25,2,0,0,run_but_text,
214
run_but_text db '‡€“‘’ˆ’œ',0
-
 
215
else
-
 
216
run_but_text db 'RUN',0
-
 
217
end if
224
run_but_text db '‡€“‘’ˆ’œ',0
218
input_fn edit_box 0,5,10,0xffffff,0,0xaaaaaa,0,511,fn,ed_focus+\
225
input_fn edit_box 0,5,5,0xffffff,0,0xaaaaaa,0,511,fn,ed_focus+\
219
ed_always_focus
-
 
220
 
226
ed_always_focus
221
if lang eq ru
227
 
222
hello db '‚¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã ¨ ­ ¦¬¨â¥ Enter',0
228
hello db '‚¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã ¨ ­ ¦¬¨â¥ Enter',0
223
bad_file_sys db '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0 ; 3
229
bad_file_sys db '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0 ; 3
224
file_not_find db '” ©« ­¥ ­ ©¤¥­',0		 ; 5
230
file_not_find db '” ©« ­¥ ­ ©¤¥­',0		 ; 5
225
bad_fat_table db '’ ¡«¨æ  FAT à §àã襭 ',0	 ; 9
231
bad_fat_table db '’ ¡«¨æ  FAT à §àã襭 ',0	 ; 9
226
acces_denyied db '„®áâ㯠§ ¯à¥é¥­',0		 ; 10
232
acces_denyied db '„®áâ㯠§ ¯à¥é¥­',0		 ; 10
227
device_error db 'Žè¨¡ª  ãáâனá⢠',0		 ; 11
233
device_error db 'Žè¨¡ª  ãáâனá⢠',0		 ; 11
228
out_of_memory db '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0	 ; 30
234
out_of_memory db '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0	 ; 30
229
file_not_executable db '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0 ; 31
235
file_not_executable db '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0 ; 31
230
many_processes db '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0	 ; 32
236
many_processes db '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0	 ; 32
231
else
-
 
232
hello db 'Enter full path to file and press ',0
237
run_ok db 'à®£à ¬¬  ãᯥ譮 § ¯ã饭 ',0
233
bad_file_sys db 'Unknown file system',0                ; 3
-
 
234
file_not_find db 'File not found',0                    ; 5
-
 
235
bad_fat_table db 'FAT table corrupted',0               ; 9
-
 
236
acces_denyied db 'Access denied',0                     ; 10
-
 
237
device_error db 'Device error',0                       ; 11
-
 
238
out_of_memory db 'Out of memory',0                     ; 30
-
 
239
file_not_executable db 'File is not executable',0      ; 31
238
grab_text db '‡€“‘Š Žƒ€ŒŒ›',0
240
many_processes db 'Too many processes',0               ; 32
-
 
241
end if
-
 
242
 
239
 
243
if lang eq ru
-
 
244
hed db 'RUN ®â ¯¥à¢®£® ”¥¢à «ï 2007 £®¤ ',0
-
 
245
else
-
 
246
hed db 'RUN of the first of FEBRUARY 2007 year',0
-
 
247
end if
-
 
248
status dd hello
240
status dd hello
249
 
241
 
250
file_info:
242
file_info:
251
.mode dd 7
243
.mode dd 7
252
.flags dd 0
244
.flags dd 0
253
.par dd run_par
245
.par dd run_par
254
dd 0,0
246
dd 0,0
255
.name rb 512
247
.name rb 512
256
 
248
 
257
flags dw ?
249
flags dw ?
258
 
250
 
259
fn rb 512
251
fn rb 512
260
 
252
 
261
sc sys_color_table
253
sc sys_color_table
262
app procinfo
254
app procinfo
263
run_par rb 256
255
run_par rb 256
264
par rb 256
256
par rb 256
265
	app_end
257
	app_end