Subversion Repositories Kolibri OS

Rev

Rev 8932 | Rev 8984 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8932 Rev 8960
Line 14... Line 14...
14
max_width = 255
14
max_width = 255
15
min_height = 8
15
min_height = 8
16
max_height = 255
16
max_height = 255
Line 17... Line 17...
17
 
17
 
-
 
18
include '../../../KOSfuncs.inc'
18
include '../../../KOSfuncs.inc'
19
include '../../../macros.inc'
19
include 'lang.inc'
20
include 'lang.inc'
20
include 'font.inc'
21
include 'font.inc'
21
include 'sort.inc'
22
include 'sort.inc'
22
include 'kglobals.inc'
23
include 'kglobals.inc'
Line 25... Line 26...
25
include 'viewer.inc'
26
include 'viewer.inc'
26
include 'editor.inc'
27
include 'editor.inc'
27
include 'tools.inc'
28
include 'tools.inc'
28
include 'filetool.inc'
29
include 'filetool.inc'
Line -... Line 30...
-
 
30
 
-
 
31
struct PanelData
-
 
32
left     dd      ?
-
 
33
top      dd      ?
-
 
34
width    dd      ?
-
 
35
height   dd      ?
-
 
36
index    dd      ?
-
 
37
start    dd      ?
-
 
38
colsz    dd      ?
-
 
39
colst    dd      ?
-
 
40
sortmode db      ?
-
 
41
                rb      3
-
 
42
nfa      dd      ?
-
 
43
numfiles dd      ?
-
 
44
files    dd      ?
-
 
45
hPlugin  dd      ?
-
 
46
hFile    dd      ?
-
 
47
parents          dd      ?
-
 
48
parents_sz       dd      ?
-
 
49
parents_alloc    dd      ?
-
 
50
colmode          dd      ?
-
 
51
colwidths        rd      16+1
-
 
52
total_num        dd      ?
-
 
53
total_size       dq      ?
-
 
54
selected_num     dd      ?
-
 
55
selected_size    dq      ?
-
 
56
;plugin_info:
-
 
57
plugin_flags     dd      ?
-
 
58
dir      rb      1024
-
 
59
ends
29
 
60
 
30
cursor_normal_size = (font_height*15+50)/100
61
cursor_normal_size = (font_height*15+50)/100
Line 31... Line 62...
31
cursor_big_size = font_height
62
cursor_big_size = font_height
32
 
63
 
Line 124... Line 155...
124
        push    SSF_SET_INPUT_MODE
155
        push    SSF_SET_INPUT_MODE
125
        pop     ebx
156
        pop     ebx
126
        mov     ecx, ebx
157
        mov     ecx, ebx
127
        int     40h     ; set keyboard mode to scancodes
158
        int     40h     ; set keyboard mode to scancodes
128
        mov     eax, 200
159
        mov     eax, 200
129
        mov     [panel1_nfa], eax
160
        mov     [panel1.nfa], eax
130
        mov     [panel2_nfa], eax
161
        mov     [panel2.nfa], eax
131
        mov     ecx, 200*4 + 32 + 200*304
162
        mov     ecx, 200*4 + 32 + 200*304
132
        call    pgalloc
163
        call    pgalloc
133
        mov     [panel1_files], eax
164
        mov     [panel1.files], eax
134
        call    pgalloc
165
        call    pgalloc
135
        mov     [panel2_files], eax
166
        mov     [panel2.files], eax
136
        test    eax, eax
167
        test    eax, eax
137
        jz      exit
168
        jz      exit
138
        xor     eax, eax
169
        xor     eax, eax
139
        cmp     [panel1_files], eax
170
        cmp     [panel1.files], eax
140
        jz      exit
171
        jz      exit
141
        mov     [panel1_hPlugin], eax
172
        mov     [panel1.hPlugin], eax
142
        mov     [panel1_parents], eax
173
        mov     [panel1.parents], eax
143
        mov     [panel1_parents_sz], eax
174
        mov     [panel1.parents_sz], eax
144
        mov     [panel1_parents_alloc], eax
175
        mov     [panel1.parents_alloc], eax
145
        mov     [panel2_hPlugin], eax
176
        mov     [panel2.hPlugin], eax
146
        mov     [panel2_parents], eax
177
        mov     [panel2.parents], eax
147
        mov     [panel2_parents_sz], eax
178
        mov     [panel2.parents_sz], eax
148
        mov     [panel2_parents_alloc], eax
179
        mov     [panel2.parents_alloc], eax
149
        mov     [panel1_sortmode], al   ; sort by name
180
        mov     [panel1.sortmode], al   ; sort by name
150
        mov     [panel2_sortmode], al
181
        mov     [panel2.sortmode], al
151
        mov     al, 2                   ; "á।­¨©" ä®à¬ â
182
        mov     al, 2                   ; "á।­¨©" ä®à¬ â
152
        mov     [panel1_colmode], eax
183
        mov     [panel1.colmode], eax
153
        mov     [panel2_colmode], eax
184
        mov     [panel2.colmode], eax
154
        mov     [num_screens], 1
185
        mov     [num_screens], 1
155
        mov     ecx, 0x1000
186
        mov     ecx, 0x1000
156
        call    pgalloc
187
        call    pgalloc
157
        mov     [screens], eax
188
        mov     [screens], eax
158
        test    eax, eax
189
        test    eax, eax
Line 193... Line 224...
193
        call    [ini.get_int]
224
        call    [ini.get_int]
194
        cmp     eax, 1
225
        cmp     eax, 1
195
        jb      @f
226
        jb      @f
196
        cmp     eax, 4
227
        cmp     eax, 4
197
        ja      @f
228
        ja      @f
198
        mov     [panel1_colmode], eax
229
        mov     [panel1.colmode], eax
199
@@:
230
@@:
200
        push    2
231
        push    2
201
        push    aRightViewMode
232
        push    aRightViewMode
202
        push    aPanels
233
        push    aPanels
203
        push    app_path
234
        push    app_path
204
        call    [ini.get_int]
235
        call    [ini.get_int]
205
        cmp     eax, 1
236
        cmp     eax, 1
206
        jb      @f
237
        jb      @f
207
        cmp     eax, 4
238
        cmp     eax, 4
208
        ja      @f
239
        ja      @f
209
        mov     [panel2_colmode], eax
240
        mov     [panel2.colmode], eax
210
@@:
241
@@:
211
        push    0
242
        push    0
212
        push    aLeftSortMode
243
        push    aLeftSortMode
213
        push    aPanels
244
        push    aPanels
214
        push    app_path
245
        push    app_path
215
        call    [ini.get_int]
246
        call    [ini.get_int]
216
        cmp     eax, 14
247
        cmp     eax, 14
217
        jae     @f
248
        jae     @f
218
        mov     [panel1_sortmode], al
249
        mov     [panel1.sortmode], al
219
@@:
250
@@:
220
        push    0
251
        push    0
221
        push    aRightSortMode
252
        push    aRightSortMode
222
        push    aPanels
253
        push    aPanels
223
        push    app_path
254
        push    app_path
224
        call    [ini.get_int]
255
        call    [ini.get_int]
225
        cmp     eax, 14
256
        cmp     eax, 14
226
        jae     @f
257
        jae     @f
227
        mov     [panel2_sortmode], al
258
        mov     [panel2.sortmode], al
228
@@:
259
@@:
229
        push    nullstr
260
        push    nullstr
230
        push    512
261
        push    512
231
        push    saved_file_name
262
        push    saved_file_name
232
        push    aEolStyle
263
        push    aEolStyle
Line 363... Line 394...
363
        imul    eax, max_height
394
        imul    eax, max_height
364
        add     eax, editor_data.basesize + 0xFFF
395
        add     eax, editor_data.basesize + 0xFFF
365
        shr     eax, 12
396
        shr     eax, 12
366
        mov     [EditDataSize], eax
397
        mov     [EditDataSize], eax
367
        mov     esi, def_left_dir
398
        mov     esi, def_left_dir
368
        mov     edi, panel1_dir
399
        mov     edi, panel1.dir
369
@@:
400
@@:
370
        lodsb
401
        lodsb
371
        stosb
402
        stosb
372
        test    al, al
403
        test    al, al
373
        jnz     @b
404
        jnz     @b
374
        mov     esi, def_right_dir
405
        mov     esi, def_right_dir
375
        mov     edi, panel2_dir
406
        mov     edi, panel2.dir
376
@@:
407
@@:
377
        lodsb
408
        lodsb
378
        stosb
409
        stosb
379
        test    al, al
410
        test    al, al
380
        jnz     @b
411
        jnz     @b
381
        call    draw_keybar
412
        call    draw_keybar
382
        call    draw_cmdbar
413
        call    draw_cmdbar
383
        mov     [prev_dir], 0
414
        mov     [prev_dir], 0
384
        mov     ebp, panel1_data
415
        mov     ebp, panel1
385
        call    calc_colwidths
416
        call    calc_colwidths
386
        call    read_folder
417
        call    read_folder
387
        call    draw_panel
418
        call    draw_panel
388
        mov     [bSilentFolderMode], 1
419
        mov     [bSilentFolderMode], 1
389
        mov     ebp, panel2_data
420
        mov     ebp, panel2
390
        call    calc_colwidths
421
        call    calc_colwidths
391
        call    read_folder
422
        call    read_folder
392
        call    draw_panel
423
        call    draw_panel
393
event:
424
event:
394
        call    get_event
425
        call    get_event
Line 425... Line 456...
425
        pop     esi ecx
456
        pop     esi ecx
426
        jmp     .unload
457
        jmp     .unload
427
.unload_done:
458
.unload_done:
428
        cmp     [ini.set_int], aIniSetInt
459
        cmp     [ini.set_int], aIniSetInt
429
        jz      .nosave
460
        jz      .nosave
430
        push    [panel1_colmode]
461
        push    [panel1.colmode]
431
        push    aLeftViewMode
462
        push    aLeftViewMode
432
        push    aPanels
463
        push    aPanels
433
        push    app_path
464
        push    app_path
434
        call    [ini.set_int]
465
        call    [ini.set_int]
435
        push    [panel2_colmode]
466
        push    [panel2.colmode]
436
        push    aRightViewMode
467
        push    aRightViewMode
437
        push    aPanels
468
        push    aPanels
438
        push    app_path
469
        push    app_path
439
        call    [ini.set_int]
470
        call    [ini.set_int]
440
        movzx   eax, [panel1_sortmode]
471
        movzx   eax, [panel1.sortmode]
441
        push    eax
472
        push    eax
442
        push    aLeftSortMode
473
        push    aLeftSortMode
443
        push    aPanels
474
        push    aPanels
444
        push    app_path
475
        push    app_path
445
        call    [ini.set_int]
476
        call    [ini.set_int]
446
        movzx   eax, [panel2_sortmode]
477
        movzx   eax, [panel2.sortmode]
447
        push    eax
478
        push    eax
448
        push    aRightSortMode
479
        push    aRightSortMode
449
        push    aPanels
480
        push    aPanels
450
        push    app_path
481
        push    app_path
451
        call    [ini.set_int]
482
        call    [ini.set_int]
452
.nosave:
483
.nosave:
453
if CHECK_FOR_LEAKS
484
if CHECK_FOR_LEAKS
454
        mov     ecx, [panel1_files]
485
        mov     ecx, [panel1.files]
455
        call    pgfree
486
        call    pgfree
456
        mov     ecx, [panel2_files]
487
        mov     ecx, [panel2.files]
457
        call    pgfree
488
        call    pgfree
458
        mov     ecx, [screens]
489
        mov     ecx, [screens]
459
        call    pgfree
490
        call    pgfree
460
        mov     ecx, [associations]
491
        mov     ecx, [associations]
461
        call    pgfree
492
        call    pgfree
Line 475... Line 506...
475
@@:
506
@@:
476
        mov     ecx, eax
507
        mov     ecx, eax
477
        call    pgfree
508
        call    pgfree
478
        mov     ecx, [plugins]
509
        mov     ecx, [plugins]
479
        call    pgfree
510
        call    pgfree
480
        mov     ecx, [panel1_parents]
511
        mov     ecx, [panel1.parents]
481
        call    pgfree
512
        call    pgfree
482
        mov     ecx, [panel2_parents]
513
        mov     ecx, [panel2.parents]
483
        call    pgfree
514
        call    pgfree
484
.nofreefs:
515
.nofreefs:
485
        mov     eax, [numallocatedregions]
516
        mov     eax, [numallocatedregions]
486
        test    eax, eax
517
        test    eax, eax
487
        jz      @f
518
        jz      @f
Line 779... Line 810...
779
        and     [ctrlstate], not 0x20
810
        and     [ctrlstate], not 0x20
780
        jmp     .keybar
811
        jmp     .keybar
Line 781... Line 812...
781
 
812
 
782
align 16
813
align 16
-
 
814
mouse:
-
 
815
        cmp     dword[num_screens],1
783
mouse:
816
		jg      event
784
        mov     eax,SF_MOUSE_GET
817
		mov     eax,SF_MOUSE_GET
785
        mov     ebx,SSF_BUTTON_EXT
818
        mov     ebx,SSF_BUTTON_EXT
786
        int     0x40
819
        int     0x40
787
        bt      eax,8
820
        bt      eax,8
Line 790... Line 823...
790
        mov     eax,SF_MOUSE_GET
823
        mov     eax,SF_MOUSE_GET
791
        mov     ebx,SSF_WINDOW_POSITION
824
        mov     ebx,SSF_WINDOW_POSITION
792
        int     0x40
825
        int     0x40
793
		cmp     ax, word[skinh]
826
		cmp     ax, word[skinh]
794
		jl      event
827
		jl      event
-
 
828
		sub     ax, word[skinh]
-
 
829
		xor     dx,dx
-
 
830
		mov     bx, font_height
-
 
831
		div     bx
-
 
832
		movzx   edx,ax
-
 
833
		dec     edx ;¢¥àå­ïï à ¬ª 
-
 
834
		dec     edx ;§ £®«®¢ª¨
795
		shr     eax,16
835
		shr     eax,16		
-
 
836
 
-
 
837
        cmp     edx, 0
-
 
838
		jl      .no_ch_pos
-
 
839
		mov     ebx, [cur_height]
-
 
840
		sub     ebx, 7
-
 
841
		cmp     edx, ebx
-
 
842
		jge     .no_ch_pos
-
 
843
		
-
 
844
		push    edx eax
-
 
845
        mov     ecx, [cur_width]
-
 
846
        imul    ecx, font_width/4
-
 
847
		xor     dx,dx
-
 
848
		sub     ax, 5 ;window border
-
 
849
		div     cx
-
 
850
		bt      ax, 0
-
 
851
		jnc     @f
-
 
852
		add     [esp+4], ebx ;¥á«¨ 2-© á⮫¡¥æ
-
 
853
@@:
-
 
854
		pop     eax ;edx in stack
-
 
855
		jmp @f
-
 
856
.no_ch_pos:
-
 
857
		push    -1 ;edx = -1 - no change position
-
 
858
@@:
-
 
859
 
796
        mov     ebx, [cur_width]
860
        mov     ebx, [cur_width]
797
        imul    ebx, font_width/2
861
        imul    ebx, font_width/2
798
		add     ebx, 5 ;window border
862
		add     ebx, 5 ;window border
799
		cmp     eax,ebx
863
		cmp     eax,ebx
800
		jg      @f
864
		jg      @f
801
		cmp     [active_panel], panel1_data
865
		cmp     [active_panel], panel1
802
		je      event
866
		je      .move
803
		jmp     .tab
867
		jmp     .tab
804
@@:
868
@@:
805
		cmp     [active_panel], panel2_data
869
		cmp     [active_panel], panel2
806
		je      event
870
		je      .move
807
.tab:
871
.tab:
808
        xor     [active_panel], panel1_data xor panel2_data
872
        xor     [active_panel], panel1 xor panel2
809
        call    draw_cmdbar
873
        call    draw_cmdbar
810
        mov     ebp, [active_panel]
874
        mov     ebp, [active_panel]
811
        xor     ebp, panel1_data xor panel2_data
875
        xor     ebp, panel1 xor panel2
812
        call    draw_panel
876
        call    draw_panel
-
 
877
.move:
813
        mov     ebp, [active_panel]
878
        mov     ebp, [active_panel]
-
 
879
		pop     edx
-
 
880
		mov     eax, [ebp + PanelData.numfiles]
-
 
881
		add     edx, [ebp + PanelData.start] ;ç¨á«® ¯à®ªàã祭ëå ä ©«®¢
-
 
882
		dec     eax
-
 
883
		cmp     edx, eax
-
 
884
		jle     @f
-
 
885
		mov     edx, eax
-
 
886
@@:
-
 
887
        cmp     edx, 0
-
 
888
		jl      @f
-
 
889
		mov     [ebp + PanelData.index], edx
-
 
890
@@:
814
        call    draw_panel
891
		call    draw_panel
815
        jmp     event
892
        jmp     event
Line 816... Line 893...
816
 
893
 
817
align 16
894
align 16
Line 1320... Line 1397...
1320
        push    0
1397
        push    0
1321
        push    QuickSearchDlg
1398
        push    QuickSearchDlg
1322
        call    HideDialogBox
1399
        call    HideDialogBox
1323
@@:
1400
@@:
1324
        mov     ebp, [active_panel]
1401
        mov     ebp, [active_panel]
1325
        mov     ecx, [ebp + panel1_index - panel1_data]
1402
        mov     ecx, [ebp + PanelData.index]
1326
        mov     edx, [ebp + panel1_start - panel1_data]
1403
        mov     edx, [ebp + PanelData.start]
1327
        mov     ebx, [ebp + panel1_colst - panel1_data]
1404
        mov     ebx, [ebp + PanelData.colst]
1328
        add     ebx, edx
1405
        add     ebx, edx
1329
        mov     esi, panels_ctrlkeys
1406
        mov     esi, panels_ctrlkeys
1330
        call    process_ctrl_keys
1407
        call    process_ctrl_keys
1331
        jc      .nostdkey
1408
        jc      .nostdkey
1332
        mov     [bQuickSearchMode], 0
1409
        mov     [bQuickSearchMode], 0
Line 1414... Line 1491...
1414
        jnc     @f
1491
        jnc     @f
1415
        mov     byte [quick_search_buf + 12], 0
1492
        mov     byte [quick_search_buf + 12], 0
1416
        and     dword [quick_search_buf + 4], 0
1493
        and     dword [quick_search_buf + 4], 0
