Subversion Repositories Kolibri OS

Rev

Rev 2121 | Rev 3634 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
833 Lrz 1
; 24.07.2008  обновлен Edit бокс
308 Lrz 2
; 01.02.07 - обновлён editbox
3
; 31.01.07 - исправлена некорректная отрисовка при большом значении высоты скина
4
;            выравнивание снизу относительно рабочей области экрана
5
window_y=67
2675 leency 6
window_x=400
493 Lrz 7
;--- другие макросы ---
1110 Lrz 8
include '../../../develop/libraries/box_lib/load_lib.mac'
1373 IgorA 9
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
493 Lrz 10
include 'txtbut.inc'
11
include '../../../macros.inc'
12
include 'run.mac'
309 heavyiron 13
include 'lang.inc'
1373 IgorA 14
use32
1069 Lrz 15
    org 0x0
16
    db 'MENUET01'
17
    dd 0x1
18
    dd start
19
    dd i_end
20
    dd mem
21
    dd mem
22
    dd par
23
    dd cur_dir_path
24
 
25
 
26
;        meos_app_start
27
;        use_edit_box
28
	@use_library
1373 IgorA 29
	use_txt_button
1069 Lrz 30
;        code
31
;load system lib
32
align 4
33
start:
34
sys_load_library  library_name, cur_dir_path, library_path, system_path, \
35
err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i
1373 IgorA 36
	cmp	eax,-1
37
	jz	close
1069 Lrz 38
 
1373 IgorA 39
	cmp	[par],byte 0
40
	jne	read_par
41
	mcall	40,EVM_MOUSE+EVM_BUTTON+EVM_KEY+EVM_REDRAW
205 heavyiron 42
red:
1373 IgorA 43
	mcall	48,3,sc,40
44
	edit_boxes_set_sys_color input_fn,input_fn_end,sc
45
	set_sys_colors_txt_button run_but,sc
46
	push	dword [sc.work_graph]
47
	pop	[input_fn.focus_border_color]
48
	call	draw_window
49
still:				;основной обработчик
50
	mcall	10		;Ожидать события
51
	dec  eax
52
	jz   red
53
	dec  eax
54
	jz   key
55
	dec  eax
56
	jz   button
1069 Lrz 57
;        mouse_edit_box input_fn
1373 IgorA 58
	push	dword input_fn
59
	call	[edit_box_mouse]
1069 Lrz 60
 
1373 IgorA 61
	jmp still    ;если ничего из перечисленного то снова в цикл
205 heavyiron 62
key:
1373 IgorA 63
	mcall	2
64
	cmp	ah,13
65
	je	run
1069 Lrz 66
;        key_edit_box input_fn
1373 IgorA 67
	push	dword input_fn
68
	call	[edit_box_key]
1069 Lrz 69
 
1373 IgorA 70
	jmp	still
205 heavyiron 71
button:
1373 IgorA 72
	mcall	17
73
	dec	ah
74
	jz	close
75
	dec	ah
76
	jz	run
77
	jmp	still
31 halyavin 78
 
205 heavyiron 79
read_par:
1373 IgorA 80
	mov	esi,par
81
	mov	edi,fn
82
	mov	ecx,256
83
	rep	movsb
205 heavyiron 84
run:
1373 IgorA 85
	xor	eax,eax
86
	mov	edi,file_info.name
87
	mov	ecx,512
88
	rep	stosb
89
	mov	edi,run_par
90
	mov	ecx,256
91
	rep	stosb
31 halyavin 92
 
1373 IgorA 93
	mov	esi,fn
94
	mov	edi,file_info.name
95
	cmp	[esi],byte '"'
96
	je	copy_fn_with_spaces
205 heavyiron 97
copy_fn:
1373 IgorA 98
	cmp	[esi],byte ' '
99
	je	.stop
100
	cmp	[esi],byte 0
101
	je	.stop
102
	mov	al,[esi]
103
	mov	[edi],al
104
	inc	esi
105
	inc	edi
106
	jmp	copy_fn
205 heavyiron 107
.stop:
31 halyavin 108
 
1373 IgorA 109
	jmp	copy_par
31 halyavin 110
 
205 heavyiron 111
copy_fn_with_spaces:
1373 IgorA 112
	inc	esi
205 heavyiron 113
@@:
1373 IgorA 114
	cmp	[esi],byte '"'
115
	je	.stop
116
	cmp	[esi],byte 0
