Subversion Repositories Kolibri OS

Rev

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