1417
@@:
1494
@@:
1418
        mov     ebx, QuickSearchDlg
1495
        mov     ebx, QuickSearchDlg
1419
        mov     eax, [ebp + panel1_left - panel1_data]
1496
        mov     eax, [ebp + PanelData.left]
1420
        add     eax, 10
1497
        add     eax, 10
1421
        mov     edx, [cur_width]
1498
        mov     edx, [cur_width]
1422
        sub     edx, 21
1499
        sub     edx, 21
1423
        cmp     eax, edx
1500
        cmp     eax, edx
1424
        jb      @f
1501
        jb      @f
1425
        mov     eax, edx
1502
        mov     eax, edx
1426
@@:
1503
@@:
1427
        mov     [ebx + dlgtemplate.x], eax
1504
        mov     [ebx + dlgtemplate.x], eax
1428
        mov     eax, [ebp + panel1_top - panel1_data]
1505
        mov     eax, [ebp + PanelData.top]
1429
        add     eax, [ebp + panel1_height - panel1_data]
1506
        add     eax, [ebp + PanelData.height]
1430
        mov     edx, [cur_height]
1507
        mov     edx, [cur_height]
1431
        sub     edx, 2
1508
        sub     edx, 2
1432
        cmp     eax, edx
1509
        cmp     eax, edx
1433
        jb      @f
1510
        jb      @f
1434
        mov     eax, edx
1511
        mov     eax, edx
Line 1443... Line 1520...
1443
.ret:
1520
.ret:
1444
        ret
1521
        ret
1445
.up:
1522
.up:
1446
        jecxz   .ret
1523
        jecxz   .ret
1447
        dec     ecx
1524
        dec     ecx
1448
        mov     [ebp + panel1_index - panel1_data], ecx
1525
        mov     [ebp + PanelData.index], ecx
1449
        cmp     ecx, edx
1526
        cmp     ecx, edx
1450
        jae     .done_redraw
1527
        jae     .done_redraw
1451
        mov     [ebp + panel1_start - panel1_data], ecx
1528
        mov     [ebp + PanelData.start], ecx
1452
.done_redraw:
1529
.done_redraw:
1453
;        call    draw_panel
1530
;        call    draw_panel
1454
;        ret
1531
;        ret
1455
        jmp     draw_panel
1532
        jmp     draw_panel
1456
.insert:
1533
.insert:
1457
        lea     eax, [ecx*4]
1534
        lea     eax, [ecx*4]
1458
        add     eax, [ebp + panel1_files - panel1_data]
1535
        add     eax, [ebp + PanelData.files]
1459
        mov     eax, [eax]
1536
        mov     eax, [eax]
1460
        cmp     word [eax+40], '..'
1537
        cmp     word [eax+40], '..'
1461
        jnz     @f
1538
        jnz     @f
1462
        cmp     byte [eax+42], 0
1539
        cmp     byte [eax+42], 0
1463
        jz      .insert.down
1540
        jz      .insert.down
Line 1465... Line 1542...
1465
        xor     byte [eax+303], 1
1542
        xor     byte [eax+303], 1
1466
        mov     edx, [eax+32]
1543
        mov     edx, [eax+32]
1467
        test    byte [eax+303], 1
1544
        test    byte [eax+303], 1
1468
        mov     eax, [eax+36]
1545
        mov     eax, [eax+36]
1469
        jnz     .insert.increase
1546
        jnz     .insert.increase
1470
        sub     dword [ebp + panel1_selected_size - panel1_data], edx
1547
        sub     dword [ebp + PanelData.selected_size], edx
1471
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
1548
        sbb     dword [ebp + PanelData.selected_size+4], eax
1472
        dec     [ebp + panel1_selected_num - panel1_data]
1549
        dec     [ebp + PanelData.selected_num]
1473
        jmp     .insert.down
1550
        jmp     .insert.down
1474
.insert.increase:
1551
.insert.increase:
1475
        add     dword [ebp + panel1_selected_size - panel1_data], edx
1552
        add     dword [ebp + PanelData.selected_size], edx
1476
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
1553
        adc     dword [ebp + PanelData.selected_size+4], eax
1477
        inc     [ebp + panel1_selected_num - panel1_data]
1554
        inc     [ebp + PanelData.selected_num]
1478
.insert.down:
1555
.insert.down:
1479
        inc     ecx
1556
        inc     ecx
1480
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1557
        cmp     ecx, [ebp + PanelData.numfiles]
1481
        jae     .done_redraw
1558
        jae     .done_redraw
1482
        jmp     @f
1559
        jmp     @f
1483
.down:
1560
.down:
1484
        inc     ecx
1561
        inc     ecx
1485
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1562
        cmp     ecx, [ebp + PanelData.numfiles]
1486
        jae     .ret
1563
        jae     .ret
1487
@@:
1564
@@:
1488
        mov     [ebp + panel1_index - panel1_data], ecx
1565
        mov     [ebp + PanelData.index], ecx
1489
        cmp     ecx, ebx
1566
        cmp     ecx, ebx
1490
        jb      .done_redraw
1567
        jb      .done_redraw
1491
        sub     ecx, [ebp + panel1_colst - panel1_data]
1568
        sub     ecx, [ebp + PanelData.colst]
1492
        inc     ecx
1569
        inc     ecx
1493
        mov     [ebp + panel1_start - panel1_data], ecx
1570
        mov     [ebp + PanelData.start], ecx
1494
        jmp     .done_redraw
1571
        jmp     .done_redraw
1495
.left:
1572
.left:
1496
        test    ecx, ecx
1573
        test    ecx, ecx
1497
        jnz     @f
1574
        jnz     @f
1498
        ret
1575
        ret
1499
@@:
1576
@@:
1500
        mov     eax, [ebp + panel1_colsz - panel1_data]
1577
        mov     eax, [ebp + PanelData.colsz]
1501
        sub     ecx, eax
1578
        sub     ecx, eax
1502
        jae     @f
1579
        jae     @f
1503
        xor     ecx, ecx
1580
        xor     ecx, ecx
1504
@@:
1581
@@:
1505
        mov     [ebp + panel1_index - panel1_data], ecx
1582
        mov     [ebp + PanelData.index], ecx
1506
.finalize_left:
1583
.finalize_left:
1507
        cmp     ecx, edx
1584
        cmp     ecx, edx
1508
        jae     .done_redraw
1585
        jae     .done_redraw
1509
        sub     edx, eax
1586
        sub     edx, eax
1510
        jae     @f
1587
        jae     @f
1511
        xor     edx, edx
1588
        xor     edx, edx
1512
@@:
1589
@@:
1513
        mov     [ebp + panel1_start - panel1_data], edx
1590
        mov     [ebp + PanelData.start], edx
1514
        jmp     .done_redraw
1591
        jmp     .done_redraw
1515
.pgup:
1592
.pgup:
1516
        mov     eax, [ebp + panel1_colst - panel1_data]
1593
        mov     eax, [ebp + PanelData.colst]
1517
        dec     eax
1594
        dec     eax
1518
        jnz     @f
1595
        jnz     @f
1519
        inc     eax
1596
        inc     eax
1520
@@:
1597
@@:
1521
        test    ecx, ecx
1598
        test    ecx, ecx
Line 1524... Line 1601...
1524
@@:
1601
@@:
1525
        sub     ecx, eax
1602
        sub     ecx, eax
1526
        jae     @f
1603
        jae     @f
1527
        xor     ecx, ecx
1604
        xor     ecx, ecx
1528
@@:
1605
@@:
1529
        mov     [ebp + panel1_index - panel1_data], ecx
1606
        mov     [ebp + PanelData.index], ecx
1530
        dec     ecx
1607
        dec     ecx
1531
        jmp     .finalize_left
1608
        jmp     .finalize_left
1532
.right:
1609
.right:
1533
        mov     eax, [ebp + panel1_colsz - panel1_data]
1610
        mov     eax, [ebp + PanelData.colsz]
1534
        add     ecx, eax
1611
        add     ecx, eax
1535
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1612
        cmp     ecx, [ebp + PanelData.numfiles]
1536
        jb      @f
1613
        jb      @f
1537
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1614
        mov     ecx, [ebp + PanelData.numfiles]
1538
        dec     ecx
1615
        dec     ecx
1539
@@:
1616
@@:
1540
        mov     [ebp + panel1_index - panel1_data], ecx
1617
        mov     [ebp + PanelData.index], ecx
1541
.finalize_right:
1618
.finalize_right:
1542
        cmp     ecx, ebx
1619
        cmp     ecx, ebx
1543
        jb      .done_redraw
1620
        jb      .done_redraw
1544
        add     ebx, eax
1621
        add     ebx, eax
1545
        cmp     ebx, [ebp + panel1_numfiles - panel1_data]
1622
        cmp     ebx, [ebp + PanelData.numfiles]
1546
        jbe     @f
1623
        jbe     @f
1547
        mov     ebx, [ebp + panel1_numfiles - panel1_data]
1624
        mov     ebx, [ebp + PanelData.numfiles]
1548
@@:
1625
@@:
1549
        sub     ebx, [ebp + panel1_colst - panel1_data]
1626
        sub     ebx, [ebp + PanelData.colst]
1550
        jae     @f
1627
        jae     @f
1551
        xor     ebx, ebx
1628
        xor     ebx, ebx
1552
@@:
1629
@@:
1553
        mov     [ebp + panel1_start - panel1_data], ebx
1630
        mov     [ebp + PanelData.start], ebx
1554
        jmp     .done_redraw
1631
        jmp     .done_redraw
1555
.pgdn:
1632
.pgdn:
1556
        mov     eax, [ebp + panel1_colst - panel1_data]
1633
        mov     eax, [ebp + PanelData.colst]
1557
        dec     eax
1634
        dec     eax
1558
        jnz     @f
1635
        jnz     @f
1559
        inc     eax
1636
        inc     eax
1560
@@:
1637
@@:
1561
        add     ecx, eax
1638
        add     ecx, eax
1562
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
1639
        cmp     ecx, [ebp + PanelData.numfiles]
1563
        jb      @f
1640
        jb      @f
1564
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
1641
        mov     ecx, [ebp + PanelData.numfiles]
1565
        dec     ecx
1642
        dec     ecx
1566
@@:
1643
@@:
1567
        mov     [ebp + panel1_index - panel1_data], ecx
1644
        mov     [ebp + PanelData.index], ecx
1568
        inc     ecx
1645
        inc     ecx
1569
        jmp     .finalize_right
1646
        jmp     .finalize_right
1570
.tab:
1647
.tab:
1571
        xor     [active_panel], panel1_data xor panel2_data
1648
        xor     [active_panel], panel1 xor panel2
1572
        call    draw_cmdbar
1649
        call    draw_cmdbar
1573
        call    draw_panel
1650
        call    draw_panel
1574
        mov     ebp, [active_panel]
1651
        mov     ebp, [active_panel]
1575
        jmp     .done_redraw
1652
        jmp     .done_redraw
1576
.home:
1653
.home:
1577
        and     [ebp + panel1_start - panel1_data], 0
1654
        and     [ebp + PanelData.start], 0
1578
        and     [ebp + panel1_index - panel1_data], 0
1655
        and     [ebp + PanelData.index], 0
1579
        jmp     .done_redraw
1656
        jmp     .done_redraw
1580
.end:
1657
.end:
1581
        mov     eax, [ebp + panel1_numfiles - panel1_data]
1658
        mov     eax, [ebp + PanelData.numfiles]
1582
        dec     eax
1659
        dec     eax
1583
        mov     [ebp + panel1_index - panel1_data], eax
1660
        mov     [ebp + PanelData.index], eax
1584
        inc     eax
1661
        inc     eax
1585
        sub     eax, [ebp + panel1_colst - panel1_data]
1662
        sub     eax, [ebp + PanelData.colst]
1586
        jae     @f
1663
        jae     @f
1587
        xor     eax, eax
1664
        xor     eax, eax
1588
@@:
1665
@@:
1589
        mov     [ebp + panel1_start - panel1_data], eax
1666
        mov     [ebp + PanelData.start], eax
1590
        jmp     .done_redraw
1667
        jmp     .done_redraw
1591
.enter:
1668
.enter:
1592
        cmp     [bQuickSearchMode], 0
1669
        cmp     [bQuickSearchMode], 0
1593
        jz      @f
1670
        jz      @f
1594
        call    draw_image
1671
        call    draw_image
1595
@@:
1672
@@:
1596
        call    get_curfile_folder_entry
1673
        call    get_curfile_folder_entry
1597
        test    byte [ecx], 10h
1674
        test    byte [ecx], 10h
1598
        jnz     .enter_folder
1675
        jnz     .enter_folder
1599
; todo: add  handling on plugin panel
1676
; todo: add  handling on plugin panel
1600
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
1677
        cmp     [ebp + PanelData.hPlugin], 0
1601
        jnz     .ret
1678
        jnz     .ret
1602
; generate full file name
1679
; generate full file name
1603
        lea     esi, [ebp + panel1_dir - panel1_data]
1680
        lea     esi, [ebp + PanelData.dir]
1604
        mov     edi, execdata
1681
        mov     edi, execdata
1605
@@:
1682
@@:
1606
        lodsb
1683
        lodsb
1607
        test    al, al
1684
        test    al, al
1608
        jz      @f
1685
        jz      @f
Line 1658... Line 1735...
1658
        add     edx, PluginInfo.size
1735
        add     edx, PluginInfo.size
1659
        dec     ecx
1736
        dec     ecx
1660
        js      .plugdone
1737
        js      .plugdone
1661
        pushad
1738
        pushad
1662
        push    execdata
1739
        push    execdata
1663
        push    [ebp+panel1_hFile-panel1_data]
1740
        push    [ebp+ PanelData.hFile]
1664
        push    [ebp+panel1_hPlugin-panel1_data]
1741
        push    [ebp+ PanelData.hPlugin]
1665
        push    edi
1742
        push    edi
1666
        push    filedata_buffer
1743
        push    filedata_buffer
1667
        call    get_curfile_folder_entry
1744
        call    get_curfile_folder_entry
1668
        push    ecx
1745
        push    ecx
1669
        push    esi
1746
        push    esi
Line 1685... Line 1762...
1685
        lodsb
1762
        lodsb
1686
        test    al, al
1763
        test    al, al
1687
        jnz     @b
1764
        jnz     @b
1688
        sub     esi, execdata-9
1765
        sub     esi, execdata-9
1689
; allocate esi bytes in buffer 'parents'
1766
; allocate esi bytes in buffer 'parents'
1690
        mov     ecx, [ebp + panel1_parents_sz - panel1_data]
1767
        mov     ecx, [ebp + PanelData.parents_sz]
1691
        add     ecx, esi
1768
        add     ecx, esi
1692
        cmp     ecx, [ebp + panel1_parents_alloc - panel1_data]
1769
        cmp     ecx, [ebp + PanelData.parents_alloc]
1693
        jbe     .enter.norealloc
1770
        jbe     .enter.norealloc
1694
        push    edx
1771
        push    edx
1695
        mov     edx, [ebp + panel1_parents - panel1_data]
1772
        mov     edx, [ebp + PanelData.parents]
1696
        call    xpgrealloc
1773
        call    xpgrealloc
1697
        pop     edx
1774
        pop     edx
1698
        test    eax, eax
1775
        test    eax, eax
1699
        jnz     @f
1776
        jnz     @f
1700
        push    edi
1777
        push    edi
1701
        call    [edx+PluginInfo.ClosePlugin]
1778
        call    [edx+PluginInfo.ClosePlugin]
1702
        ret
1779
        ret
1703
@@:
1780
@@:
1704
        mov     [ebp + panel1_parents - panel1_data], eax
1781
        mov     [ebp + PanelData.parents], eax
1705
.enter.norealloc:
1782
.enter.norealloc:
1706
        mov     [ebp + panel1_parents_sz - panel1_data], ecx
1783
        mov     [ebp + PanelData.parents_sz], ecx
1707
; save current state to the end of buffer
1784
; save current state to the end of buffer
1708
        sub     ecx, esi
1785
        sub     ecx, esi
1709
        add     ecx, [ebp + panel1_parents - panel1_data]
1786
        add     ecx, [ebp + PanelData.parents]
1710
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
1787
        xchg    edx, [ebp + PanelData.hPlugin]
1711
        mov     [ecx], edx
1788
        mov     [ecx], edx
1712
        xchg    edi, [ebp + panel1_hFile - panel1_data]
1789
        xchg    edi, [ebp + PanelData.hFile]
1713
        mov     [ecx+4], edi
1790
        mov     [ecx+4], edi
1714
        mov     byte [ecx+8], 0
1791
        mov     byte [ecx+8], 0
1715
        lea     edi, [ecx+9]
1792
        lea     edi, [ecx+9]
1716
        lea     ecx, [esi-9]
1793
        lea     ecx, [esi-9]
1717
        mov     esi, execdata
1794
        mov     esi, execdata
1718
        rep     movsb
1795
        rep     movsb
1719
        mov     word [ebp + panel1_dir - panel1_data], '/'
1796
        mov     word [ebp + PanelData.dir], '/'
1720
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
1797
        mov     eax, [ebp + PanelData.hPlugin]
1721
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
1798
        lea     ebx, [ebp + PanelData.plugin_flags] ;plugin_info
1722
        and     dword [ebx], 0
1799
        and     dword [ebx], 0
1723
        push    ebp
1800
        push    ebp
1724
        push    ebx
1801
        push    ebx
1725
        push    [ebp + panel1_hFile - panel1_data]
1802
        push    [ebp + PanelData.hFile]
1726
        call    [eax+PluginInfo.GetOpenPluginInfo]
1803
        call    [eax+PluginInfo.GetOpenPluginInfo]
1727
        pop     ebp
1804
        pop     ebp
1728
        call    get_curfile_folder_entry
1805
        call    get_curfile_folder_entry
1729
        mov     esi, ecx
1806
        mov     esi, ecx
1730
        mov     edi, left_dotdot_entry
1807
        mov     edi, left_dotdot_entry
1731
        cmp     ebp, panel1_data
1808
        cmp     ebp, panel1
1732
        jz      @f
1809
        jz      @f
1733
        add     edi, right_dotdot_entry-left_dotdot_entry
1810
        add     edi, right_dotdot_entry-left_dotdot_entry
1734
@@:
1811
@@:
1735
        mov     ecx, 10
1812
        mov     ecx, 10
1736
        rep     movsd
1813
        rep     movsd
Line 1771... Line 1848...
1771
        jmp     .dorun
1848
        jmp     .dorun
