Rev 7631 | Rev 8442 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7463 | nisargshah | 1 | include '../../load_img.inc' |
2 | include '../../develop/libraries/libs-dev/libimg/libimg.inc' |
||
3 | include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
||
4 | include '../../develop/libraries/box_lib/load_lib.mac' |
||
5 | |||
6582 | nisargshah | 6 | @use_library_mem mem.Alloc, mem.Free, mem.ReAlloc, dll.Load |
7 | |||
7167 | nisargshah | 8 | icon_tl_sys dd 0 |
9 | icon_tl_nod dd 0 |
||
6582 | nisargshah | 10 | |
11 | TLIST_SZ = 325+16 ;=341. 16 is x-size of scroll bar |
||
12 | TLIST1_X = 50 |
||
13 | TLIST2_X = 409 |
||
14 | BT_SZ_X = 40 |
||
15 | SYS_COL = 0xe6e6e6 |
||
16 | BT_COL = 0xcccccc |
||
17 | STR_COL = 0x595959 ;0x000000 |
||
18 | |||
19 | ; TODO: automatic resizing of GUI elements on window resizing |
||
20 | |||
21 | align 4 |
||
22 | ;;================================================================================================;; |
||
23 | gui: ;////////////////////////////////////////////////////////////////////////////////////////////;; |
||
24 | ;;------------------------------------------------------------------------------------------------;; |
||
25 | ;? GUI-specific functions ;; |
||
26 | ;;------------------------------------------------------------------------------------------------;; |
||
27 | ;> none ;; |
||
28 | ;;------------------------------------------------------------------------------------------------;; |
||
29 | ;< none ;; |
||
30 | ;;================================================================================================;; |
||
31 | |||
32 | dd .init |
||
33 | dd .server_addr |
||
34 | dd .get_username |
||
35 | dd .get_cmd |
||
36 | dd .print |
||
37 | dd .set_flags |
||
38 | dd .list |
||
39 | dd .progress |
||
40 | dd .error |
||
41 | |||
42 | .init: |
||
43 | ; load libraries |
||
7167 | nisargshah | 44 | stdcall dll.Load, @IMPORT_GUI_LIBS |
6582 | nisargshah | 45 | test eax, eax |
46 | jnz .exit |
||
47 | |||
48 | mcall 48, 3, sc, sizeof.system_colors |
||
49 | mcall 40, 0xC0000027 ; set event mask |
||
50 | ret |
||
51 | |||
52 | .server_addr: |
||
53 | mov [auto_list], 1 |
||
54 | jmp login_gui.server_addr |
||
55 | |||
56 | .get_username: |
||
57 | jmp login_gui.get_username |
||
58 | |||
59 | |||
60 | ;;================================================================================================;; |
||
61 | .main: ;//////////////////////////////////////////////////////////////////////////////////////;; |
||
62 | ;;------------------------------------------------------------------------------------------------;; |
||
63 | ;? Initialize tree list, editbox and textedit elements ;; |
||
64 | ;;------------------------------------------------------------------------------------------------;; |
||
65 | ;> none ;; |
||
66 | ;;------------------------------------------------------------------------------------------------;; |
||
67 | ;< none ;; |
||
68 | ;;================================================================================================;; |
||
69 | |||
70 | stdcall [ted_init], tedit0 |
||
7580 | IgorA | 71 | stdcall [edit_box_set_text], edit_volume, root_dir |
6582 | nisargshah | 72 | |
73 | ; initialize tree list elements |
||
7580 | IgorA | 74 | stdcall [tl_data_init], tree1 |
75 | stdcall [tl_data_init], tree2 |
||
7509 | leency | 76 | |
77 | or dword[tree1.style], 8 ;tl_cursor_pos_limited - restrict cursor move to existing nodes |
||
78 | or dword[tree2.style], 8 ;tl_cursor_pos_limited |
||
79 | |||
7167 | nisargshah | 80 | ; read icons |
7631 | leency | 81 | load_image_file 'ftpc_sys.png', icon_tl_sys |
7167 | nisargshah | 82 | |
6582 | nisargshah | 83 | mov [filestruct.ptr], eax |
84 | mov [filestruct.subfn], 0 |
||
85 | mov [filestruct.offset], 54 |
||
86 | mov [filestruct.size], ecx |
||
87 | mcall 70, filestruct |
||
88 | cmp ebx, 0 |
||
89 | jl @f |
||
7167 | nisargshah | 90 | m2m dword[tree1.data_img_sys], dword[icon_tl_sys] |
91 | m2m dword[tree2.data_img_sys], dword[icon_tl_sys] |
||
6582 | nisargshah | 92 | |
93 | @@: |
||
7167 | nisargshah | 94 | ; read nodes icon file |
7631 | leency | 95 | load_image_file 'ftpc_nod.png', icon_tl_nod |
7167 | nisargshah | 96 | |
6582 | nisargshah | 97 | mov [filestruct.ptr], eax |
98 | ;mov [filestruct.subfn], 0 |
||
99 | ;mov [filestruct.offset], 54 |
||
100 | mov [filestruct.size], ecx |
||
101 | mcall 70, filestruct |
||
102 | cmp ebx, 0 |
||
103 | jl @f |
||
7167 | nisargshah | 104 | m2m dword[tree1.data_img], dword[icon_tl_nod] |
105 | m2m dword[tree2.data_img], dword[icon_tl_nod] |
||
6582 | nisargshah | 106 | |
107 | @@: |
||
108 | call .draw |
||
109 | ; create initial tree list for root_dir |
||
110 | call populate_local_tree_list |
||
111 | jmp arg_handler.connect |
||
112 | |||
113 | .get_cmd: |
||
114 | dec [auto_list] |
||
115 | jnz .redraw |
||
116 | call .clear_remote_tree |
||
117 | jmp cmd_list |
||
118 | |||
119 | .redraw: |
||
120 | call .draw |
||
121 | |||
122 | align 4 |
||
123 | .still: |
||
124 | mcall 10 |
||
125 | |||
126 | dec eax |
||
127 | jz .redraw |
||
128 | dec eax |
||
129 | jz .key |
||
130 | dec eax |
||
131 | jz .button |
||
132 | sub eax, 3 |
||
133 | jz .mouse |
||
134 | |||
135 | jmp .still |
||
136 | |||
137 | .error: |
||
138 | jmp login_gui.error |
||
139 | |||
140 | .exit: |
||
141 | ; stdcall mem.Free,[bmp_icon] |
||
7580 | IgorA | 142 | stdcall [tl_data_clear], tree1 |
143 | stdcall [tl_data_clear], tree2 |
||
6582 | nisargshah | 144 | stdcall [ted_delete], tedit0 |
145 | jmp exit |
||
146 | |||
147 | align 4 |
||
148 | .draw: |
||
149 | mcall 12, 1 |
||
150 | ; main window |
||
7464 | leency | 151 | mcall 0, <35,830>, <20,555>, 0x34000000+SYS_COL, 0x805080DD, str_title |
6582 | nisargshah | 152 | |
153 | ;------------------------- |
||
154 | ; textedit components |
||
155 | ;------------------------- |
||
156 | mcall 9, procinfo, -1 |
||
157 | mov edi, tedit0 |
||
158 | call EvSize |
||
159 | |||
160 | movzx ebx,word[procinfo.client_box.width] |
||
161 | inc bx |
||
162 | mcall 13, , ted_wnd_t |
||
163 | stdcall [ted_draw], tedit0 |
||
164 | |||
165 | ; draw "disconnect" button |
||
7489 | leency | 166 | mcall 8, <50,95>, <25,25>, 3, BT_COL |
6582 | nisargshah | 167 | ; string "disconnect" |
168 | mcall 4, <50+5,25+5>, 0xb0000000+STR_COL, str_disconnect |
||
169 | ; draw "Copy" button |
||
170 | mcall 8, <50,40>, <326,25>, 4, BT_COL |
||
171 | ; string "copy" |
||
172 | mcall 4, <50+5,326+5>, 0xb0000000+STR_COL, str_copy |
||
173 | ; draw "Search" button |
||
174 | mcall 8, |
||
175 | ; string "Search" |
||
176 | mcall 4, |
||
177 | |||
178 | ; draw "LIST" button |
||
179 | mcall 8, |
||
180 | ; string "LIST" |
||
181 | mcall 4, |
||
182 | ; draw "DELE" button |
||
183 | mcall 8, |
||
184 | ; string "DELE" |
||
185 | mcall 4, |
||
186 | ; draw "RDIR" button |
||
187 | mcall 8, |
||
188 | ; string "RDIR" |
||
189 | mcall 4, |
||
190 | ; draw "RMD" button |
||
191 | mcall 8, |
||
192 | ; string "RMD" |
||
193 | mcall 4, |
||
194 | |||
195 | ; draw "mkd" button |
||
196 | mcall 8, |
||
197 | ; string "mkd" |
||
198 | mcall 4, |
||
199 | |||
200 | ; draw "cancel" button |
||
7959 | leency | 201 | ;mcall 8, <555,55>, <308,25>, 10, BT_COL |
6582 | nisargshah | 202 | ; string "Cancel" |
7959 | leency | 203 | ;mcall 4, <555+5,308+5>, 0xb0000000+STR_COL, str_abort |
6582 | nisargshah | 204 | ; draw "change volume" button |
205 | mcall 8, |
||
206 | ; string "Change" |
||
207 | mcall 4, |
||
208 | |||
209 | ;-------------------------- |
||
210 | ; tree list components |
||
211 | ;-------------------------- |
||
7580 | IgorA | 212 | stdcall [tl_draw], tree1 |
213 | stdcall [tl_draw], tree2 |
||
6582 | nisargshah | 214 | |
215 | mov dword[wScr.all_redraw], 1 |
||
216 | stdcall [scrollbar_ver_draw], wScr |
||
217 | |||
218 | mov dword[wScr2.all_redraw],1 |
||
219 | stdcall [scrollbar_ver_draw], wScr2 |
||
220 | |||
221 | stdcall [edit_box_draw], edit_mkd |
||
222 | stdcall [edit_box_draw], edit_volume |
||
223 | stdcall [edit_box_draw], edit_search |
||
224 | |||
225 | mcall 12,2 |
||
226 | ret |
||
227 | |||
228 | align 16 |
||
229 | .mouse: |
||
230 | mcall 37, 1 |
||
231 | cmp word[tedit0.wnd.top], ax |
||
232 | jg .no_edit |
||
233 | |||
234 | shr eax, 16 |
||
235 | cmp word[tedit0.wnd.left], ax |
||
236 | jg .no_edit |
||
237 | |||
238 | mcall 37, 3 |
||
239 | bt eax, 24 |
||
240 | jnc @f |
||
241 | |||
242 | stdcall [ted_but_select_word], tedit0 |
||
243 | jmp .still |
||
244 | |||
245 | @@: |
||
246 | stdcall [ted_mouse], tedit0 |
||
247 | jmp .still |
||
248 | |||
249 | .no_edit: |
||
250 | stdcall [tl_mouse], tree1 |
||
251 | stdcall [tl_mouse], tree2 |
||
252 | stdcall [edit_box_mouse], edit_mkd |
||
253 | stdcall [edit_box_mouse], edit_volume |
||
254 | stdcall [edit_box_mouse], edit_search |
||
255 | jmp .still |
||
256 | |||
257 | align 16 |
||
258 | .key: |
||
259 | mcall 2 |
||
260 | stdcall [tl_key], tree1 |
||
261 | stdcall [tl_key], tree2 |
||
262 | stdcall [edit_box_key], edit_mkd |
||
263 | stdcall [edit_box_key], edit_volume |
||
264 | stdcall [edit_box_key], edit_search |
||
265 | jmp .still |
||
266 | |||
267 | align 16 |
||
268 | .button: |
||
269 | mcall 17 |
||
270 | |||
271 | cmp ah, 3 |
||
272 | jne @f |
||
273 | ijmp eax, interface_addr, interface.server_addr |
||
274 | jmp .still |
||
275 | |||
276 | @@: |
||
277 | cmp ah, 4 |
||
278 | jne @f |
||
279 | stdcall [ted_but_copy], tedit0 |
||
280 | jmp .still |
||
281 | |||
282 | @@: |
||
283 | cmp ah, 5 |
||
284 | jne @f |
||
285 | je filter_remote_list |
||
286 | |||
287 | @@: |
||
288 | cmp ah, 6 |
||
289 | je create_remote_dir |
||
290 | |||
291 | cmp ah, 7 |
||
292 | je delete_file |
||
293 | |||
294 | cmp ah, 8 |
||
295 | je cmd_rdir |
||
296 | |||
297 | cmp ah, 9 |
||
298 | je remove_dir |
||
299 | |||
300 | cmp ah, 11 |
||
301 | jne @f |
||
302 | call populate_local_tree_list |
||
303 | |||
304 | @@: |
||
305 | cmp ah, 12 |
||
306 | jne @f |
||
307 | call .clear_remote_tree |
||
308 | je cmd_list |
||
309 | |||
310 | @@: |
||
311 | cmp ah, 1 |
||
312 | je .exit |
||
313 | |||
314 | jmp .still |
||
315 | |||
316 | .print: |
||
317 | pushad |
||
318 | mov ebx, ted_opt_ed_change_time + ted_opt_ed_move_cursor |
||
319 | mov ecx, 2 ; 0a0d |
||
320 | mov esi, [esp+36] |
||
321 | mov word[tedit_buffer], 0x0a0d |
||
322 | lea edi, [tedit_buffer+2] |
||
323 | |||
324 | @@: |
||
325 | movsb |
||
326 | inc ecx |
||
327 | cmp byte[esi], 0 |
||
328 | jne @b |
||
329 | stdcall [ted_text_add], tedit0, tedit_buffer, ecx, ebx |
||
330 | stdcall [ted_draw], tedit0 |
||
331 | ; write to log file |
||
332 | mov eax, [esp+36] |
||
7201 | nisargshah | 333 | sub ecx, 2 ; 0a0d is not included |
6582 | nisargshah | 334 | call write_to_file |
335 | |||
336 | @@: |
||
337 | popad |
||
338 | ret 4 |
||
339 | |||
340 | .set_flags: |
||
341 | ret 4 |
||
342 | |||
343 | |||
344 | ;;================================================================================================;; |
||
345 | .list: ;//////////////////////////////////////////////////////////////////////////////////////;; |
||
346 | ;;------------------------------------------------------------------------------------------------;; |
||
347 | ;? update tree2 with remote directory listing ;; |
||
348 | ;;------------------------------------------------------------------------------------------------;; |
||
349 | ;> buf_buffer2 = received data buffer ;; |
||
350 | ;> eax = size of data ;; |
||
351 | ;> remote_list_buf = buffer containing last incomplete entry (if any) ;; |
||
352 | ;;------------------------------------------------------------------------------------------------;; |
||
353 | ;< none ;; |
||
354 | ;;================================================================================================;; |
||
355 | |||
356 | push edx |
||
357 | push eax |
||
358 | ; check if any incomplete entry to be parsed |
||
359 | cmp byte[remote_list_buf], 0 |
||
360 | je .no_backlog |
||
361 | ; find end of remote_list_buf |
||
362 | mov edi, remote_list_buf |
||
363 | mov al, 0 |
||
364 | repne scasb |
||
365 | ; copy rest of the incomplete entry to remote_list_buf |
||
366 | mov esi, buf_buffer2 |
||
367 | dec edi |
||
368 | |||
369 | @@: |
||
370 | movsb |
||
371 | cmp word[esi-2], 0x0a0d |
||
372 | jne @b |
||
373 | mov byte[edi], 0 |
||
374 | mov ecx, edi |
||
375 | sub ecx, remote_list_buf ; ecx = length of remote_list_buf |
||
376 | mov ebx, esi ; ebx = address at which next parse should start |
||
377 | mov edi, remote_list_buf |
||
378 | jmp .start_parsing |
||
379 | |||
380 | .no_backlog: |
||
381 | mov ecx, eax ; ecx = number of bytes remaining to parse in buf_buffer2 |
||
382 | mov edi, buf_buffer2 |
||
383 | |||
384 | .start_parsing: |
||
385 | ; find pointer to name |
||
386 | cmp byte[edi], 'd' ; file is a directory |
||
387 | je @f |
||
388 | cmp byte[edi], 'l' ; link |
||
389 | je @f |
||
390 | mov word[node_entry2], 'fi' |
||
391 | jmp .parse |
||
392 | |||
393 | @@: |
||
394 | mov word[node_entry2], 'fo' |
||
395 | |||
396 | .parse: |
||
397 | mov edx, 8 |
||
398 | |||
399 | @@: |
||
400 | mov al, ' ' |
||
401 | mov ecx, [esp] |
||
402 | add ecx, buf_buffer2 |
||
403 | sub ecx, edi |
||
404 | |||
405 | repne scasb |
||
406 | |||
407 | ; check if the (last) entry is incomplete |
||
408 | test ecx, ecx |
||
409 | jz .store_last_entry |
||
410 | |||
411 | rep scasb |
||
412 | test ecx, ecx |
||
413 | jz .store_last_entry |
||
414 | |||
415 | dec edx |
||
416 | jnz @b |
||
417 | |||
418 | lea esi, [edi-1] |
||
419 | lea edi, [node_entry2+4] |
||
420 | @@: |
||
421 | movsb |
||
422 | cmp word[esi], 0x0a0d ; end of entry |
||
423 | jne @b |
||
424 | mov byte[edi], 0 |
||
425 | |||
426 | ; add node to tree list |
||
427 | cmp word[node_entry2], 'fi' |
||
428 | jne @f |
||
7580 | IgorA | 429 | stdcall [tl_node_add], tree2, 0, node_entry2 |
6582 | nisargshah | 430 | jmp .added_remote_node |
431 | |||
432 | @@: |
||
7580 | IgorA | 433 | stdcall [tl_node_add], tree2, 0x10000, node_entry2 |
6582 | nisargshah | 434 | |
435 | .added_remote_node: |
||
436 | ; check whether we are parsing remote_list_buf |
||
437 | cmp byte[remote_list_buf], 0 |
||
438 | je @f |
||
439 | mov byte[remote_list_buf], 0 ; done parsing remote_list_buf |
||
440 | mov edi, ebx |
||
441 | mov eax, [esp] |
||
442 | mov ecx, buf_buffer2 |
||
443 | add ecx, eax |
||
444 | sub ecx, ebx |
||
445 | jmp .start_parsing |
||
446 | |||
447 | @@: |
||
448 | ; any more entries to parse? |
||
449 | lea edi, [esi+2] ; skip 0a0d |
||
450 | cmp byte[edi], 0 |
||
451 | jne .start_parsing |
||
452 | jmp .done_parsing |
||
453 | |||
454 | .store_last_entry: |
||
455 | ; find index of the last incomplete entry |
||
456 | mov ecx, -1 |
||
457 | mov eax, [esp] |
||
458 | lea edi, [buf_buffer2+eax-2] |
||
459 | mov al, 0x0a |
||
460 | std |
||
461 | repne scasb |
||
462 | cld |
||
463 | |||
464 | ; copy last (incomplete) entry of buf_buffer2 to remote_list_buf |
||
465 | lea esi, [edi+2] |
||
466 | mov edi, remote_list_buf |
||
467 | @@: |
||
468 | movsb |
||
469 | cmp byte[esi-1], 0 |
||
470 | jne @b |
||
471 | |||
472 | .done_parsing: |
||
473 | call .draw ; to update tree list immediately in case of "auto_list" |
||
474 | pop eax |
||
475 | pop edx |
||
476 | jmp data_loop |
||
477 | |||
478 | ; clear tree list and add ".." node before executing "LIST" |
||
479 | .clear_remote_tree: |
||
7580 | IgorA | 480 | stdcall [tl_info_clear], tree2 |
6582 | nisargshah | 481 | mov dword[node_entry2+4], 0x2E2E |
7580 | IgorA | 482 | stdcall [tl_node_add], tree2, 0x10000, node_entry2 |
6582 | nisargshah | 483 | ret |
484 | |||
485 | |||
486 | ;;================================================================================================;; |
||
487 | .progress: ;//////////////////////////////////////////////////////////////////////////////////;; |
||
488 | ;;------------------------------------------------------------------------------------------------;; |
||
489 | ;? Update progress bar every time new data is received from data_loop block ;; |
||
490 | ;;------------------------------------------------------------------------------------------------;; |
||
491 | ;> edx = no. of bytes downloaded ;; |
||
492 | ;;------------------------------------------------------------------------------------------------;; |
||
493 | ;< none ;; |
||
494 | ;;================================================================================================;; |
||
495 | |||
496 | ; detect abort |
||
497 | mcall 17 |
||
498 | cmp ah, 10 |
||
499 | je cmd_abor |
||
500 | |||
501 | push eax ebx ecx edx |
||
502 | mov ebx, [file_size] |
||
503 | mov ecx, 100 |
||
504 | mov eax, edx |
||
505 | mul ecx |
||
506 | div ebx |
||
507 | cmp eax, 100 |
||
508 | jle @f |
||
509 | mov eax, 100 |
||
510 | |||
511 | @@: |
||
512 | mov dword[pb], eax |
||
513 | push pb |
||
514 | call [progressbar_draw] |
||
515 | pop edx ecx ebx eax |
||
516 | ret |
||
517 | |||
518 | |||
519 | remove_dir: |
||
520 | |||
7580 | IgorA | 521 | stdcall [tl_node_get_data], tree2 |
6582 | nisargshah | 522 | cmp word[eax], 'fo' |
523 | jne gui.still |
||
524 | lea esi, [eax+4] |
||
525 | lea edi, [buf_cmd+4] |
||
526 | @@: |
||
527 | movsb |
||
528 | cmp byte[esi], 0 |
||
529 | jne @b |
||
530 | mov word[edi], 0x000a |
||
531 | jmp cmd_rmd |
||
532 | |||
533 | |||
534 | delete_file: |
||
535 | |||
7580 | IgorA | 536 | stdcall [tl_node_get_data], tree2 |
6582 | nisargshah | 537 | cmp word[eax], 'fi' |
538 | jne gui.still |
||
539 | lea esi, [eax+4] |
||
540 | lea edi, [buf_cmd+5] |
||
541 | @@: |
||
542 | movsb |
||
543 | cmp byte[esi], 0 |
||
544 | jne @b |
||
545 | mov word[edi], 0x000a |
||
546 | jmp cmd_dele |
||
547 | |||
548 | |||
549 | create_remote_dir: |
||
550 | |||
551 | lea edi, [buf_cmd+4] |
||
552 | mov esi, new_dir_buf |
||
553 | @@: |
||
554 | movsb |
||
555 | cmp byte[esi], 0 |
||
556 | jne @b |
||
557 | mov word[edi], 0x000a |
||
558 | jmp cmd_mkd |
||
559 | |||
560 | |||
561 | ; Function to call when you press [Enter] |
||
562 | align 4 |
||
563 | fun_on_enter: |
||
564 | |||
7580 | IgorA | 565 | stdcall [tl_node_get_data], tree1 |
6582 | nisargshah | 566 | cmp word[eax], 'fi' |
567 | je @f |
||
568 | lea ecx, [eax+4] ; discard first 4 bytes |
||
569 | call populate_local_tree_list.read_new_dir |
||
7580 | IgorA | 570 | ;stdcall [tl_draw], tree1 |
6582 | nisargshah | 571 | ret |
572 | |||
573 | @@: |
||
574 | lea esi, [eax+4] |
||
575 | lea edi, [buf_cmd+5] |
||
576 | @@: |
||
577 | movsb |
||
578 | cmp byte[esi], 0 |
||
579 | jne @b |
||
580 | mov word[edi], 0x000a |
||
581 | jmp cmd_stor |
||
582 | |||
583 | |||
584 | ; Function to call when you press [Enter] |
||
585 | ; for treelist with remote directory listing |
||
586 | align 4 |
||
587 | fun_on_enter2: |
||
588 | |||
7580 | IgorA | 589 | stdcall [tl_node_get_data], tree2 |
6582 | nisargshah | 590 | lea esi, [eax+4] |
591 | cmp dword[esi], 0x2E2E |
||
592 | jne @f |
||
593 | mov [auto_list], 1 |
||
594 | jmp cmd_cdup |
||
595 | |||
596 | @@: |
||
597 | cmp word[eax], 'fo' |
||
598 | je @f |
||
599 | lea edi, [buf_cmd+5] |
||
600 | jmp .copy |
||
601 | |||
602 | @@: |
||
603 | lea edi, [buf_cmd+4] |
||
604 | |||
605 | .copy: |
||
606 | movsb |
||
607 | cmp byte[esi], 0 |
||
608 | jne .copy |
||
609 | mov word[edi], 0x000a ; extra character before 0 to compensate for |
||
610 | ; newline in console code |
||
611 | cmp word[eax], 'fo' |
||
612 | je @f |
||
613 | jmp cmd_retr |
||
614 | |||
615 | @@: |
||
7580 | IgorA | 616 | stdcall [tl_info_clear], tree2 |
6582 | nisargshah | 617 | mov [auto_list], 1 |
618 | jmp cmd_cwd |
||
619 | |||
620 | |||
621 | ;;================================================================================================;; |
||
622 | populate_local_tree_list: ;///////////////////////////////////////////////////////////////////////;; |
||
623 | ;;------------------------------------------------------------------------------------------------;; |
||
624 | ;? Update tree1 with file names from current working directory ;; |
||
625 | ;;------------------------------------------------------------------------------------------------;; |
||
626 | ;> none ;; |
||
627 | ;;------------------------------------------------------------------------------------------------;; |
||
628 | ;< none ;; |
||
629 | ;;================================================================================================;; |
||
630 | |||
631 | mov [filestruct.subfn], 1 |
||
632 | mov [filestruct.size], 32 |
||
633 | mov [filestruct.ptr], folder_data |
||
634 | mov ecx, root_dir |
||
635 | |||
636 | .read_new_dir: ; ecx = pointer to folder name |
||
637 | ; parse ".." |
||
638 | cmp word[ecx], '..' |
||
639 | jne @f |
||
640 | cmp byte[ecx+2], 0 |
||
641 | jne @f |
||
642 | |||
643 | ; removes last file name from filestruct.name |
||
644 | mcall 30, 2, filestruct.name,1024 ; get absolute path for cwd |
||
645 | lea edi, [filestruct.name+eax] ; edi = pointer to the tail of file name |
||
646 | mov al, '/' |
||
647 | mov ecx, -1 |
||
648 | std |
||
649 | repne scasb |
||
650 | cld |
||
651 | mov byte[edi+1], 0 |
||
652 | mov ecx, filestruct.name |
||
653 | |||
654 | @@: |
||
655 | mcall 30, 1, ; set cwd |
||
656 | mcall 30, 2, filestruct.name, 1024 ; get absolute path for cwd |
||
657 | ; clear all nodes in tree list |
||
7580 | IgorA | 658 | stdcall [tl_info_clear], tree1 |
6582 | nisargshah | 659 | mov [filestruct.offset], 0 |
660 | |||
661 | ; read 32 blocks |
||
662 | .outer: |
||
663 | mcall 70, filestruct |
||
664 | ;int3 |
||
665 | test eax, eax |
||
666 | jz @f |
||
667 | cmp eax, 6 ; EOF |
||
668 | je @f |
||
669 | call error_fs |
||
670 | jmp .done |
||
671 | @@: |
||
672 | test ebx, ebx |
||
673 | je .done ; when no. of blocks is multiple of 32 |
||
674 | add [filestruct.offset], ebx |
||
675 | mov ecx, ebx |
||
676 | mov edx, folder_data+32+40 ; pointer to first file's name in BDFE |
||
677 | |||
678 | .inner: ; ebx = total number of BDFEs |
||
679 | ; ecx = number of BDFEs remaining |
||
680 | ; edx = pointer to file's name in BDFE |
||
681 | ; ignore "." entry |
||
682 | cmp word[edx], 0x002E |
||
683 | je .added |
||
684 | ; copy file/folder name to node_entry |
||
685 | mov esi, edx |
||
686 | mov edi, node_entry+4 |
||
687 | @@: |
||
688 | movsb |
||
689 | cmp byte [esi-1], 0 |
||
690 | jne @b |
||
691 | ; check whether this is a file or a folder |
||
692 | mov al, byte[edx-40] |
||
693 | and al, 0x10 |
||
694 | jz @f |
||
695 | ; add a folder to tree |
||
696 | mov word[node_entry], 'fo' |
||
7580 | IgorA | 697 | stdcall [tl_node_add], tree1, 0x10000, node_entry |
6582 | nisargshah | 698 | jmp .added |
699 | |||
700 | @@: |
||
701 | ; add a file to tree |
||
702 | mov word[node_entry], 'fi' |
||
7580 | IgorA | 703 | stdcall [tl_node_add], tree1, 0, node_entry |
6582 | nisargshah | 704 | |
705 | .added: |
||
706 | add edx, 304 ; 304 = length of BDFE. jump to next file's name |
||
707 | loop .inner |
||
7580 | IgorA | 708 | stdcall [tl_draw], tree1 |
6582 | nisargshah | 709 | cmp ebx, 32 |
710 | je .outer ; more BDFEs to come |
||
711 | |||
712 | .done: |
||
713 | ret |
||
714 | |||
715 | |||
716 | MIN_M_WND_H equ 500 ; |
||
717 | ;input: |
||
718 | ; edi = pointer to tedit struct |
||
719 | align 4 |
||
720 | EvSize: |
||
721 | pushad |
||
722 | mov ebx, ted_scr_h |
||
723 | mov esi, ted_scr_w |
||
724 | |||
725 | m2m ted_wnd_w, [procinfo.client_box.width] |
||
726 | mov eax, ted_wnd_l |
||
727 | sub ted_wnd_w, eax |
||
728 | sub ted_wnd_w, 70 |
||
729 | movzx eax, word[esi+sb_offs_size_x] |
||
730 | sub ted_wnd_w, eax |
||
731 | |||
732 | ;m2m ted_wnd_h,[procinfo.client_box.height] ; |
||
733 | ;cmp ted_wnd_h,MIN_M_WND_H |
||
734 | ;jg @f |
||
735 | mov ted_wnd_h, MIN_M_WND_H |
||
736 | ;@@: |
||
737 | |||
738 | movzx eax, word[ebx+sb_offs_size_y] |
||
739 | sub ted_wnd_h, eax |
||
740 | mov eax, ted_wnd_t |
||
741 | sub ted_wnd_h, eax |
||
742 | |||
743 | stdcall [ted_init_scroll_bars], tedit0,2 |
||
744 | |||
745 | popad |
||
746 | ret |
||
747 | |||
748 | |||
749 | ;;================================================================================================;; |
||
750 | filter_remote_list: ;/////////////////////////////////////////////////////////////////////////////;; |
||
751 | ;;------------------------------------------------------------------------------------------------;; |
||
752 | ;? Filter tree list according to pattern specified in 'filter' ;; |
||
753 | ;;------------------------------------------------------------------------------------------------;; |
||
754 | ;> none ;; |
||
755 | ;;------------------------------------------------------------------------------------------------;; |
||
756 | ;< none ;; |
||
757 | ;;================================================================================================;; |
||
7580 | IgorA | 758 | stdcall [tl_cur_beg], tree2 |
6582 | nisargshah | 759 | |
760 | .next_node: |
||
7580 | IgorA | 761 | stdcall [tl_node_get_data], tree2 |
6582 | nisargshah | 762 | ; check whether any nodes left |
763 | test eax, eax |
||
764 | jnz @f |
||
7580 | IgorA | 765 | stdcall [tl_draw], tree2 |
6582 | nisargshah | 766 | stdcall dword[edit_box_set_text], edit_search, str_null |
767 | je gui.still |
||
768 | |||
769 | @@: |
||
770 | cmp byte[filter], 0 |
||
771 | je gui.still |
||
772 | |||
773 | ; calculate size of node entry |
||
774 | lea esi, [eax+4] |
||
775 | mov edi, esi |
||
776 | mov ecx, -1 |
||
777 | @@: |
||
778 | lodsb |
||
779 | inc ecx |
||
780 | test al, al |
||
781 | jnz @b |
||
782 | |||
783 | ; calculate size of pattern |
||
784 | mov esi, filter |
||
785 | mov edx, -1 |
||
786 | @@: |
||
787 | lodsb |
||
788 | inc edx |
||
789 | test al, al |
||
790 | jnz @b |
||
791 | |||
792 | mov esi, filter |
||
793 | |||
794 | call search |
||
795 | pop esi |
||
796 | test al, al |
||
797 | |||
798 | jnz .get_next |
||
7580 | IgorA | 799 | stdcall [tl_node_delete], tree2 |
6582 | nisargshah | 800 | jmp @f |
801 | |||
802 | .get_next: |
||
7580 | IgorA | 803 | stdcall [tl_cur_next], tree2 |
6582 | nisargshah | 804 | |
805 | @@: |
||
806 | jmp .next_node |
||
807 | |||
808 | |||
809 | ;;================================================================================================;; |
||
810 | search: ;/////////////////////////////////////////////////////////////////////////////////////////;; |
||
811 | ;;------------------------------------------------------------------------------------------------;; |
||
812 | ;? Search for a substring within a string ;; |
||
813 | ;;------------------------------------------------------------------------------------------------;; |
||
814 | ;> edi = pointer to haystack ;; |
||
815 | ;> ecx = size of haystack ;; |
||
816 | ;> esi = pointer to needle ;; |
||
817 | ;> edx = size of needle ;; |
||
818 | ;;------------------------------------------------------------------------------------------------;; |
||
819 | ;< al = 0 (not found) / 1 (found) ;; |
||
820 | ;;================================================================================================;; |
||
821 | |||
822 | push ebx ecx edx esi edi |
||
823 | ; if length of haystack < length of needle |
||
824 | cmp ecx, edx |
||
825 | jge @f |
||
826 | mov bh, 0 |
||
827 | jmp .done |
||
828 | @@: |
||
829 | mov bh, 1 ; flag (0 = not found, 1 = found) |
||
830 | sub ecx, edx |
||
831 | dec edi |
||
832 | |||
833 | .outer: |
||
834 | cmp ecx, 0 |
||
835 | jl .done |
||
836 | dec ecx |
||
837 | inc edi |
||
838 | mov bh, 1 ; flag (0 = not found, 1 = found) |
||
839 | mov edx, [esp+8] |
||
840 | mov esi, [esp+4] |
||
841 | |||
842 | .inner: |
||
843 | test edx, edx |
||
844 | jz .done |
||
845 | dec edx |
||
846 | |||
847 | mov eax, esi |
||
848 | sub eax, [esp+4] |
||
849 | mov al, byte[edi+eax] |
||
850 | mov bl, byte[esi] |
||
851 | |||
852 | inc esi |
||
853 | cmp al, bl |
||
854 | je .inner |
||
855 | mov bh, 0 |
||
856 | jmp .outer |
||
857 | |||
858 | |||
859 | .done: |
||
860 | mov al, bh |
||
861 | pop edi esi edx ecx ebx |
||
862 | ret |
||
863 | |||
864 | ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
||
865 | |||
7464 | leency | 866 | ;hed db 'FTP Client for KolibriOS',0 |
6582 | nisargshah | 867 | str_change db 'Change',0 |
868 | str_disconnect db 'Disconnect',0 |
||
869 | str_copy db 'Copy',0 |
||
870 | str_mkd db 'MKD',0 |
||
871 | str_dele db 'DELE',0 |
||
872 | str_rdir db 'RDIR',0 |
||
873 | str_rmd db 'RMD',0 |
||
874 | str_abort db 'Cancel',0 |
||
875 | str_search db 'Search',0 |
||
876 | str_list db 'LIST',0 |
||
877 | str_null db 0 |
||
878 | |||
879 | ;---------------------- |
||
880 | ; tree list elements |
||
881 | ;---------------------- |
||
882 | tree1 tree_list 64, 500, tl_list_box_mode, 16, 16, \ |
||
883 | 0xffffff, BT_COL, 0x000000, TLIST1_X, 105, TLIST_SZ-16, 185, 14, 4,\ |
||
884 | 0, el_focus, wScr, fun_on_enter |
||
885 | |||
886 | tree2 tree_list 64, 500, tl_list_box_mode, 16, 16, \ |
||
887 | 0xffffff, BT_COL, 0x000000, TLIST2_X, 105, TLIST_SZ-16, 185, 14, 4, \ |
||
888 | 0, el_focus, wScr2, fun_on_enter2 |
||
889 | |||
890 | ; editbox for mkd |
||
7959 | leency | 891 | edit_mkd edit_box TLIST_SZ-45, TLIST2_X, 80, 0xffffff, 0x94AECE, 0, \ |
892 | 0xAABBCC, 0x10000000, 63, new_dir_buf, mouse_dd, 0 |
||
6582 | nisargshah | 893 | |
894 | ; editbox for default volume |
||
7959 | leency | 895 | edit_volume edit_box TLIST_SZ-60, TLIST1_X, 80, 0xffffff, 0x94AECE, 0, \ |
896 | 0xAABBCC, 0x10000000, 99, root_dir, mouse_dd, 0 |
||
6582 | nisargshah | 897 | |
898 | ; editbox for search |
||
7959 | leency | 899 | edit_search edit_box TLIST_SZ-60, TLIST2_X, 22, 0xffffff, 0x94AECE, 0, \ |
900 | 0xAABBCC, 0x10000000, 99, filter,mouse_dd, 0 |
||
6582 | nisargshah | 901 | |
902 | ; A subsidiary structure for scrolling |
||
903 | align 4 |
||
904 | wScr: |
||
905 | .x: |
||
906 | .size_x dw 16 ;+0 |
||
907 | .start_x dw 250+50-16 ;+2 |
||
908 | .y: |
||
909 | .size_y dw 185 ;+4 |
||
910 | .start_y dw 105 ;+6 |
||
911 | .btn_high dd 15 ;+8 |
||
912 | .type dd 1 ;+12 |
||
913 | .max_area dd 100 ;+16 |
||
914 | .cur_area dd 30 ;+20 |
||
915 | .position dd 0 ;+24 |
||
916 | .bckg_col dd 0xeeeeee ;+28 |
||
917 | .frnt_col dd 0xbbddff ;+32 |
||
918 | .line_col dd 0 ;+36 |
||
919 | .redraw dd 0 ;+40 |
||
920 | .delta dw 0 ;+44 |
||
921 | .delta2 dw 0 ;+46 |
||
922 | .run_x: |
||
923 | .r_size_x dw 0 ;+48 |
||
924 | .r_start_x dw 0 ;+50 |
||
925 | .run_y: |
||
926 | .r_size_y dw 0 ;+52 |
||
927 | .r_start_y dw 0 ;+54 |
||
928 | .m_pos dd 0 ;+56 |
||
929 | .m_pos_2 dd 0 ;+60 |
||
930 | .m_keys dd 0 ;+64 |
||
931 | .run_size dd 0 ;+68 |
||
932 | .position2 dd 0 ;+72 |
||
933 | .work_size dd 0 ;+76 |
||
934 | .all_redraw dd 0 ;+80 |
||
935 | .ar_offset dd 1 ;+84 |
||
936 | |||
937 | align 4 |
||
938 | wScr2: |
||
939 | .x: |
||
940 | .size_x dw 16 ;+0 |
||
941 | .start_x dw 675+50-16 ;+2 |
||
942 | .y: |
||
943 | .size_y dw 185 ;+4 |
||
944 | .start_y dw 105 ;+6 |
||
945 | .btn_high dd 15 ;+8 |
||
946 | .type dd 1 ;+12 |
||
947 | .max_area dd 100 ;+16 |
||
948 | .cur_area dd 30 ;+20 |
||
949 | .position dd 0 ;+24 |
||
950 | .bckg_col dd 0xeeeeee ;+28 |
||
951 | .frnt_col dd 0xbbddff ;+32 |
||
952 | .line_col dd 0 ;+36 |
||
953 | .redraw dd 0 ;+40 |
||
954 | .delta dw 0 ;+44 |
||
955 | .delta2 dw 0 ;+46 |
||
956 | .run_x: |
||
957 | .r_size_x dw 0 ;+48 |
||
958 | .r_start_x dw 0 ;+50 |
||
959 | .run_y: |
||
960 | .r_size_y dw 0 ;+52 |
||
961 | .r_start_y dw 0 ;+54 |
||
962 | .m_pos dd 0 ;+56 |
||
963 | .m_pos_2 dd 0 ;+60 |
||
964 | .m_keys dd 0 ;+64 |
||
965 | .run_size dd 0 ;+68 |
||
966 | .position2 dd 0 ;+72 |
||
967 | .work_size dd 0 ;+76 |
||
968 | .all_redraw dd 0 ;+80 |
||
969 | .ar_offset dd 1 ;+84 |
||
970 | ;---------------------- |
||
971 | ; end tree list element |
||
972 | ;---------------------- |
||
973 | |||
974 | ;---------------------- |
||
975 | ; textedit elements |
||
976 | ;---------------------- |
||
977 | align 4 |
||
978 | tedit0: |
||
979 | .wnd BOX 50,355,325,240 ;+ 0 195,5+40,325,240 |
||
7489 | leency | 980 | .rec BOX 30,13,6,10 ;+16 |
6582 | nisargshah | 981 | .drag_m db 0 ;+32 |
982 | .drag_k db 0 ;+33 |
||
983 | .sel rb 16 ;+34 |
||
984 | .seln rb 16 ;+50 |
||
985 | .tex dd 0 ;+66 text memory pointer |
||
986 | .tex_1 dd 0 ;+70 text first symbol pointer |
||
987 | .tex_end dd 0 ;+74 text end memory pointer |
||
988 | .cur_x dd 0 ;+78 |
||
989 | .cur_y dd 0 ;+82 |
||
990 | .max_chars dd 4096 ;+86 |
||
991 | .count_colors_text dd 1 ;+90 |
||
992 | .count_key_words dd 0 ;+94 |
||
993 | .color_cursor dd SYS_COL ;+98 |
||
994 | .color_wnd_capt dd BT_COL ;+102 |
||
995 | .color_wnd_work dd 0xffffff ;+106 |
||
996 | .color_wnd_bord dd 0x737373 ;+110 |
||
7489 | leency | 997 | .color_select dd 0xA4C4E4 ;+114 |
6582 | nisargshah | 998 | .color_cur_text dd 0xffff00 ;+118 |
999 | .color_wnd_text dd 0x000000 ;+122 |
||
1000 | .syntax_file dd 0 ;+126 |
||
1001 | .syntax_file_size dd 500 ;+130 |
||
1002 | .text_colors dd 0 ;+134 |
||
1003 | .help_text_f1 dd 0 ;+138 |
||
1004 | .help_id dd -1 ;+142 |
||
1005 | .key_words_data dd 0 ;+146 |
||
1006 | .tim_ch dd ? ;+150 |
||
1007 | .tim_undo dd ? ;+154 |
||
1008 | .tim_ls dd ? ;+158 |
||
1009 | .tim_co dd ? ;+162 |
||
1010 | .el_focus dd el_focus ;+166 |
||
1011 | .err_save db 0 ;+170 |
||
1012 | .panel_id db 0 ;+171 |
||
1013 | .key_new db 0 ;+172 |
||
1014 | .symbol_new_line db 20 ;+173 |
||
1015 | .scr_w dd scrol_w1 ;+174 |
||
1016 | .scr_h dd scrol_h1 ;+178 |
||
1017 | .arr_key_pos dd 0 ;+182 |
||
1018 | .buffer dd ed_buffer ;+186 |
||
1019 | .buffer_find dd 0 ;+190 |
||
1020 | .cur_ins db 1 ;+194 |
||
1021 | .mode_color db 1 ;+195 |
||
1022 | .mode_invis db 0 ;+196 |
||
1023 | .gp_opt db 0 ;+197 |
||
7579 | IgorA | 1024 | dd 0 ;.fun_on_key_ctrl_all dd but_ctrl_all ;+198 |
1025 | dd 0,0,0 ;reserved |
||
6582 | nisargshah | 1026 | .buffer_size dd 4096 ;+214 |
1027 | .fun_find_err dd 0 ;+218 |
||
1028 | .fun_init_synt_err dd 0 ;+222 |
||
1029 | .fun_draw_panel_buttons dd 0 ;+226 |
||
7580 | IgorA | 1030 | .fun_draw_panels dd 0 ;+230 |
7579 | IgorA | 1031 | dd 0 ;+234 reserved |
6582 | nisargshah | 1032 | .fun_save_err dd 0 ;+238 |
1033 | .increase_size dd 1000 ;+242 |
||
1034 | .ptr_free_symb dd ? ;+246 |
||
7487 | nisargshah | 1035 | .font_size dd 16 shl 16 ; +250 |
6582 | nisargshah | 1036 | |
1037 | align 4 |
||
1038 | scrol_w1: |
||
1039 | .x: |
||
1040 | .size_x dw 16 ;+0 |
||
1041 | .start_x dw 85 ;+2 |
||
1042 | .y: |
||
1043 | .size_y dw 100 ; +4 |
||
1044 | .start_y dw 15 ; +6 |
||
1045 | .btn_high dd 15 ; +8 |
||
1046 | .type dd 1 ;+12 |
||
1047 | .max_area dd 100 ;+16 |
||
1048 | rb 4+4 |
||
1049 | .bckg_col dd 0xeeeeee ;+28 |
||
1050 | .frnt_col dd 0xbbddff ;+32 |
||
1051 | .line_col dd 0x808080 ;+36 |
||
1052 | .redraw dd 0 ;+40 |
||
1053 | .delta dw 0 ;+44 |
||
1054 | .delta2 dw 0 ;+46 |
||
1055 | .run_x: |
||
1056 | rb 2*4+4*6 |
||
1057 | .all_redraw dd 0 ;+80 |
||
1058 | .ar_offset dd 1 ;+84 |
||
1059 | ;--------------------------------------------------------------------- |
||
1060 | align 4 |
||
1061 | scrol_h1: |
||
1062 | .x: |
||
1063 | .size_x dw 85 ;+0 |
||
1064 | .start_x dw 30 ;+2 |
||
1065 | .y: |
||
1066 | .size_y dw 16 ;+4 |
||
1067 | .start_y dw 100 ;+6 |
||
1068 | .btn_high dd 15 ;+8 |
||
1069 | .type dd 1 ;+12 |
||
1070 | .max_area dd 100 ;+16 |
||
1071 | rb 4+4 |
||
1072 | .bckg_col dd 0xeeeeee ;+28 |
||
1073 | .frnt_col dd 0xbbddff ;+32 |
||
1074 | .line_col dd 0x808080 ;+36 |
||
1075 | .redraw dd 0 ;+40 |
||
1076 | .delta dw 0 ;+44 |
||
1077 | .delta2 dw 0 ;+46 |
||
1078 | .run_x: |
||
1079 | rb 2*4+4*6 |
||
1080 | .all_redraw dd 0 ;+80 |
||
1081 | .ar_offset dd 1 ;+84 |
||
1082 | |||
1083 | ;------------ |
||
1084 | ;Progress bar |
||
1085 | ;------------ |
||
1086 | struc pb |
||
1087 | { |
||
1088 | dd 0 ; PB_VALUE equ +0 |
||
1089 | dd (TLIST2_X+TLIST1_X+TLIST_SZ)/2-150 ; PB_LEFT equ +4. 150 = PB_WIDTH/2 |
||
1090 | dd 315; PB_TOP equ +8 |
||
1091 | dd 300; PB_WIDTH equ +12 |
||
1092 | dd 15 ; PB_HEIGHT equ +16 |
||
1093 | dd ? ; PB_STYLE equ +20 |
||
1094 | dd 0 ; PB_MIN equ +24 |
||
1095 | dd 100; PB_MAX equ +28 |
||
1096 | dd 0xffffff; PB_BACK_COLOR equ +32 |
||
1097 | dd 0x00ff40; PB_PROGRESS_COLOR equ +36 |
||
1098 | dd 0x808080; PB_FRAME_COLOR equ +40 |
||
1099 | } |
||
1100 | pb pb |
||
1101 | |||
1102 | |||
1103 | align 4 |
||
7167 | nisargshah | 1104 | @IMPORT_GUI_LIBS: |
6582 | nisargshah | 1105 | |
7167 | nisargshah | 1106 | library box_lib, 'box_lib.obj', libimg, 'libimg.obj' |
6582 | nisargshah | 1107 | |
1108 | import box_lib, \ |
||
1109 | edit_box_draw, 'edit_box', \ |
||
1110 | edit_box_key, 'edit_box_key', \ |
||
1111 | edit_box_mouse, 'edit_box_mouse', \ |
||
1112 | edit_box_set_text, 'edit_box_set_text', \ |
||
1113 | version_ed, 'version_ed', \ |
||
1114 | scrollbar_ver_draw ,'scrollbar_v_draw', \ |
||
1115 | scrollbar_ver_mouse,'scrollbar_v_mouse', \ |
||
1116 | scrollbar_hor_draw, 'scrollbar_h_draw', \ |
||
1117 | scrollbar_hor_mouse,'scrollbar_h_mouse', \ |
||
1118 | version_scrollbar, 'version_scrollbar', \ |
||
1119 | tl_data_init, 'tl_data_init', \ |
||
1120 | tl_data_clear, 'tl_data_clear', \ |
||
1121 | tl_info_clear, 'tl_info_clear', \ |
||
1122 | tl_key, 'tl_key', \ |
||
1123 | tl_mouse, 'tl_mouse', \ |
||
1124 | tl_draw, 'tl_draw', \ |
||
1125 | tl_node_add, 'tl_node_add', \ |
||
1126 | tl_node_set_data, 'tl_node_set_data', \ |
||
1127 | tl_node_get_data, 'tl_node_get_data', \ |
||
1128 | tl_node_delete, 'tl_node_delete', \ |
||
1129 | tl_cur_beg, 'tl_cur_beg', \ |
||
1130 | tl_cur_next, 'tl_cur_next', \ |
||
1131 | tl_cur_perv, 'tl_cur_perv', \ |
||
1132 | tl_node_close_open, 'tl_node_close_open', \ |
||
1133 | ted_but_sumb_upper, 'ted_but_sumb_upper', \ |
||
1134 | ted_but_sumb_lover, 'ted_but_sumb_lover', \ |
||
1135 | ted_can_save, 'ted_can_save', \ |
||
1136 | ted_clear, 'ted_clear', \ |
||
1137 | ted_delete, 'ted_delete', \ |
||
1138 | ted_draw, 'ted_draw', \ |
||
1139 | ted_init, 'ted_init', \ |
||
1140 | ted_init_scroll_bars, 'ted_init_scroll_bars', \ |
||
1141 | ted_init_syntax_file, 'ted_init_syntax_file', \ |
||
1142 | ted_is_select, 'ted_is_select', \ |
||
1143 | ted_key, 'ted_key', \ |
||
1144 | ted_mouse, 'ted_mouse', \ |
||
1145 | ted_open_file, 'ted_open_file', \ |
||
1146 | ted_save_file, 'ted_save_file', \ |
||
1147 | ted_text_add, 'ted_text_add', \ |
||
1148 | ted_but_select_word,'ted_but_select_word', \ |
||
1149 | ted_but_cut, 'ted_but_cut', \ |
||
1150 | ted_but_copy, 'ted_but_copy', \ |
||
1151 | ted_but_paste, 'ted_but_paste', \ |
||
1152 | ted_but_undo, 'ted_but_undo', \ |
||
1153 | ted_but_redo, 'ted_but_redo', \ |
||
1154 | ted_but_reverse, 'ted_but_reverse', \ |
||
7577 | IgorA | 1155 | ted_but_find, 'ted_but_find', \ |
1156 | ted_but_replace, 'ted_but_replace', \ |
||
6582 | nisargshah | 1157 | ted_text_colored, 'ted_text_colored', \ |
7579 | IgorA | 1158 | ted_go_to_position, 'ted_go_to_position', \ |
6582 | nisargshah | 1159 | progressbar_draw, 'progressbar_draw' |
1160 | |||
7167 | nisargshah | 1161 | import libimg, \ |
1162 | lib_init1 , 'lib_init', \ |
||
7580 | IgorA | 1163 | img_is_img , 'img_is_img', \;определяет по данным, может ли библиотека сделать из них изображение \ |
7167 | nisargshah | 1164 | img_info , 'img_info', \ |
1165 | img_from_file , 'img_from_file', \ |
||
1166 | img_to_file , 'img_to_file', \ |
||
1167 | img_from_rgb , 'img_from_rgb', \ |
||
7580 | IgorA | 1168 | img_to_rgb , 'img_to_rgb', \;преобразование изображения в данные RGB \ |
7167 | nisargshah | 1169 | img_to_rgb2 , 'img_to_rgb2', \ |
7580 | IgorA | 1170 | img_decode , 'img_decode', \ ;автоматически определяет формат графических данных \ |
7167 | nisargshah | 1171 | img_encode , 'img_encode', \ |
1172 | img_create , 'img_create', \ |
||
1173 | img_destroy , 'img_destroy', \ |
||
1174 | img_destroy_layer , 'img_destroy_layer', \ |
||
1175 | img_count , 'img_count', \ |
||
1176 | img_lock_bits , 'img_lock_bits', \ |
||
1177 | img_unlock_bits , 'img_unlock_bits', \ |
||
1178 | img_flip , 'img_flip', \ |
||
1179 | img_flip_layer , 'img_flip_layer', \ |
||
1180 | img_rotate , 'img_rotate', \ |
||
1181 | img_rotate_layer , 'img_rotate_layer', \ |
||
1182 | img_draw , 'img_draw' |
||
6582 | nisargshah | 1183 | |
7167 | nisargshah | 1184 | |
1185 | run_file_70 FileInfoBlock ; required for libimg |
||
1186 | |||
6582 | nisargshah | 1187 | auto_list db 1 ; to run LIST immediately after CWD |
1188 | filter rb 512 |
||
7959 | leency | 1189 | root_dir db '/tmp0/1' |
1190 | rb 505 |
||
1191 | new_dir_buf rb 64 |
||
6582 | nisargshah | 1192 | folder_data rb 32+32*304 |
1193 | node_entry db '1111' |
||
1194 | rb 512 |
||
1195 | node_entry2 db '1111' |
||
1196 | rb 512 |
||
1197 | remote_list_buf rb 1024 |
||
7167 | nisargshah | 1198 | file_name rb 4096 ; required for libimg |
6582 | nisargshah | 1199 | conv_tabl rb 128 |
1200 | ed_buffer rb 100 |
||
1201 | tedit_buffer rb 1024 |
||
1202 | el_focus dd 0 |
||
1203 | ;----------------------- |
||
1204 | |||
1205 | procinfo process_information>>>>>>100-20,22>555+5,308+5>308,25>555,55>80,20>50,25>50,25>50,25>50,25>20,25>50+5,326+5>326,25>50,40>50+5,25+5>25,25>50,95>20,555>35,830>>> |