Subversion Repositories Kolibri OS

Rev

Rev 9587 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1954 mario79 1
;*****************************************************************************
2
; Open Dialog - for Kolibri OS
3381 mario79 3
; Copyright (c) 2009-2013, Marat Zakiyanov aka Mario79, aka Mario
1954 mario79 4
; All rights reserved.
5
;
6
; Redistribution and use in source and binary forms, with or without
7
; modification, are permitted provided that the following conditions are met:
5878 pathoswith 8
;	 * Redistributions of source code must retain the above copyright
9
;	   notice, this list of conditions and the following disclaimer.
10
;	 * Redistributions in binary form must reproduce the above copyright
11
;	   notice, this list of conditions and the following disclaimer in the
12
;	   documentation and/or other materials provided with the distribution.
13
;	 * Neither the name of the  nor the
14
;	   names of its contributors may be used to endorse or promote products
15
;	   derived from this software without specific prior written permission.
1954 mario79 16
;
17
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
18
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
; DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
21
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
;*****************************************************************************
3381 mario79 28
;---------------------------------------------------------------------
29
;Some documentation for memory
30
;
31
;area name db 'FFFFFFFF_open_dialog',0 ; FFFFFFFF = PID
32
;
33
; communication area data
5878 pathoswith 34
; flag	; +0
35
; dw 0	 ; 0 - empty, 1 - file for open, 2 -folder for open,
36
;	   3 - cancel, 4 - path=name of area 6822.
3382 mario79 37
;
38
; type of dialog:  0-Open, 1-Save, 2-Dir
39
; dw 0 ; +2
40
;
41
; window X size ; +4
42
; dw 0
43
;
44
; window X position ; +6
45
; dw 0
46
;
47
; window y size ; +8
48
; dw 0
49
;
50
; window Y position ; +10
51
; dw 0
52
;
53
; OpenDialog WINDOW SLOT ; +12
54
; dd 0
55
;
56
; file_path ; +16
57
; rb 3824 ; path to file
58
;
59
; file name ; +3840
60
; rb 256
61
;
62
; filtration flag ; +4096
63
; dd 0 ; flag 0 - no filtration,  1 - filtering
64
;
65
; area for storage of filtering values ; +4100
66
; rb 4092
3381 mario79 67
;---------------------------------------------------------------------
1954 mario79 68
	use32
69
	org	0x0
70
 
71
	db 'MENUET01'
72
	dd 0x01
73
	dd START
74
	dd IM_END
75
	dd I_END
76
	dd stacktop
77
	dd param
78
	dd path
79
 
80
include '../../macros.inc'
4055 mario79 81
;define __DEBUG__ 1
82
;define __DEBUG_LEVEL__ 1
83
;include '../../debug-fdo.inc'
8271 IgorA 84
include '../../KOSfuncs.inc'
85
include '../../load_lib.mac'
1954 mario79 86
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
87
;include 'macros.inc'
88
;include 'load_lib.mac'
89
;include 'box_lib.mac'
90
@use_library
91
 
92
x_minimal_size equ 350
93
y_minimal_size equ 250
94
;---------------------------------------------------------------------
95
;---------------------------------------------------------------------
96
START:
97
	mcall	68,11
98
	mcall	66,1,1
99
	mcall	40,0x27
100
	call	get_communication_area
101
 
102
	call	get_active_pocess
103
 
104
load_libraries	l_libs_start,end_l_libs
105
	test	eax,eax
106
	jnz	button.exit
107
; initialize sort
108
	push	dword 1
109
	call	dword [sort_init]
110
; unpack deflate
111
	mov	eax,[unpack_DeflateUnpack2]
112
	mov	[deflate_unpack],eax
113
 
2144 mario79 114
	mov	esi,start_pach
115
	mov	edi,previous_dir_path
116
	call	copy_dir_name.1
117
 
1954 mario79 118
	call	load_root_directory
119
	call	load_start_directory
120
	call	sort_directory
121
	call	load_icons
122
	call	convert_icons
123
	call	load_ini
124
	call	calc_ini
125
	jmp	red_1
126
;---------------------------------------------------------------------
127
red:
128
	call	control_minimal_window_size
129
red_1:
130
	call	draw_window
131
;---------------------------------------------------------------------
132
still:
133
	mcall	10
134
	cmp	eax,1
135
	je	red
136
	cmp	eax,2
137
	je	key
138
	cmp	eax,3
139
	je	button
140
	cmp	eax,6
141
	je	mouse
142
	jmp	still
143
;---------------------------------------------------------------------
144
control_minimal_window_size:
145
	pusha
146
	call	get_window_param
147
	test	[window_status],10b
148
	jnz	.end	;red_1
149
	test	[window_status],100b
150
	jnz	.end	;red_1
151
	test	[window_status],1b
152
	jnz	.end	;red_1
153
	mov	esi,-1
154
	mov	eax,procinfo
155
	mov	eax,[eax+46]
156
	cmp	eax,dword y_minimal_size ;200
157
	jae	@f
158
	mov	esi,dword y_minimal_size ;200
159
	mcall	67,-1,ebx,ebx
160
@@:
161
	mov	edx,-1
162
	mov	eax,procinfo
163
	mov	eax,[eax+42]
164
	cmp	eax,dword x_minimal_size ;300
165
	jae	@f
166
	mov	edx,dword x_minimal_size ;300
167
	mcall	67,-1,ebx,,ebx
168
@@:
169
.end:
170
	popa
171
	ret
172
;---------------------------------------------------------------------
173
key:
174
	mov	al,[focus_pointer]
175
	test	al,al
176
	jne	key_ASCII
177
	mcall	2
178
	xor	ebx,ebx
179
	cmp	[extended_key],1
180
	je	.extended_key
181
	test	al,al
182
	jnz	still
183
	cmp	ah,0xE0
184
	jne	@f
185
	mov	[extended_key],1
186
	jmp	still
187
@@:
5878 pathoswith 188
	cmp	ah,72	; arrow up
1954 mario79 189
	je	.2
5878 pathoswith 190
	cmp	ah,80	; arrow down
1954 mario79 191
	je	.1
192
	cmp	ah,28	; Enter
193
	je	.7
194
	cmp	ah,1	; Esc
195
	je	button.exit
196
	cmp	ah,14	; Backspace
197
	je	button.exit_dir
198
	cmp	ah,187	; F1
199
	je	select_disk
200
	cmp	ah,188	; F2
201
	je	select_sort
202
	cmp	ah,189	; F3
203
	je	select_filter
204
	cmp	ah,19	; R
205
	je	button.reload_dir
206
	cmp	ah,42
207
	je	key_shift_up
208
	cmp	ah,54
209
	je	key_shift_up
210
	cmp	ah,170
211
	je	key_shift_down
212
	cmp	ah,182
213
	je	key_shift_down
214
	cmp	ah,29
215
	je	key_ctrl_up
216
	cmp	ah,157
217
	je	key_ctrl_down
218
	cmp	ah,56
219
	je	key_alt_up
220
	cmp	ah,184
221
	je	key_alt_down
222
	cmp	ah,206	; NumPad+ Up
223
	je	NumPad_plus_Up
224
	cmp	ah,202	; NumPad- Up
225
	je	NumPad_minus_Up
226
	cmp	ah,183	; NumPad* Up
227
	je	NumPad_invert_Up
228
	cmp	ah,158
229
	je	symbol_a_up
230
	cmp	ah,15	; Tab down
231
	je	change_focus_area_press_Tab_key
232
	cmp	ah,143	; Tab up
233
	je	change_focus_area_check_Tab_key
3831 mario79 234
; compare for "1,2,3,4,5,6,7,8,9,0,(-),(=)"
235
	cmp	ah,2
236
	jb	still
237
	cmp	ah,13
238
	jbe	.12
239
; compare for "q,w,e,r,t,y,u,i,o,p,([),(])"
240
	cmp	ah,16
241
	jb	still
242
	cmp	ah,27
243
	jbe	.12
244
; compare for "a,s,d,f,g,h,j,k,l,(;),('),(`)"
245
	cmp	ah,30
246
	jb	still
247
	cmp	ah,41
248
	jbe	.12
249
; compare for "(\),z,x,c,v,b,n,m,(,),(.),(/)"
250
	cmp	ah,43
251
	jb	still
252
	cmp	ah,53
253
	jbe	.12
1954 mario79 254
	jmp	still
255
.extended_key:
256
	mov	[extended_key],0
257
	cmp	ah,80	; arrow down
258
	je	.1
259
	cmp	ah,72	; arrow up
260
	je	.2
261
	cmp	ah,81	; PageDown
262
	je	.3
263
	cmp	ah,73	; PageUp
264
	je	.4
265
	cmp	ah,71	; Home
266
	je	.5
267
	cmp	ah,79	; End
268
	je	.6
269
	cmp	ah,28	; Enter
270
	je	.7
271
	cmp	ah,82	; Insert
272
	je	.8
273
 
274
	cmp	ah,29
275
	je	key_ctrl_up
276
	cmp	ah,157
277
	je	key_ctrl_down
278
	cmp	ah,56
279
	je	key_alt_up
280
	cmp	ah,184
281
	je	key_alt_down
282
	jmp	still
283
;---------------------------------
3831 mario79 284
.12:
285
	inc	ebx	; 12 - Search with key
286
;---------------------------------
1954 mario79 287
.11:
3831 mario79 288
	inc	ebx	; 11 - Invert Mark
1954 mario79 289
;---------------------------------
290
.10:
3831 mario79 291
	inc	ebx	; 10 - Unmark All
1954 mario79 292
;---------------------------------
293
.9:
3831 mario79 294
	inc	ebx	; 9 - Mark All
1954 mario79 295
;---------------------------------
296
.8:
3831 mario79 297
	inc	ebx	; 8 - Insert (Mark)
1954 mario79 298
;---------------------------------
299
.7:
3831 mario79 300
	inc	ebx	; 7 - Enter
1954 mario79 301
;---------------------------------
302
.6:
3831 mario79 303
	inc	ebx	; 6 - End
1954 mario79 304
;---------------------------------
305
.5:
3831 mario79 306
	inc	ebx	; 5 - Home
1954 mario79 307
;---------------------------------
308
.4:
3831 mario79 309
	inc	ebx	; 4 - PageUp
1954 mario79 310
;---------------------------------
311
.3:
3831 mario79 312
	inc	ebx	; 3 - PageDown
1954 mario79 313
;---------------------------------
314
.2:
3831 mario79 315
	inc	ebx	; 2 - arrow up
1954 mario79 316
;---------------------------------
317
.1:
3831 mario79 318
	inc	ebx	; 1 - arrow down
1954 mario79 319
;---------------------------------
320
	call	.key_action
321
 
322
;	movzx	ecx,word [file_browser_data_1.start_draw_cursor_line]
323
;	mcall	47,0x80000,,<50,0>,0x40000000,0xffffff
324
;	movzx	ecx,word [file_browser_data_1.size_y]
325
;	mcall	47,0x80000,,<150,0>,0x40000000,0xffffff
326
 
327
	mov	eax,file_browser_data_1.mouse_keys_delta
328
	cmp	[eax],dword 3
329
	jne	still
330
	xor	ebx,ebx
331
	mov	[eax],ebx
332
	call	load_next_dir
333
	jmp	still
334
;-------------------------------------------------------
335
.key_action:
3831 mario79 336
	mov	[file_browser_data_1.key_action],bx
337
	shr	ax,8
338
	mov	[file_browser_data_1.key_action_num],ax
1954 mario79 339
 
340
	push	dword file_browser_data_1
341
	call	[FileBrowser_key]
342
 
3812 mario79 343
	call	draw_open_button_label
344
 
1954 mario79 345
	cmp	[file_browser_data_1.draw_scroll_bar],0
346
	je	@f
347
	call	draw_scrollbar1
348
	mov	[file_browser_data_1.draw_scroll_bar],0
349
@@:
350
	ret
351
;---------------------------------------------------------------------
352
change_focus_area_Tab_key_ASCII:
353
	xor	eax,eax
354
	inc	eax
355
	mov	[Tab_key_block],al
356
	jmp	change_focus_area
357
;---------------------------------------------------------------------
358
change_focus_area_press_Tab_key:
359
	cmp	[open_dialog_type],1
360
	jne	still
361
	mov	al,[Tab_key_block]
362
	test	al,al
363
	jnz	still
364
	xor	eax,eax
365
	inc	eax
366
	mov	[Tab_key],al
367
	jmp	still
368
;---------------------------------------------------------------------
369
change_focus_area_check_Tab_key:
370
	cmp	[open_dialog_type],1
371
	jne	still
372
	xor	eax,eax
373
	mov	[Tab_key_block],al
374
	mov	al,[Tab_key]
375
	test	al,al
376
	jz	still
377
	xor	eax,eax
378
	mov	[Tab_key],al
379
;---------------------------------------------------------------------
380
change_focus_area:
381
	mov	al,[focus_pointer]
382
	inc	al
383
	and	al,1
384
	mov	[focus_pointer],al
385
.1:
386
	mov	edi,edit1
387
	test	al,al
388
	jne	@f
389
	mov	[file_browser_data_1.select_panel_counter],1
390
	and	[edi+44],dword 0xFFFFFFFD	; ed_focus
5878 pathoswith 391
	mov	[edi+12],dword 0xffffff ; color white
1954 mario79 392
	call	draw_draw_file_browser1
393
	mcall	66,1,1
394
	jmp	still
395
@@:
396
	mov	[file_browser_data_1.select_panel_counter],0
397
	or	[edi+44],dword ed_focus
5878 pathoswith 398
	mov	[edi+12],dword 0xffffb0 ; color yellow
1954 mario79 399
	call	draw_draw_file_browser1
400
	mcall	66,1,0
401
	jmp	still
402
;---------------------------------------------------------------------
403
key_ASCII:
404
	mcall	2
405
	cmp	ah,9
406
	je	change_focus_area_Tab_key_ASCII
407
	cmp	ah,13
408
	je	.13
409
	cmp	ah,27
410
	je	button.exit
411
	push	dword name_editboxes
412
	call	[edit_box_key]
413
	jmp	still
414
.13:
415
;	cmp [open_dialog_type],2	; Select dir
416
;	je	file_no_folder
417
;	cmp	[open_dialog_type],1	; Save file
418
;	jne	user_selected_name_action	; load_dir
419
;	inc	[open_dialog_type]
420
	jmp	file_no_folder
421
;.load_dir:
422
;	mov	[file_browser_data_1.select_panel_counter],1
423
;	xor	eax,eax
424
;	mov	[focus_pointer],al
425
;	mcall	66,1,1
426
 
427
;	xor	eax,eax
2144 mario79 428
;	mov	esi,dir_path
1954 mario79 429
;	cld
430
;@@:
431
;	lodsb
432
;	test	al,al
433
;	jne	@r
434
;	sub	esi,2
435
;	cmp	[esi],byte '/'
436
;	jne	@f
437
;	xor	eax,eax
438
;	mov	[esi],al
439
;@@:
440
;	call	load_next_dir.1
441
;	jmp	still
442
;---------------------------------------------------------------------
443
user_selected_name_action:
444
	mov	eax,[communication_area]