1772
.run_app:
1849
.run_app:
1773
        mov     [execptr], execdata
1850
        mov     [execptr], execdata
1774
        and     [execparams], 0
1851
        and     [execparams], 0
1775
.dorun:
1852
.dorun:
1776
        lea     esi, [ebp + panel1_dir - panel1_data]
1853
        lea     esi, [ebp + PanelData.dir]
1777
        mov     edi, execdata
1854
        mov     edi, execdata
1778
@@:
1855
@@:
1779
        lodsb
1856
        lodsb
1780
        test    al, al
1857
        test    al, al
1781
        jz      @f
1858
        jz      @f
Line 1913... Line 1990...
1913
.bigcmdline:
1990
.bigcmdline:
1914
        mov     eax, aCmdLineTooBig
1991
        mov     eax, aCmdLineTooBig
1915
        jmp     .l2
1992
        jmp     .l2
1916
.bigfoldername2:
1993
.bigfoldername2:
1917
        mov     esi, prev_dir
1994
        mov     esi, prev_dir
1918
        lea     edi, [ebp + panel1_dir - panel1_data]
1995
        lea     edi, [ebp + PanelData.dir]
1919
@@:
1996
@@:
1920
        lodsb
1997
        lodsb
1921
        stosb
1998
        stosb
1922
        test    al, al
1999
        test    al, al
1923
        jnz     @b
2000
        jnz     @b
Line 1930... Line 2007...
1930
        jnz     @f
2007
        jnz     @f
1931
        cmp     byte [esi+2], 0
2008
        cmp     byte [esi+2], 0
1932
        jz      .dotdot
2009
        jz      .dotdot
1933
@@:
2010
@@:
1934
        push    esi
2011
        push    esi
1935
        lea     esi, [ebp + panel1_dir - panel1_data]
2012
        lea     esi, [ebp + PanelData.dir]
1936
        mov     edi, prev_dir
2013
        mov     edi, prev_dir
1937
@@:
2014
@@:
1938
        lodsb
2015
        lodsb
1939
        stosb
2016
        stosb
1940
        test    al, al
2017
        test    al, al
1941
        jnz     @b
2018
        jnz     @b
1942
        lea     edi, [esi-1]
2019
        lea     edi, [esi-1]
1943
        lea     edx, [ebp + panel1_dir - panel1_data + 1024]
2020
        lea     edx, [ebp + PanelData.dir + 1024]
1944
        cmp     esi, edx
2021
        cmp     esi, edx
1945
        pop     esi
2022
        pop     esi
1946
        jae     .bigfoldername
2023
        jae     .bigfoldername
1947
        mov     al, '/'
2024
        mov     al, '/'
1948
        cmp     [edi-1], al
2025
        cmp     [edi-1], al
Line 1953... Line 2030...
1953
        cmp     edi, edx
2030
        cmp     edi, edx
1954
        jae     .bigfoldername2
2031
        jae     .bigfoldername2
1955
        stosb
2032
        stosb
1956
        test    al, al
2033
        test    al, al
1957
        jnz     @b
2034
        jnz     @b
1958
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2035
        mov     eax, [ebp + PanelData.hPlugin]
1959
        test    eax, eax
2036
        test    eax, eax
1960
        jz      .reread
2037
        jz      .reread
1961
        push    ebp
2038
        push    ebp
1962
        lea     esi, [ebp + panel1_dir - panel1_data]
2039
        lea     esi, [ebp + PanelData.dir]
1963
        push    esi
2040
        push    esi
1964
        add     ecx, 40
2041
        add     ecx, 40
1965
        push    ecx
2042
        push    ecx
1966
        push    [ebp + panel1_hFile - panel1_data]
2043
        push    [ebp + PanelData.hFile]
1967
        call    [eax+PluginInfo.SetFolder]
2044
        call    [eax+PluginInfo.SetFolder]
1968
        pop     ebp
2045
        pop     ebp
1969
        test    al, al
2046
        test    al, al
1970
        jnz     .reread
2047
        jnz     .reread
1971
        mov     esi, prev_dir
2048
        mov     esi, prev_dir
1972
        lea     edi, [ebp + panel1_dir - panel1_data]
2049
        lea     edi, [ebp + PanelData.dir]
1973
@@:
2050
@@:
1974
        lodsb
2051
        lodsb
1975
        stosb
2052
        stosb
1976
        test    al, al
2053
        test    al, al
1977
        jnz     @b
2054
        jnz     @b
Line 1981... Line 2058...
1981
        call    read_folder
2058
        call    read_folder
1982
.done_cmdbar:
2059
.done_cmdbar:
1983
        call    draw_cmdbar
2060
        call    draw_cmdbar
1984
        jmp     .done_redraw
2061
        jmp     .done_redraw
1985
.dotdot:
2062
.dotdot:
1986
        lea     edi, [ebp + panel1_dir - panel1_data]
2063
        lea     edi, [ebp + PanelData.dir]
1987
        cmp     word [edi], '/'
2064
        cmp     word [edi], '/'
1988
        jnz     .dotdot_noroot
2065
        jnz     .dotdot_noroot
1989
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2066
        cmp     [ebp + PanelData.hPlugin], 0
1990
        jz      .retd
2067
        jz      .retd
1991
        call    close_plugin_panel
2068
        call    close_plugin_panel
1992
        jmp     .dotdot
2069
        jmp     .dotdot
1993
.dotdot_noroot:
2070
.dotdot_noroot:
1994
        mov     edx, edi
2071
        mov     edx, edi
Line 2006... Line 2083...
2006
        inc     edi
2083
        inc     edi
2007
@@:
2084
@@:
2008
        push    dword [edi]
2085
        push    dword [edi]
2009
        mov     byte [edi], 0
2086
        mov     byte [edi], 0
2010
        push    edi
2087
        push    edi
2011
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2088
        mov     eax, [ebp + PanelData.hPlugin]
2012
        test    eax, eax
2089
        test    eax, eax
2013
        jz      .dotdot_native
2090
        jz      .dotdot_native
2014
        push    ebp
2091
        push    ebp
2015
        lea     esi, [ebp + panel1_dir - panel1_data]
2092
        lea     esi, [ebp + PanelData.dir]
2016
        push    esi
2093
        push    esi
2017
        push    aDotDot
2094
        push    aDotDot
2018
        push    [ebp + panel1_hFile - panel1_data]
2095
        push    [ebp + PanelData.hFile]
2019
        call    [eax+PluginInfo.SetFolder]
2096
        call    [eax+PluginInfo.SetFolder]
2020
        pop     ebp
2097
        pop     ebp
2021
        test    al, al
2098
        test    al, al
2022
        jnz     .dotdot_native
2099
        jnz     .dotdot_native
2023
        pop     edi
2100
        pop     edi
Line 2030... Line 2107...
2030
        push    edi
2107
        push    edi
2031
        cmp     byte [edi], '/'
2108
        cmp     byte [edi], '/'
2032
        jnz     @f
2109
        jnz     @f
2033
        inc     edi
2110
        inc     edi
2034
@@:
2111
@@:
2035
        mov     edx, [ebp + panel1_files - panel1_data]
2112
        mov     edx, [ebp + PanelData.files]
2036
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2113
        mov     ecx, [ebp + PanelData.numfiles]
2037
.scanloop:
2114
.scanloop:
2038
        mov     esi, [edx]
2115
        mov     esi, [edx]
2039
        add     esi, 40
2116
        add     esi, 40
2040
        push    esi edi
2117
        push    esi edi
2041
@@:
2118
@@:
Line 2050... Line 2127...
2050
        jz      .scanfound
2127
        jz      .scanfound
2051
        add     edx, 4
2128
        add     edx, 4
2052
        loop    .scanloop
2129
        loop    .scanloop
2053
        jmp     .scandone
2130
        jmp     .scandone
2054
.scanfound:
2131
.scanfound:
2055
        sub     edx, [ebp + panel1_files - panel1_data]
2132
        sub     edx, [ebp + PanelData.files]
2056
        shr     edx, 2
2133
        shr     edx, 2
2057
        mov     [ebp + panel1_index - panel1_data], edx
2134
        mov     [ebp + PanelData.index], edx
2058
        sub     edx, [ebp + panel1_colst - panel1_data]
2135
        sub     edx, [ebp + PanelData.colst]
2059
        jb      .scandone
2136
        jb      .scandone
2060
        inc     edx
2137
        inc     edx
2061
        mov     [ebp + panel1_start - panel1_data], edx
2138
        mov     [ebp + PanelData.start], edx
2062
.scandone:
2139
.scandone:
2063
        pop     edi
2140
        pop     edi
2064
        mov     byte [edi], 0
2141
        mov     byte [edi], 0
2065
        jmp     .done_cmdbar
2142
        jmp     .done_cmdbar
2066
.ctrl_f39:
2143
.ctrl_f39:
2067
        sub     al, 0x3D
2144
        sub     al, 0x3D
2068
        add     al, al
2145
        add     al, al
2069
        mov     ah, [ebp + panel1_sortmode - panel1_data]
2146
        mov     ah, [ebp + PanelData.sortmode]
2070
        and     ah, 0xFE
2147
        and     ah, 0xFE
2071
        cmp     al, ah
2148
        cmp     al, ah
2072
        jnz     @f
2149
        jnz     @f
2073
        and     [ebp + panel1_sortmode - panel1_data], 1
2150
        and     [ebp + PanelData.sortmode], 1
2074
        or      al, [ebp + panel1_sortmode - panel1_data]
2151
        or      al, [ebp + PanelData.sortmode]
2075
        xor     al, 1
2152
        xor     al, 1
2076
@@:
2153
@@:
2077
        mov     [ebp + panel1_sortmode - panel1_data], al
2154
        mov     [ebp + PanelData.sortmode], al
2078
        mov     eax, [ebp + panel1_index - panel1_data]
2155
        mov     eax, [ebp + PanelData.index]
2079
        mov     ecx, [ebp + panel1_files - panel1_data]
2156
        mov     ecx, [ebp + PanelData.files]
2080
        push    dword [ecx+eax*4]
2157
        push    dword [ecx+eax*4]
2081
        push    ecx
2158
        push    ecx
2082
        call    sort_files
2159
        call    sort_files
2083
        pop     edi
2160
        pop     edi
2084
        pop     eax
2161
        pop     eax
2085
        or      ecx, -1
2162
        or      ecx, -1
2086
        repnz   scasd
2163
        repnz   scasd
2087
        not     ecx
2164
        not     ecx
2088
        dec     ecx
2165
        dec     ecx
2089
        mov     [ebp + panel1_index - panel1_data], ecx
2166
        mov     [ebp + PanelData.index], ecx
2090
        sub     ecx, [ebp + panel1_start - panel1_data]
2167
        sub     ecx, [ebp + PanelData.start]
2091
        jb      .less_start
2168
        jb      .less_start
2092
        sub     ecx, [ebp + panel1_colst - panel1_data]
2169
        sub     ecx, [ebp + PanelData.colst]
2093
        jae     .gr_end
2170
        jae     .gr_end
2094
@@:     jmp     .done_redraw
2171
@@:     jmp     .done_redraw
2095
.less_start:
2172
.less_start:
2096
        add     [ebp + panel1_start - panel1_data], ecx
2173
        add     [ebp + PanelData.start], ecx
2097
        jmp     @b
2174
        jmp     @b
2098
.gr_end:
2175
.gr_end:
2099
        inc     ecx
2176
        inc     ecx
2100
        add     [ebp + panel1_start - panel1_data], ecx
2177
        add     [ebp + PanelData.start], ecx
2101
        jmp     @b
2178
        jmp     @b
2102
.alt_f12:
2179
.alt_f12:
2103
        mov     ebp, panel1_data
2180
        mov     ebp, panel1
2104
        cmp     al, 0x3B
2181
        cmp     al, 0x3B
2105
        jz      @f
2182
        jz      @f
2106
        mov     ebp, panel2_data
2183
        mov     ebp, panel2
2107
@@:
2184
@@:
2108
; get drives list
2185
; get drives list
2109
        mov     ebx, dirinfo
2186
        mov     ebx, dirinfo
2110
        mov     [ebx+dirinfo.size-dirinfo], 1
2187
        mov     [ebx+dirinfo.size-dirinfo], 1
2111
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
2188
        mov     [ebx+dirinfo.dirdata-dirinfo], driveinfo
Line 2187... Line 2264...
2187
        jae     @f
2264
        jae     @f
2188
        mov     [esi], edi
2265
        mov     [esi], edi
2189
        jmp     @b
2266
        jmp     @b
2190
@@:
2267
@@:
2191
        mov     ecx, edx
2268
        mov     ecx, edx
2192
        lea     edi, [ebp + panel1_dir - panel1_data]
2269
        lea     edi, [ebp + PanelData.dir]
2193
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2270
        cmp     [ebp + PanelData.hPlugin], 0
2194
        jz      .find_cur_drive_loop
2271
        jz      .find_cur_drive_loop
2195
        mov     edi, [ebp + panel1_parents - panel1_data]
2272
        mov     edi, [ebp + PanelData.parents]
2196
        add     edi, 8
2273
        add     edi, 8
2197
.find_cur_drive_loop:
2274
.find_cur_drive_loop:
2198
        push    edi
2275
        push    edi
2199
        lea     esi, [ecx+8]
2276
        lea     esi, [ecx+8]
2200
@@:
2277
@@:
Line 2216... Line 2293...
2216
.cur_drive_found:
2293
.cur_drive_found:
2217
        pop     edi
2294
        pop     edi
2218
        push    1
2295
        push    1
2219
        push    aDrive
2296
        push    aDrive
2220
        push    ecx
2297
        push    ecx
2221
        mov     eax, [ebp + panel1_height - panel1_data]
2298
        mov     eax, [ebp + PanelData.height]
2222
        sub     eax, 2
2299
        sub     eax, 2
2223
        jae     @f
2300
        jae     @f
2224
        add     eax, 2
2301
        add     eax, 2
2225
@@:
2302
@@:
2226
        push    eax
2303
        push    eax
2227
        push    [ebp + panel1_width - panel1_data]
2304
        push    [ebp + PanelData.width]
2228
        push    [ebp + panel1_top - panel1_data]
2305
        push    [ebp + PanelData.top]
2229
        push    [ebp + panel1_left - panel1_data]
2306
        push    [ebp + PanelData.left]
2230
        call    menu_centered_in
2307
        call    menu_centered_in
2231
        cmp     eax, -1
2308
        cmp     eax, -1
2232
        jnz     @f
2309
        jnz     @f
2233
        mov     ecx, edx
2310
        mov     ecx, edx
2234
        call    pgfree
2311
        call    pgfree
Line 2236... Line 2313...
2236
@@:
2313
@@:
2237
        push    eax
2314
        push    eax
2238
        push    edx
2315
        push    edx
2239
        call    close_plugin_panels
2316
        call    close_plugin_panels
2240
        pop     edx
2317
        pop     edx
2241
        lea     edi, [ebp + panel1_dir - panel1_data]
2318
        lea     edi, [ebp + PanelData.dir]
2242
        push    edi
2319
        push    edi
2243
        mov     esi, edi
2320
        mov     esi, edi
2244
        mov     edi, prev_dir
2321
        mov     edi, prev_dir
2245
        mov     ecx, 1024/4
2322
        mov     ecx, 1024/4
2246
        rep     movsd
2323
        rep     movsd
Line 2256... Line 2333...
2256
        call    pgfree
2333
        call    pgfree
2257
        call    read_folder
2334
        call    read_folder
2258
        jmp     .done_redraw
2335
        jmp     .done_redraw
2259
.shift_f5:
2336
.shift_f5:
2260
; todo: copy to plugin panel
2337
; todo: copy to plugin panel
2261
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2338
        cmp     [ebp + PanelData.hPlugin], 0
2262
        jz      @f
2339
        jz      @f
2263
        ret
2340
        ret
2264
@@:
2341
@@:
2265
        mov     esi, ebp
2342
        mov     esi, ebp
2266
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2343
        cmp     [ebp + PanelData.selected_num], 0
2267
        jnz     .f5_2
2344
        jnz     .f5_2
2268
        call    get_curfile_folder_entry
2345
        call    get_curfile_folder_entry
2269
        lea     esi, [ecx+40]
2346
        lea     esi, [ecx+40]
2270
        mov     edi, CopyDestEditBuf
2347
        mov     edi, CopyDestEditBuf
2271
        mov     eax, CopyDestEditBuf.length
2348
        mov     eax, CopyDestEditBuf.length
Line 2281... Line 2358...
2281
        stosb
2358
        stosb
2282
        jmp     @b
2359
        jmp     @b
2283
.f5:
2360
.f5:
2284
; todo: copy to plugin panel
2361
; todo: copy to plugin panel
2285
        mov     esi, ebp
2362
        mov     esi, ebp
2286
        xor     esi, panel1_data xor panel2_data
2363
        xor     esi, panel1 xor panel2
2287
        cmp     [esi + panel1_hPlugin - panel1_data], 0
2364
        cmp     [esi + PanelData.hPlugin], 0
2288
        jz      .f5_2
2365
        jz      .f5_2
2289
        ret
2366
        ret
2290
.f5_2:
2367
.f5_2:
2291
        add     esi, panel1_dir - panel1_data
2368
        add     esi, PanelData.dir
2292
        mov     edi, CopyDestEditBuf
2369
        mov     edi, CopyDestEditBuf
2293
        mov     eax, CopyDestEditBuf.length
2370
        mov     eax, CopyDestEditBuf.length
2294
        stosd
2371
        stosd
2295
        scasd
2372
        scasd
2296
        xor     eax, eax
2373
        xor     eax, eax
Line 2306... Line 2383...
2306
        jmp     @b
2383
        jmp     @b
2307
@@:
2384
@@:
2308
        mov     al, '/'
2385
        mov     al, '/'
2309
        stosb
2386
        stosb
2310
.f5_common:
2387
.f5_common:
2311
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2388
        mov     eax, [ebp + PanelData.hPlugin]
2312
        mov     [source_hModule], eax
2389
        mov     [source_hModule], eax
2313
        mov     eax, [ebp + panel1_hFile - panel1_data]
2390
        mov     eax, [ebp + PanelData.hFile]
2314
        mov     [source_hPlugin], eax
2391
        mov     [source_hPlugin], eax
2315
        mov     eax, left_dotdot_entry
2392
        mov     eax, left_dotdot_entry
2316
        cmp     ebp, panel1_data
2393
        cmp     ebp, panel1
2317
        jz      @f
2394
        jz      @f