117
	je	.stop
118
	mov	al,[esi]
119
	mov	[edi],al
120
	inc	esi
121
	inc	edi
122
	jmp	@b
205 heavyiron 123
.stop:
31 halyavin 124
 
205 heavyiron 125
copy_par:
126
@@:
1373 IgorA 127
	inc	esi
128
	cmp	[esi],byte ' '
129
	je	@b
130
	mov	edi,run_par
205 heavyiron 131
@@:
1373 IgorA 132
	cmp	[esi],byte 0
133
	je	.stop
134
	mov	al,[esi]
135
	mov	[edi],al
136
	inc	esi
137
	inc	edi
138
	jmp	@b
205 heavyiron 139
.stop:
1373 IgorA 140
	mcall	70,file_info
31 halyavin 141
 
1373 IgorA 142
	cmp	eax,0
143
	jl	error
144
	mov	[status],run_ok
145
	call	draw_status
146
	jmp	still
205 heavyiron 147
close:
1373 IgorA 148
	mcall -1
31 halyavin 149
 
205 heavyiron 150
error:
1373 IgorA 151
	neg	eax
152
	cmp_err 3,bad_file_sys
153
	cmp_err 5,file_not_find
154
	cmp_err 9,bad_fat_table
155
	cmp_err 10,acces_denyied
156
	cmp_err 11,device_error
157
	cmp_err 30,out_of_memory
158
	cmp_err 31,file_not_executable
159
	cmp_err 32,many_processes
31 halyavin 160
 
1373 IgorA 161
	call	draw_status
162
	jmp	still
31 halyavin 163
 
164
draw_window:
1373 IgorA 165
	mcall	48,5
166
	mov	si,bx
31 halyavin 167
 
1373 IgorA 168
	mcall	12,1
169
	mcall	48,4
170
	mov	dx,ax
171
	mcall	14
172
	xor	ecx,ecx
173
	sub	cx,window_y+2
174
	sub	cx,dx
175
	add	cx,si
176
	shl	ecx,16
177
	mov	cx,dx
178
	add	cx,window_y
179
	shr	eax,16
180
	mov	bx,ax
181
	sub	bx,window_x
182
	shl	ebx,15
183
	mov	bx,window_x
184
	mov	edx,[sc.work]
185
	or	edx,0x33000000
186
	xor	esi,esi
187
	mov	edi,grab_text
188
	mcall	0
31 halyavin 189
 
1373 IgorA 190
	mcall	9,procinfo,-1
31 halyavin 191
 
1373 IgorA 192
	mov	eax,[procinfo.box.width]
193
	sub	eax,20
194
	mov	[input_fn.width],eax
195
	mov	[run_but.width],ax
31 halyavin 196
 
1373 IgorA 197
	xor	bx,bx
198
	shl	ebx,16
199
	mov	bx,ax
200
	add	bx,10
201
	mov	cx,45
202
	push	cx
203
	shl	ecx,16
204
	pop	cx
205
	mov	edx,[sc.work_graph]
206
	mcall	38
1069 Lrz 207
;        draw_edit_box input_fn
1373 IgorA 208
	push	dword input_fn
209
	call	[edit_box_draw]
1069 Lrz 210
 
1373 IgorA 211
	draw_txt_button run_but
31 halyavin 212
 
1373 IgorA 213
	call	draw_status_text
31 halyavin 214
 
1373 IgorA 215
	mcall	12,2
31 halyavin 216
ret
217
 
205 heavyiron 218
draw_status:
1373 IgorA 219
	mov	ebx,[procinfo.box.width]
220
	sub	bx,10
221
	mov	ecx,(50)*65536+12
222
	mov	edx,[sc.work]
223
	mcall	13
205 heavyiron 224
draw_status_text:
1373 IgorA 225
	mov	edx,[status]
226
	xor	esi,esi
205 heavyiron 227
@@:
1373 IgorA 228
	cmp	[edx+esi],byte 0
229
	je	@f
230
	inc	esi
231
	jmp	@b
205 heavyiron 232
@@:
1373 IgorA 233
	mov	ecx,[sc.work_text]
234
	mcall	4,5*65536+(50)
31 halyavin 235
ret
236
 