445
	test	eax,eax
446
	jnz	@f
447
	call	control_minimal_window_size
448
	call	draw_window
449
	ret
450
@@:
451
	add	eax,16	;12
2144 mario79 452
;copy_path	user_selected_name,dir_path,eax,0
453
	mov	esi,dir_path
1954 mario79 454
	mov	edi,eax
455
	call	copy_dir_name
456
	mov	[edi-1],byte '/'
457
	mov	esi,user_selected_name
458
	call	copy_dir_name
459
 
460
	mov	eax,[communication_area]
461
	mov	[eax],word 1
462
	jmp	button.exit
463
;---------------------------------------------------------------------
464
select_disk:
465
	call	check_alt
466
.1:
3734 mario79 467
	call	load_root_directory
1954 mario79 468
	xor	eax,eax
469
	mov	[menu_data_1.ret_key],eax
470
 
471
	push	dword menu_data_1
472
	call	[menu_bar_activate]
473
 
474
	call	clear_control_key_flag
475
 
476
	mov	eax,[menu_data_1.ret_key]
477
	mov	[menu_data_1.ret_key],dword 0
478
	cmp	eax,1
479
	je	select_filter.1
480
 
481
	cmp	eax,2
482
	je	select_sort.1
483
 
484
	cmp	[menu_data_1.click],dword 1
485
	jne	still
486
 
487
	cmp	[menu_data_1.cursor_out],dword 0
488
	jne	analyse_out_menu_1
489
	jmp	still
490
;---------------------------------------------------------------------
491
select_sort:
492
	call	check_alt
493
.1:
494
	xor	eax,eax
495
	mov	[menu_data_2.ret_key],eax
496
 
497
	push	dword menu_data_2
498
	call	[menu_bar_activate]
499
 
500
	call	clear_control_key_flag
501
 
502
	mov	eax,[menu_data_2.ret_key]
503
	mov	[menu_data_2.ret_key],dword 0
504
	cmp	eax,1
505
	je	select_disk.1
506
 
507
	cmp	eax,2
508
	je	select_filter.1
509
 
510
 
511
	cmp	[menu_data_2.click],dword 1
512
	jne	still
513
 
514
	cmp	[menu_data_2.cursor_out],dword 0
515
	jne	analyse_out_menu_2
516
	jmp	still
517
;---------------------------------------------------------------------
518
select_filter:
519
	call	check_alt
520
.1:
521
	xor	eax,eax
522
	mov	[menu_data_3.ret_key],eax
523
 
524
	push	dword menu_data_3
525
	call	[menu_bar_activate]
526
 
527
	call	clear_control_key_flag
528
 
529
	mov	eax,[menu_data_3.ret_key]
530
	mov	[menu_data_3.ret_key],dword 0
531
	cmp	eax,1
532
	je	select_sort.1
533
 
534
	cmp	eax,2
535
	je	select_disk.1
536
 
537
 
538
	cmp	[menu_data_3.click],dword 1
539
	jne	still
540
 
541
	cmp	[menu_data_3.cursor_out],dword 0
542
	jne	analyse_out_menu_3
543
	jmp	still
544
;---------------------------------------------------------------------
545
symbol_a_up:
546
NumPad_plus_Up:
547
	call	check_ctrl
548
	jmp	key.9
549
;---------------------------------------
550
NumPad_minus_Up:
551
	call	check_ctrl
552
	jmp	key.10
553
;---------------------------------------
554
NumPad_invert_Up:
555
	call	check_ctrl
556
	jmp	key.11
557
;---------------------------------------
558
check_alt:
559
	xor	eax,eax
560
	mov	al,[alt_flag]
561
	test	eax,eax
562
	jz	@f
563
	xor	ebx,ebx
564
	ret
565
@@:
566
	add	esp,4
567
	jmp	still
568
;---------------------------------------
569
check_ctrl:
570
	xor	eax,eax
571
	mov	al,[ctrl_flag]
572
	test	eax,eax
573
	jz	@f
574
	xor	ebx,ebx
575
	ret
576
@@:
577
	add	esp,4
578
	jmp	still
579
;---------------------------------------------------------------------
580
clear_control_key_flag:
581
	xor	eax,eax
582
	mov	[shift_flag],al
583
	mov	[ctrl_flag],al
584
	mov	[alt_flag],al
585
	ret
586
;---------------------------------------------------------------------
587
key_shift_up:
588
	mov	[shift_flag],1
589
	jmp	still
590
;---------------------------------------------------------------------
591
key_shift_down:
592
	mov	[shift_flag],0
593
	jmp	still
594
;---------------------------------------------------------------------
595
key_ctrl_up:
596
	mov	[ctrl_flag],1
597
	jmp	still
598
;---------------------------------------------------------------------
599
key_ctrl_down:
600
	mov	[ctrl_flag],0
601
	jmp	still
602
;---------------------------------------------------------------------
603
key_alt_up:
604
	mov	[alt_flag],1
605
	jmp	still
606
;---------------------------------------------------------------------
607
key_alt_down:
608
	mov	[alt_flag],0
609
	jmp	still
610
;---------------------------------------------------------------------
611
button:
612
	mcall	17
613
	cmp	ah,6
614
	je	.reload_dir_1
615
	cmp	ah,4
616
	je	.open_dir_or_file
617
	cmp	ah,3
618
	je	.exit
619
	cmp	ah,2
620
	je	.exit_dir
621
	cmp	ah,1
622
	jne	still
623
.exit:
624
	mov	eax,[communication_area]
625
	test	eax,eax
626
	jz	@f
627
	cmp	[eax],word 1
628
	je	@f
629
	mov	[eax],word 3
630
@@:
631
	mov	eax,[N_error]
632
	test	eax,eax
633
	jz	@f
634
	call	start_error_window_thread
635
@@:
636
	call	get_window_param
637
	mov	ebx,[communication_area]
638
	mov	ecx,procinfo
639
;	mov	eax,[window_x]
640
	mov	eax,[ecx+34]
641
	shl	eax,16
642
	add	eax,[ecx+42]
643
	mov	[ebx+4],eax
644
;	mov	eax,[window_y]
645
	mov	eax,[ecx+38]
646
	shl	eax,16
647
	add	eax,[ecx+46]
648
	mov	[ebx+8],eax
649
 
650
	mcall	-1
651
;---------------------------------------------------------------------
652
.reload_dir:
3831 mario79 653
	cmp	[ctrl_flag],bl
654
	je	key.12 ; Just symbol 'R' or 'r'
1954 mario79 655
.reload_dir_1:
656
	call	load_next_dir.1
657
	jmp	still
658
;---------------------------------------------------------------------
659
.exit_dir:
660
	call	load_next_dir.exit_dir
661
	jmp	still
662
;---------------------------------------------------------------------
663
.open_dir_or_file:
4061 mario79 664
	cmp	[open_dialog_type],0	;Open file
665
	jne	@f
666
 
3983 mario79 667
	mov	eax,[file_browser_data_1.folder_data]
668
	mov	eax,[eax+4]
669
	test	eax,eax
670
	jz	button.exit
4061 mario79 671
@@:
5878 pathoswith 672
	cmp	[open_dialog_type],2	;Select dir
1954 mario79 673
	je	file_no_folder
674
 
675
	cmp	[open_dialog_type],1	;Save file
676
	jne	@f
4061 mario79 677
 
1954 mario79 678
	mov	al,[focus_pointer]
679
	test	al,al
680
	jne	file_no_folder
681
@@:
682
	xor	ebx,ebx
683
	jmp	key.7
684
;---------------------------------------------------------------------
685
thread_start:
686
	mov	eax,[N_error]
687
	cmp	al,1
688
	jne	@f
689
	mov	[N_error],load_ini_error_type
690
	mov	[error_path],file_name
691
	jmp	.error_type
692
@@:
693
	cmp	al,2
694
	jne	@f
695
	mov	[N_error],load_icons_error_type
696
	mov	[error_path],file_name
697
	jmp	.error_type
698
@@:
699
	cmp	al,3
700
	jne	@f
701
	mov	[N_error],memory_free_error_type
702
	xor	eax,eax
703
	mov	[error_path],eax
704
	mov	[error_type],eax
705
	jmp	.red
706
@@:
707
	cmp	al,4
708
	jne	@f
709
	mov	[N_error],memory_get_error_type
710
	xor	eax,eax
711
	mov	[error_path],eax
712
	mov	[error_type],eax
713
	jmp	.red
714
@@:
715
	cmp	al,5
716
	jne	@f
717
	mov	[N_error],load_directory_error_type
2144 mario79 718
	mov	[error_path],dir_path
1954 mario79 719
	jmp	.error_type
720
@@:
721
	cmp	al,6
722
	jne	.button
723
	mov	[N_error],convert_icons_error_type
724
	mov	[error_path],file_name
725
	xor	eax,eax
726
	mov	[error_type],eax
727
	jmp	.red
728
.error_type:
729
	mov	eax,[error_type]
730
	shl	eax,2
731
	add	eax,error_fs_text_pointers
732
	mov	eax,[eax]
733
	mov	[error_type],eax
734
.red:
735
	call	draw_error_window
736
.still:
737
	mcall	10
738
	cmp	eax,1
739
	je	.red
740
	cmp	eax,2
741
	je	.key
742
	cmp	eax,3
743
	je	.button
744
	jmp	.still
745
.key:
746
	mcall	2
747
	jmp	.still
748
.button:
749
	mcall	-1
750
	jmp	.still
751
;---------------------------------------------------------------------
752
draw_error_window:
753
	mcall	12,1
754
	mcall	0,[error_window_x],[error_window_y],0x03ff0000
755
	call	type_title
756
	mcall	4,<10,30>,0x90ffffff,[N_error]
757
	mov	eax,[error_path]
758
	test	eax,eax
759
	jz	@f
760
	mcall	4,<10,50>,,[error_path]
761
@@:
762
	mov	eax,[error_type]
763
	test	eax,eax
764
	jz	@f
765
	mcall	4,<10,70>,,[error_type]
766
@@:
767
	mcall	12,2
768
	ret
769
;---------------------------------------------------------------------
770
start_error_window_thread:
771
	mcall	9,procinfo,-1
772
	mov	eax,[ebx+46]
773
	shr	eax,1
774
	add	eax,[ebx+38]
775
	sub	eax,40
776
	mov	[error_window_y+2],ax
777
	mov	eax,[ebx+42]
778
	shr	eax,1
779
	add	eax,[ebx+34]
780
	sub	eax,125
781
	mov	[error_window_x+2],ax
782
	mcall	51,1,thread_start,thread_stack
783
	ret
784
;---------------------------------------------------------------------
785
mouse:
786
	mcall	18,7
787
	cmp	[active_process],eax
788
	jne	still
789
 
790
	mcall	37,7
791
	mov	[mouse_scroll_data],eax
792
 
793
	mcall	37,1
794
	mov	[mouse_position],eax
795
 
796
	cmp	[scroll_bar_data_vertical.delta2],0
797
	jne	.scrollbar
798
 
799
	mov	[file_browser_data_1.select_flag],0
800
 
801
	push	dword file_browser_data_1
802
	call	[FileBrowser_mouse]
803
 
3812 mario79 804
	call	draw_open_button_label
805
 
1954 mario79 806
	mov	eax,file_browser_data_1.mouse_keys_delta
807
	cmp	[eax],dword 3
808
	jne	.check_focus	; scrollbar
809
	mov	[eax],dword 0
810
	call	load_next_dir
811
	jmp	still
812
;---------------------------------------------------
813
.check_focus:
814
	mov	ebx,[file_browser_data_1.select_flag]
815
	test	ebx,ebx
816
	jz	.scrollbar	;@f
817
	mov	al,[focus_pointer]
818
	test	al,al
819
	jz	.scrollbar
820
	xor	eax,eax
821
	mov	[focus_pointer],al
822
	jmp	change_focus_area.1
823
;---------------------------------------------------
824
.scrollbar:
825
	mov	eax,[scroll_bar_data_vertical.max_area]
826
	cmp	eax,[scroll_bar_data_vertical.cur_area]
827
	jbe	.menu_bar	;still
828
 
829
	push	dword scroll_bar_data_vertical
830
	call	[scrollbar_ver_mouse]
831
 
832
	cmp	[scroll_bar_data_vertical.redraw],0
833
	je	.menu_bar	;still
834
	mov	[scroll_bar_data_vertical.redraw],0
835
.draw:
836
	call	draw_draw_file_browser2
837
	jmp	still
838
 
839
;---------------------------------------------------
840
.menu_bar:
841
	cmp	[scroll_bar_data_vertical.delta2],0
842
	jne	still
843
 
844
.menu_bar_1:
845
	call	.set_mouse_flag
846
@@:
847
	push	dword menu_data_1
848
	call	[menu_bar_mouse]
849
 
850
	cmp	[menu_data_1.click],dword 1
851
	jne	.menu_bar_2
852
 
853
	cmp	[menu_data_1.cursor_out],dword 0
3734 mario79 854
	jne	select_disk.1	;analyse_out_menu_1
1954 mario79 855
	jmp	.menu_bar_1
856
;--------------------------------------------
857
.menu_bar_2:
858
	push	dword menu_data_2
859
	call	[menu_bar_mouse]
860
 
861
	cmp	[menu_data_2.click],dword 1
862
	jne	.menu_bar_3
863
 
864
	cmp	[menu_data_2.cursor_out],dword 0
865
	jne	analyse_out_menu_2
866
	jmp	.menu_bar_1
867
;---------------------------------------------------
868
.menu_bar_3:
869
	push	dword menu_data_3
870
	call	[menu_bar_mouse]
871
 
872
	cmp	[menu_data_3.click],dword 1
873
	jne	.check_editboxes
874
 
875
	cmp	[menu_data_3.cursor_out],dword 0
876
	jne	analyse_out_menu_3
877
	jmp	.menu_bar_1
878
;---------------------------------------------------
879
.check_editboxes:
880
	cmp	[open_dialog_type],1
881
	jne	.check_scroll_event
882
	mov	eax,[edit1+44]
883
	and	eax,10b
884
	push	dword name_editboxes
885
	call	[edit_box_mouse]
886
	mov	ebx,[edit1+44]
887
	and	ebx,10b
888
	cmp	eax,ebx
889
	je	.check_scroll_event
890
	mov	al,[focus_pointer]
891
	test	al,al
892
	jnz	.check_scroll_event
893
	xor	eax,eax
894
	test	ebx,10b
895
	jz	@f
896
	inc	eax
897
@@:
898
	mov	[focus_pointer],al
899
	jmp	change_focus_area.1
900
;---------------------------------------------------
901
.check_scroll_event:
902
	mov	eax,[mouse_position]