2318
        add     eax, right_dotdot_entry-left_dotdot_entry
2395
        add     eax, right_dotdot_entry-left_dotdot_entry
2319
@@:
2396
@@:
2320
        mov     [default_attr], eax
2397
        mov     [default_attr], eax
2321
        mov     byte [edi], 0
2398
        mov     byte [edi], 0
Line 2328... Line 2405...
2328
        test    al, al
2405
        test    al, al
2329
        jz      @f
2406
        jz      @f
2330
        stosb
2407
        stosb
2331
        jmp     @b
2408
        jmp     @b
2332
@@:
2409
@@:
2333
        mov     eax, [ebp + panel1_selected_num - panel1_data]
2410
        mov     eax, [ebp + PanelData.selected_num]
2334
        test    eax, eax
2411
        test    eax, eax
2335
        jz      .f5_noselected1
2412
        jz      .f5_noselected1
2336
        mov     ebx, eax
2413
        mov     ebx, eax
2337
        push    10
2414
        push    10
2338
        pop     ecx
2415
        pop     ecx
Line 2459... Line 2536...
2459
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
2536
; …᫨ ¯ãâì ­¥ ­ ç¨­ ¥âáï á® á«íè , áç¨â ¥¬ ¥£® ®â­®á¨â¥«ì­® ⥪ã饩 ¯ ¯ª¨
2460
        cmp     byte [esi], '/'
2537
        cmp     byte [esi], '/'
2461
        jz      .copy_absolute_path
2538
        jz      .copy_absolute_path
2462
        push    esi
2539
        push    esi
2463
        push    edi
2540
        push    edi
2464
        lea     edi, [ebp + panel1_dir - panel1_data]
2541
        lea     edi, [ebp + PanelData.dir]
2465
        or      ecx, -1
2542
        or      ecx, -1
2466
        xor     eax, eax
2543
        xor     eax, eax
2467
        repnz   scasb
2544
        repnz   scasb
2468
        not     ecx
2545
        not     ecx
2469
        pop     edi
2546
        pop     edi
Line 2482... Line 2559...
2482
        std
2559
        std
2483
        lea     esi, [esi+ecx-1]
2560
        lea     esi, [esi+ecx-1]
2484
        rep     movsb
2561
        rep     movsb
2485
        cld
2562
        cld
2486
        pop     edi
2563
        pop     edi
2487
        lea     esi, [ebp + panel1_dir - panel1_data]
2564
        lea     esi, [ebp + PanelData.dir]
2488
        push    edi
2565
        push    edi
2489
        mov     ecx, edx
2566
        mov     ecx, edx
2490
        rep     movsb
2567
        rep     movsb
2491
        mov     byte [edi-1], '/'
2568
        mov     byte [edi-1], '/'
2492
        pop     esi
2569
        pop     esi
2493
.copy_absolute_path:
2570
.copy_absolute_path:
2494
; ‘­ ç «  ᮧ¤ ñ¬ ¢á¥ ¢ë襫¥¦ é¨¥ ¯ ¯ª¨, ª®â®àë¥ ¥éñ ­¥ áãé¥áâ¢ãîâ
2571
; ‘­ ç «  ᮧ¤ ñ¬ ¢á¥ ¢ë襫¥¦ é¨¥ ¯ ¯ª¨, ª®â®àë¥ ¥éñ ­¥ áãé¥áâ¢ãîâ
2495
; ®á«¥¤­¨© ¨§ í«¥¬¥­â®¢ ¬®¦¥â ¡ëâì ª ª ä ©«®¬, â ª ¨ ¯ ¯ª®©;
2572
; ®á«¥¤­¨© ¨§ í«¥¬¥­â®¢ ¬®¦¥â ¡ëâì ª ª ä ©«®¬, â ª ¨ ¯ ¯ª®©;
2496
; ä®àá¨à㥬 ¯ ¯ªã ¢ á«ãç ¥, ¥á«¨ å®âï ¡ë ®¤¨­ ¨§ ¨áâ®ç­¨ª®¢ ï¥âáï ¯ ¯ª®©
2573
; ä®àá¨à㥬 ¯ ¯ªã ¢ á«ãç ¥, ¥á«¨ å®âï ¡ë ®¤¨­ ¨§ ¨áâ®ç­¨ª®¢ ï¥âáï ¯ ¯ª®©
2497
        xor     edx, edx
2574
        xor     edx, edx
2498
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2575
        cmp     [ebp + PanelData.selected_num], 0
2499
        jz      .f5_noselected2
2576
        jz      .f5_noselected2
2500
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2577
        mov     ecx, [ebp + PanelData.numfiles]
2501
        mov     edi, [ebp + panel1_files - panel1_data]
2578
        mov     edi, [ebp + PanelData.files]
2502
.scanselected2:
2579
.scanselected2:
2503
        mov     eax, [edi]
2580
        mov     eax, [edi]
2504
        add     edi, 4
2581
        add     edi, 4
2505
        test    byte [eax+303], 1
2582
        test    byte [eax+303], 1
2506
        jz      @f
2583
        jz      @f
Line 2618... Line 2695...
2618
        mov     eax, ecx
2695
        mov     eax, ecx
2619
        cmp     [bNeedRestoreName], 0
2696
        cmp     [bNeedRestoreName], 0
2620
        jz      @f
2697
        jz      @f
2621
        cmp     [bEndSlash], 0
2698
        cmp     [bEndSlash], 0
2622
        jnz     @f
2699
        jnz     @f
2623
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2700
        cmp     [ebp + PanelData.selected_num], 0
2624
        jnz     @f
2701
        jnz     @f
2625
        test    byte [eax], 10h
2702
        test    byte [eax], 10h
2626
        jz      @f
2703
        jz      @f
2627
        mov     dl, 0
2704
        mov     dl, 0
2628
@@:
2705
@@:
2629
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
2706
; ­ ç¨­ ¥¬ ᮡá⢥­­® ª®¯¨à®¢ ­¨¥
2630
        mov     [bDestIsFolder], dl
2707
        mov     [bDestIsFolder], dl
2631
        mov     [copy_bSkipAll], 0
2708
        mov     [copy_bSkipAll], 0
2632
        mov     [copy_bSkipAll2], 0
2709
        mov     [copy_bSkipAll2], 0
2633
        mov     [copy_bSkipAll3], 0
2710
        mov     [copy_bSkipAll3], 0
2634
        test    [ebp + panel1_plugin_flags - panel1_data], 2
2711
        test    [ebp + PanelData.plugin_flags], 2
2635
        jnz     .copy_GetFiles
2712
        jnz     .copy_GetFiles
2636
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2713
        cmp     [ebp + PanelData.selected_num], 0
2637
        jnz     .f5_selected3
2714
        jnz     .f5_selected3
2638
        call    copy_file
2715
        call    copy_file
2639
.copydone:
2716
.copydone:
2640
        push    ebp
2717
        push    ebp
2641
        call    .ctrl_r
2718
        call    .ctrl_r
2642
        pop     ebp
2719
        pop     ebp
2643
        xor     ebp, panel1_data xor panel2_data
2720
        xor     ebp, panel1 xor panel2
2644
        jmp     .ctrl_r
2721
        jmp     .ctrl_r
2645
.f5_selected3:
2722
.f5_selected3:
2646
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2723
        mov     ecx, [ebp + PanelData.numfiles]
2647
        mov     esi, [ebp + panel1_files - panel1_data]
2724
        mov     esi, [ebp + PanelData.files]
2648
.f5_selected_copyloop:
2725
.f5_selected_copyloop:
2649
        lodsd
2726
        lodsd
2650
        test    byte [eax+303], 1
2727
        test    byte [eax+303], 1
2651
        jz      .f5_selected_copycont
2728
        jz      .f5_selected_copycont
2652
        mov     [bDestIsFolder], dl
2729
        mov     [bDestIsFolder], dl
Line 2664... Line 2741...
2664
.f5_selected_copycont:
2741
.f5_selected_copycont:
2665
        loop    .f5_selected_copyloop
2742
        loop    .f5_selected_copyloop
2666
.f5_multiple_cancel:
2743
.f5_multiple_cancel:
2667
        jmp     .copydone
2744
        jmp     .copydone
2668
.copy_GetFiles:
2745
.copy_GetFiles:
2669
        mov     ecx, [ebp + panel1_selected_num - panel1_data]
2746
        mov     ecx, [ebp + PanelData.selected_num]
2670
        cmp     ecx, 1
2747
        cmp     ecx, 1
2671
        adc     ecx, 0
2748
        adc     ecx, 0
2672
        shl     ecx, 2
2749
        shl     ecx, 2
2673
        call    xpgalloc
2750
        call    xpgalloc
2674
        test    eax, eax
2751
        test    eax, eax
Line 2679... Line 2756...
2679
        push    copy_AddDir     ; adddir
2756
        push    copy_AddDir     ; adddir
2680
        push    copy_AddFile    ; addfile
2757
        push    copy_AddFile    ; addfile
2681
        push    eax             ; items
2758
        push    eax             ; items
2682
        shr     ecx, 2
2759
        shr     ecx, 2
2683
        push    ecx             ; NumItems
2760
        push    ecx             ; NumItems
2684
        push    [ebp + panel1_hFile - panel1_data]
2761
        push    [ebp + PanelData.hFile]
2685
        mov     edi, eax
2762
        mov     edi, eax
2686
        call    get_curfile_folder_entry
2763
        call    get_curfile_folder_entry
2687
        mov     [edi], ecx
2764
        mov     [edi], ecx
2688
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2765
        cmp     [ebp + PanelData.selected_num], 0
2689
        jz      .cgf1
2766
        jz      .cgf1
2690
        mov     esi, [ebp + panel1_files - panel1_data]
2767
        mov     esi, [ebp + PanelData.files]
2691
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2768
        mov     ecx, [ebp + PanelData.numfiles]
2692
.cgf0:
2769
.cgf0:
2693
        lodsd
2770
        lodsd
2694
        test    byte [eax+303], 1
2771
        test    byte [eax+303], 1
2695
        jz      @f
2772
        jz      @f
2696
        stosd
2773
        stosd
2697
@@:
2774
@@:
2698
        loop    .cgf0
2775
        loop    .cgf0
2699
.cgf1:
2776
.cgf1:
2700
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
2777
        mov     eax, [ebp + PanelData.hPlugin]
2701
        call    [eax+PluginInfo.GetFiles]
2778
        call    [eax+PluginInfo.GetFiles]
2702
        pop     ecx ebp
2779
        pop     ecx ebp
2703
        call    pgfree
2780
        call    pgfree
2704
        jmp     .copydone
2781
        jmp     .copydone
Line 2705... Line 2782...
2705
 
2782
 
2706
.f3:
2783
.f3:
2707
        mov     eax, [ebp + panel1_files - panel1_data]
2784
        mov     eax, [ebp + PanelData.files]
2708
        mov     ecx, [eax+ecx*4]
2785
        mov     ecx, [eax+ecx*4]
2709
        test    byte [ecx], 10h
2786
        test    byte [ecx], 10h
2710
        jnz     .ret2
2787
        jnz     .ret2
2711
        lea     esi, [ebp + panel1_dir - panel1_data]
2788
        lea     esi, [ebp + PanelData.dir]
2712
        xor     eax, eax
2789
        xor     eax, eax
2713
        call    view_file
2790
        call    view_file
2714
.ret2:
2791
.ret2:
2715
        ret
2792
        ret
2716
.f4:
2793
.f4:
2717
        call    edit_file
2794
        call    edit_file
2718
        ret
2795
        ret
2719
.f8_has_selected:
2796
.f8_has_selected:
2720
        mov     edi, saved_file_name+511
2797
        mov     edi, saved_file_name+511
2721
        mov     byte [edi], 0
2798
        mov     byte [edi], 0
2722
        mov     eax, [ebp + panel1_selected_num - panel1_data]
2799
        mov     eax, [ebp + PanelData.selected_num]
2723
if lang eq ru
2800
if lang eq ru
2724
        cmp     eax, 1
2801
        cmp     eax, 1
2725
        jz      @f
2802
        jz      @f
2726
        dec     edi
2803
        dec     edi
Line 2765... Line 2842...
2765
        call    Message
2842
        call    Message
2766
        add     esp, 8
2843
        add     esp, 8
2767
        test    eax, eax
2844
        test    eax, eax
2768
        jnz     .ret2
2845
        jnz     .ret2
2769
        mov     [del_bSkipAll], 0
2846
        mov     [del_bSkipAll], 0
2770
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
2847
        mov     ecx, [ebp + PanelData.numfiles]
2771
        jecxz   .ret2
2848
        jecxz   .ret2
2772
        mov     esi, [ebp + panel1_files - panel1_data]
2849
        mov     esi, [ebp + PanelData.files]
2773
.f8_loop:
2850
.f8_loop:
2774
        lodsd
2851
        lodsd
2775
        test    byte [eax+303], 1
2852
        test    byte [eax+303], 1
2776
        jz      @f
2853
        jz      @f
2777
        call    delete_file
2854
        call    delete_file
Line 2780... Line 2857...
2780
        loop    .f8_loop
2857
        loop    .f8_loop
2781
.f8_multiple_cancel:
2858
.f8_multiple_cancel:
2782
        jmp     .copydone
2859
        jmp     .copydone
2783
.f8:
2860
.f8:
2784
; todo: delete files from plugin panel
2861
; todo: delete files from plugin panel
2785
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2862
        cmp     [ebp + PanelData.hPlugin], 0
2786
        jz      @f
2863
        jz      @f
2787
        ret
2864
        ret
2788
@@:
2865
@@:
2789
        cmp     [ebp + panel1_selected_num - panel1_data], 0
2866
        cmp     [ebp + PanelData.selected_num], 0
2790
        jnz     .f8_has_selected
2867
        jnz     .f8_has_selected
2791
        call    get_curfile_folder_entry
2868
        call    get_curfile_folder_entry
2792
        cmp     word [ecx+40], '..'
2869
        cmp     word [ecx+40], '..'
2793
        jnz     @f
2870
        jnz     @f
2794
        cmp     byte [ecx+42], 0
2871
        cmp     byte [ecx+42], 0
Line 2835... Line 2912...
2835
        jmp     .copydone
2912
        jmp     .copydone
2836
.ctrl_r:
2913
.ctrl_r:
2837
; Rescan panel
2914
; Rescan panel
2838
;       call    read_folder
2915
;       call    read_folder
2839
;       jmp     .done_redraw
2916
;       jmp     .done_redraw
2840
        mov     eax, [ebp + panel1_index - panel1_data]
2917
        mov     eax, [ebp + PanelData.index]
2841
        push    eax
2918
        push    eax
2842
        call    get_curfile_name
2919
        call    get_curfile_name
2843
        mov     esi, ecx
2920
        mov     esi, ecx
2844
        mov     edi, saved_file_name
2921
        mov     edi, saved_file_name
2845
@@:
2922
@@:
2846
        lodsb
2923
        lodsb
2847
        stosb
2924
        stosb
2848
        test    al, al
2925
        test    al, al
2849
        jnz     @b
2926
        jnz     @b
2850
.ctrl_r.doread:
2927
.ctrl_r.doread:
2851
        push    [ebp + panel1_start - panel1_data]
2928
        push    [ebp + PanelData.start]
2852
        call    read_folder
2929
        call    read_folder
2853
        pop     [ebp + panel1_start - panel1_data]
2930
        pop     [ebp + PanelData.start]
2854
        pop     [ebp + panel1_index - panel1_data]
2931
        pop     [ebp + PanelData.index]
2855
        or      eax, -1
2932
        or      eax, -1
2856
@@:
2933
@@:
2857
        inc     eax
2934
        inc     eax
2858
        cmp     eax, [ebp + panel1_numfiles - panel1_data]
2935
        cmp     eax, [ebp + PanelData.numfiles]
2859
        jae     .ctrl_r.notfound
2936
        jae     .ctrl_r.notfound
2860
        mov     ecx, [ebp + panel1_files - panel1_data]
2937
        mov     ecx, [ebp + PanelData.files]
2861
        mov     esi, [ecx+eax*4]
2938
        mov     esi, [ecx+eax*4]
2862
        add     esi, 40
2939
        add     esi, 40
2863
        mov     edi, saved_file_name
2940
        mov     edi, saved_file_name
2864
        call    strcmpi
2941
        call    strcmpi
2865
        jnz     @b
2942
        jnz     @b
2866
.ctrl_r.found:
2943
.ctrl_r.found:
2867
        mov     [ebp + panel1_index - panel1_data], eax
2944
        mov     [ebp + PanelData.index], eax
2868
.ctrl_r.notfound:
2945
.ctrl_r.notfound:
2869
        mov     eax, [ebp + panel1_numfiles - panel1_data]
2946
        mov     eax, [ebp + PanelData.numfiles]
2870
        dec     eax
2947
        dec     eax
2871
        cmp     [ebp + panel1_index - panel1_data], eax
2948
        cmp     [ebp + PanelData.index], eax
2872
        jbe     @f
2949
        jbe     @f
2873
        mov     [ebp + panel1_index - panel1_data], eax
2950
        mov     [ebp + PanelData.index], eax
2874
@@:
2951
@@:
2875
        mov     eax, [ebp + panel1_index - panel1_data]
2952
        mov     eax, [ebp + PanelData.index]
2876
        cmp     [ebp + panel1_start - panel1_data], eax
2953
        cmp     [ebp + PanelData.start], eax
2877
        jbe     @f
2954
        jbe     @f
2878
        mov     [ebp + panel1_start - panel1_data], eax
2955
        mov     [ebp + PanelData.start], eax
2879
@@:
2956
@@:
2880
        inc     eax
2957
        inc     eax
2881
        sub     eax, [ebp + panel1_colst - panel1_data]
2958
        sub     eax, [ebp + PanelData.colst]
2882
        jae     @f
2959
        jae     @f
2883
        xor     eax, eax
2960
        xor     eax, eax
2884
@@:
2961
@@:
2885
        cmp     [ebp + panel1_start - panel1_data], eax
2962
        cmp     [ebp + PanelData.start], eax
2886
        jae     @f
2963
        jae     @f
2887
        mov     [ebp + panel1_start - panel1_data], eax
2964
        mov     [ebp + PanelData.start], eax
2888
@@:
2965
@@:
2889
        mov     eax, [ebp + panel1_numfiles - panel1_data]
2966
        mov     eax, [ebp + PanelData.numfiles]
2890
        sub     eax, [ebp + panel1_colst - panel1_data]
2967
        sub     eax, [ebp + PanelData.colst]