308 Lrz 237
run_but txt_button 0,5,15,25,2,0,0,run_but_text,
1214 Lrz 238
input_fn edit_box 0,5,5,0xffffff,0x6a9480,0,0xaaaaaa,0,511,fn,mouse_dd,ed_focus+ed_always_focus
1069 Lrz 239
;mouse_flag: dd 0x0
1228 Lrz 240
input_fn_end:
309 heavyiron 241
if lang eq ru
205 heavyiron 242
hello db 'Введите полный путь к файлу и нажмите Enter',0
243
bad_file_sys db 'Неизвестная файловая система',0 ; 3
1373 IgorA 244
file_not_find db 'Файл не найден',0		 ; 5
245
bad_fat_table db 'Таблица FAT разрушена',0	 ; 9
246
acces_denyied db 'Доступ запрещен',0		 ; 10
247
device_error db 'Ошибка устройства',0		 ; 11
248
out_of_memory db 'Недостаточно памяти',0	 ; 30
205 heavyiron 249
file_not_executable db 'Файл не является исполняемым',0 ; 31
1373 IgorA 250
many_processes db 'Слишком много процессов',0	 ; 32
308 Lrz 251
run_ok db 'Программа успешно запущена',0
2121 leency 252
grab_text db 'Запуск программы',0
309 heavyiron 253
run_but_text db 'ЗАПУСТИТЬ',0
254
else
255
hello db 'Enter full path to file and press ',0
1373 IgorA 256
bad_file_sys db 'Unknown file system',0 	       ; 3
257
file_not_find db 'File not found',0		       ; 5
258
bad_fat_table db 'FAT table corrupted',0	       ; 9
259
acces_denyied db 'Access denied',0		       ; 10
260
device_error db 'Device error',0		       ; 11
261
out_of_memory db 'Out of memory',0		       ; 30
309 heavyiron 262
file_not_executable db 'File is not executable',0      ; 31
1373 IgorA 263
many_processes db 'Too many processes',0	       ; 32
309 heavyiron 264
run_ok db 'The program was started successfully',0
265
grab_text db 'RUN',0
266
run_but_text db 'RUN',0
267
end if
205 heavyiron 268
status dd hello
31 halyavin 269
 
1069 Lrz 270
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
271
;DATA данные
272
;Всегда соблюдать последовательность в имени.
1373 IgorA 273
system_path	 db '/sys/lib/'
274
library_name	 db 'box_lib.obj',0
1069 Lrz 275
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
276
 
1373 IgorA 277
if lang eq ru
278
err_message_found_lib	db 'Ошибка при поиске box_lib.obj',0
1069 Lrz 279
head_f_i:
1373 IgorA 280
head_f_l	db 'Системная ошибка',0
281
err_message_import	db 'Ошибка при импорте box_lib.obj',0
282
else
283
err_message_found_lib	db 'Sorry I cannot load library box_lib.obj',0
284
head_f_i:
285
head_f_l	db 'System error',0
286
err_message_import	db 'Error on load import library box_lib.obj',0
287
end if
1069 Lrz 288
 
289
myimport:
290
 
1373 IgorA 291
edit_box_draw	dd	aEdit_box_draw
292
edit_box_key	dd	aEdit_box_key
293
edit_box_mouse	dd	aEdit_box_mouse
294
version_ed	dd	aVersion_ed
1069 Lrz 295
 
1373 IgorA 296
		dd	0
297
		dd	0
1069 Lrz 298
 
1373 IgorA 299
aEdit_box_draw	db 'edit_box',0
300
aEdit_box_key	db 'edit_box_key',0
1069 Lrz 301
aEdit_box_mouse db 'edit_box_mouse',0
1373 IgorA 302
aVersion_ed	db 'version_ed',0
1069 Lrz 303
 
304
 
305
 
306
 
205 heavyiron 307
file_info:
308
.mode dd 7
309
.flags dd 0
310
.par dd run_par
311
dd 0,0
312
.name rb 512
31 halyavin 313
 
1228 Lrz 314
flags rw 1
31 halyavin 315
 
493 Lrz 316
sc system_colors
451 heavyiron 317
 
493 Lrz 318
procinfo process_information
31 halyavin 319
 
205 heavyiron 320
run_par rb 256
321
par rb 256
493 Lrz 322
fn rb 512
1214 Lrz 323
mouse_dd	rd 1
1069 Lrz 324
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1373 IgorA 325
cur_dir_path	rb 4096
326
library_path	rb 4096
1069 Lrz 327
i_end:
328
rb 1024
329
mem:
330
;meos_app_end
331
;udata