903
	xor	ebx,ebx
904
	mov	bx,ax	; EBX mouse y
905
	shr	eax,16	; EAX mouse x
906
 
907
	mov	cx,[file_browser_data_1.start_x]
908
	mov	dx,[file_browser_data_1.start_y]
909
 
910
	cmp	ax,cx
911
	jb	.mouse_next	; min x
912
 
913
	cmp	bx,dx
914
	jb	.mouse_next	; min y
915
 
916
	add	cx,[file_browser_data_1.size_x]
917
	cmp	ax,cx
918
	ja	.mouse_next	; max x
919
 
920
	add	dx,[file_browser_data_1.size_y]
921
	cmp	bx,dx
922
	ja	.mouse_next	; max y
923
 
924
	xor	ecx,ecx
925
	xor	ebx,ebx
926
	mov	eax,[mouse_scroll_data]
927
	test	eax,eax
928
	jz	.mouse_next
929
	test	ax,0x8000
930
	jnz	.decr
931
	shr	eax,16
932
	test	ax,0x8000
933
	jnz	.decr_1
934
 
935
	mov	cx,[mouse_scroll_data.vertical]
936
	test	ecx,ecx
937
	jnz	@f
938
	mov	cx,[mouse_scroll_data.horizontal]
939
	test	ecx,ecx
940
	jz	.mouse_next
941
@@:
942
	mov	ebx,1
943
@@:
944
	push	ebx ecx
945
	call	key.key_action
946
	pop	ecx ebx
947
	dec	ecx
948
	jnz	@r
949
	jmp	still
950
;----------------------------------------
951
.decr:
952
	mov	bx,[mouse_scroll_data.vertical]
953
	jmp	@f
954
.decr_1:
955
	mov	bx,[mouse_scroll_data.horizontal]
956
@@:
957
	mov	ecx,0xffff
958
	sub	ecx,ebx
959
	inc	ecx
960
	mov	ebx,2
961
@@:
962
	push	ebx ecx
963
	call	key.key_action
964
	pop	ecx ebx
965
	dec	ecx
966
	jnz	@r
967
	jmp	still
968
;---------------------------------------------------
969
.mouse_next:
970
	jmp	still
971
;---------------------------------------------------------------------
972
.set_mouse_flag:
973
	xor	eax,eax
974
	inc	eax
975
	mov	[menu_data_1.get_mouse_flag],eax
976
	mov	[menu_data_2.get_mouse_flag],eax
977
	ret
978
;---------------------------------------------------------------------
979
analyse_out_menu_1:
980
; Available disks
981
	mov	eax,[menu_data_1.cursor_out]
982
	dec	eax
983
	imul	esi,eax,10
984
	add	esi,retrieved_devices_table
2144 mario79 985
	mov	edi,dir_path
1954 mario79 986
	call	copy_dir_name
987
	call	load_next_dir.1
988
	jmp	still
989
;---------------------------------------------------------------------
990
analyse_out_menu_2:
991
; Sort
992
	mov	eax,[menu_data_2.cursor_out]
993
	xor	ebx,ebx
994
	cmp	eax,dword 1
995
	je	.1
996
	cmp	eax,dword 2
997
	je	.2
998
	cmp	eax,dword 3
999
	je	.3
1000
	cmp	eax,dword 4
1001
	je	.4
1002
	jmp	still
1003
.4:
1004
	add	ebx,2
1005
.3:
1006
	add	ebx,2
1007
.2:
1008
	add	ebx,2
1009
.1:
1010
	mov	[sort_type],ebx
1011
	call	sort_directory
1012
	call	draw_draw_file_browser1
1013
	jmp	still
1014
;---------------------------------------------------------------------
1015
analyse_out_menu_3:
1016
; Filter
1017
	mov	eax,[menu_data_3.cursor_out]
1018
	cmp	eax,dword 1
1019
	jne	@f
1020
	mov	[filter_flag],0
1021
	call	load_next_dir.1
1022
	jmp	still
1023
@@:
1024
	cmp	eax,dword 2
1025
	jne	still
1026
	mov	[filter_flag],1
1027
	call	load_next_dir.1
1028
	jmp	still
1029
;---------------------------------------------------------------------
1030
get_communication_area:
1031
	xor	eax,eax
1032
	mov	al,[param]
1033
	test	eax,eax
3865 mario79 1034
	jz	.exit
1954 mario79 1035
	mcall	68,22,param,,0x01
1036
	mov	[communication_area],eax
1037
	movzx	ebx,word [eax+2]
1038
	mov	[open_dialog_type],ebx
3865 mario79 1039
	cmp	ebx,1
1040
	jne	@f
1041
	pushad
1042
	mov	[focus_pointer],bl
1043
	mov	edi,edit1
1044
	mov	[file_browser_data_1.select_panel_counter],0
1045
	or	[edi+44],dword ed_focus
5878 pathoswith 1046
	mov	[edi+12],dword 0xffffb0 ; color yellow
3865 mario79 1047
	mcall	66,1,0
1048
	popad
1049
@@:
1954 mario79 1050
	mov	ebx,[eax+4]
1051
	cmp	bx,word x_minimal_size ;300
1052
	jb	@f
1053
	mov	[window_x],ebx
1054
	mov	ebx,[eax+8]
1055
	cmp	bx,word y_minimal_size ;200
1056
	jb	@f
1057
	mov	[window_y],ebx
3865 mario79 1058
.exit:
1954 mario79 1059
	ret
1060
;---------------------------------------------------------------------
1061
load_start_directory:
1062
	mov	eax,[communication_area]
1063
	test	eax,eax
1064
	jz	.1
1065
	movzx	ebx,word [eax]
1066
	test	eax,eax
1067
	jz	.1
1068
	add	eax,16	;12 ;4
1069
	mov	esi,eax
1070
	push	esi
1071
	mov	esi,[communication_area]
1072
	add	esi,3840 ;4096-256
1073
	mov	eax,[esi]
3865 mario79 1074
	test	al,al
1954 mario79 1075
	jnz	@f
1076
	mov	esi,example_name_temp
1077
@@:
1078
	mov	edi,user_selected_name
1079
	call	copy_dir_name
1080
	pop	esi
1081
	jmp	.2
1082
.1:
1083
	mov	esi,start_pach
1084
.2:
2144 mario79 1085
	mov	edi,dir_path
1954 mario79 1086
	call	copy_dir_name
1087
 
1088
;	call	load_directory
1089
;	mov	eax,[N_error]
1090
;	test	eax,eax
1091
;	jnz	button.exit
1092
.3:
1093
	call	load_directory
1094
	mov	eax,[N_error]
1095
	test	eax,eax
1096
	jz	@f
1097
	call	error_handler
1098
	jmp	.3
1099
@@:
1100
	ret
1101
;---------------------------------------------------------------------
1102
load_next_dir:
4055 mario79 1103
	mov	ebx,[file_browser_data_1.folder_block]
1104
	test	ebx,ebx
1105
	jz	.exit
1106
 
1954 mario79 1107
	mov	ebx,[file_browser_data_1.selected_BDVK_adress]
1108
	add	ebx,40
1109
	test	[ebx-40],byte 0x10
1110
	jz	file_no_folder
1111
	cmp	[ebx],word '..'
1112
	jne	@f
1113
	cmp	[ebx+2],byte 0
1114
	je	.exit_dir
1115
@@:
2144 mario79 1116
	mov	esi,dir_path
1954 mario79 1117
	call	copy_dir_path
1118
 
1119
@@:
1120
.1:
1121
	call	load_directory
1122
	mov	eax,[N_error]
1123
	test	eax,eax
1124
	jz	@f
1125
	call	error_handler
1126
	jmp	.1
1127
@@:
1128
	call	sort_directory
1129
 
1130
	mov	ebx,[scroll_bar_data_vertical.x]
1131
	inc	ebx
1132
	mov	ecx,[scroll_bar_data_vertical.y]
1133
	inc	ecx
1134
	mcall	13,,,0xcccccc
1135
	mov	edi,edit1
1136
	xor	eax,eax
1137
	mov	[edi+44],eax
5878 pathoswith 1138
	mov	[edi+12],dword 0xffffff ; color white
1954 mario79 1139
	call	draw_draw_file_browser1
4055 mario79 1140
.exit:
1954 mario79 1141
	ret
1142
.exit_dir:
2144 mario79 1143
	mov	esi,dir_path
1954 mario79 1144
	call	copy_exit_dir
1145
	jmp	.1
1146
;---------------------------------------------------------------------
1147
error_handler:
4061 mario79 1148
	mcall	66,2
1149
	mov	[error_handler_store_input_mode],eax
1150
	mcall	66,1,1
1954 mario79 1151
.red:
1152
	call	.draw_window
1153
;------------------------------------
1154
.still:
1155
	mcall	10
1156
	cmp	eax,1
1157
	je	.red
1158
	cmp	eax,2
1159
	je	.key
1160
	cmp	eax,3
1161
	je	.button
1162
	jmp	.still
1163
;------------------------------------
1164
.draw_window:
1165
	xor	eax,eax
1166
	inc	eax
1167
	mov	[error_window],al
1168
	call	control_minimal_window_size
1169
	call	draw_window
1170
	xor	eax,eax
1171
	mov	[error_window],al
1172
	ret
1173
;------------------------------------
1174
.key:
1175
	mcall	2
1176
	xor	ebx,ebx
1177
	cmp	[extended_key],1
1178
	je	.extended_key
1179
	test	al,al
1180
	jnz	.still
1181
	cmp	ah,0xE0
1182
	jne	@f
1183
	mov	[extended_key],1
1184
	jmp	.still
1185
@@:
1186
	cmp	ah,129	; Esc
1187
	je	.exit
1188
	jmp	.still
1189
.extended_key:
1190
	jmp	.still
1191
;------------------------------------
1192
.button:
1193
	mcall	17
1194
	cmp	ah,5
1195
	je	.exit
1196
	cmp	ah,1
1197
	jne	.still
1198
	xor	eax,eax
1199
	mov	[N_error],eax
1200
	jmp	button.exit
1201
;------------------------------------
1202
.exit:
4061 mario79 1203
	cmp	[open_dialog_type],1
1204
	jne	@f
1205
 
1206
	mov	esi,root_pach
1207
	mov	edi,dir_path
1208
	call	copy_dir_name.1
1209
	mov	esi,root_pach
1210
	mov	edi,previous_dir_path
1211
	call	copy_dir_name.1
1212
	jmp	.restore_input_mode
1213
@@:
2144 mario79 1214
	mov	esi,previous_dir_path
1215
	mov	edi,dir_path
1216
	call	copy_dir_name.1
1954 mario79 1217
	mov	esi,start_pach
2144 mario79 1218
	mov	edi,previous_dir_path
1219
	call	copy_dir_name.1
4061 mario79 1220
.restore_input_mode:
1221
	mcall	66,1,[error_handler_store_input_mode]
1954 mario79 1222
	ret
1223
;---------------------------------------------------------------------
1224
file_no_folder:
2144 mario79 1225
	mov	esi,dir_path
1954 mario79 1226
	mov	edi,file_name
1227
	call	copy_dir_name
1228
	push	ebx
1229
	mov	al,[focus_pointer]
1230
	test	al,al
1231
	je	@f
1232
	mov	ebx,user_selected_name
3865 mario79 1233
	xor	eax,eax
1234
	cmp	[ebx],al
1235
	je	.exit
1954 mario79 1236
@@:
1237
	cmp	[open_dialog_type],2
1238
	je	@f
1239
	mov	esi,file_name
1240
	call	copy_dir_path
1241
@@:
1242
	mov	eax,[communication_area]
1243
	test	eax,eax
1244
	jnz	@f
1245
	call	control_minimal_window_size
1246
	call	draw_window
1247
	pop	ebx
1248
	ret
1249
@@:
1250
	mov	edi,eax
1251
	add	edi,16	;12
1252
	mov	esi,file_name
1253
	call	copy_dir_name
1254
 
1255
	pop	esi
1256
	mov	al,[focus_pointer]
1257
	test	al,al
1258
	jz	@f
1259
	mov	esi,user_selected_name
1260
@@:
3865 mario79 1261
	xor	eax,eax
1262
	cmp	[esi],al
1263
	je	.exit
1954 mario79 1264
	mov	edi,[communication_area]
1265
	add	edi,3840 ;4096-256
1266
	call	copy_dir_name
3865 mario79 1267
.exit:
1954 mario79 1268
	mov	eax,[communication_area]
1269
	mov	[eax],word 1
1270
	jmp	button.exit
1271
;---------------------------------------------------------------------
1272
load_root_directory:
3734 mario79 1273
	mov	[dirinfo.name],dword dir_path_temp
1274
	mov	eax,[dirinfo.return]
1275
	push	eax
1276
	mov	eax,[file_browser_data_1.folder_data]
1277
	push	eax
1278
	xor	eax,eax
1279
	mov	[dirinfo.return],eax
1280
	mov	[file_browser_data_1.folder_data],eax
1954 mario79 1281
	mov	esi,root_pach
3734 mario79 1282
	mov	edi,dir_path_temp
1954 mario79 1283
	call	copy_dir_name
1284
	call	load_directory
1285
	mov	eax,[N_error]
1286
	test	eax,eax
1287
	jnz	button.exit
1288
 
1289
	mov	eax,[dirinfo.return]
1290
	mov	[root_folder_area],eax
1291
	mov	eax,[eax+4]
1292
	mov	[root_folder_block],eax
1293
 
1294
	xor	eax,eax
1295
	mov	[dirinfo.return],eax
1296
	mov	[file_browser_data_1.folder_data],eax
1297
	mov	[temp_counter_1],eax	;0
1298
 
1299
	mov	[retrieved_devices_table_counter],eax	;0
1300
.start_temp_counter_1:
1301
	imul	esi,[temp_counter_1],304
1302
	add	esi,[root_folder_area]
1303
	add	esi,32+40
3734 mario79 1304
	mov	edi,dir_path_temp+1
1954 mario79 1305
	mov	[edi-1],byte '/'
1306
	call	copy_dir_name
1307
	call	load_directory
1308
	mov	eax,[N_error]
1309
	test	eax,eax
1310
	jnz	button.exit
1311
 
1312
	mov	eax,[dirinfo.return]
1313
	mov	[root1_folder_area],eax
1314
	mov	eax,[eax+4]
1315
	test	eax,eax
1316
	jz	.continue
1317
	mov	[root1_folder_block],eax
1318
 
1319
	mov	ebp,0
1320
.start_copy_device_patch:
1321
	imul	edi,[retrieved_devices_table_counter],10
1322
	add	edi,retrieved_devices_table
1323
	mov	[edi],byte '/'
1324
	inc	edi
1325
	imul	esi,[temp_counter_1],304
1326
	add	esi,[root_folder_area]
1327
	add	esi,32+40
1328
 
1329
	call	copy_dir_name