2891
        jbe     @f
2968
        jbe     @f
2892
        cmp     [ebp + panel1_start - panel1_data], eax
2969
        cmp     [ebp + PanelData.start], eax
2893
        jbe     @f
2970
        jbe     @f
2894
        mov     [ebp + panel1_start - panel1_data], eax
2971
        mov     [ebp + PanelData.start], eax
2895
@@:
2972
@@:
2896
        jmp     .done_redraw
2973
        jmp     .done_redraw
2897
.menu:
2974
.menu:
2898
; todo: context menu for plugin panel
2975
; todo: context menu for plugin panel
2899
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
2976
        cmp     [ebp + PanelData.hPlugin], 0
2900
        jz      @f
2977
        jz      @f
2901
        ret
2978
        ret
2902
@@:
2979
@@:
2903
; display context menu
2980
; display context menu
2904
; ignore folders
2981
; ignore folders
Line 3120... Line 3197...
3120
        cmp     byte [esi], 0
3197
        cmp     byte [esi], 0
3121
        jz      .ret2
3198
        jz      .ret2
3122
        cmp     byte [esi], '/'
3199
        cmp     byte [esi], '/'
3123
        jz      .mkdir_absolute_path
3200
        jz      .mkdir_absolute_path
3124
        push    esi
3201
        push    esi
3125
        lea     edi, [ebp + panel1_dir - panel1_data]
3202
        lea     edi, [ebp + PanelData.dir]
3126
        or      ecx, -1
3203
        or      ecx, -1
3127
        xor     eax, eax
3204
        xor     eax, eax
3128
        repnz   scasb
3205
        repnz   scasb
3129
        not     ecx
3206
        not     ecx
3130
        mov     edi, esi
3207
        mov     edi, esi
Line 3149... Line 3226...
3149
        std
3226
        std
3150
        lea     esi, [esi+ecx-1]
3227
        lea     esi, [esi+ecx-1]
3151
        rep     movsb
3228
        rep     movsb
3152
        cld
3229
        cld
3153
        pop     edi
3230
        pop     edi
3154
        lea     esi, [ebp + panel1_dir - panel1_data]
3231
        lea     esi, [ebp + PanelData.dir]
3155
        push    edi
3232
        push    edi
3156
        mov     ecx, edx
3233
        mov     ecx, edx
3157
        rep     movsb
3234
        rep     movsb
3158
        mov     byte [edi-1], '/'
3235
        mov     byte [edi-1], '/'
3159
        pop     esi
3236
        pop     esi
Line 3162... Line 3239...
3162
        push    2
3239
        push    2
3163
        call    makedir
3240
        call    makedir
3164
        jmp     .copydone
3241
        jmp     .copydone
3165
.change_mode:
3242
.change_mode:
3166
        dec     eax
3243
        dec     eax
3167
        mov     [ebp + panel1_colmode - panel1_data], eax
3244
        mov     [ebp + PanelData.colmode], eax
3168
        call    calc_colwidths
3245
        call    calc_colwidths
3169
        jmp     draw_panel
3246
        jmp     draw_panel
3170
.quick_jump:
3247
.quick_jump:
3171
        dec     eax
3248
        dec     eax
3172
        cmp     al, 10
3249
        cmp     al, 10
Line 3178... Line 3255...
3178
        jnz     @f
3255
        jnz     @f
3179
        ret
3256
        ret
3180
@@:
3257
@@:
3181
        push    eax
3258
        push    eax
3182
        call    close_plugin_panels
3259
        call    close_plugin_panels
3183
        lea     esi, [ebp + panel1_dir - panel1_data]
3260
        lea     esi, [ebp + PanelData.dir]
3184
        push    esi
3261
        push    esi
3185
        mov     edi, prev_dir
3262
        mov     edi, prev_dir
3186
@@:
3263
@@:
3187
        lodsb
3264
        lodsb
3188
        stosb
3265
        stosb
Line 3226... Line 3303...
3226
        mov     al, [tolower_table+eax]
3303
        mov     al, [tolower_table+eax]
3227
        mov     [esi-1], al
3304
        mov     [esi-1], al
3228
        test    al, al
3305
        test    al, al
3229
        jnz     @b
3306
        jnz     @b
3230
@@:
3307
@@:
3231
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3308
        mov     ecx, [ebp + PanelData.numfiles]
3232
        mov     ebx, [ebp + panel1_files - panel1_data]
3309
        mov     ebx, [ebp + PanelData.files]
3233
        jecxz   .noselect
3310
        jecxz   .noselect
3234
        mov     eax, [ebx]
3311
        mov     eax, [ebx]
3235
        cmp     word [eax+40], '..'
3312
        cmp     word [eax+40], '..'
3236
        jnz     .selectloop
3313
        jnz     .selectloop
3237
        cmp     byte [eax+42], 0
3314
        cmp     byte [eax+42], 0
Line 3259... Line 3336...
3259
        cmp     byte [esp], 0
3336
        cmp     byte [esp], 0
3260
        jz      .doselect
3337
        jz      .doselect
3261
        test    byte [esi+303], 1
3338
        test    byte [esi+303], 1
3262
        jz      @f
3339
        jz      @f
3263
        and     byte [esi+303], not 1
3340
        and     byte [esi+303], not 1
3264
        sub     dword [ebp + panel1_selected_size - panel1_data], eax
3341
        sub     dword [ebp + PanelData.selected_size], eax
3265
        mov     eax, [esi+36]
3342
        mov     eax, [esi+36]
3266
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], eax
3343
        sbb     dword [ebp + PanelData.selected_size+4], eax
3267
        dec     dword [ebp + panel1_selected_num - panel1_data]
3344
        dec     dword [ebp + PanelData.selected_num]
3268
        jmp     @f
3345
        jmp     @f
3269
.doselect:
3346
.doselect:
3270
        test    byte [esi+303], 1
3347
        test    byte [esi+303], 1
3271
        jnz     @f
3348
        jnz     @f
3272
        or      byte [esi+303], 1
3349
        or      byte [esi+303], 1
3273
        add     dword [ebp + panel1_selected_size - panel1_data], eax
3350
        add     dword [ebp + PanelData.selected_size], eax
3274
        mov     eax, [esi+36]
3351
        mov     eax, [esi+36]
3275
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], eax
3352
        adc     dword [ebp + PanelData.selected_size+4], eax
3276
        inc     dword [ebp + panel1_selected_num - panel1_data]
3353
        inc     dword [ebp + PanelData.selected_num]
3277
@@:
3354
@@:
3278
        add     ebx, 4
3355
        add     ebx, 4
3279
        dec     ecx
3356
        dec     ecx
3280
        jnz     .selectloop
3357
        jnz     .selectloop
3281
        pop     eax
3358
        pop     eax
3282
        jmp     .done_redraw
3359
        jmp     .done_redraw
3283
.greyasterisk:
3360
.greyasterisk:
3284
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3361
        mov     ecx, [ebp + PanelData.numfiles]
3285
        mov     esi, [ebp + panel1_files - panel1_data]
3362
        mov     esi, [ebp + PanelData.files]
3286
        jecxz   .galoopdone
3363
        jecxz   .galoopdone
3287
.galoop:
3364
.galoop:
3288
        lodsd
3365
        lodsd
3289
        cmp     word [eax+40], '..'
3366
        cmp     word [eax+40], '..'
3290
        jnz     @f
3367
        jnz     @f
Line 3293... Line 3370...
3293
@@:
3370
@@:
3294
        xor     byte [eax+303], 1
3371
        xor     byte [eax+303], 1
3295
        mov     edx, [eax+32]
3372
        mov     edx, [eax+32]
3296
        test    byte [eax+303], 1
3373
        test    byte [eax+303], 1
3297
        jz      .gadel
3374
        jz      .gadel
3298
        add     dword [ebp + panel1_selected_size - panel1_data], edx
3375
        add     dword [ebp + PanelData.selected_size], edx
3299
        mov     edx, [eax+36]
3376
        mov     edx, [eax+36]
3300
        adc     dword [ebp + panel1_selected_size+4 - panel1_data], edx
3377
        adc     dword [ebp + PanelData.selected_size+4], edx
3301
        inc     dword [ebp + panel1_selected_num - panel1_data]
3378
        inc     dword [ebp + PanelData.selected_num]
3302
        jmp     .gacont
3379
        jmp     .gacont
3303
.gadel:
3380
.gadel:
3304
        sub     dword [ebp + panel1_selected_size - panel1_data], edx
3381
        sub     dword [ebp + PanelData.selected_size], edx
3305
        mov     edx, [eax+36]
3382
        mov     edx, [eax+36]
3306
        sbb     dword [ebp + panel1_selected_size+4 - panel1_data], edx
3383
        sbb     dword [ebp + PanelData.selected_size+4], edx
3307
        dec     dword [ebp + panel1_selected_num - panel1_data]
3384
        dec     dword [ebp + PanelData.selected_num]
3308
.gacont:
3385
.gacont:
3309
        loop    .galoop
3386
        loop    .galoop
3310
.galoopdone:
3387
.galoopdone:
3311
        jmp     .done_redraw
3388
        jmp     .done_redraw
Line 3312... Line 3389...
3312
 
3389
 
3313
@@:
3390
@@:
3314
        call    close_plugin_panel
3391
        call    close_plugin_panel
3315
close_plugin_panels:
3392
close_plugin_panels:
3316
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
3393
        cmp     [ebp + PanelData.hPlugin], 0
3317
        jnz     @b
3394
        jnz     @b
Line 3318... Line 3395...
3318
        ret
3395
        ret
3319
 
3396
 
3320
close_plugin_panel:
3397
close_plugin_panel:
3321
; close plugin and restore old directory
3398
; close plugin and restore old directory
3322
        mov     esi, [ebp + panel1_parents - panel1_data]
3399
        mov     esi, [ebp + PanelData.parents]
3323
        add     esi, [ebp + panel1_parents_sz - panel1_data]
3400
        add     esi, [ebp + PanelData.parents_sz]
3324
@@:
3401
@@:
3325
        dec     esi
3402
        dec     esi
3326
        cmp     byte [esi-1], 0
3403
        cmp     byte [esi-1], 0
3327
        jnz     @b
3404
        jnz     @b
3328
        push    esi
3405
        push    esi
3329
        lea     edi, [ebp + panel1_dir - panel1_data]
3406
        lea     edi, [ebp + PanelData.dir]
3330
@@:
3407
@@:
3331
        lodsb
3408
        lodsb
3332
        stosb
3409
        stosb
3333
        test    al, al
3410
        test    al, al
3334
        jnz     @b
3411
        jnz     @b
3335
        pop     esi
3412
        pop     esi
3336
        sub     esi, 9
3413
        sub     esi, 9
3337
        mov     edx, [esi]      ; hPlugin
3414
        mov     edx, [esi]      ; hPlugin
3338
        mov     ebx, [esi+4]    ; hFile
3415
        mov     ebx, [esi+4]    ; hFile
3339
        sub     esi, [ebp + panel1_parents - panel1_data]
3416
        sub     esi, [ebp + PanelData.parents]
3340
        mov     [ebp + panel1_parents_sz - panel1_data], esi
3417
        mov     [ebp + PanelData.parents_sz], esi
3341
        xchg    edx, [ebp + panel1_hPlugin - panel1_data]
3418
        xchg    edx, [ebp + PanelData.hPlugin]
3342
        xchg    ebx, [ebp + panel1_hFile - panel1_data]
3419
        xchg    ebx, [ebp + PanelData.hFile]
3343
        push    edx ebx
3420
        push    edx ebx
3344
        lea     ebx, [ebp + panel1_plugin_info - panel1_data]
3421
        lea     ebx, [ebp + PanelData.plugin_flags] ;plugin_info
3345
        and     dword [ebx], 0
3422
        and     dword [ebx], 0
3346
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
3423
        mov     eax, [ebp + PanelData.hPlugin]
3347
        test    eax, eax
3424
        test    eax, eax
3348
        jz      @f
3425
        jz      @f
3349
        push    ebp
3426
        push    ebp
3350
        push    ebx
3427
        push    ebx
3351
        push    [ebp + panel1_hFile - panel1_data]
3428
        push    [ebp + PanelData.hFile]
3352
        call    [eax+PluginInfo.GetOpenPluginInfo]
3429
        call    [eax+PluginInfo.GetOpenPluginInfo]
3353
        pop     ebp
3430
        pop     ebp
Line 3373... Line 3450...
3373
        pop     ebp
3450
        pop     ebp
3374
        ret
3451
        ret
Line 3375... Line 3452...
3375
 
3452
 
3376
panels_IsHandleUsed:
3453
panels_IsHandleUsed:
3377
; edx=hPlugin, ebx=hFile
3454
; edx=hPlugin, ebx=hFile
3378
        mov     ebp, panel1_data
3455
        mov     ebp, panel1
3379
        call    .1
3456
        call    .1
3380
        jz      .ret
3457
        jz      .ret
Line 3381... Line 3458...
3381
        mov     ebp, panel2_data
3458
        mov     ebp, panel2
3382
 
3459
 
3383
.1:
3460
.1:
3384
        cmp     edx, [ebp+panel1_hPlugin-panel1_data]
3461
        cmp     edx, [ebp+ PanelData.hPlugin]
3385
        jnz     @f
3462
        jnz     @f
3386
        cmp     ebx, [ebp+panel1_hFile-panel1_data]
3463
        cmp     ebx, [ebp+ PanelData.hFile]
3387
        jz      .ret
3464
        jz      .ret
3388
@@:
3465
@@:
3389
        mov     esi, [ebp + panel1_parents_sz - panel1_data]
3466
        mov     esi, [ebp + PanelData.parents_sz]
3390
        test    esi, esi
3467
        test    esi, esi
3391
        jnz     @f
3468
        jnz     @f
3392
        inc     esi
3469
        inc     esi
3393
.ret:
3470
.ret:
3394
        ret
3471
        ret
3395
@@:
3472
@@:
3396
        add     esi, [ebp + panel1_parents - panel1_data]
3473
        add     esi, [ebp + PanelData.parents]
3397
@@:
3474
@@:
3398
        dec     esi
3475
        dec     esi
3399
        cmp     byte [esi-1], 0
3476
        cmp     byte [esi-1], 0
3400
        jnz     @b
3477
        jnz     @b
3401
        sub     esi, 9
3478
        sub     esi, 9
3402
        cmp     edx, [esi]      ; hPlugin
3479
        cmp     edx, [esi]      ; hPlugin
3403
        jnz     .no
3480
        jnz     .no
3404
        mov     ebx, [esi+4]    ; hFile
3481
        mov     ebx, [esi+4]    ; hFile
3405
        jz      .ret
3482
        jz      .ret
3406
.no:
3483
.no:
3407
        cmp     esi, [ebp + panel1_parents - panel1_data]
3484
        cmp     esi, [ebp + PanelData.parents]
3408
        jnz     @b
3485
        jnz     @b
Line 3409... Line 3486...
3409
        inc     esi
3486
        inc     esi
3410
        ret
3487
        ret
3411
 
3488
 
3412
panels_OnExit:
3489
panels_OnExit:
3413
; close plugin panels
3490
; close plugin panels
3414
        mov     ebp, panel1_data
3491
        mov     ebp, panel1
3415
        call    close_plugin_panels
3492
        call    close_plugin_panels
Line 3416... Line 3493...
3416
        mov     ebp, panel2_data
3493
        mov     ebp, panel2
3417
        call    close_plugin_panels
3494
        call    close_plugin_panels
3418
        ret
3495
        ret
3419
 
3496
 
3420
panels_OnRedraw:
3497
panels_OnRedraw:
3421
        or      [cursor_x], -1
3498
        or      [cursor_x], -1
3422
        or      [cursor_y], -1
3499
        or      [cursor_y], -1
3423
        call    draw_cmdbar
3500
        call    draw_cmdbar
3424
        mov     ebp, panel1_data
3501
        mov     ebp, panel1
3425
        call    calc_colwidths
3502
        call    calc_colwidths
3426
        call    draw_panel
3503
        call    draw_panel
Line 3427... Line 3504...
3427
        mov     ebp, panel2_data
3504
        mov     ebp, panel2
Line 3443... Line 3520...
3443
        jz      exit
3520
        jz      exit
3444
        mov     [console_data_ptr], eax
3521
        mov     [console_data_ptr], eax
3445
        mov     edi, eax
3522
        mov     edi, eax
3446
        mov     ax, 0720h
3523
        mov     ax, 0720h
3447
        rep     stosw
3524
        rep     stosw
3448
        mov     [panel1_left], ecx
3525
        mov     [panel1.left], ecx
3449
        mov     [panel1_top], ecx
3526
        mov     [panel1.top], ecx
3450
        mov     [panel2_top], ecx
3527
        mov     [panel2.top], ecx
3451
        mov     eax, [cur_width]
3528
        mov     eax, [cur_width]
3452
        inc     eax
3529
        inc     eax
3453
        shr     eax, 1
3530
        shr     eax, 1
3454
        mov     [panel1_width], eax
3531
        mov     [panel1.width], eax
3455
        mov     [panel2_left], eax
3532
        mov     [panel2.left], eax
3456
        sub     eax, [cur_width]
3533
        sub     eax, [cur_width]
3457
        neg     eax
3534
        neg     eax
3458
        mov     [panel2_width], eax
3535
        mov     [panel2.width], eax
3459
        mov     eax, [cur_height]
3536
        mov     eax, [cur_height]
3460
        dec     eax
3537
        dec     eax
3461
        dec     eax
3538
        dec     eax
3462
        mov     [panel1_height], eax
3539
        mov     [panel1.height], eax
3463
        mov     [panel2_height], eax
3540
        mov     [panel2.height], eax
3464
        ret
3541
        ret
Line 3465... Line 3542...
3465
 
3542
 
3466
get_curfile_folder_entry:
3543
get_curfile_folder_entry:
3467
        mov     ecx, [ebp + panel1_index - panel1_data]
3544
        mov     ecx, [ebp + PanelData.index]
3468
        shl     ecx, 2
3545
        shl     ecx, 2
3469
        add     ecx, [ebp + panel1_files - panel1_data]
3546
        add     ecx, [ebp + PanelData.files]
3470
        mov     ecx, [ecx]
3547
        mov     ecx, [ecx]
3471
        ret
3548
        ret
3472
get_curfile_name:
3549
get_curfile_name:
3473
        call    get_curfile_folder_entry
3550
        call    get_curfile_folder_entry
3474
        add     ecx, 40
3551
        add     ecx, 40
