Subversion Repositories Kolibri OS

Rev

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