1330
 
1331
	imul	esi,ebp,304
1332
	add	esi,[root1_folder_area]
1333
	add	esi,32+40
1334
	mov	[edi-1],byte '/'
1335
 
1336
	call	copy_dir_name
1337
 
1338
	inc	[retrieved_devices_table_counter]
1339
	inc	ebp
1340
	cmp	ebp,[root1_folder_block]
1341
	jb	.start_copy_device_patch
1342
.continue:
1343
	inc	[temp_counter_1]
1344
	mov	eax,[temp_counter_1]
1345
	cmp	eax,[root_folder_block]
1346
	jb	.start_temp_counter_1
1347
 
1348
	cmp	[root_folder_area],dword 0
1349
	je	@f
1350
	mcall	68,13,[root_folder_area]
1351
	test	eax,eax
1352
	jz	memory_free_error
1353
@@:
1354
 
1355
	xor	ecx,ecx
1356
	mov	edi,menu_text_area_1_1	;.1
1357
@@:
1358
	imul	esi,ecx,10
1359
	add	esi,retrieved_devices_table
1360
	call	copy_dir_name
1361
	inc	ecx
1362
	cmp	ecx,[retrieved_devices_table_counter]
1363
	jb	@b
1364
	mov	[menu_data_1.text_end],edi
1365
	xor	eax,eax
1366
	mov	[edi],eax
3734 mario79 1367
	pop	eax
1368
	mov	[file_browser_data_1.folder_data],eax
1369
	pop	eax
1370
	mov	[dirinfo.return],eax
1371
	mov	[dirinfo.name],dword dir_path
1954 mario79 1372
	ret
1373
;---------------------------------------------------------------------
1374
memory_free_error:
1375
	mov	[N_error],3
1376
	jmp	button.exit
1377
;---------------------------------------------------------------------
1378
memory_get_error:
1379
	mov	[N_error],4
1380
	jmp	button.exit
1381
;---------------------------------------------------------------------
1382
type_title:
1383
	mov	ecx,[open_dialog_type]
1384
	shl	ecx,2
1385
	add	ecx,open_dialog_title_pointer
1386
	mov	ecx,[ecx]
1387
	test	ecx,ecx
1388
	jz	@f
2144 mario79 1389
	mcall	71,1,; title ;;param ;file_name ;dir_path
1954 mario79 1390
@@:
1391
	ret
1392
;---------------------------------------------------------------------
1393
draw_window:
1394
 
1395
	mcall	12,1
3808 mario79 1396
	call	prepare_system_colors
1954 mario79 1397
	xor	esi,esi
3808 mario79 1398
	mcall	0,[window_x],[window_y],0x63AABBCC
1954 mario79 1399
	call	type_title
1400
	call	get_window_param
2055 mario79 1401
	mov	eax,[procinfo+70] ;status of window
1402
	test	eax,100b
1403
	jne	.end
5878 pathoswith 1404
 
1954 mario79 1405
	mov	eax,[window_high]
1406
	sub	eax,25+45
1407
	mov	[file_browser_data_1.size_y],ax
1408
	mov	[scroll_bar_data_vertical.size_y],ax
1409
	mov	eax,[window_width]
1410
	sub	eax,10+20
1411
	mov	[file_browser_data_1.size_x],ax
1412
	add	ax,10
1413
	mov	[scroll_bar_data_vertical.start_x],ax
3808 mario79 1414
	mov	edx,[w_work]	; color of work area RRGGBB,8->color
1415
	or	edx,0x63000000
1416
	mcall	13,[window_width],45	;,0xcccccc
1954 mario79 1417
 
1418
	push	ecx
1419
	rol	ecx,16
1420
	add	cx,[file_browser_data_1.size_y]
1421
	add	cx,45
1422
	ror	ecx,16
1423
	mov	cx,25
1424
	mcall
1425
	pop	ecx
1426
	add	ecx,45 shl 16
1427
	mov	cx,[file_browser_data_1.size_y]
1428
	mov	bx,10
1429
	mcall
1430
	mov	bx,[file_browser_data_1.size_x]
1431
	add	bx,10
1432
	shl	ebx,16
1433
	mov	bx,20
1434
	mcall
1435
 
1436
	cmp	[error_window],0
1437
	je	@f
1438
	call	draw_for_fs_errors
1439
	jmp	.1
1440
@@:
3812 mario79 1441
	mov	[do_not_draw_open_button_label],1
1954 mario79 1442
	call	draw_draw_file_browser1
3812 mario79 1443
	mov	[do_not_draw_open_button_label],0
1954 mario79 1444
.1:
1445
	push	dword menu_data_1
1446
	call	[menu_bar_draw]
1447
	push	dword menu_data_2
1448
	call	[menu_bar_draw]
1449
	push	dword menu_data_3
1450
	call	[menu_bar_draw]
1451
 
1452
	mov	ebx,[file_browser_data_1.x]
1453
	mov	ax,bx
1454
	shl	eax,16
1455
	add	ebx,eax
1456
	mov	eax,50
1457
	mov	bx,ax
1458
	shl	eax,16
1459
	sub	ebx,eax
5878 pathoswith 1460
	mov	ecx,25 shl 16 + 16
3808 mario79 1461
	mcall	8,,,2,[w_work_button]	;0xffffff
1954 mario79 1462
 
1463
	pusha
1464
	shr	ecx,16
1465
	mov	bx,cx
5878 pathoswith 1466
	add	ebx,21 shl 16
3808 mario79 1467
	mov	ecx,[w_work_button_text]
1468
	or	ecx,0x90000000
1469
	mcall	4,,,message_ExitDir_button
1954 mario79 1470
	add	ebx,4
1471
	mcall
1472
	add	ebx,4
1473
	mcall
1474
	popa
1475
 
1476
	push	ebx
1477
	sub	ebx,70 shl 16
1478
	mov	bx,60
1479
	mcall	8,,,6
1480
 
1481
	shr	ecx,16
1482
	mov	bx,cx
5878 pathoswith 1483
	add	ebx,2 shl 16
3808 mario79 1484
	mov	ecx,[w_work_button_text]
1485
	or	ecx,0x90000000
1486
	mcall	4,,,message_ReloadDir_button
1954 mario79 1487
	pop	ebx
1488
 
1489
	mov	ebx,[file_browser_data_1.x]
1490
	mov	ax,bx
1491
	shl	eax,16
1492
	add	ebx,eax
1493
	mov	eax,55
1494
	mov	bx,ax
1495
	shl	eax,16
1496
	sub	ebx,eax
1497
	mov	ecx,[file_browser_data_1.y]
1498
	mov	ax,cx
1499
	add	eax,3
1500
	shl	eax,16
1501
	add	ecx,eax
5878 pathoswith 1502
	mov	cx,16
1954 mario79 1503
	mcall	8,,,3
1504
 
1505
	pusha
1506
	shr	ecx,16
1507
	mov	bx,cx
5878 pathoswith 1508
	add	ebx,4 shl 16
3808 mario79 1509
	mov	ecx,[w_work_button_text]
1510
	or	ecx,0x90000000
1511
	mcall	4,,,message_cancel_button
1954 mario79 1512
	popa
1513
 
1514
	sub	ebx,65 shl 16
1515
	mcall	8,,,4
5878 pathoswith 1516
 
1954 mario79 1517
	shr	ecx,16
1518
	mov	bx,cx
5878 pathoswith 1519
	add	ebx,4 shl 16
1954 mario79 1520
	mov	edx,[open_dialog_type]
1521
	shl	edx,2
1522
	add	edx,message_open_dialog_button
1523
	mov	edx,[edx]
5878 pathoswith 1524
;-------------------------------
3815 mario79 1525
	cmp	[open_dialog_type],1
1526
	jne	@f
1527
 
1528
	cmp	[focus_pointer],1
1529
	je	@f
4159 mario79 1530
 
1531
	cmp	[error_window],0
1532
	jne	@f
4236 mario79 1533
 
1534
	mov	eax,[file_browser_data_1.folder_block]
1535
	test	eax,eax
1536
	jz	@f
1537
 
3812 mario79 1538
	mov	eax,[file_browser_data_1.selected_BDVK_adress]
1539
	test	[eax],byte 0x10
1540
	jz	@f
1541
 
5878 pathoswith 1542
	mov	edx,message_0	; Open Dir
1954 mario79 1543
@@:
3815 mario79 1544
;--------------------------------------
3812 mario79 1545
	mov	[open_button_coordinates],ebx
3808 mario79 1546
	mov	ecx,[w_work_button_text]
1547
	or	ecx,0x90000000
1548
	mcall	4	;message_open_button
2055 mario79 1549
.end:
1954 mario79 1550
	mcall	12,2
1551
	ret
1552
;---------------------------------------------------------------------
3812 mario79 1553
draw_open_button_label:
1554
	cmp	[do_not_draw_open_button_label],1
5878 pathoswith 1555
	je	.exit_1
3812 mario79 1556
 
1557
	cmp	[open_dialog_type],1
1558
	jne	.exit_1
1559
 
3815 mario79 1560
	cmp	[focus_pointer],1
1561
	je	draw_save_button_label
1562
 
3812 mario79 1563
	pusha
1564
	mov	ebx,[open_button_coordinates]
1565
	test	ebx,ebx
1566
	jz	.exit
1567
 
1568
	mov	edx,[open_dialog_type]
1569
	shl	edx,2
1570
	add	edx,message_open_dialog_button
1571
	mov	edx,[edx]
1572
 
4055 mario79 1573
	mov	eax,[file_browser_data_1.folder_block]
1574
	test	eax,eax
1575
	jz	.1
1576
 
3812 mario79 1577
	mov	eax,[file_browser_data_1.selected_BDVK_adress]
1578
	test	[eax],byte 0x10
1579
	jz	@f
1580
 
1581
	mov	edx,message_0	; Open Dir
1582
	jmp	.1
1583
@@:
1584
	call	copy_new_file_name
1585
.1:
1586
	mov	ecx,[w_work_button_text]
1587
	or	ecx,0xd0000000
1588
	mov	edi,[w_work_button]
1589
	mcall	4	;message_open_button
1590
.exit:
1591
	popa
1592
.exit_1:
1593
	ret
1594
;---------------------------------------------------------------------
3815 mario79 1595
draw_save_button_label:
1596
	pusha
1597
	mov	ebx,[open_button_coordinates]
1598
 
1599
	mov	edx,message_1	; Save
1600
 
1601
	mov	ecx,[w_work_button_text]
1602
	or	ecx,0xd0000000
1603
	mov	edi,[w_work_button]
1604
	mcall	4	;message_open_button
1605
	popa
1606
	ret
1607
;---------------------------------------------------------------------
3812 mario79 1608
copy_new_file_name:
1609
	mov	esi,[file_browser_data_1.selected_BDVK_adress]
1610
	add	esi,40
1611
	mov	edi,user_selected_name
1612
	cld
3865 mario79 1613
	lodsb
1614
	test	al,al
1615
	jnz	.1
1616
	ret
3812 mario79 1617
@@:
1618
	lodsb
3865 mario79 1619
.1:
3812 mario79 1620
	stosb
1621
	test	al,al
1622
	jnz	@r
1623
 
1624
	sub	edi,user_selected_name
1625
	dec	edi
1626
 
1627
	mov	esi,edit1
1628
	mov	[esi+48],edi ;ed_size
1629
	mov	[esi+52],edi ;ed_pos
1630
 
1631
	push	dword name_editboxes
1632
	call	[edit_box_draw]
1633
	ret
1634
;---------------------------------------------------------------------
3808 mario79 1635
prepare_system_colors:
1636
	mcall	48,3,app_colours,10*4
1637
 
1638
	mov	eax,[w_work]
1639
	mov	[menu_data_1.bckg_col],eax
1640
	mov	[menu_data_2.bckg_col],eax
1641
	mov	[menu_data_3.bckg_col],eax
1642
 
1643
	mov	[menu_data_1.menu_col],eax
1644
	mov	[menu_data_2.menu_col],eax
1645
	mov	[menu_data_3.menu_col],eax
1646
 
5878 pathoswith 1647
	mov	[scroll_bar_data_vertical.bckg_col],eax
3808 mario79 1648
 
1649
	mov	eax,[w_work_button]
1650
	mov	[menu_data_1.frnt_col],eax
1651
	mov	[menu_data_2.frnt_col],eax
1652
	mov	[menu_data_3.frnt_col],eax
1653
 
5878 pathoswith 1654
	mov	[scroll_bar_data_vertical.frnt_col],eax
3808 mario79 1655
 
1656
	mov	eax,[w_work_button]
1657
	mov	[menu_data_1.menu_sel_col],eax
1658
	mov	[menu_data_2.menu_sel_col],eax
1659
	mov	[menu_data_3.menu_sel_col],eax
1660
 
1661
	mov	eax,[w_work_text]
1662
	mov	[menu_data_1.bckg_text_col],eax
1663
	mov	[menu_data_2.bckg_text_col],eax
1664
	mov	[menu_data_3.bckg_text_col],eax
1665
 
1666
	mov	eax,[w_work_button_text]
1667
	mov	[menu_data_1.frnt_text_col],eax
1668
	mov	[menu_data_2.frnt_text_col],eax
1669
	mov	[menu_data_3.frnt_text_col],eax
1670
 
5878 pathoswith 1671
	mov	[scroll_bar_data_vertical.line_col],eax
3808 mario79 1672
	ret
1673
;---------------------------------------------------------------------
1954 mario79 1674
draw_for_fs_errors:
2144 mario79 1675
	call	draw_dir_path
1954 mario79 1676
 
1677
	mov	ebx,[file_browser_data_1.x]
1678
	mov	ecx,[file_browser_data_1.y]
1679
	mcall	13,,,[file_browser_data_1.background_color]
1680
	push	ebx ecx
1681
	add	ebx,10 shl 16
1682
	sub	ebx,20
1683
	add	ecx,10 shl 16
1684
	sub	ecx,20
1685
 
1686
	shr	ecx,16
1687
	mov	bx,cx
1688
	add	ebx,5 shl 16+15
4061 mario79 1689
	mcall	4,,0x90000000,load_directory_error_type
1954 mario79 1690
 
1691
	add	ebx,20
2144 mario79 1692
	mcall	4,,,dir_path
1954 mario79 1693
 
1694
	mov	eax,[error_type]
1695
	shl	eax,2
1696
	add	eax,error_fs_text_pointers
1697
	mov	edx,[eax]
1698
	add	ebx,20
1699
	mcall	4
4061 mario79 1700
 
1701
	add	ebx,20
1702
	mcall	,,,error_help_text
1954 mario79 1703
 
1704
	pop	ecx ebx
1705
 
1706
	mov	ebx,[file_browser_data_1.x]
1707
	mov	ax,bx
1708
	shr	eax,1
1709
	shl	eax,16
1710
	add	ebx,eax
1711
	mov	eax,50
1712
	mov	bx,ax