Line 3475... Line 3552...
3475
        ret
3552
        ret
3476
 
3553
 
3477
quick_find:
3554
quick_find:
3478
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3555
        cmp     [ebp + PanelData.numfiles], 0
3479
        jz      .nof
3556
        jz      .nof
3480
        mov     ecx, [ebp + panel1_index - panel1_data]
3557
        mov     ecx, [ebp + PanelData.index]
3481
.scanloop:
3558
.scanloop:
3482
        mov     edi, ecx
3559
        mov     edi, ecx
3483
        shl     edi, 2
3560
        shl     edi, 2
3484
        add     edi, [ebp + panel1_files - panel1_data]
3561
        add     edi, [ebp + PanelData.files]
3485
        mov     edi, [edi]
3562
        mov     edi, [edi]
3486
        add     edi, 40
3563
        add     edi, 40
3487
        mov     esi, quick_search_buf + 12
3564
        mov     esi, quick_search_buf + 12
Line 3493... Line 3570...
3493
        jnz     .no
3570
        jnz     .no
3494
        inc     edi
3571
        inc     edi
3495
        jmp     @b
3572
        jmp     @b
3496
.no:
3573
.no:
3497
        inc     ecx
3574
        inc     ecx
3498
        cmp     ecx, [ebp + panel1_numfiles - panel1_data]
3575
        cmp     ecx, [ebp + PanelData.numfiles]
3499
        jb      @f
3576
        jb      @f
3500
        xor     ecx, ecx
3577
        xor     ecx, ecx
3501
@@:
3578
@@:
3502
        cmp     ecx, [ebp + panel1_index - panel1_data]
3579
        cmp     ecx, [ebp + PanelData.index]
3503
        jnz     .scanloop
3580
        jnz     .scanloop
3504
.nof:
3581
.nof:
3505
        stc
3582
        stc
3506
        ret
3583
        ret
3507
.ok:
3584
.ok:
3508
        cmp     ecx, [ebp + panel1_index - panel1_data]
3585
        cmp     ecx, [ebp + PanelData.index]
3509
        jz      .ret
3586
        jz      .ret
3510
        mov     [ebp + panel1_index - panel1_data], ecx
3587
        mov     [ebp + PanelData.index], ecx
3511
        mov     eax, [ebp + panel1_height - panel1_data]
3588
        mov     eax, [ebp + PanelData.height]
3512
        shr     eax, 1
3589
        shr     eax, 1
3513
        sub     ecx, eax
3590
        sub     ecx, eax
3514
        jae     @f
3591
        jae     @f
3515
        xor     ecx, ecx
3592
        xor     ecx, ecx
3516
@@:
3593
@@:
3517
        mov     eax, [ebp + panel1_numfiles - panel1_data]
3594
        mov     eax, [ebp + PanelData.numfiles]
3518
        sub     eax, [ebp + panel1_colst - panel1_data]
3595
        sub     eax, [ebp + PanelData.colst]
3519
        jnc     @f
3596
        jnc     @f
3520
        xor     eax, eax
3597
        xor     eax, eax
3521
        xor     ecx, ecx
3598
        xor     ecx, ecx
3522
@@:
3599
@@:
3523
        cmp     ecx, eax
3600
        cmp     ecx, eax
3524
        jb      @f
3601
        jb      @f
3525
        mov     ecx, eax
3602
        mov     ecx, eax
3526
@@:
3603
@@:
3527
        mov     [ebp + panel1_start - panel1_data], ecx
3604
        mov     [ebp + PanelData.start], ecx
3528
        call    draw_panel
3605
        call    draw_panel
3529
.ret:
3606
.ret:
3530
        clc
3607
        clc
3531
        ret
3608
        ret
Line 3532... Line 3609...
3532
 
3609
 
3533
quick_find_next:
3610
quick_find_next:
3534
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3611
        cmp     [ebp + PanelData.numfiles], 0
3535
        jz      quick_find.nof
3612
        jz      quick_find.nof
3536
        mov     ecx, [ebp + panel1_index - panel1_data]
3613
        mov     ecx, [ebp + PanelData.index]
Line 3537... Line 3614...
3537
        jmp     quick_find.no
3614
        jmp     quick_find.no
3538
 
3615
 
3539
quick_find_prev:
3616
quick_find_prev:
3540
        cmp     [ebp + panel1_numfiles - panel1_data], 0
3617
        cmp     [ebp + PanelData.numfiles], 0
3541
        jz      quick_find.nof
3618
        jz      quick_find.nof
3542
        mov     ecx, [ebp + panel1_index - panel1_data]
3619
        mov     ecx, [ebp + PanelData.index]
3543
.scanloop:
3620
.scanloop:
3544
        dec     ecx
3621
        dec     ecx
3545
        jns     @f
3622
        jns     @f
3546
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
3623
        mov     ecx, [ebp + PanelData.numfiles]
3547
        dec     ecx
3624
        dec     ecx
3548
@@:
3625
@@:
3549
        cmp     ecx, [ebp + panel1_index - panel1_data]
3626
        cmp     ecx, [ebp + PanelData.index]
3550
        jz      quick_find.nof
3627
        jz      quick_find.nof
3551
        mov     edi, ecx
3628
        mov     edi, ecx
3552
        shl     edi, 2
3629
        shl     edi, 2
3553
        add     edi, [ebp + panel1_files - panel1_data]
3630
        add     edi, [ebp + PanelData.files]
3554
        mov     edi, [edi]
3631
        mov     edi, [edi]
3555
        add     edi, 40
3632
        add     edi, 40
3556
        mov     esi, quick_search_buf + 12
3633
        mov     esi, quick_search_buf + 12
Line 3583... Line 3660...
3583
end if
3660
end if
3584
        sub     ecx, 13
3661
        sub     ecx, 13
3585
        mov     ebp, [active_panel]
3662
        mov     ebp, [active_panel]
3586
        push    3
3663
        push    3
3587
        pop     edx
3664
        pop     edx
3588
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
3665
        cmp     [ebp + PanelData.hPlugin], 0
3589
        jz      .native
3666
        jz      .native
3590
        mov     esi, [ebp + panel1_parents - panel1_data]
3667
        mov     esi, [ebp + PanelData.parents]
3591
        add     esi, [ebp + panel1_parents_sz - panel1_data]
3668
        add     esi, [ebp + PanelData.parents_sz]
3592
@@:
3669
@@:
3593
        dec     esi
3670
        dec     esi
3594
        cmp     byte [esi-1], 0
3671
        cmp     byte [esi-1], 0
3595
        jz      @f
3672
        jz      @f
3596
        cmp     byte [esi-1], '/'
3673
        cmp     byte [esi-1], '/'
Line 3607... Line 3684...
3607
@@:
3684
@@:
3608
        sub     edi, [esp]
3685
        sub     edi, [esp]
3609
        sub     [esp+4], edi
3686
        sub     [esp+4], edi
3610
        add     [esp], edi
3687
        add     [esp], edi
3611
        pop     edi ecx
3688
        pop     edi ecx
3612
        lea     esi, [ebp + panel1_dir - panel1_data]
3689
        lea     esi, [ebp + PanelData.dir]
3613
        cmp     byte [esi+1], 0
3690
        cmp     byte [esi+1], 0
3614
        jnz     @f
3691
        jnz     @f
3615
        inc     esi
3692
        inc     esi
3616
@@:
3693
@@:
3617
        jmp     .main
3694
        jmp     .main
3618
.native:
3695
.native:
3619
        lea     esi, [ebp + panel1_dir - panel1_data]
3696
        lea     esi, [ebp + PanelData.dir]
3620
@@:
3697
@@:
3621
        lodsb
3698
        lodsb
3622
        stosb
3699
        stosb
3623
        dec     ecx
3700
        dec     ecx
3624
        test    al, al
3701
        test    al, al
Line 3642... Line 3719...
3642
        dec     esi
3719
        dec     esi
3643
        mov     ebx, esi
3720
        mov     ebx, esi
3644
        sub     ebx, [esp]
3721
        sub     ebx, [esp]
3645
        dec     esi
3722
        dec     esi
3646
        push    esi
3723
        push    esi
3647
        mov     esi, [ebp + panel1_index - panel1_data]
3724
        mov     esi, [ebp + PanelData.index]
3648
        shl     esi, 2
3725
        shl     esi, 2
3649
        add     esi, [ebp + panel1_files - panel1_data]
3726
        add     esi, [ebp + PanelData.files]
3650
        mov     esi, [esi]
3727
        mov     esi, [esi]
3651
        add     esi, 40
3728
        add     esi, 40
3652
        push    esi
3729
        push    esi
3653
@@:
3730
@@:
3654
        lodsb
3731
        lodsb
Line 3991... Line 4068...
3991
        mov     edi, [console_data_ptr]
4068
        mov     edi, [console_data_ptr]
3992
        lea     edi, [edi + edx*2]
4069
        lea     edi, [edi + edx*2]
3993
        pop     edx
4070
        pop     edx
3994
        ret
4071
        ret
Line -... Line 4072...
-
 
4072
 
-
 
4073
;description:
-
 
4074
; draw keys F1-F10
3995
 
4075
align 16
3996
draw_keybar:
4076
draw_keybar:
3997
        pushad
4077
        pushad
3998
        xor     eax, eax
4078
        xor     eax, eax
3999
        test    [ctrlstate], 3
4079
        test    [ctrlstate], 3
Line 4105... Line 4185...
4105
        popad
4185
        popad
4106
        ret
4186
        ret
Line 4107... Line 4187...
4107
 
4187
 
4108
draw_cmdbar:
4188
draw_cmdbar:
4109
        mov     esi, [active_panel]
4189
        mov     esi, [active_panel]
4110
        add     esi, panel1_dir - panel1_data
4190
        add     esi, PanelData.dir
4111
        xor     eax, eax
4191
        xor     eax, eax
4112
        mov     edx, [cur_height]
4192
        mov     edx, [cur_height]
4113
        dec     edx
4193
        dec     edx
4114
        dec     edx
4194
        dec     edx
Line 4168... Line 4248...
4168
        stosw
4248
        stosw
4169
        ret
4249
        ret
Line 4170... Line 4250...
4170
 
4250
 
4171
calc_colwidths:
4251
calc_colwidths:
4172
; in: ebp->panel data
4252
; in: ebp->panel data
4173
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
4253
        imul    esi, [ebp + PanelData.colmode], PanelMode.size
4174
        add     esi, colmodes
4254
        add     esi, colmodes
4175
        lodsd
4255
        lodsd
4176
        mov     ecx, eax
4256
        mov     ecx, eax
4177
        lea     edx, [ecx-1]
4257
        lea     edx, [ecx-1]
Line 4184... Line 4264...
4184
        add     edx, eax
4264
        add     edx, eax
4185
        cmp     al, 1
4265
        cmp     al, 1
4186
        adc     ebx, 0
4266
        adc     ebx, 0
4187
        loop    .loop
4267
        loop    .loop
4188
        pop     esi ecx
4268
        pop     esi ecx
4189
        lea     edi, [ebp + panel1_colwidths - panel1_data]
4269
        lea     edi, [ebp + PanelData.colwidths]
4190
        test    ebx, ebx
4270
        test    ebx, ebx
4191
        jz      .loop2
4271
        jz      .loop2
4192
        mov     eax, [ebp + panel1_width - panel1_data]
4272
        mov     eax, [ebp + PanelData.width]
4193
        dec     eax
4273
        dec     eax
4194
        dec     eax
4274
        dec     eax
4195
        sub     eax, edx
4275
        sub     eax, edx
4196
        jae     @f
4276
        jae     @f
4197
        xor     eax, eax
4277
        xor     eax, eax
Line 4262... Line 4342...
4262
 
4342
 
4263
;input:
4343
;input:
4264
; ebp - pointer to panel1 or panel2
4344
; ebp - pointer to panel1 or panel2
4265
align 16
4345
align 16
4266
draw_panel:
4346
draw_panel:
4267
        mov     eax, [ebp + panel1_left - panel1_data]
4347
        mov     eax, [ebp + PanelData.left]
4268
        mov     edx, [ebp + panel1_top - panel1_data]
4348
        mov     edx, [ebp + PanelData.top]
4269
        call    get_console_ptr
4349
        call    get_console_ptr
4270
; draw border
4350
; draw border
4271
        mov     ah, [panel_border_color]
4351
        mov     ah, [panel_border_color]
4272
        mov     ebx, [ebp + panel1_width - panel1_data]
4352
        mov     ebx, [ebp + PanelData.width]
4273
        mov     edx, [ebp + panel1_height - panel1_data]
4353
        mov     edx, [ebp + PanelData.height]
4274
        call    draw_border
4354
        call    draw_border
4275
        push    eax
4355
        push    eax
4276
        mov     eax, [ebp + panel1_left - panel1_data]
4356
        mov     eax, [ebp + PanelData.left]
4277
        mov     edx, [ebp + panel1_top - panel1_data]
4357
        mov     edx, [ebp + PanelData.top]
4278
        add     edx, [ebp + panel1_height - panel1_data]
4358
        add     edx, [ebp + PanelData.height]
4279
        sub     edx, 3
4359
        sub     edx, 3
4280
        call    get_console_ptr
4360
        call    get_console_ptr
4281
        pop     eax
4361
        pop     eax
4282
        mov     al, 0xC7
4362
        mov     al, 0xC7
Line 4285... Line 4365...
4285
        lea     ecx, [ebx-2]
4365
        lea     ecx, [ebx-2]
4286
        rep     stosw
4366
        rep     stosw
4287
        mov     al, 0xB6
4367
        mov     al, 0xB6
4288
        stosw
4368
        stosw
Line 4289... Line 4369...
4289
 
4369
 
4290
        imul    esi, [ebp + panel1_colmode - panel1_data], PanelMode.size
4370
        imul    esi, [ebp + PanelData.colmode], PanelMode.size
4291
        add     esi, colmodes
4371
        add     esi, colmodes
4292
        lodsd
4372
        lodsd
4293
        mov     ecx, eax        ; number of columns
4373
        mov     ecx, eax        ; number of columns
4294
        lea     ebx, [ebp + panel1_colwidths - panel1_data]
4374
        lea     ebx, [ebp + PanelData.colwidths]
4295
        mov     eax, [ebp + panel1_left - panel1_data]
4375
        mov     eax, [ebp + PanelData.left]
4296
        inc     eax
4376
        inc     eax
4297
        mov     [column_left], eax
4377
        mov     [column_left], eax
4298
        mov     eax, [ebp + panel1_top - panel1_data]
4378
        mov     eax, [ebp + PanelData.top]
4299
        inc     eax
4379
        inc     eax
4300
        mov     [column_top], eax
4380
        mov     [column_top], eax
4301
        mov     eax, [ebp + panel1_height - panel1_data]
4381
        mov     eax, [ebp + PanelData.height]
4302
        sub     eax, 4
4382
        sub     eax, 4
4303
        mov     [column_height], eax
4383
        mov     [column_height], eax
4304
        dec     eax
4384
        dec     eax
4305
        mov     [ebp + panel1_colsz - panel1_data], eax
4385
        mov     [ebp + PanelData.colsz], eax
4306
        and     [ebp + panel1_colst - panel1_data], 0
4386
        and     [ebp + PanelData.colst], 0
4307
        mov     eax, [ebp + panel1_start - panel1_data]
4387
        mov     eax, [ebp + PanelData.start]
4308
        mov     [column_index], eax
4388
        mov     [column_index], eax
4309
        mov     [last_column_index], eax
4389
        mov     [last_column_index], eax
4310
.columns_loop:
4390
.columns_loop:
4311
        push    ecx
4391
        push    ecx
4312
        mov     eax, [ebx]
4392
        mov     eax, [ebx]
4313
        add     ebx, 4
4393
        add     ebx, 4
4314
        mov     [column_width], eax
4394
        mov     [column_width], eax
4315
        cmp     ecx, 1
4395
        cmp     ecx, 1
4316
        jz      .skip_right_border
4396
        jz      .skip_right_border
4317
        add     eax, [column_left]
4397
        add     eax, [column_left]
4318
        mov     edx, [ebp + panel1_top - panel1_data]
4398
        mov     edx, [ebp + PanelData.top]
4319
        call    get_console_ptr
4399
        call    get_console_ptr
4320
        mov     ah, [panel_header_color]
4400
        mov     ah, [panel_header_color]
4321
        mov     al, 0xD1
4401
        mov     al, 0xD1
4322
        mov     [edi], ax
4402
        mov     [edi], ax
Line 4384... Line 4464...
4384
        add     [column_left], eax
4464
        add     [column_left], eax
4385
        pop     ecx
4465
        pop     ecx
4386
        dec     ecx
4466
        dec     ecx
4387
        jnz     .columns_loop
4467
        jnz     .columns_loop
4388
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
4468
; ‡ £®«®¢®ª ¯ ­¥«¨ (⥪ãé ï ¯ ¯ª )
4389
        lea     esi, [ebp + panel1_dir - panel1_data]
4469
        lea     esi, [ebp + PanelData.dir]
4390
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
4470
        mov     eax, [ebp + PanelData.hPlugin]
4391
        test    eax, eax
4471
        test    eax, eax
4392
        jz      .native
4472
        jz      .native
4393
        push    ebp
4473
        push    ebp
4394
        push    esi
4474
        push    esi
4395
        mov     esi, [ebp + panel1_parents - panel1_data]
4475
        mov     esi, [ebp + PanelData.parents]
4396
        add     esi, [ebp + panel1_parents_sz - panel1_data]
4476
        add     esi, [ebp + PanelData.parents_sz]
4397
@@:
4477
@@:
4398
        dec     esi
4478
        dec     esi
4399
        cmp     byte [esi-1], 0
4479
        cmp     byte [esi-1], 0
4400
        jnz     @b
4480
        jnz     @b
4401
        push    esi
4481
        push    esi
4402
        push    execdata
4482
        push    execdata
4403
        push    [ebp + panel1_hFile - panel1_data]
4483
        push    [ebp + PanelData.hFile]
4404
        call    [eax+PluginInfo.GetPanelTitle]
4484
        call    [eax+PluginInfo.GetPanelTitle]
4405
        pop     ebp
4485
        pop     ebp
4406
        mov     esi, execdata
4486
        mov     esi, execdata
4407
.native:
4487
.native:
4408
        mov     edi, cur_header
4488
        mov     edi, cur_header
4409
        mov     ecx, [ebp + panel1_width - panel1_data]
4489
        mov     ecx, [ebp + PanelData.width]