1713
	shr	eax,1
1714
	shl	eax,16
1715
	sub	ebx,eax
1716
 
1717
	mov	ecx,[file_browser_data_1.y]
1718
	mov	ax,cx
1719
	sub	eax,40
1720
	shl	eax,16
1721
	add	ecx,eax
1722
	mov	cx,15
1723
 
4061 mario79 1724
	mcall	8,,,5,[w_work_button]	;0xffffff
1954 mario79 1725
 
1726
	shr	ecx,16
1727
	mov	bx,cx
5878 pathoswith 1728
	add	ebx,4 shl 16
4061 mario79 1729
	mov	ecx,[w_work_button_text]
1730
	add	ecx,0x90000000
1731
	mcall	4,,,message_cancel_button
1954 mario79 1732
 
1733
	ret
1734
;---------------------------------------------------------------------
1735
draw_file_name:
1736
	mov	esi,user_selected_name
1737
	cld
1738
@@:
1739
	lodsb
1740
	test	al,al
1741
	jne	@r
1742
	sub	esi,user_selected_name
1743
	mov	eax,esi
1744
	dec	eax
1745
 
1746
	mov	edi,edit1
1747
	mov	[edi+48],eax ;ed_size
1748
	mov	[edi+52],eax ;ed_pos
1749
;--------------------------------------
1750
	mov	eax,[file_browser_data_1.x]
1751
	mov	ebx,eax
1752
	shr	ebx,16
1753
	and	eax,0xffff
1754
	sub	eax,200
1755
	mov	[edi],eax
1756
	add	ebx,70
1757
	mov	[edi+4],ebx
1758
 
1759
	mov	eax,[file_browser_data_1.y]
1760
	mov	ebx,eax
1761
	shr	ebx,16
1762
	and	eax,0xffff
1763
	add	eax,ebx
1764
	add	eax,5
1765
	mov	[edi+8],eax
1766
 
1767
	push	dword name_editboxes
5878 pathoswith 1768
	call	[edit_box_draw]
1954 mario79 1769
 
1770
	mov	bx,[file_browser_data_1.start_x]
1771
	add	bx,5
1772
	shl	ebx,16
1773
	mov	bx,[file_browser_data_1.start_y]
1774
	add	bx,[file_browser_data_1.size_y]
1775
	add	bx,9
7548 leency 1776
	mov	ecx,[w_work_text]
1777
	add	ecx,0x80000000
1778
	mcall	4,,,message_file_name
1954 mario79 1779
	ret
1780
;---------------------------------------------------------------------
2144 mario79 1781
draw_dir_path:
1954 mario79 1782
	mov	eax,[file_browser_data_1.x]
1783
	mov	ebx,eax
1784
	shr	ebx,16
1785
	add	ebx,3
1786
	and	eax,0xffff
1787
	sub	eax,5
1788
 
1789
	mov	[PathShow_data_1.area_size_x],ax
1790
	mov	[PathShow_data_1.start_x],bx
1791
;--------------------------------------
3808 mario79 1792
;; top line
1793
;	mov	ebx,[file_browser_data_1.x]
1794
;	mcall	13,,<7,1>,0x0
1954 mario79 1795
; down line
3808 mario79 1796
;	push	ebx ecx
1797
;	mcall	,,<21,1>,
1798
;	pop	ecx ebx
1954 mario79 1799
; left line
3808 mario79 1800
;	push	ebx
1801
;	mov	bx,1
1802
;	mov	cx,15
1803
;	mcall
1804
;	pop	ebx
1954 mario79 1805
; right line
3808 mario79 1806
;	mov	ax,bx
1807
;	shr	ebx,16
1808
;	add	bx,ax
1809
;	dec	ebx
1810
;	shl	ebx,16
1811
;	mov	bx,1
1812
;	mcall	13
5878 pathoswith 1813
;--------------------------------------
1954 mario79 1814
	mov	ebx,[file_browser_data_1.x]
1815
	sub	ebx,2
1816
	add	ebx,1 shl 16
3808 mario79 1817
	mcall	13,,<8,13>,0xffffcc
1954 mario79 1818
;--------------------------------------
1819
; prepare for PathShow
1820
	push	dword PathShow_data_1
1821
	call	[PathShow_prepare]
1822
 
1823
; draw for PathShow
1824
	push	dword PathShow_data_1
1825
	call	[PathShow_draw]
1826
 
1827
	ret
1828
;---------------------------------------------------------------------
1829
draw_draw_file_browser1:
2144 mario79 1830
	call	draw_dir_path
1954 mario79 1831
	cmp	[open_dialog_type],1
1832
	jne	@f
1833
	call	draw_file_name
1834
@@:
1835
	xor	eax,eax
1836
	inc	eax
1837
	mov	[file_browser_data_1.all_redraw],eax
1838
	mov	[scroll_bar_data_vertical.all_redraw],eax
1839
 
1840
	push	dword file_browser_data_1
1841
	call	[FileBrowser_draw]
3812 mario79 1842
 
1843
	call	draw_open_button_label
1954 mario79 1844
 
1845
	call	prepare_scrollbar_data
1846
 
1847
	call	draw_scrollbar
1848
 
1849
	xor	eax,eax
1850
	mov	[file_browser_data_1.all_redraw],eax
1851
	mov	[scroll_bar_data_vertical.all_redraw],eax
1852
	ret
1853
;---------------------------------------------------------------------
1854
draw_draw_file_browser2:
1855
	mov	eax,2
1856
	mov	[file_browser_data_1.all_redraw],eax
1857
 
1858
	call	get_scrollbar_data
1859
 
1860
	push	dword file_browser_data_1
1861
	call	[FileBrowser_draw]
1862
 
3812 mario79 1863
	call	draw_open_button_label
1864
 
1954 mario79 1865
	xor	eax,eax
1866
	mov	[file_browser_data_1.all_redraw],eax
1867
	ret
1868
;---------------------------------------------------------------------
1869
draw_scrollbar1:
1870
	mov	eax,[file_browser_data_1.start_draw_line]
1871
	mov	[scroll_bar_data_vertical.position],eax
1872
 
1873
	call	draw_scrollbar
1874
 
1875
	ret
1876
;---------------------------------------------------------------------
1877
draw_scrollbar:
1878
	mov	eax,[scroll_bar_data_vertical.max_area]
1879
	cmp	eax,[scroll_bar_data_vertical.cur_area]
1880
	jbe	@f
1881
	cmp	[scroll_bar_data_vertical.cur_area],0
1882
	je	@f
1883
	push	dword scroll_bar_data_vertical
1884
	call	[scrollbar_ver_draw]
1885
@@:
1886
	ret
1887
;---------------------------------------------------------------------
1888
get_scrollbar_data:
1889
	mov	eax,[scroll_bar_data_vertical.position]
1890
	mov	[file_browser_data_1.start_draw_line],eax
1891
	ret
1892
;---------------------------------------------------------------------
1893
prepare_scrollbar_data:
1894
	mov	eax,[file_browser_data_1.folder_block]
1895
	mov	[scroll_bar_data_vertical.max_area],eax
1896
	mov	eax,[file_browser_data_1.max_panel_line]
1897
	mov	[scroll_bar_data_vertical.cur_area],eax
1898
	ret
1899
;---------------------------------------------------------------------
1900
get_active_pocess:
1901
	mcall	9,procinfo,-1
1902
	mov	ecx,[ebx+30]	; PID
1903
	mcall	18,21
1904
	mov	[active_process],eax	; WINDOW SLOT
1905
	mov	ebx,[communication_area]
1906
	test	ebx,ebx
1907
	jz	.1
1908
	mov	[ebx+12],eax	; WINDOW SLOT to com. area
1909
.1:
1910
	ret
1911
;---------------------------------------------------------------------
1912
get_window_param:
1913
	mcall	9,procinfo,-1
1914
	mov	eax,[ebx+66]
1915
	inc	eax
1916
	mov	[window_high],eax
1917
	mov	eax,[ebx+62]
1918
	inc	eax
1919
	mov	[window_width],eax
1920
	mov	eax,[ebx+70]
1921
	mov	[window_status],eax
1922
	ret
1923
;---------------------------------------------------------------------
1924
convert_icons:
1925
	xor	eax,eax
1926
	mov	[return_code],eax
1927
;	mov	eax,image_file
1928
	push	image_file
1929
	call	[cnv_png_import.Start]
1930
 
1931
	mov	ecx,[image_file]
1932
	mcall	68,13,
1933
	test	eax,eax
1934
	jz	memory_free_error
1935
 
1936
	cmp	[return_code],dword 0
1937
	je	@f
1938
	mov	[N_error],6
1939
	jmp	button.exit
1940
@@:
1941
 
1942
	mov	ebx,[raw_pointer]
1943
	mov	eax,[ebx+4]
1944
; set of icon size x
1945
	mov	[file_browser_data_1.icon_size_x],ax
1946
; mov eax,[ebx+8]
1947
; set of icon size y
1948
	mov	[file_browser_data_1.icon_size_y],ax
1949
	inc	ax
1950
	mov	[file_browser_data_1.line_size_y],ax
1951
	mov	eax,[ebx+12]
1952
; set of RAW resolution to pixel
1953
	mov	[file_browser_data_1.resolution_raw],eax
1954
 
1955
	mov	eax,[ebx+20]
1956
	add	eax,ebx
1957
; set RAW palette,use else resolution 8bit or less
1958
	mov	[file_browser_data_1.palette_raw],eax
1959
 
1960
	mov	eax,[ebx+28]
1961
	add	eax,ebx
1962
; set RAW area for icon
1963
	mov	[file_browser_data_1.icon_raw_area],eax
1964
	ret
1965
;---------------------------------------------------------------------
1966
calc_ini:
1967
	mov	eax,[image_file]
1968
	mov	[file_browser_data_1.ini_file_start],eax
9728 sober_dev 1969
 
1970
	mov     edi,eax
1971
	add	edi,[img_size]
1972
	dec     edi
1973
	mov     esi,eax
1974
	add     esi,9 ; after [icons16]
1975
	cld
1976
@@:
1977
	lodsb
1978
	cmp     esi,edi
1979
	je      @f
1980
	cmp     al,byte '['
1981
	jne	@r
1982
 
1983
@@:
1984
	mov	[file_browser_data_1.ini_file_end],esi
1954 mario79 1985
	ret
1986
;---------------------------------------------------------------------
1987
load_ini:
7052 leency 1988
	mov	edi,ini_file_name
1954 mario79 1989
 
7052 leency 1990
	mov	[fileinfo.name],edi
1954 mario79 1991
	mov	[fileinfo.subfunction],dword 5
1992
	mov	[fileinfo.size],dword 0
1993
	mov	[fileinfo.return],dword file_info
1994
	mcall	70,fileinfo
1995
	test	eax,eax
1996
	jnz	.error
1997
 
1998
	mov	[fileinfo.subfunction],dword 0
1999
 
2000
	mov	ecx,[file_info+32]
2001
	mov	[fileinfo.size],ecx
2002
	mov	[img_size],ecx
2003
 
2004
	mcall	68,12
2005
	test	eax,eax
2006
	jz	memory_get_error
2007
 
2008
	mov	[fileinfo.return],eax
2009
	mov	[image_file],eax
2010
 
2011
	mcall	70,fileinfo
2012
	test	eax,eax
2013
	jnz	.error
2014
	ret
2015
.error:
2016
	mov	[N_error],1
2017
	mov	[error_type],eax
2018
	jmp	button.exit
2019
;---------------------------------------------------------------------
2020
load_icons:
2021
	mov	ebx,icons_file_name_2
2022
	mov	esi,path
2023
	mov	edi,file_name
2024
	call	copy_file_path
2025
 
2026
	mov	[fileinfo.subfunction],dword 5
2027
	mov	[fileinfo.size],dword 0
2028
	mov	[fileinfo.return],dword file_info
2029
	mcall	70,fileinfo
2030
	test	eax,eax
2031
	jz	@f
2032
 
7052 leency 2033
	mov	edi,icons_path
1954 mario79 2034
 
7052 leency 2035
	mov	[fileinfo.name],edi
1954 mario79 2036
	mov	[fileinfo.subfunction],dword 5
2037
	mov	[fileinfo.size],dword 0
2038
	mov	[fileinfo.return],dword file_info
2039
	mcall	70,fileinfo
2040
	test	eax,eax
2041
	jnz	.error
2042
@@:
2043
	mov	[fileinfo.subfunction],dword 0
2044
 
2045
	mov	ecx,[file_info+32]
2046
	mov	[fileinfo.size],ecx
2047
	mov	[img_size],ecx
2048
 
2049
	mcall	68,12
2050
	test	eax,eax
2051
	jz	memory_get_error
2052
 
2053
	mov	[fileinfo.return],eax
2054
	mov	[image_file],eax
2055
 
2056
	mcall	70,fileinfo
2057
	test	eax,eax
2058
	jnz	.error
2059
	ret
2060
.error:
2061
	mov	[N_error],2
2062
	mov	[error_type],eax
2063
	jmp	button.exit
2064
;---------------------------------------------------------------------
2065
sort_directory:
2066
	mov	eax,[file_browser_data_1.folder_data]
2067
	mov	ebx,[eax+4]	; number of files
2068
	add	eax,32
2069
	cmp	[eax+40],word '..'
2070
	jne	@f
2071
	cmp	[eax+40+2],byte 0
2072
	jne	@f
2073
	dec	ebx
2074
	add	eax,304
2075
@@:
2076
	push	dword [sort_type]	; sort mode
2077
	push	ebx	; number of files
2078
	push	eax	; data files
2079
	call	[sort_dir]
2080
	ret
2081
;--------------------------------------------------------------------
2082
load_directory:
2083
	xor	eax,eax
2084
	mov	[N_error],eax
2085
	cmp	[file_browser_data_1.folder_data],eax
2086
	je	@f
2087
	mcall	68,13,[file_browser_data_1.folder_data]
2088
	test	eax,eax
2089
	jz	memory_free_error
2090
 
2091
@@:
2092
	mov	[dirinfo.size],dword 0
2093
	mov	[dirinfo.return],dir_header
2094
	mcall	70,dirinfo
2095
	test	eax,eax
2096
	jz	@f
2144 mario79 2097
;	mov	esi,previous_dir_path
2098
;	mov	edi,dir_path
2099
;	call	copy_dir_name.1
2100
;	mcall	70,dirinfo
2101
;	test	eax,eax
2102
;	jz	@f
1954 mario79 2103
	xor	ebx,ebx
2104
	mov	[file_browser_data_1.folder_data],ebx
2105
	jmp	.error
2106
@@:
2107
 
2108
	mov	ecx,[dir_header.totl_blocks]
2109
	mov	[dirinfo.size],ecx
2110
	imul	ecx,304
2111
	add	ecx,32
2112
	mcall	68,12
2113
	test	eax,eax
2114
	jz	memory_get_error
2115
 