4410
        sub     ecx, 6
4490
        sub     ecx, 6
4411
        cmp     byte [esi], '/'
4491
        cmp     byte [esi], '/'
4412
        jnz     .copy_rest
4492
        jnz     .copy_rest
4413
        dec     ecx
4493
        dec     ecx
4414
        movsb
4494
        movsb
Line 4443... Line 4523...
4443
        stosb
4523
        stosb
4444
        dec     ecx
4524
        dec     ecx
4445
        test    al, al
4525
        test    al, al
4446
        jnz     @b
4526
        jnz     @b
4447
.header_created:
4527
.header_created:
4448
        mov     edx, [ebp + panel1_top - panel1_data]
4528
        mov     edx, [ebp + PanelData.top]
4449
        mov     eax, [ebp + panel1_left - panel1_data]
4529
        mov     eax, [ebp + PanelData.left]
4450
        shr     ecx, 1
4530
        shr     ecx, 1
4451
        lea     eax, [eax+ecx+3]
4531
        lea     eax, [eax+ecx+3]
4452
        call    get_console_ptr
4532
        call    get_console_ptr
4453
        mov     ah, [panel_active_header_color]
4533
        mov     ah, [panel_active_header_color]
4454
        cmp     ebp, [active_panel]
4534
        cmp     ebp, [active_panel]
Line 4465... Line 4545...
4465
        stosw
4545
        stosw
4466
        jmp     @b
4546
        jmp     @b
4467
@@:
4547
@@:
4468
        mov     al, ' '
4548
        mov     al, ' '
4469
        stosw
4549
        stosw
4470
        mov     edx, [ebp + panel1_top - panel1_data]
4550
        mov     edx, [ebp + PanelData.top]
4471
        inc     edx
4551
        inc     edx
4472
        mov     eax, [ebp + panel1_left - panel1_data]
4552
        mov     eax, [ebp + PanelData.left]
4473
        inc     eax
4553
        inc     eax
4474
        call    get_console_ptr
4554
        call    get_console_ptr
4475
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
4555
        movzx   eax, [ebp + PanelData.sortmode]
4476
        mov     al, [compare_names+eax]
4556
        mov     al, [compare_names+eax]
4477
        stosb
4557
        stosb
4478
        mov     eax, [ebp + panel1_selected_num - panel1_data]
4558
        mov     eax, [ebp + PanelData.selected_num]
4479
        test    eax, eax
4559
        test    eax, eax
4480
        jz      .skip_selected_info
4560
        jz      .skip_selected_info
4481
; ˆ­ä®à¬ æ¨ï ® ¢ë¤¥«¥­­ëå ä ©« å
4561
; ˆ­ä®à¬ æ¨ï ® ¢ë¤¥«¥­­ëå ä ©« å
4482
        push    dword [ebp + panel1_selected_size+4 - panel1_data]
4562
        push    dword [ebp + PanelData.selected_size+4]
4483
        push    dword [ebp + panel1_selected_size - panel1_data]
4563
        push    dword [ebp + PanelData.selected_size]
4484
        call    fill_total_info
4564
        call    fill_total_info
4485
        mov     eax, [ebp + panel1_width - panel1_data]
4565
        mov     eax, [ebp + PanelData.width]
4486
        sub     eax, 2
4566
        sub     eax, 2
4487
        cmp     ecx, eax
4567
        cmp     ecx, eax
4488
        jbe     @f
4568
        jbe     @f
4489
        mov     ecx, eax
4569
        mov     ecx, eax
4490
        mov     edi, saved_file_name+512
4570
        mov     edi, saved_file_name+512
Line 4494... Line 4574...
4494
@@:
4574
@@:
4495
        mov     esi, edi
4575
        mov     esi, edi
4496
        sub     eax, ecx
4576
        sub     eax, ecx
4497
        shr     eax, 1
4577
        shr     eax, 1
4498
        inc     eax
4578
        inc     eax
4499
        add     eax, [ebp + panel1_left - panel1_data]
4579
        add     eax, [ebp + PanelData.left]
4500
        mov     edx, [ebp + panel1_top - panel1_data]
4580
        mov     edx, [ebp + PanelData.top]
4501
        add     edx, [ebp + panel1_height - panel1_data]
4581
        add     edx, [ebp + PanelData.height]
4502
        sub     edx, 3
4582
        sub     edx, 3
4503
        call    get_console_ptr
4583
        call    get_console_ptr
4504
        mov     ah, [panel_numselected_color]
4584
        mov     ah, [panel_numselected_color]
4505
@@:
4585
@@:
4506
        lodsb
4586
        lodsb
4507
        stosw
4587
        stosw
4508
        loop    @b
4588
        loop    @b
4509
.skip_selected_info:
4589
.skip_selected_info:
4510
; ˆ­ä®à¬ æ¨ï ®¡ ®¡é¥¬ ç¨á«¥ ¨ à §¬¥à¥ ä ©«®¢ ¯ ­¥«¨
4590
; ˆ­ä®à¬ æ¨ï ®¡ ®¡é¥¬ ç¨á«¥ ¨ à §¬¥à¥ ä ©«®¢ ¯ ­¥«¨
4511
        mov     eax, [ebp + panel1_total_num - panel1_data]
4591
        mov     eax, [ebp + PanelData.total_num]
4512
        push    dword [ebp + panel1_total_size+4 - panel1_data]
4592
        push    dword [ebp + PanelData.total_size+4]
4513
        push    dword [ebp + panel1_total_size - panel1_data]
4593
        push    dword [ebp + PanelData.total_size]
4514
        call    fill_total_info
4594
        call    fill_total_info
4515
        mov     eax, [ebp + panel1_width - panel1_data]
4595
        mov     eax, [ebp + PanelData.width]
4516
        sub     eax, 2
4596
        sub     eax, 2
4517
        cmp     ecx, eax
4597
        cmp     ecx, eax
4518
        jbe     @f
4598
        jbe     @f
4519
        mov     ecx, eax
4599
        mov     ecx, eax
4520
        mov     byte [edi+ecx-3], '.'
4600
        mov     byte [edi+ecx-3], '.'
4521
        mov     word [edi+ecx-2], '..'
4601
        mov     word [edi+ecx-2], '..'
4522
@@:
4602
@@:
4523
        sub     eax, ecx
4603
        sub     eax, ecx
4524
        shr     eax, 1
4604
        shr     eax, 1
4525
        inc     eax
4605
        inc     eax
4526
        add     eax, [ebp + panel1_left - panel1_data]
4606
        add     eax, [ebp + PanelData.left]
4527
        add     edx, [ebp + panel1_top - panel1_data]
4607
        add     edx, [ebp + PanelData.top]
4528
        add     edx, [ebp + panel1_height - panel1_data]
4608
        add     edx, [ebp + PanelData.height]
4529
        dec     edx
4609
        dec     edx
4530
        mov     esi, edi
4610
        mov     esi, edi
4531
        call    get_console_ptr
4611
        call    get_console_ptr
4532
        mov     ah, [panel_number_color]
4612
        mov     ah, [panel_number_color]
4533
@@:
4613
@@:
4534
        lodsb
4614
        lodsb
4535
        stosw
4615
        stosw
4536
        loop    @b
4616
        loop    @b
4537
        cmp     [ebp + panel1_numfiles - panel1_data], 0
4617
        cmp     [ebp + PanelData.numfiles], 0
4538
        jz      .skip_curinfo
4618
        jz      .skip_curinfo
4539
; ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ä ©«¥
4619
; ˆ­ä®à¬ æ¨ï ® ⥪ã饬 ä ©«¥
4540
        mov     ebx, [ebp + panel1_index - panel1_data]
4620
        mov     ebx, [ebp + PanelData.index]
4541
        mov     eax, [ebp + panel1_files - panel1_data]
4621
        mov     eax, [ebp + PanelData.files]
4542
        mov     ebx, [eax+ebx*4]
4622
        mov     ebx, [eax+ebx*4]
4543
        mov     eax, [ebp + panel1_left - panel1_data]
4623
        mov     eax, [ebp + PanelData.left]
4544
        add     eax, [ebp + panel1_width - panel1_data]
4624
        add     eax, [ebp + PanelData.width]
4545
        dec     eax
4625
        dec     eax
4546
        mov     edx, [ebp + panel1_top - panel1_data]
4626
        mov     edx, [ebp + PanelData.top]
4547
        add     edx, [ebp + panel1_height - panel1_data]
4627
        add     edx, [ebp + PanelData.height]
4548
        dec     edx
4628
        dec     edx
4549
        dec     edx
4629
        dec     edx
4550
        call    get_console_ptr
4630
        call    get_console_ptr
4551
        mov     ecx, [ebp + panel1_width - panel1_data]
4631
        mov     ecx, [ebp + PanelData.width]
4552
        dec     ecx
4632
        dec     ecx
4553
        dec     ecx
4633
        dec     ecx
4554
        cmp     [ebp + panel1_colmode - panel1_data], 3
4634
        cmp     [ebp + PanelData.colmode], 3
4555
        jz      .show_curname
4635
        jz      .show_curname
4556
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
4636
; ‚à¥¬ï ¬®¤¨ä¨ª æ¨¨
4557
        sub     edi, 5*2
4637
        sub     edi, 5*2
4558
        sub     ecx, 6
4638
        sub     ecx, 6
4559
        mov     al, [ebx+24+2]
4639
        mov     al, [ebx+24+2]
Line 4806... Line 4886...
4806
 
4886
 
4807
get_file_color:
4887
get_file_color:
4808
        mov     ah, [esi + 6]
4888
        mov     ah, [esi + 6]
4809
        cmp     ebp, [active_panel]
4889
        cmp     ebp, [active_panel]
4810
        jnz     @f
4890
        jnz     @f
4811
        cmp     ecx, [ebp + panel1_index - panel1_data]
4891
        cmp     ecx, [ebp + PanelData.index]
4812
        jnz     @f
4892
        jnz     @f
4813
        mov     ah, [esi + 7]
4893
        mov     ah, [esi + 7]
4814
@@:
4894
@@:
4815
        test    byte [esi + 303], 1
4895
        test    byte [esi + 303], 1
4816
        jnz     @f
4896
        jnz     @f
4817
        mov     ah, [esi + 4]
4897
        mov     ah, [esi + 4]
4818
        cmp     ebp, [active_panel]
4898
        cmp     ebp, [active_panel]
4819
        jnz     @f
4899
        jnz     @f
4820
        cmp     ecx, [ebp + panel1_index - panel1_data]
4900
        cmp     ecx, [ebp + PanelData.index]
4821
        jnz     @f
4901
        jnz     @f
4822
        mov     ah, [esi + 5]
4902
        mov     ah, [esi + 5]
4823
@@:
4903
@@:
Line 4824... Line 4904...
4824
        ret
4904
        ret
4825
 
4905
 
4826
draw_name_column:
4906
draw_name_column:
4827
        mov     eax, [column_index]
4907
        mov     eax, [column_index]
4828
        mov     [last_column_index], eax
4908
        mov     [last_column_index], eax
4829
        mov     edx, [ebp + panel1_numfiles - panel1_data]
4909
        mov     edx, [ebp + PanelData.numfiles]
4830
        mov     ecx, [column_height]
4910
        mov     ecx, [column_height]
4831
        dec     ecx
4911
        dec     ecx
4832
.l:
4912
.l:
4833
        cmp     [column_index], edx
4913
        cmp     [column_index], edx
4834
        jae     .ret
4914
        jae     .ret
4835
        push    ecx
4915
        push    ecx
4836
        mov     ecx, [column_index]
4916
        mov     ecx, [column_index]
4837
        mov     esi, [ebp + panel1_files - panel1_data]
4917
        mov     esi, [ebp + PanelData.files]
4838
        mov     esi, [esi+ecx*4]
4918
        mov     esi, [esi+ecx*4]
4839
        mov     ebx, [esi]
4919
        mov     ebx, [esi]
4840
        call    get_file_color
4920
        call    get_file_color
Line 4853... Line 4933...
4853
        mov     byte [edi], '}'
4933
        mov     byte [edi], '}'
4854
        jmp     .continue
4934
        jmp     .continue
4855
@@:
4935
@@:
4856
        test    bl, 10h
4936
        test    bl, 10h
4857
        jnz     .noalignext
4937
        jnz     .noalignext
4858
        mov     ebx, [ebp + panel1_colmode - panel1_data]
4938
        mov     ebx, [ebp + PanelData.colmode]
4859
; sizeof(PanelMode) = 40
4939
; sizeof(PanelMode) = 40
4860
        lea     ebx, [ebx+ebx*4]
4940
        lea     ebx, [ebx+ebx*4]
4861
        cmp     [colmodes+ebx*8+PanelMode.bAlignExtensions], 0
4941
        cmp     [colmodes+ebx*8+PanelMode.bAlignExtensions], 0
4862
        jz      .noalignext
4942
        jz      .noalignext
4863
        push    ecx
4943
        push    ecx
Line 4915... Line 4995...
4915
        inc     [column_index]
4995
        inc     [column_index]
4916
        pop     ecx
4996
        pop     ecx
4917
        dec     ecx
4997
        dec     ecx
4918
        jnz     .l
4998
        jnz     .l
4919
.ret:
4999
.ret:
4920
        mov     eax, [ebp + panel1_colsz - panel1_data]
5000
        mov     eax, [ebp + PanelData.colsz]
4921
        add     [ebp + panel1_colst - panel1_data], eax
5001
        add     [ebp + PanelData.colst], eax
4922
        cmp     ebp, panel1_data
5002
        cmp     ebp, panel1
4923
        jnz     .ret2
5003
        jnz     .ret2
4924
; —¨á«® íªà ­®¢
5004
; —¨á«® íªà ­®¢
4925
; calculate number of viewer and editor screens
5005
; calculate number of viewer and editor screens
4926
        xor     ebx, ebx
5006
        xor     ebx, ebx
4927
        xor     edx, edx
5007
        xor     edx, edx
Line 4993... Line 5073...
4993
        std
5073
        std
4994
        mov     ecx, [column_height]
5074
        mov     ecx, [column_height]
4995
        dec     ecx
5075
        dec     ecx
4996
        push    [last_column_index]
5076
        push    [last_column_index]
4997
.l:
5077
.l:
4998
        mov     edx, [ebp + panel1_numfiles - panel1_data]
5078
        mov     edx, [ebp + PanelData.numfiles]
4999
        cmp     [last_column_index], edx
5079
        cmp     [last_column_index], edx
5000
        jae     .ret
5080
        jae     .ret
5001
        push    ecx
5081
        push    ecx
5002
        push    edi
5082
        push    edi
5003
        mov     ecx, [last_column_index]
5083
        mov     ecx, [last_column_index]
5004
        mov     esi, [ebp + panel1_files - panel1_data]
5084
        mov     esi, [ebp + PanelData.files]
5005
        mov     esi, [esi+ecx*4]
5085
        mov     esi, [esi+ecx*4]
5006
        call    get_file_color
5086
        call    get_file_color
5007
        mov     ecx, [column_width]
5087
        mov     ecx, [column_width]
5008
@@:
5088
@@:
5009
        mov     ebx, eax
5089
        mov     ebx, eax
Line 5132... Line 5212...
5132
draw_date_column:
5212
draw_date_column:
5133
        mov     ecx, [column_height]
5213
        mov     ecx, [column_height]
5134
        dec     ecx
5214
        dec     ecx
5135
        push    [last_column_index]
5215
        push    [last_column_index]
5136
.l:
5216
.l:
5137
        mov     edx, [ebp + panel1_numfiles - panel1_data]
5217
        mov     edx, [ebp + PanelData.numfiles]
5138
        cmp     [last_column_index], edx
5218
        cmp     [last_column_index], edx
5139
        jae     .ret
5219
        jae     .ret
5140
        push    ecx
5220
        push    ecx
5141
        push    edi
5221
        push    edi
5142
        mov     ecx, [last_column_index]
5222
        mov     ecx, [last_column_index]
5143
        mov     esi, [ebp + panel1_files - panel1_data]
5223
        mov     esi, [ebp + PanelData.files]
5144
        mov     esi, [esi+ecx*4]
5224
        mov     esi, [esi+ecx*4]
5145
        call    get_file_color
5225
        call    get_file_color
5146
        mov     bh, ah
5226
        mov     bh, ah
5147
        mov     byte [edi-1], bh
5227
        mov     byte [edi-1], bh
5148
        mov     al, [esi+28]
5228
        mov     al, [esi+28]
Line 5198... Line 5278...
5198
draw_time_column:
5278
draw_time_column:
5199
        mov     ecx, [column_height]
5279
        mov     ecx, [column_height]
5200
        dec     ecx
5280
        dec     ecx
5201
        push    [last_column_index]
5281
        push    [last_column_index]
5202
.l:
5282
.l:
5203
        mov     edx, [ebp + panel1_numfiles - panel1_data]
5283
        mov     edx, [ebp + PanelData.numfiles]
5204
        cmp     [last_column_index], edx
5284
        cmp     [last_column_index], edx
5205
        jae     .ret
5285
        jae     .ret
5206
        push    ecx
5286
        push    ecx
5207
        push    edi
5287
        push    edi
5208
        mov     ecx, [last_column_index]
5288
        mov     ecx, [last_column_index]
5209
        mov     esi, [ebp + panel1_files - panel1_data]
5289
        mov     esi, [ebp + PanelData.files]
5210
        mov     esi, [esi+ecx*4]
5290
        mov     esi, [esi+ecx*4]
5211
        call    get_file_color
5291
        call    get_file_color
5212
        mov     bh, ah
5292
        mov     bh, ah
5213
        mov     byte [edi-1], bh
5293
        mov     byte [edi-1], bh
5214
        mov     al, [esi+26]
5294
        mov     al, [esi+26]
Line 5278... Line 5358...
5278
;        mov     byte [esi-1], 0
5358
;        mov     byte [esi-1], 0
5279
;@@:     pop     esi
5359
;@@:     pop     esi
5280
;        ret
5360
;        ret
Line 5281... Line 5361...
5281
 
5361
 
5282
read_folder:
5362
read_folder:
5283
        mov     eax, [ebp + panel1_nfa - panel1_data]
5363
        mov     eax, [ebp + PanelData.nfa]
5284
        mov     [dirinfo.size], eax
5364
        mov     [dirinfo.size], eax
5285
        shl     eax, 2
5365
        shl     eax, 2
5286
        add     eax, [ebp + panel1_files - panel1_data]
5366
        add     eax, [ebp + PanelData.files]
5287
        mov     [dirinfo.dirdata], eax
5367
        mov     [dirinfo.dirdata], eax
5288
        lea     eax, [ebp + panel1_dir - panel1_data]
5368
        lea     eax, [ebp + PanelData.dir]
5289
        mov     [dirinfo.name], eax
5369
        mov     [dirinfo.name], eax
5290
        xor     eax, eax
5370
        xor     eax, eax
5291
        mov     [ebp + panel1_total_num - panel1_data], eax
5371
        mov     [ebp + PanelData.total_num], eax
5292
        mov     dword [ebp + panel1_total_size - panel1_data], eax
5372
        mov     dword [ebp + PanelData.total_size], eax
5293
        mov     dword [ebp + panel1_total_size+4 - panel1_data], eax
5373
        mov     dword [ebp + PanelData.total_size+4], eax
5294
        mov     [ebp + panel1_selected_num - panel1_data], eax
5374
        mov     [ebp + PanelData.selected_num], eax
5295
        mov     dword [ebp + panel1_selected_size - panel1_data], eax
5375
        mov     dword [ebp + PanelData.selected_size], eax
5296
        mov     dword [ebp + panel1_selected_size+4 - panel1_data], eax
5376
        mov     dword [ebp + PanelData.selected_size+4], eax
5297
.retry:
5377
.retry:
5298
        mov     eax, [ebp + panel1_hPlugin - panel1_data]
5378
        mov     eax, [ebp + PanelData.hPlugin]
5299
        test    eax, eax
5379
        test    eax, eax
5300
        jz      .native
5380
        jz      .native
5301
        mov     ecx, [dirinfo.size]
5381
        mov     ecx, [dirinfo.size]
5302
        test    [ebp + panel1_plugin_flags - panel1_data], 1
5382
        test    [ebp + PanelData.plugin_flags], 1
5303
        jz      @f
5383
        jz      @f
5304
        dec     ecx     ; reserve one entry for '..'
5384
        dec     ecx     ; reserve one entry for '..'
5305
@@:
5385
@@:
5306
        push    ebp
5386
        push    ebp
5307
        push    [dirinfo.dirdata]
5387
        push    [dirinfo.dirdata]
5308
        push    ecx
5388
        push    ecx
5309
        push    0
5389
        push    0
5310
        push    [ebp + panel1_hFile - panel1_data]
5390
        push    [ebp + PanelData.hFile]
5311
        call    [eax + PluginInfo.ReadFolder]
5391
        call    [eax + PluginInfo.ReadFolder]
5312
        pop     ebp
5392
        pop     ebp
5313
        mov     ebx, [dirinfo.dirdata]
5393
        mov     ebx, [dirinfo.dirdata]
5314
        mov     ebx, [ebx+4]
5394
        mov     ebx, [ebx+4]
Line 5342... Line 5422...
5342
        add     esp, 5*4
5422
        add     esp, 5*4
5343
        test    eax, eax
5423
        test    eax, eax
5344
        jz      .retry
5424
        jz      .retry
5345
.dont_notify:
5425
.dont_notify:
5346
; If not on plugin panel, try to return to previous directory
5426
; If not on plugin panel, try to return to previous directory
5347
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
5427
        cmp     [ebp + PanelData.hPlugin], 0
5348
        jnz     @f
5428
        jnz     @f
5349
        mov     esi, prev_dir
5429
        mov     esi, prev_dir
5350
        cmp     byte [esi], 0
5430
        cmp     byte [esi], 0
5351
        jz      @f
5431
        jz      @f
5352
        lea     edi, [ebp + panel1_dir - panel1_data]
5432
        lea     edi, [ebp + PanelData.dir]
5353
        mov     ecx, 1024/4
5433
        mov     ecx, 1024/4
5354
        rep     movsd
5434
        rep     movsd
5355
        mov     byte [prev_dir], 0
5435
        mov     byte [prev_dir], 0
5356
        ret
5436
        ret
5357
@@:
5437
@@:
Line 5367... Line 5447...
5367
        jnz     .up1
5447
        jnz     .up1
5368
        inc     edx
5448
        inc     edx
5369
        lea     edi, [esi-1]
5449
        lea     edi, [esi-1]
5370
        jmp     .up1
5450
        jmp     .up1
5371
.up1done:
5451
.up1done:
5372
        cmp     [ebp + panel1_hPlugin - panel1_data], 0
5452
        cmp     [ebp + PanelData.hPlugin], 0
5373
        jz      .4
5453
        jz      .4
5374
        cmp     edx, 1
5454
        cmp     edx, 1
5375
        ja      .up
5455
        ja      .up
5376
; ç⥭¨¥ á ¯ ­¥«¨ ¯« £¨­  ®¡«®¬ «®áì ¯® ¯®«­®©
5456
; ç⥭¨¥ á ¯ ­¥«¨ ¯« £¨­  ®¡«®¬ «®áì ¯® ¯®«­®©
5377
; ¯à¨ í⮬ ¬ë 㦥 ¢ ª®à­¥
5457
; ¯à¨ í⮬ ¬ë 㦥 ¢ ª®à­¥
Line 5405... Line 5485...
5405
        mov     ax, '1'
5485
        mov     ax, '1'
5406
        stosw
5486
        stosw
5407
        jmp     read_folder
5487
        jmp     read_folder
5408
.nosetrd:
5488
.nosetrd:
5409
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
5489
; „ ¦¥ à ¬¤¨áª ­¥ ¯à®ç¨â «áï. ‡­ ç¨â, ­¥ áã¤ì¡ ...
5410
        and     dword [ebp + panel1_numfiles - panel1_data], 0
5490
        and     dword [ebp + PanelData.numfiles], 0
5411
        and     dword [ebp + panel1_index - panel1_data], 0
5491
        and     dword [ebp + PanelData.index], 0
5412
        and     dword [ebp + panel1_start - panel1_data], 0
5492
        and     dword [ebp + PanelData.start], 0
5413
        mov     [bSilentFolderMode], 0  ; leave silent mode
5493
        mov     [bSilentFolderMode], 0  ; leave silent mode
5414
        ret
5494
        ret
5415
.ok:
5495
.ok:
5416
        mov     eax, [dirinfo.dirdata]
5496
        mov     eax, [dirinfo.dirdata]
5417
        cmp     [eax+8], ebx
5497
        cmp     [eax+8], ebx
5418
        jz      .readdone
5498
        jz      .readdone
5419
        push    dword [eax+8]
5499
        push    dword [eax+8]
5420
        mov     ecx, [ebp + panel1_files - panel1_data]
5500
        mov     ecx, [ebp + PanelData.files]
5421
        call    pgfree
5501
        call    pgfree
5422
        pop     ecx
5502
        pop     ecx
5423
        add     ecx, 0xF
5503
        add     ecx, 0xF
5424
        and     ecx, not 0xF
5504
        and     ecx, not 0xF
5425
        push    ecx
5505
        push    ecx
Line 5429... Line 5509...
5429
        test    eax, eax
5509
        test    eax, eax
5430
        jnz     .succ1
5510
        jnz     .succ1
5431
        pop     eax
5511
        pop     eax
5432
        jmp     .readdone
5512
        jmp     .readdone
5433
.succ1:
5513
.succ1:
5434
        mov     [ebp + panel1_files - panel1_data], eax
5514
        mov     [ebp + PanelData.files], eax
5435
        pop     [ebp + panel1_nfa - panel1_data]
5515
        pop     [ebp + PanelData.nfa]
5436
        mov     [prev_dir], 0
5516
        mov     [prev_dir], 0
5437
        jmp     read_folder
5517
        jmp     read_folder
5438
.readdone:
5518
.readdone:
5439
        xor     edx, edx
5519
        xor     edx, edx
5440
        mov     [ebp + panel1_start - panel1_data], edx
5520
        mov     [ebp + PanelData.start], edx
5441
        mov     [ebp + panel1_index - panel1_data], edx
5521
        mov     [ebp + PanelData.index], edx
5442
        mov     [ebp + panel1_start - panel1_data], edx
5522
        mov     [ebp + PanelData.start], edx
5443
        mov     edi, [ebp + panel1_files - panel1_data]
5523
        mov     edi, [ebp + PanelData.files]
5444
        mov     eax, [ebp + panel1_nfa - panel1_data]
5524
        mov     eax, [ebp + PanelData.nfa]
5445
        lea     eax, [edi + eax*4 + 32]
5525
        lea     eax, [edi + eax*4 + 32]
5446
        mov     ecx, [eax-32+4]
5526
        mov     ecx, [eax-32+4]
5447
        test    ecx, ecx
5527
        test    ecx, ecx
5448
        jz      .loopdone
5528
        jz      .loopdone
5449
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
5529
; ˆ£­®à¨à㥬 ᯥ樠«ì­ë¥ ¢å®¤ë, ᮮ⢥âáâ¢ãî騥 ¯ ¯ª¥ '.' ¨ ¬¥âª¥ ⮬ 
Line 5460... Line 5540...
5460
        cmp     byte [eax+42], 0
5540
        cmp     byte [eax+42], 0
5461
        jnz     .nodotdot
5541
        jnz     .nodotdot
5462
        mov     edx, eax
5542
        mov     edx, eax
5463
        push    edi
5543
        push    edi
5464
@@:
5544
@@:
5465
        cmp     edi, [ebp + panel1_files - panel1_data]
5545
        cmp     edi, [ebp + PanelData.files]
5466
        jbe     @f
5546
        jbe     @f
5467
        push    dword [edi-4]
5547
        push    dword [edi-4]
5468
        pop     dword [edi]
5548
        pop     dword [edi]
5469
        sub     edi, 4
5549
        sub     edi, 4
5470
        jmp     @b
5550
        jmp     @b
Line 5476... Line 5556...
5476
.nodotdot:
5556
.nodotdot:
5477
        stosd
5557
        stosd
5478
        xor     ebx, ebx
5558
        xor     ebx, ebx
5479
        test    byte [eax], 10h
5559
        test    byte [eax], 10h
5480
        setz    bl
5560
        setz    bl
5481
        add     [ebp + panel1_total_num - panel1_data], ebx
5561
        add     [ebp + PanelData.total_num], ebx
5482
        mov     ebx, dword [eax+32]
5562
        mov     ebx, dword [eax+32]
5483
        add     dword [ebp + panel1_total_size - panel1_data], ebx
5563
        add     dword [ebp + PanelData.total_size], ebx
5484
        mov     ebx, dword [eax+36]
5564
        mov     ebx, dword [eax+36]
5485
        adc     dword [ebp + panel1_total_size+4 - panel1_data], ebx
5565
        adc     dword [ebp + PanelData.total_size+4], ebx
5486
.dotdot:
5566
.dotdot:
5487
; ¯®¤á¢¥âª 
5567
; ¯®¤á¢¥âª 
5488
;        call    insert_last_dot
5568
;        call    insert_last_dot
5489
        call    highlight_init
5569
        call    highlight_init
5490
;        call    delete_last_dot
5570
;        call    delete_last_dot
Line 5492... Line 5572...
5492
        add     eax, 304
5572
        add     eax, 304
5493
        dec     ecx
5573
        dec     ecx
5494
        jnz     .ptrinit
5574
        jnz     .ptrinit
5495
.loopdone:
5575
.loopdone:
5496
        push    edi
5576
        push    edi
5497
        sub     edi, [ebp + panel1_files - panel1_data]
5577
        sub     edi, [ebp + PanelData.files]
5498
        shr     edi, 2
5578
        shr     edi, 2
5499
        mov     [ebp + panel1_numfiles - panel1_data], edi
5579
        mov     [ebp + PanelData.numfiles], edi
5500
        pop     edi
5580
        pop     edi
5501
        test    edx, edx
5581
        test    edx, edx
5502
        jnz     @f
5582
        jnz     @f
5503
        test    [ebp + panel1_plugin_flags - panel1_data], 1
5583
        test    [ebp + PanelData.plugin_flags], 1
5504
        jz      @f
5584
        jz      @f
5505
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
5585
        mov     ecx, [ebp + PanelData.numfiles]
5506
        inc     [ebp + panel1_numfiles - panel1_data]
5586
        inc     [ebp + PanelData.numfiles]
5507
        lea     esi, [edi-4]
5587
        lea     esi, [edi-4]
5508
        std
5588
        std
5509
        rep     movsd
5589
        rep     movsd
5510
        cld
5590
        cld
5511
        mov     eax, left_dotdot_entry
5591
        mov     eax, left_dotdot_entry
5512
        cmp     ebp, panel1_data
5592
        cmp     ebp, panel1
5513
        jz      .zq
5593
        jz      .zq
5514
        add     eax, right_dotdot_entry-left_dotdot_entry
5594
        add     eax, right_dotdot_entry-left_dotdot_entry
5515
.zq:
5595
.zq:
5516
        stosd
5596
        stosd
5517
        call    highlight_init
5597
        call    highlight_init
5518
@@:
5598
@@:
5519
; ‘®àâ¨à®¢ª 
5599
; ‘®àâ¨à®¢ª 
5520
sort_files:
5600
sort_files:
5521
        movzx   eax, [ebp + panel1_sortmode - panel1_data]
5601
        movzx   eax, [ebp + PanelData.sortmode]
5522
        mov     ebx, [compare_fns + eax*4]
5602
        mov     ebx, [compare_fns + eax*4]
5523
.mode:
5603
.mode:
5524
        mov     edx, [ebp + panel1_files - panel1_data]
5604
        mov     edx, [ebp + PanelData.files]
5525
        mov     ecx, [ebp + panel1_numfiles - panel1_data]
5605
        mov     ecx, [ebp + PanelData.numfiles]
5526
        jecxz   .skip
5606
        jecxz   .skip
5527
        mov     eax, [edx]
5607
        mov     eax, [edx]
5528
        cmp     word [eax+40], '..'
5608
        cmp     word [eax+40], '..'
5529
        jnz     .nodotdot
5609
        jnz     .nodotdot
5530
        cmp     byte [eax+42], 0
5610
        cmp     byte [eax+42], 0
Line 7138... Line 7218...
7138
        align   4
7218
        align   4
7139
cur_width       dd      80
7219
cur_width       dd      80
7140
cur_height      dd      25
7220
cur_height      dd      25
7141
saved_width     dd      -1
7221
saved_width     dd      -1
7142
saved_height    dd      -1
7222
saved_height    dd      -1
7143
fill_width      dd      0
7223
fill_width      dd      0 ;®áâ â®ª ®â ¤¥«¥­¨ï è¨à¨­ë ®ª­  ­  è¨à¨­ã èà¨äâ 
7144
fill_height     dd      0
7224
fill_height     dd      0
7145
max_width = 256
7225
max_width = 256
7146
max_height = 256
7226
max_height = 256
7147
console_data_ptr dd     0
7227
console_data_ptr dd     0
Line 7152... Line 7232...
7152
cur_cursor_pos  dd      -1
7232
cur_cursor_pos  dd      -1
7153
old_cursor_pos  dd      -1
7233
old_cursor_pos  dd      -1
Line 7154... Line 7234...
7154
 
7234
 
Line 7155... Line 7235...
7155
idle_interval   dd      -1
7235
idle_interval   dd      -1
Line 7156... Line 7236...
7156
 
7236
 
7157
active_panel    dd      panel1_data
7237
active_panel    dd      panel1
7158
 
7238
 
Line 8640... Line 8720...
8640
execdata rb     1024
8720
execdata rb     1024
8641
execdataend:
8721
execdataend:
8642
        align   4
8722
        align   4
8643
attrinfo.attr   rb      40
8723
attrinfo.attr   rb      40
Line 8644... Line 8724...
8644
 
8724
 
8645
panel1_data:
-
 
8646
panel1_left     dd      ?
-
 
8647
panel1_top      dd      ?
-
 
8648
panel1_width    dd      ?
-
 
8649
panel1_height   dd      ?
-
 
8650
panel1_index    dd      ?
-
 
8651
panel1_start    dd      ?
-
 
8652
panel1_colsz    dd      ?
-
 
8653
panel1_colst    dd      ?
-
 
8654
panel1_sortmode db      ?
-
 
8655
                rb      3
-
 
8656
panel1_nfa      dd      ?
-
 
8657
panel1_numfiles dd      ?
-
 
8658
panel1_files    dd      ?
-
 
8659
panel1_hPlugin  dd      ?
-
 
8660
panel1_hFile    dd      ?
-
 
8661
panel1_parents          dd      ?
-
 
8662
panel1_parents_sz       dd      ?
-
 
8663
panel1_parents_alloc    dd      ?
-
 
8664
panel1_colmode          dd      ?
-
 
8665
panel1_colwidths        rd      16+1
-
 
8666
panel1_total_num        dd      ?
-
 
8667
panel1_total_size       dq      ?
-
 
8668
panel1_selected_num     dd      ?
-
 
8669
panel1_selected_size    dq      ?
-
 
8670
panel1_plugin_info:
-
 
8671
panel1_plugin_flags     dd      ?
-
 
8672
panel1_dir      rb      1024
8725
panel1 PanelData
8673
 
8726
 
8674
panel2_data:
-
 
8675
panel2_left     dd      ?
-
 
8676
panel2_top      dd      ?
-
 
8677
panel2_width    dd      ?
-
 
8678
panel2_height   dd      ?
-
 
8679
panel2_index    dd      ?
-
 
8680
panel2_start    dd      ?
-
 
8681
panel2_colsz    dd      ?
-
 
8682
panel2_colst    dd      ?
-
 
8683
panel2_sortmode db      ?
-
 
8684
                rb      3
-
 
8685
panel2_nfa      dd      ?
-
 
8686
panel2_numfiles dd      ?
-
 
8687
panel2_files    dd      ?
-
 
8688
panel2_hPlugin  dd      ?
-
 
8689
panel2_hFile    dd      ?
-
 
8690
panel2_parents          dd      ?
-
 
8691
panel2_parents_sz       dd      ?
-
 
8692
panel2_parents_alloc    dd      ?
-
 
8693
panel2_colmode          dd      ?
-
 
8694
panel2_colwidths        rd      16+1
-
 
8695
panel2_total_num        dd      ?
-
 
8696
panel2_total_size       dq      ?
-
 
8697
panel2_selected_num     dd      ?
-
 
8698
panel2_selected_size    dq      ?
-
 
8699
panel2_plugin_info:
-
 
8700
panel2_plugin_flags     dd      ?
-
 
Line 8701... Line 8727...
8701
panel2_dir      rb      1024
8727
panel2 PanelData
Line 8702... Line 8728...
8702
 
8728