2116
	mov	[dirinfo.return],eax
2117
	mov	[file_browser_data_1.folder_data],eax
2118
 
2119
	mcall	70,dirinfo
2120
	test	eax,eax
2121
	jnz	.error
2122
 
2123
; test for empty directory
2124
	mov	eax,[dirinfo.return]
2125
	mov	eax,[eax+4]
2126
	test	eax,eax
2127
	jz	@f
2128
 
2129
	call	delete_point_dir
3730 mario79 2130
;	call	files_name_normalize
1954 mario79 2131
	call	check_filter
2132
	call	prepare_extension_and_mark
2133
	call	clear_data_fb_and_sb
2134
@@:
2135
	ret
2136
 
2137
.error:
2138
	mov	[N_error],5
2139
	mov	[error_type],eax
2140
	ret
2141
;---------------------------------------------------------------------
2142
clear_data_fb_and_sb:
2143
	xor	eax,eax
2144
	mov	[file_browser_data_1.start_draw_cursor_line],ax
2145
	mov	[file_browser_data_1.start_draw_line],eax
5878 pathoswith 2146
	mov	[scroll_bar_data_vertical.position],eax
1954 mario79 2147
	ret
2148
;---------------------------------------------------------------------
2149
check_filter:
2150
	cmp [open_dialog_type],2	; Select dir
2151
	je	.1
2152
	xor	eax,eax
2153
	mov	al,[filter_flag]
2154
	test	eax,eax
2155
	jz	@f
2156
 
2157
	mov	eax,[communication_area]
2158
	test	eax,eax
2159
	jz	@f
2160
	mov	eax,[eax+4096]
2161
	test	eax,eax
2162
	jz	@f
2163
.1:
2164
	call	delete_unsupported_BDFE
2165
@@:
2166
	ret
2167
;---------------------------------------------------------------------
2168
delete_unsupported_BDFE:
2169
	mov	ebx,[file_browser_data_1.folder_data]
2170
	add	ebx,4
2171
	xor	ecx,ecx
2172
	dec	ecx
2173
 
2174
	mov	eax,[file_browser_data_1.folder_data]
2175
	add	eax,32+40
2176
	sub	eax,304
2177
.start:
2178
	inc	ecx
2179
	add	eax,304
2180
.1:
2181
	cmp	[ebx],ecx
2182
	je	.end
2183
	cmp	[eax],byte '.'
2184
	jne	@f
2185
	cmp	[eax+1],byte 0
2186
	je	.delete
2187
@@:
2188
	test	[eax-40],byte 0x10
2189
	jnz	.start
2190
 
2191
	cmp	[open_dialog_type],2	; Select dir
2192
	je	.delete
2193
 
2194
	push	eax ebx
2195
	mov	esi,eax
2196
	call	search_expansion
2197
	test	eax,eax
2198
	pop	ebx eax
2199
	jnz	.delete
2200
 
2201
	push	eax ebx ecx esi
2202
	mov	edi,[communication_area]
2203
	add	edi,4100
2204
	call	compare_expansion
2205
	test	eax,eax
2206
	pop	esi ecx ebx eax
2207
	jz	.start
2208
 
2209
;-------------------------------------------
2210
.delete:
2211
	dec	dword [ebx]
2212
	mov	esi,[ebx]
2213
	sub	esi,ecx
2214
 
2215
	push	ecx
2216
	mov	ecx,esi
2217
	imul	ecx,304/4
2218
	mov	edi,eax
2219
	sub	edi,40
2220
	mov	esi,edi
2221
	add	esi,304
2222
	cld
2223
	rep	movsd
2224
	pop	ecx
2225
 
2226
	jmp	.1
2227
.end:
2228
	ret
2229
;---------------------------------------------------------------------
2230
search_expansion:
2231
	mov	edi,esi
2232
	xor	eax,eax
2233
@@:
2234
	cld
2235
	lodsb
2236
	test	eax,eax
2237
	jnz	@b
2238
	mov	ebx,esi
2239
	dec	esi
2240
@@:
2241
	std
2242
	lodsb
2243
	cmp	esi,edi
2244
	jb	.end_err
2245
	cmp	al,'.'
2246
	jne	@b
2247
 
2248
	add	esi,2
2249
	sub	ebx,esi
2250
	mov	[expansion_length],ebx
2251
	cld
2252
	xor	eax,eax
2253
	ret
2254
 
2255
.end_err:
2256
	cld
2257
	xor	eax,eax
2258
	inc	eax
2259
	ret
2260
;---------------------------------------------------------------------
2261
compare_expansion:
2262
	mov	ebx,[edi]
2263
	add	ebx,edi
2264
	add	edi,3
2265
.start:
2266
	cmp	ebx,edi
2267
	jb	.end_err
2268
	mov	ecx,[expansion_length]
2269
	inc	edi
2270
 
2271
	push	esi edi
2272
@@:
2273
	cld
2274
	lodsb
2275
	xchg	esi,edi
2276
	shl	eax,8
2277
	lodsb
2278
	xchg	esi,edi
2279
	call	char_todown
2280
	xchg	al,ah
2281
	call	char_todown
2282
	cmp	al,ah
2283
	jne	@f
2284
	dec	ecx
2285
	jnz	@b
2286
	jmp	.end
2287
@@:
2288
	pop	edi esi
2289
	jmp	.start
2290
.end:
2291
	pop	edi esi
2292
	xor	eax,eax
2293
	ret
2294
 
2295
.end_err:
2296
	xor	eax,eax
2297
	inc	eax
2298
	ret
2299
;---------------------------------------------------------------------
2300
prepare_extension_and_mark:
2301
	mov	esi,[dirinfo.return]
2302
	mov	ebp,[esi+4]
4055 mario79 2303
	test	ebp,ebp
2304
	jz	.end
2305
 
1954 mario79 2306
	add	esi,32+40
2307
.start:
2308
	push	esi
2309
	call	search_extension_start
2310
	mov	eax,esi
2311
	pop	esi
2312
	sub	eax,esi
2313
	sub	ebx,esi
2314
	shl	eax,16
2315
	mov	ax,bx
2316
	mov	[esi+300-40],eax
2317
	mov	[esi+299-40],byte 0
2318
	add	esi,304
2319
	dec	ebp
2320
	jnz	.start
4055 mario79 2321
.end:
1954 mario79 2322
	ret
2323
;---------------------------------------------------------------------
2324
search_extension_start:
2325
	mov	edx,esi
2326
	xor	eax,eax
2327
	cld
2328
@@:
2329
	lodsb
2330
	test	eax,eax
2331
	jnz	@b
2332
	dec	esi
2333
	dec	edx
2334
	push	esi
2335
	std
2336
@@:
2337
	lodsb
2338
	cmp	esi,edx
2339
	je	.end
2340
	cmp	al,'.'
2341
	jnz	@b
2342
	add	esi,2
2343
	cld
2344
	pop	ebx
2345
	ret
2346
.end:
2347
	cld
2348
	pop	esi
2349
	mov	ebx,esi
2350
	ret
2351
;---------------------------------------------------------------------
2352
delete_point_dir:
2353
	mov	eax,[dirinfo.return]
2354
	cmp	[eax+32+40],byte '.'
2355
	jne	@f
2356
	cmp	[eax+32+40+1],byte 0
2357
	jne	@f
2358
	mov	edi,eax
2359
	add	edi,32
2360
	mov	esi,edi
2361
	add	esi,304
2362
	mov	ecx,[eax+4]
2363
	dec	ecx
2364
	mov	[eax+4],ecx
2365
	imul	ecx,304
2366
	shr	ecx,2
2367
	cld
2368
	rep	movsd
2369
@@:
2370
	ret
2371
;---------------------------------------------------------------------
3730 mario79 2372
;files_name_normalize:
2373
;	mov	esi,[dirinfo.return]
2374
;	mov	ebp,[esi+4]
2375
;	add	esi,32+40
2376
;.start:
2377
;	push	esi
2378
;	mov	al,[esi]
2379
;	call	char_toupper
2380
;	mov	[esi],al
2381
;@@:
2382
;	inc	esi
2383
;	mov	al,[esi]
2384
;	test	al,al
2385
;	jz	@f
2386
;	call	char_todown
2387
;	mov	[esi],al
2388
;	jmp	@b
2389
;@@:
2390
;	pop	esi
2391
;	add	esi,304
2392
;	dec	ebp
2393
;	jnz	.start
2394
;	ret
1954 mario79 2395
;---------------------------------------------------------------------
2396
char_toupper:
2397
; convert character to uppercase,using cp866 encoding
2398
; in: al=symbol
2399
; out: al=converted symbol
2400
	cmp	al,'a'
2401
	jb	.ret
2402
	cmp	al,'z'
2403
	jbe	.az
2404
	cmp	al,' '
2405
	jb	.ret
2406
	cmp	al,'à'
2407
	jb	.rus1
2408
	cmp	al,'ï'
2409
	ja	.ret
2410
; 0xE0-0xEF -> 0x90-0x9F
2411
	sub	al,'à'-''
2412
.ret:
2413
	ret
2414
.rus1:
2415
; 0xA0-0xAF -> 0x80-0x8F
2416
.az:
2417
	and	al,not	0x20
2418
	ret
2419
;---------------------------------------------------------------------
2420
char_todown:
2421
; convert character to uppercase,using cp866 encoding
2422
; in: al=symbol
2423
; out: al=converted symbol
2424
	cmp	al,'A'
2425
	jb	.ret
2426
	cmp	al,'Z'
2427
	jbe	.az
2428
	cmp	al,'€'
2429
	jb	.ret
2430
	cmp	al,''
2431
	jb	.rus1
2432
	cmp	al,'Ÿ'
2433
	ja	.ret
2434
; 0x90-0x9F -> 0xE0-0xEF
2435
	add	al,'à'-''
2436
.ret:
2437
	ret
2438
.rus1:
2439
; 0x80-0x8F -> 0xA0-0xAF
2440
.az:
2441
	add	al,0x20
2442
	ret
2443
;---------------------------------------------------------------------
2444
copy_file_path:
2445
	xor	eax,eax
2446
	cld
2447
@@:
2448
	lodsb
2449
	stosb
2450
	test	eax,eax
2451
	jnz	@b
2452
	mov	esi,edi
2453
	dec	esi
2454
	std
2455
@@:
2456
	lodsb
2457
	cmp	al,'/'
2458
	jnz	@b
2459
	mov	edi,esi
2460
	add	edi,2
2461
	mov	esi,ebx
2462
	cld
2463
@@:
2464
	lodsb
2465
	stosb
2466
	test	eax,eax
2467
	jnz	@b
2468
	ret
2469
;---------------------------------------------------------------------
2470
copy_dir_path:
2471
	mov	ecx,esi
2472
	inc	ecx
2473
	inc	ecx
2474
	xor	eax,eax
2475
	cld
2476
@@:
2477
	lodsb
2478
	test	eax,eax
2479
	jnz	@b
2480
 
2481
	cmp	ecx,esi
2482
	jb	@f
2483
	dec	esi
2484
@@:
2485
	mov	[esi-1],byte '/'
2486
	mov	edi,esi
2487
	mov	esi,ebx
2488
@@:
2489
	lodsb
2490
	stosb
2491
	test	eax,eax
2492
	jnz	@b
2493
	ret
2494
;---------------------------------------------------------------------
2495
copy_exit_dir:
2496
	mov	ebx,esi
2497
	inc	ebx
2498
	xor	eax,eax
2499
	cld
2500
@@:
2501
	lodsb
2502
	test	eax,eax
2503
	jnz	@b
2504
	sub	esi,2
2505
	std
2506
@@:
2507
	lodsb
2508
	cmp	al,'/'
2509
	jnz	@b
2510
	xor	eax,eax
2511
	cmp	ebx,esi
2512
	jb	@f
2513
	inc	esi
2514
@@:
2515
	mov	[esi+1],al
2516
	cld
2517
	ret
2518
;---------------------------------------------------------------------
2519
copy_dir_name:
2144 mario79 2520
	push	esi edi
2521
	mov	esi,edi
2522
	mov	edi,previous_dir_path
2523
	call	.1
2524
	pop	edi esi
2525
.1:
1954 mario79 2526
	xor	eax,eax
3865 mario79 2527
	cmp	[esi],al
2528
	je	.exit
1954 mario79 2529
	cld
2530
@@:
2531
	lodsb
2532
	stosb
2533
	test	eax,eax
2534
	jnz	@b
3865 mario79 2535
.exit:
1954 mario79 2536
	ret
2537
;---------------------------------------------------------------------
2538
;---------------------------------------------------------------------
2539
 
2540
;plugins_directory	db 'plugins/',0
2541
plugins_directory	db 0
2542
 
2543
system_dir_Boxlib	db '/sys/lib/box_lib.obj',0
2544
system_dir_CnvPNG	db '/sys/lib/cnv_png.obj',0
5878 pathoswith 2545
system_dir_Sort 	db '/sys/lib/sort.obj',0
1954 mario79 2546
system_dir_UNPACK	db '/sys/lib/archiver.obj',0
2547
 
2548
align	4
2549
l_libs_start:
8271 IgorA 2550
library01	l_libs	system_dir_Boxlib+9,file_name,system_dir_Boxlib,\
2551
Box_lib_import,plugins_directory
1954 mario79 2552
 
8271 IgorA 2553
library02	l_libs	system_dir_CnvPNG+9,file_name,system_dir_CnvPNG,\
2554
cnv_png_import,plugins_directory
1954 mario79 2555
 
8271 IgorA 2556
library03	l_libs	system_dir_Sort+9,file_name,system_dir_Sort,\
2557
Sort_import,plugins_directory
1954 mario79 2558
 
8271 IgorA 2559
library04	l_libs	system_dir_UNPACK+9,file_name,system_dir_UNPACK,\
2560
UNPACK_import,plugins_directory
1954 mario79 2561
 
2562
end_l_libs:
2563
 
2564
;---------------------------------------------------------------------
2565
align	4
2566
UNPACK_import:
5878 pathoswith 2567
;unpack_Version 		dd aUnpack_Version
1954 mario79 2568
;unpack_PluginLoad		dd aUnpack_PluginLoad
2569
;unpack_OpenFilePlugin		dd aUnpack_OpenFilePlugin
2570
;unpack_ClosePlugin		dd aUnpack_ClosePlugin
2571
;unpack_ReadFolder		dd aUnpack_ReadFolder
2572
;unpack_SetFolder		dd aUnpack_SetFolder
2573
;unpack_GetFiles		dd aUnpack_GetFiles
2574
;unpack_GetOpenPluginInfo	dd aUnpack_GetOpenPluginInfo
5878 pathoswith 2575
;unpack_Getattr 		dd aUnpack_Getattr
1954 mario79 2576
;unpack_Open			dd aUnpack_Open
2577
;unpack_Read			dd aUnpack_Read
2578
;unpack_Setpos			dd aUnpack_Setpos
2579
;unpack_Close			dd aUnpack_Close
2580
;unpack_DeflateUnpack		dd aUnpack_DeflateUnpack
2581
unpack_DeflateUnpack2		dd aUnpack_DeflateUnpack2
2582
	dd 0
2583
	dd 0
2584
 
2585
;aUnpack_Version		db 'version',0
2586
;aUnpack_PluginLoad		db 'plugin_load',0
5878 pathoswith 2587
;aUnpack_OpenFilePlugin 	db 'OpenFilePlugin',0
1954 mario79 2588
;aUnpack_ClosePlugin		db 'ClosePlugin',0
2589
;aUnpack_ReadFolder		db 'ReadFolder',0
2590
;aUnpack_SetFolder		db 'SetFolder',0
2591
;aUnpack_GetFiles		db 'GetFiles',0
2592
;aUnpack_GetOpenPluginInfo	db 'GetOpenPluginInfo',0
2593
;aUnpack_Getattr		db 'getattr',0
2594
;aUnpack_Open			db 'open',0
2595
;aUnpack_Read			db 'read',0
5878 pathoswith 2596
;aUnpack_Setpos 		db 'setpos',0
1954 mario79 2597
;aUnpack_Close			db 'close',0
2598
;aUnpack_DeflateUnpack		db 'deflate_unpack',0
2599
aUnpack_DeflateUnpack2		db 'deflate_unpack2',0
2600
 
2601
;---------------------------------------------------------------------
2602
;---------------------------------------------------------------------
2603
align	4
2604
Sort_import:
2605
sort_init	dd aSort_init
2606
sort_version	dd aSort_version
2607
sort_dir	dd aSort_SortDir
2608
sort_strcmpi	dd aSort_strcmpi
2609
	dd 0
2610
	dd 0
2611
 
2612
aSort_init	db 'START',0
2613
aSort_version	db 'version',0
2614
aSort_SortDir	db 'SortDir',0
2615
aSort_strcmpi	db 'strcmpi',0
2616
 
2617
;---------------------------------------------------------------------
2618
align	4
2619
cnv_png_import:
2620
.Start		dd aCP_Start
2621
.Version	dd aCP_Version
2622
.Check		dd aCP_Check
2623
.Assoc		dd aCP_Assoc
2624
	dd 0
2625
	dd 0
2626
aCP_Start	db 'START',0
2627
aCP_Version	db 'version',0
2628
aCP_Check	db 'Check_Header',0
2629
aCP_Assoc	db 'Associations',0
2630
;---------------------------------------------------------------------
2631
align	4
5878 pathoswith 2632
Box_lib_import:
1954 mario79 2633
;init_lib	dd a_init
2634
;version_lib	dd a_version
2635
 
2636
 
2637
edit_box_draw		dd aEdit_box_draw
2638
edit_box_key		dd aEdit_box_key
2639
edit_box_mouse		dd aEdit_box_mouse
2640
;version_ed		dd aVersion_ed
2641
 
5878 pathoswith 2642
;check_box_draw dd aCheck_box_draw
1954 mario79 2643
;check_box_mouse	dd aCheck_box_mouse
2644
;version_ch		dd aVersion_ch
2645
 
2646
;option_box_draw	dd aOption_box_draw
2647
;option_box_mouse	dd aOption_box_mouse
2648
;version_op		dd aVersion_op
2649
 
2650
scrollbar_ver_draw	dd aScrollbar_ver_draw
2651
scrollbar_ver_mouse	dd aScrollbar_ver_mouse
2652
;scrollbar_hor_draw	dd aScrollbar_hor_draw
2653
;scrollbar_hor_mouse	dd aScrollbar_hor_mouse
2654
;version_scrollbar	dd aVersion_scrollbar
2655
 
2656
;dinamic_button_draw	dd aDbutton_draw
2657
;dinamic_button_mouse	dd aDbutton_mouse
2658
;version_dbutton	dd aVersion_dbutton
2659
 
2660
menu_bar_draw		dd aMenu_bar_draw
2661
menu_bar_mouse		dd aMenu_bar_mouse
2662
menu_bar_activate	dd aMenu_bar_activate
2663
;version_menu_bar	dd aVersion_menu_bar
2664
 
2665
FileBrowser_draw	dd aFileBrowser_draw
2666
FileBrowser_mouse	dd aFileBrowser_mouse
5878 pathoswith 2667
FileBrowser_key 	dd aFileBrowser_key
1954 mario79 2668
;Version_FileBrowser	dd aVersion_FileBrowser
2669
 
2670
PathShow_prepare	dd sz_PathShow_prepare
2671
PathShow_draw		dd sz_PathShow_draw
2672
;Version_path_show	dd szVersion_path_show
2673
	dd 0
2674
	dd 0
2675
 
5878 pathoswith 2676
;a_init 		db 'lib_init',0
1954 mario79 2677
;a_version		db 'version',0
2678
 
9568 IgorA 2679
aEdit_box_draw		db 'edit_box_draw',0
1954 mario79 2680
aEdit_box_key		db 'edit_box_key',0
5878 pathoswith 2681
aEdit_box_mouse 	db 'edit_box_mouse',0
1954 mario79 2682
;aVersion_ed		db 'version_ed',0
2683
 
2684
;aCheck_box_draw	db 'check_box_draw',0
2685
;aCheck_box_mouse	db 'check_box_mouse',0
2686
;aVersion_ch		db 'version_ch',0
2687
 
2688
;aOption_box_draw	db 'option_box_draw',0
2689
;aOption_box_mouse	db 'option_box_mouse',0
2690
;aVersion_op		db 'version_op',0
2691
 
2692
aScrollbar_ver_draw	db 'scrollbar_v_draw',0
2693
aScrollbar_ver_mouse	db 'scrollbar_v_mouse',0
2694
;aScrollbar_hor_draw	db 'scrollbar_h_draw',0
2695
;aScrollbar_hor_mouse	db 'scrollbar_h_mouse',0
2696
;aVersion_scrollbar	db 'version_scrollbar',0
2697
 
2698
;aDbutton_draw		db 'dbutton_draw',0
5878 pathoswith 2699
;aDbutton_mouse 	db 'dbutton_mouse',0
1954 mario79 2700
;aVersion_dbutton	db 'version_dbutton',0
2701
 
2702
aMenu_bar_draw		db 'menu_bar_draw',0
5878 pathoswith 2703
aMenu_bar_mouse 	db 'menu_bar_mouse',0
1954 mario79 2704
aMenu_bar_activate	db 'menu_bar_activate',0
2705
;aVersion_menu_bar	db 'version_menu_bar',0
2706
 
2707
aFileBrowser_draw	db 'FileBrowser_draw',0
2708
aFileBrowser_mouse	db 'FileBrowser_mouse',0
2709
aFileBrowser_key	db 'FileBrowser_key',0
2710
;aVersion_FileBrowser	db 'version_FileBrowser',0
2711
 
2712
sz_PathShow_prepare	db 'PathShow_prepare',0
2713
sz_PathShow_draw	db 'PathShow_draw',0
2714
;szVersion_path_show	db 'version_PathShow',0
2715
;---------------------------------------------------------------------
2716
;---------------------------------------------------------------------
2717
align	4
2718
window_high			dd 0
2719
window_width			dd 0
2720
window_status			dd 0
2721
 
2722
active_process			dd 0
2723
PID				dd 0
2724
sort_type			dd 2
2725
root_folder_area		dd 0
2726
root_folder_block		dd 0
2727
root1_folder_area		dd 0
2728
root1_folder_block		dd 0
2729
temp_counter_1			dd 0
5878 pathoswith 2730
retrieved_devices_table_counter dd 0
1954 mario79 2731
communication_area		dd 0
2732
open_dialog_type		dd 0
2733
 
2734
open_dialog_title_pointer:
2735
	dd title_0
2736
	dd title_1
2737
	dd title_2
2738
	dd 0
2739
 
2740
message_open_dialog_button:
2741
	dd message_0
2742
	dd message_1
2743
	dd message_2
2744
	dd 0
2745
;---------------------------------------------------------------------
2746
expansion_length	dd 0
2747
;---------------------------------------------------------------------
5878 pathoswith 2748
N_error 		dd 0
1954 mario79 2749
error_type		dd 0
2750
error_path		dd 0
5878 pathoswith 2751
error_window_x: 	dd 100 shl 16+250
2752
error_window_y: 	dd 100 shl 16+120
1954 mario79 2753
;---------------------------------------------------------------------
2754
mouse_scroll_data:
2755
.vertical	dw 0
2756
.horizontal	dw 0
2757
 
2758
mouse_position:
2759
.y	dw 0
2760
.x	dw 0
2761
;---------------------------------------------------------------------
2762
; not	change	this	section!!!
5878 pathoswith 2763
; start section
1954 mario79 2764
;---------------------------------------------------------------------
2765
align	4
2766
image_file	dd 0
2767
raw_pointer	dd 0
2768
return_code	dd 0
2769
img_size	dd 0
2770
deflate_unpack	dd 0
2771
raw_pointer_2	dd 0	;+20
2772
;---------------------------------------------------------------------
2773
; end	section
2774
;---------------------------------------------------------------------
2775
align	4
2776
fileinfo:
2777
.subfunction	dd 5
5878 pathoswith 2778
.Offset 	dd 0
1954 mario79 2779
.Offset_1	dd 0
2780
.size		dd 0
5878 pathoswith 2781
.return 	dd file_info
1954 mario79 2782
		db 0
2783
.name:		dd file_name
2784
;---------------------------------------------------------------------
2785
align	4
2786
dirinfo:
2787
.subfunction	dd 1
2788
.start		dd 0
2789
.flags		dd 0
2790
.size		dd 0
5878 pathoswith 2791
.return 	dd 0
1954 mario79 2792
		db 0
2144 mario79 2793
.name:		dd dir_path
1954 mario79 2794
;---------------------------------------------------------------------
2795
align	4
2796
dir_header:
2797
.version	dd 0	;+0
2798
.curn_blocks	dd 0	;+4
2799
.totl_blocks	dd 0	;+8
2800
.other	rb	20
2801
;---------------------------------------------------------------------
2802
load_ini_error_type:
2803
	db 'Error loading INI file',0
2804
 
2805
load_icons_error_type:
2806
	db 'Error loading of icons file',0
2807
 
2808
memory_free_error_type:
2809
	db 'Error of free memory',0
2810
 
2811
memory_get_error_type:
2812
	db 'Memory allocation error',0
2813
 
2814
load_directory_error_type:
2815
	db 'Error loading directory',0
2816
 
2817
convert_icons_error_type:
2818
	db 'Unsupported or corrupt data for icons file',0
2819
;---------------------------------------------------------------------
4061 mario79 2820
error_help_text:
2821
	db 'For continue press  key or ',0
2822
;---------------------------------------------------------------------
1954 mario79 2823
align	4
2824
error_fs_text_pointers:
2825
	dd error_fs_text_0
2826
	dd error_fs_text_1
2827
	dd error_fs_text_2
2828
	dd error_fs_text_3
2829
	dd error_fs_text_4
2830
	dd error_fs_text_5
2831
	dd error_fs_text_6
2832
	dd error_fs_text_7
2833
	dd error_fs_text_8
2834
	dd error_fs_text_9
2835
	dd error_fs_text_10
2836
	dd error_fs_text_11
2837
 
2838
error_fs_text_0:	db '0 - Success full',0
2839
error_fs_text_1:	db '1 - Base and/or partition of a hard disk is not defined',0
2840
error_fs_text_2:	db '2 - Function is not supported for the given file system',0
2841
error_fs_text_3:	db '3 - Unknown file system',0
2842
error_fs_text_4:	db '4 - Reserved, is never returned in the current implementation',0
2843
error_fs_text_5:	db '5 - File not found',0
2844
error_fs_text_6:	db '6 - End of file, EOF',0
2845
error_fs_text_7:	db '7 - Pointer lies outside of application memory',0
2846
error_fs_text_8:	db '8 - Disk is full',0
2847
error_fs_text_9:	db '9 - FAT table is destroyed',0
2848
error_fs_text_10:	db '10 - Access denied',0
2849
error_fs_text_11:	db '11 - Device error',0
2850
;---------------------------------------------------------------------
2851
 
2852
extended_key	db 0
2853
 
2854
shift_flag	db 0
2855
ctrl_flag	db 0
2856
alt_flag	db 0
2857
 
2858
error_window	db 0
2859
 
5878 pathoswith 2860
Tab_key 	db 0
1954 mario79 2861
Tab_key_block	db 0
2862
 
2863
filter_flag	db 1
2864
 
2865
focus_pointer	db 0
2866
;---------------------------------------------------------------------
2867
start_pach:
9587 vitalkrilo 2868
	db '/sys',0
1954 mario79 2869
 
2870
root_pach:
2871
	db '/',0
2872
 
7052 leency 2873
icons_file_name_2 db 'buttons/'
2874
icons_path        db '/sys/icons16.png',0
2875
ini_file_name     db '/sys/File managers/icons.ini',0
1954 mario79 2876
;---------------------------------------------------------------------
2877
 
2878
message:
2879
	db 'Press any key...',0
2880
 
2881
message_cancel_button:
2882
	db 'Cancel',0
2883
 
2884
message_ReloadDir_button:
2885
	db 'Refresh',0
2886
 
2887
message_ExitDir_button:
2888
	db '^',0
2889
 
2890
message_file_name:
2891
	db 'File name:',0
2892
 
2893
message_0:
3812 mario79 2894
	db ' Open ',0
1954 mario79 2895
message_1:
3812 mario79 2896
	db ' Save ',0
1954 mario79 2897
message_2:
2898
	db 'Select',0
2899
 
2900
title_0:
2901
	db 'Open Dialog',0
2902
title_1:
2903
	db 'Save Dialog',0
2904
title_2:
2905
	db 'Select Dir',0
2906
;---------------------------------------------------------------------
2907
align 4
2908
menu_data_1:
3734 mario79 2909
.type:		dd 1   ;+0
1954 mario79 2910
.x:
2911
.size_x 	dw 80  ;+4
2912
.start_x	dw 10	;+6
2913
.y:
2914
.size_y 	dw 15	;+8
2915
.start_y	dw 26  ;+10
2916
.text_pointer:	dd menu_text_area_1  ;0 ;+12
2917
.pos_pointer:	dd menu_text_area_1_1 ;0 ;+16
2918
.text_end	dd menu_text_area_1_1 ;0 ;+20
2919
.ret_key	dd 0  ;+24
2920
.mouse_keys	dd 0  ;+28
2921
.x1:
2922
.size_x1	dw 80  ;+32
2923
.start_x1	dw 10	;+34
2924
.y1:
2925
.size_y1	dw 100	 ;+36
2926
.start_y1	dw 41  ;+38
2927
.bckg_col	dd 0xffffff  ;0xe5e5e5 ;+40
2928
.frnt_col	dd 0xff ;+44
2929
.menu_col	dd 0xeef0ff ;0xffffff ;+48
2930
.select 	dd 0 ;+52
2931
.out_select	dd 0 ;+56
2932
.buf_adress	dd 0 ;+60
2933
.procinfo	dd procinfo ;+64
2934
.click		dd 0 ;+68
2935
.cursor 	dd 0 ;+72
2936
.cursor_old	dd 0 ;+76
2937
.interval	dd 16 ;+80
2938
.cursor_max	dd 0 ;+84
2939
.extended_key	dd 0 ;+88
2940
.menu_sel_col	dd 0x00cc00 ;+92
2941
.bckg_text_col	dd 0 ; +96
2942
.frnt_text_col	dd 0xffffff ;+100
2943
.mouse_keys_old dd 0 ;+104
2944
.font_height	dd 8 ;+108
2945
.cursor_out	dd 0 ;+112
2946
.get_mouse_flag dd 0 ;+116
2947
;---------------------------------------------------------------------
2948
menu_text_area_1:
2949
db 'Select Disk',0
2950
;---------------------------------------------------------------------
2951
align 4
2952
menu_data_2:
2953
.type:		dd 0   ;+0
2954
.x:
2955
.size_x 	dw 30  ;+4
2956
.start_x	dw 95	;+6
2957
.y:
2958
.size_y 	dw 15	;+8
2959
.start_y	dw 26  ;+10
2960
.text_pointer:	dd menu_text_area_2  ;0 ;+12
2961
.pos_pointer:	dd menu_text_area_2.1 ;0 ;+16
2962
.text_end	dd menu_text_area_2.end ;0 ;+20
2963
.ret_key	dd 0  ;+24
2964
.mouse_keys	dd 0  ;+28
2965
.x1:
2966
.size_x1	dw 30  ;+32
2967
.start_x1	dw 95	;+34
2968
.y1:
2969
.size_y1	dw 100	 ;+36
2970
.start_y1	dw 41  ;+38
2971
.bckg_col	dd 0xffffff ; 0xe5e5e5 ;+40
2972
.frnt_col	dd 0xff ;+44
2973
.menu_col	dd 0xeef0ff  ;0xffffff ;+48
2974
.select 	dd 0 ;+52
2975
.out_select	dd 0 ;+56
2976
.buf_adress	dd 0 ;+60
2977
.procinfo	dd procinfo ;+64
2978
.click		dd 0 ;+68
2979
.cursor 	dd 0 ;+72
2980
.cursor_old	dd 0 ;+76
2981
.interval	dd 16 ;+80
2982
.cursor_max	dd 0 ;+84
2983
.extended_key	dd 0 ;+88
2984
.menu_sel_col	dd 0x00cc00 ;+92
2985
.bckg_text_col	dd 0 ; +96
2986
.frnt_text_col	dd 0xffffff ;+100
2987
.mouse_keys_old dd 0 ;+104
2988
.font_height	dd 8 ;+108
2989
.cursor_out	dd 0 ;+112
2990
.get_mouse_flag dd 0 ;+116
2991
;---------------------------------------------------------------------
2992
menu_text_area_2:
2993
db 'Sort',0
2994
.1:
2995
db 'Name',0
2996
db 'Type',0
2997
db 'Date',0
2998
db 'Size',0
2999
.end:
3000
db 0
3001
;---------------------------------------------------------------------
3002
align 4
3003
menu_data_3:
3004
.type:		dd 0   ;+0
3005
.x:
3006
.size_x 	dw 45  ;+4
3007
.start_x	dw 130	 ;+6
3008
.y:
3009
.size_y 	dw 15	;+8
3010
.start_y	dw 26  ;+10
3011
.text_pointer:	dd menu_text_area_3  ;0 ;+12
3012
.pos_pointer:	dd menu_text_area_3.1 ;0 ;+16
3013
.text_end	dd menu_text_area_3.end ;0 ;+20
3014
.ret_key	dd 0  ;+24
3015
.mouse_keys	dd 0  ;+28
3016
.x1:
3017
.size_x1	dw 95  ;+32
3018
.start_x1	dw 130	 ;+34
3019
.y1:
3020
.size_y1	dw 100	 ;+36
3021
.start_y1	dw 41  ;+38
3022
.bckg_col	dd 0xffffff ; 0xe5e5e5 ;+40
3023
.frnt_col	dd 0xff ;+44
3024
.menu_col	dd 0xeef0ff  ;0xffffff ;+48
3025
.select 	dd 0 ;+52
3026
.out_select	dd 0 ;+56
3027
.buf_adress	dd 0 ;+60
3028
.procinfo	dd procinfo ;+64
3029
.click		dd 0 ;+68
3030
.cursor 	dd 0 ;+72
3031
.cursor_old	dd 0 ;+76
3032
.interval	dd 16 ;+80
3033
.cursor_max	dd 0 ;+84
3034
.extended_key	dd 0 ;+88
3035
.menu_sel_col	dd 0x00cc00 ;+92
3036
.bckg_text_col	dd 0 ; +96
3037
.frnt_text_col	dd 0xffffff ;+100
3038
.mouse_keys_old dd 0 ;+104
3039
.font_height	dd 8 ;+108
3040
.cursor_out	dd 0 ;+112
3041
.get_mouse_flag dd 0 ;+116
3042
;---------------------------------------------------------------------
3043
menu_text_area_3:
3044
db 'Filter',0
3045
.1:
3046
db '*.* - show all',0
3047
db 'Only supported',0
3048
.end:
3049
db 0
3050
;---------------------------------------------------------------------
3051
 
3052
align 4
3053
scroll_bar_data_vertical:
3054
.x:
3055
.size_x 	dw 15 ;+0
3056
.start_x	dw 500 ;+2
3057
.y:
3058
.size_y 	dw 300 ;+4
3059
.start_y	dw 45 ;+6
3060
.btn_high	dd 15 ;+8
2355 mario79 3061
.type		dd 2  ;+12
1954 mario79 3062
.max_area	dd 10  ;+16
3063
.cur_area	dd 2  ;+20
3064
.position	dd 0  ;+24
3065
.bckg_col	dd 0xeeeeee ;+28
3066
.frnt_col	dd 0xbbddff ;+32 ;0x8aeaa0
3067
.line_col	dd 0  ;+36
3068
.redraw 	dd 0  ;+40
3069
.delta		dw 0  ;+44
3070
.delta2 	dw 0  ;+46
3071
.run_x:
3072
.r_size_x	dw 0  ;+48
3073
.r_start_x	dw 0  ;+50
3074
.run_y:
3075
.r_size_y	dw 0 ;+52
3076
.r_start_y	dw 0 ;+54
3077
.m_pos		dd 0 ;+56
3078
.m_pos_2	dd 0 ;+60
3079
.m_keys 	dd 0 ;+64
3080
.run_size	dd 0 ;+68
3081
.position2	dd 0 ;+72
3082
.work_size	dd 0 ;+76
3083
.all_redraw	dd 0 ;+80
3084
.ar_offset	dd 1 ;+84
3085
;---------------------------------------------------------------------
3086
align 4
3087
file_browser_data_1:
3088
.type				dd 0 ;+0
3089
.x:
3090
.size_x 			dw 400 ;+4
3091
.start_x			dw 10 ;+6
3092
.y:
3093
.size_y 			dw 550 ;+8
3094
.start_y			dw 45 ;+10
3095
.icon_size_y			dw 16 ; +12
3096
.icon_size_x			dw 16 ; +14
3097
.line_size_x			dw 0 ; +16
3098
.line_size_y			dw 18 ; +18
3099
.type_size_x			dw 0 ; +20
3100
.size_size_x			dw 0 ; +22
3101
.date_size_x			dw 0 ; +24
3102
.attributes_size_x		dw 0 ; +26
3103
.icon_assoc_area		dd 0 ; +28
3104
.icon_raw_area			dd 0 ; +32
3105
.resolution_raw 		dd 0 ; +36
3106
.palette_raw			dd 0 ; +40
3107
.directory_path_area		dd 0 ; +44
3108
.file_name_area 		dd 0 ; +48
3109
.select_flag			dd 0 ; +52
3110
.background_color		dd 0xffffff ; +56
3111
.select_color			dd 0xbbddff ; +60
3112
.seclect_text_color		dd 0 ; +64
3113
.text_color			dd 0 ; +68
3114
.reduct_text_color		dd 0xff0000 ; +72
3115
.marked_text_color		dd 0 ; +76
3116
.max_panel_line 		dd 0 ; +80
3117
.select_panel_counter		dd 1 ; +84
3118
.folder_block			dd 0 ; +88
3119
.start_draw_line		dd 0 ; +92
3120
.start_draw_cursor_line 	dw 0 ; +96 ; pixels
3121
.folder_data			dd 0 ; +98
3122
.temp_counter			dd 0 ; +102
3123
.file_name_length		dd 0 ; +106
3124
.marked_file			dd 0 ; +110
3125
.extension_size 		dd 0 ; +114
3126
.extension_start		dd 0 ; +118
3127
.type_table			dd features_table ; +122
3128
.ini_file_start 		dd 0 ; +126
3129
.ini_file_end			dd 0 ; +130
3130
.draw_scroll_bar		dd 0 ; +134
3131
.font_size_y			dw 9 ; +138
3132
.font_size_x			dw 6 ; +140
3133
.mouse_keys			dd 0 ; +142
3134
.mouse_keys_old 		dd 0 ; +146
3135
.mouse_pos			dd 0 ; +150
3136
.mouse_keys_delta		dd 0 ; +154
3137
.mouse_key_delay		dd 50 ; +158
3138
.mouse_keys_tick		dd 0 ; +162
3139
.start_draw_cursor_line_2	dw 0 ;+166
3140
.all_redraw			dd 0 ;+168
3141
.selected_BDVK_adress		dd 0 ;+172
3831 mario79 3142
.key_action			dw 0 ;+176
5878 pathoswith 3143
.key_action_num 		dw 0 ;+178
1954 mario79 3144
.name_temp_area 		dd name_temp_area ;+180
3145
.max_name_temp_size		dd 0 ;+184
3146
.display_name_max_length	dd 0 ;+188
3147
.draw_panel_selection_flag	dd 0 ;+192
3148
.mouse_pos_old			dd 0 ;+196
3149
.marked_counter 		dd 0 ;+200
3831 mario79 3150
.keymap_pointer 		dd keymap_area ;+204
1954 mario79 3151
;---------------------------------------------------------------------
3152
PathShow_data_1:
3153
.type			dd 0	;+0
3154
.start_y		dw 11	;+4
3155
.start_x		dw 10	;+6
3156
.font_size_x		dw 6	;+8	; 6 - for font 0, 8 - for font 1
3157
.area_size_x		dw 200	;+10
3158
.font_number		dd 0	;+12	; 0 - monospace, 1 - variable
3159
.background_flag	dd 0	;+16
3160
.font_color		dd 0x0	;+20
3161
.background_color	dd 0x0	;+24
2144 mario79 3162
.text_pointer		dd dir_path	;+28
1954 mario79 3163
.work_area_pointer	dd text_work_area	;+32
3164
.temp_text_length	dd 0	;+36
3165
;---------------------------------------------------------------------
3166
; for EDITBOX
3167
align	4
3168
name_editboxes:
3169
edit1	edit_box 200,10,7,0xffffff,0xbbddff,0,0,0,4095,user_selected_name,mouse_dd,,0
3170
name_editboxes_end:
3171
 
3172
;mouse_flag:	dd 0x0
3173
 
3174
mouse_dd rd	1
3175
;---------------------------------------------------------------------
3176
window_x:
5878 pathoswith 3177
.x_size 	dw 420
1954 mario79 3178
.x_start	dw 10
3179
window_y:
5878 pathoswith 3180
.y_size 	dw 320
1954 mario79 3181
.y_start	dw 10
3182
;---------------------------------------------------------------------
3183
features_table:
3184
.type_table:
3185
	db ' '
3186
;---------------------------------------------------------------------
3187
.size_table:
3188
	db '1023b '
3189
;---------------------------------------------------------------------
3190
.date_table:
9728 sober_dev 3191
	db '00.00.0000 00:00 '
1954 mario79 3192
;---------------------------------------------------------------------
3193
example_name_temp:
3194
	db 'temp1.asm',0
3195
;---------------------------------------------------------------------
3196
IM_END:
3808 mario79 3197
;---------------------------------------------------------------------
3812 mario79 3198
do_not_draw_open_button_label	rb 1
3199
;---------------------------------------------------------------------
4055 mario79 3200
;include_debug_strings
3201
;---------------------------------------------------------------------
3808 mario79 3202
align 4
3203
app_colours:
3204
 
5878 pathoswith 3205
w_frame 		rd 1
3808 mario79 3206
w_grab			rd 1
7786 leency 3207
w_work_dark		rd 1
3208
w_work_light	rd 1
3808 mario79 3209
w_grab_text		rd 1
3210
w_work			rd 1
3211
w_work_button		rd 1
3212
w_work_button_text	rd 1
3213
w_work_text		rd 1
3214
w_work_graph		rd 1
3215
;---------------------------------------------------------------------
5878 pathoswith 3216
open_button_coordinates rd 1
3812 mario79 3217
;---------------------------------------------------------------------
4061 mario79 3218
error_handler_store_input_mode rd 1
3219
;---------------------------------------------------------------------
1954 mario79 3220
menu_text_area_1_1:
3221
rb 256
3222
;---------------------------------------------------------------------
3223
	rb 1024
3224
stacktop:
3225
;---------------------------------------------------------------------
3226
; window error message
3227
	rb 1024
3228
thread_stack:
3229
;---------------------------------------------------------------------
3230
retrieved_devices_table:
3231
	rb 200
3232
;---------------------------------------------------------------------
3831 mario79 3233
keymap_area:
3234
	rb 128
3235
;---------------------------------------------------------------------
1954 mario79 3236
name_temp_area:
3237
	rb 256
3238
;---------------------------------------------------------------------
3239
user_selected_name:
3240
	rb 256
3241
;---------------------------------------------------------------------
3242
param:
3243
	rb 256
3244
;---------------------------------------------------------------------
3245
path:
3246
	rb 4096
3247
;---------------------------------------------------------------------
3248
file_name:
3249
	rb 4096
3250
;---------------------------------------------------------------------
2144 mario79 3251
previous_dir_path:
1954 mario79 3252
	rb 4096
3253
;---------------------------------------------------------------------
2144 mario79 3254
dir_path:
3255
	rb 4096
3256
;---------------------------------------------------------------------
3734 mario79 3257
dir_path_temp:
3258
	rb 4096
3259
;---------------------------------------------------------------------
1954 mario79 3260
text_work_area:
3261
	rb 1024
3262
;---------------------------------------------------------------------
3263
procinfo:
3264
process_info:
3265
	rb 1024
3266
;----------------------
3267
file_info:
3268
	rb 40
3269
I_END: