Subversion Repositories Kolibri OS

Rev

Rev 2345 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1792 yogev_ezra 1
key:
2
    mcall 2
3
    cmp   [extended_key],1
4
    je	  .extended_key
5
    test  al, al
6
    jnz   still
7
    cmp   ah, 0xE0
8
    jne   @f
9
    mov   [extended_key],1
10
    jmp   still
11
@@:
12
    cmp   ah,15
13
    jne   .no_tab
14
    inc   [select_panel_counter]
15
    and   [select_panel_counter],1b
16
    call  draw_left_panel
17
    call  draw_right_panel
18
    jmp   still
19
.no_tab:
20
    cmp   ah,72   ; arrow up
21
    je	  key_72.1
22
    cmp   ah,80   ; arrow down
23
    je	  key_80.1
24
    cmp   ah,28   ; Enter
25
    je	  key_28.1
26
    cmp   ah,17   ; W
27
    je    set_background
28
    cmp   ah,19   ; R
29
    je	  reload_dir_1
30
    cmp   ah,42
31
    je	  key_shift_up
32
    cmp   ah,54
33
    je	  key_shift_up
34
    cmp   ah,170
35
    je	  key_shift_down
36
    cmp   ah,182
37
    je	  key_shift_down
38
    cmp   ah,29
39
    je	  key_ctrl_up.1
40
    cmp   ah,157
41
    je	  key_ctrl_down.1
42
    cmp   ah,56
43
    je	  key_alt_up.1
44
    cmp   ah,184
45
    je	  key_alt_down.1
46
    cmp   ah,206 ; NumPad+ Up
47
    je    NumPad_plus_Up
48
    cmp   ah,202 ; NumPad- Up
49
    je    NumPad_minus_Up
50
    cmp   ah,183 ; NumPad* Up
51
    je    NumPad_sneg_Up
52
    cmp   ah,158
53
    je    symbol_a_up
54
    cmp   ah,59    ; down F1
55
    je	  f_key_f1
56
    cmp   ah,60    ; down F2
57
    je	  f_key_f2
58
    cmp   ah,61    ; down F3
59
    je	  f_key_f3 ;sort_name
60
    cmp   ah,62    ; down F4
61
    je	  f_key_f4 ;sort_type
62
    cmp   ah,63    ; down F5
63
    je	  f_key_f5 ;sort_size
64
    cmp   ah,64    ; down F6
65
    je	  f_key_f6 ; sort_date
66
    cmp   ah,65    ; down F7
67
    je	  f_key_f7 ;
68
    cmp   ah,66    ; down F8
69
    je	  f_key_f8 ; delete_file
70
    cmp   ah,88    ; down F12
71
    je	  f_key_f12
72
    jmp  still
73
;-------------------------------------------------------------
74
.extended_key:
75
    mov  [extended_key],0
76
key_80:
77
    cmp  ah,80	; arrow down
78
    jne  key_72
79
.1:
80
    cmp  [select_panel_counter],0
81
    jne  .right_1
82
    mov  eax,[left_folder_block]
83
    dec  eax
84
    imul eax,10
85
    cmp  ax,[left_start_draw_cursor_line]
86
    jbe  .marked_action   ;still
87
    mov  ax,[left_start_draw_cursor_line]
88
    add  ax,10
89
    cmp  ax,[left_panel_y.size_y]
90
    jae  @f
91
.add_1:
92
    add  [left_start_draw_cursor_line],10
93
    call draw_left_panel_selection
94
    mov  [drawing_panel_folder],1
95
.all:
96
    sub  ecx,10 shl 16
97
    mov  edx,0xffffff
98
    int  0x40
99
    mov  [not_clear_lines],1
100
    call draw_folder_data
101
    mov  [not_clear_lines],0
102
    jmp  still
103
.marked_action:
104
    cmp  [marked_action],0
105
    je   still
106
    mov  [marked_action],0
107
    call draw_left_panel
108
    jmp  still
109
.marked_action_1:
110
    cmp  [marked_action],0
111
    je   still
112
    mov  [marked_action],0
113
    call draw_right_panel
114
    jmp  still
115
@@:
116
    mov  eax,[left_folder_block]
117
    sub  eax,[max_panel_line]
118
    test eax,0x80000000
119
    jz	 @f
120
    xor  eax,eax
121
@@:
122
    cmp  [marked_action],0
123
    jne   @f
124
    cmp  [left_start_draw_line],eax
125
    je	 still
126
@@:
127
    mov  [marked_action],0
128
    inc  [left_start_draw_line]
129
    call draw_left_panel
130
    jmp  still
131
.right_1:
132
    mov  eax,[right_folder_block]
133
    dec  eax
134
    imul eax,10
135
    cmp  ax,[right_start_draw_cursor_line]
136
    jbe  .marked_action_1   ;still
137
    mov  ax,[right_start_draw_cursor_line]
138
    add  ax,10
139
    cmp  ax,[right_panel_y.size_y]
140
    jae  @f
141
.add_2:
142
    add  [right_start_draw_cursor_line],10
143
    call draw_right_panel_selection
144
    mov  [drawing_panel_folder],2
145
    jmp  key_80.all
146
@@:
147
    mov  eax,[right_folder_block]
148
    sub  eax,[max_panel_line]
149
    test eax,0x80000000
150
    jz	 @f
151
    xor  eax,eax
152
@@:
153
    cmp  [marked_action],0
154
    jne  @f
155
    cmp  [right_start_draw_line],eax
156
    je	 still
157
@@:
158
    mov  [marked_action],0
159
    inc  [right_start_draw_line]
160
    call draw_right_panel
161
    jmp  still
162
;-------------------------------------------------------------
163
key_72:
164
    cmp  ah,72	;arrow up
165
    jne  key_81
166
.1:
167
    cmp  [select_panel_counter],0
168
    jne  .right_1
169
    mov  ax,[left_start_draw_cursor_line]
170
    add  ax,[left_panel_y.start_y]
171
    cmp  [left_panel_y.start_y],ax
172
    je	 @f
173
    sub  [left_start_draw_cursor_line],10
174
    call draw_left_panel_selection
175
    mov  [drawing_panel_folder],1
176
.all:
177
    add  ecx,10 shl 16
178
    mov  edx,0xffffff
179
    int  0x40
180
    mov  [not_clear_lines],1
181
    call draw_folder_data
182
    mov  [not_clear_lines],0
183
    jmp  still
184
@@:
185
    cmp  [left_start_draw_line],0
186
    je	 still
187
    dec  [left_start_draw_line]
188
    call draw_left_panel
189
    jmp  still
190
.right_1:
191
    mov  ax,[right_start_draw_cursor_line]
192
    add  ax,[right_panel_y.start_y]
193
    cmp  [right_panel_y.start_y],ax
194
    je	 @f
195
    sub  [right_start_draw_cursor_line],10
196
    call draw_right_panel_selection
197
    mov  [drawing_panel_folder],2
198
    jmp  key_72.all
199
@@:
200
    cmp  [right_start_draw_line],0
201
    je	 still
202
    dec  [right_start_draw_line]
203
    call draw_right_panel
204
    jmp  still
205
;-------------------------------------------------------------
206
key_81:
207
    cmp  ah,81 ; PageDown
208
    jne  key_73
209
    mov  eax,[max_panel_line]
210
    cmp  [select_panel_counter],0
211
    jne  .right_1
212
    mov  ebx,[left_folder_block]
213
    sub  ebx,eax
214
    test ebx,0x80000000
215
    jnz  .left_2
216
    sub  ebx,[left_start_draw_line]
217
    cmp  ebx,eax
218
    ja  .ok_1
219
    mov  ebx,[left_folder_block]
220
    sub  ebx,eax
221
    call prepare_data_left_down
222
    ja   @f
223
    cmp  ebx,[left_start_draw_line]
224
    je   still
225
@@:
226
    mov  [left_start_draw_line],ebx
227
.left_3:
228
    dec  eax
229
    imul eax,10
230
.left_1:
231
    mov  [left_start_draw_cursor_line],ax
232
    call draw_left_panel
233
    jmp  still
234
.left_2:
235
    mov  eax,[left_folder_block]
236
    sub  eax,[left_start_draw_line]
237
    dec  eax
238
    imul eax,10
239
    cmp  ax,[left_start_draw_cursor_line]
240
    jbe  still
241
    jmp  .left_1
242
.ok_1:
243
    add  [left_start_draw_line],eax
244
    call draw_left_panel
245
    jmp  still
246
.right_1:
247
    mov  ebx,[right_folder_block]
248
    sub  ebx,eax
249
    test ebx,0x80000000
250
    jnz  .right_3
251
    sub  ebx,[right_start_draw_line]
252
    cmp  ebx,eax
253
    jae  .ok_2
254
    mov  ebx,[right_folder_block]
255
    sub  ebx,eax
256
    call prepare_data_right_down
257
    ja   @f
258
    cmp  ebx,[right_start_draw_line]
259
    je   still
260
@@:
261
    mov  [right_start_draw_line],ebx
262
.right_4:
263
    dec  eax
264
    imul eax,10
265
.right_2:
266
    mov  [right_start_draw_cursor_line],ax
267
    call draw_right_panel
268
    jmp  still
269
.right_3:
270
    mov  eax,[right_folder_block]
271
    sub  eax,[right_start_draw_line]
272
    dec  eax
273
    imul eax,10
274
    cmp  ax,[right_start_draw_cursor_line]
275
    jbe  still
276
    jmp  .right_2
277
.ok_2:
278
    add  [right_start_draw_line],eax
279
    call draw_right_panel
280
    jmp  still
281
;-------------------------------------------------------------
282
prepare_data_right_down:
283
    mov  ecx,[right_folder_block]
284
    sub  ecx,[right_start_draw_line]
285
    dec  ecx
286
    imul ecx,10
287
    cmp  cx,[right_start_draw_cursor_line]
288
    ret
289
;-------------------------------------------------------------
290
prepare_data_left_down:
291
    mov  ecx,[left_folder_block]
292
    sub  ecx,[left_start_draw_line]
293
    dec  ecx
294
    imul ecx,10
295
    cmp  cx,[left_start_draw_cursor_line]
296
    ret
297
;-------------------------------------------------------------
298
key_73:
299
    cmp  ah,73 ; PageUp
300
    jne  key_71
301
    mov  eax,[max_panel_line]
302
    cmp  [select_panel_counter],0
303
    jne  .right_1
304
    mov  ebx,[left_start_draw_line]
305
    sub  ebx,eax
306
    test ebx,0x8000000
307
    jz	 @f
308
    cmp  [left_start_draw_line],0
309
    jne  .draw_line_1
310
    cmp  [left_start_draw_cursor_line],0
311
    je	 still
312
    mov  [left_start_draw_cursor_line],0
313
.draw_line_1:
314
    mov  [left_start_draw_line],0
315
    call draw_left_panel
316
    jmp  still
317
@@:
318
    sub  [left_start_draw_line],eax
319
    call draw_left_panel
320
    jmp  still
321
.right_1:
322
    mov  ebx,[right_start_draw_line]
323
    sub  ebx,eax
324
    test ebx,0x80000000
325
    jz	 @f
326
    cmp  [right_start_draw_line],0
327
    jne  .draw_line_2
328
    cmp  [right_start_draw_cursor_line],0
329
    je	 still
330
    mov  [right_start_draw_cursor_line],0
331
.draw_line_2:
332
    mov  [right_start_draw_line],0
333
    call draw_right_panel
334
    jmp  still
335
@@:
336
    sub  [right_start_draw_line],eax
337
    call draw_right_panel
338
    jmp  still
339
;-------------------------------------------------------------
340
key_71:
341
    cmp  ah,71 ; Home
342
    jne  key_79
343
    cmp  [select_panel_counter],0
344
    jne  .right_1
345
    cmp  [left_start_draw_line],0
346
    jne   .draw_left_panel
347
    cmp  [left_start_draw_cursor_line],0
348
    je	 still
349
.draw_left_panel:
350
    mov  [left_start_draw_line],0
351
    mov  [left_start_draw_cursor_line],0
352
    call draw_left_panel
353
    jmp  still
354
.right_1:
355
    cmp  [right_start_draw_line],0
356
    jne   .draw_right_panel
357
    cmp  [right_start_draw_cursor_line],0
358
    je	 still
359
.draw_right_panel:
360
    mov  [right_start_draw_line],0
361
    mov  [right_start_draw_cursor_line],0
362
    call draw_right_panel
363
    jmp  still
364
;-------------------------------------------------------------
365
key_79:
366
    cmp  ah,79 ; End
367
    jne  key_28
368
    cmp  [select_panel_counter],0
369
    jne  .right_1
370
    mov  eax,[left_folder_block]
371
    sub  eax,[max_panel_line]
372
    test eax,0x80000000
373
    jnz  key_81.left_2
374
    call prepare_data_left_down
375
    ja   @f
376
    cmp  eax,[left_start_draw_line]
377
    je   still
378
@@:
379
    mov  [left_start_draw_line],eax
380
    mov  eax,[max_panel_line]
381
    jmp  key_81.left_3
382
.right_1:
383
    mov  eax,[right_folder_block]
384
    sub  eax,[max_panel_line]
385
    test eax,0x80000000
386
    jnz  key_81.right_3
387
    call prepare_data_right_down
388
    ja   @f
389
    cmp  eax,[right_start_draw_line]
390
    je   still
391
@@:
392
    mov  [right_start_draw_line],eax
393
    mov  eax,[max_panel_line]
394
    jmp  key_81.right_4
395
;-------------------------------------------------------------
396
key_28:
397
    cmp  ah,28 ; Enter
398
    jne  key_ctrl_up
399
.1:
400
    cmp  [shift_flag],1
401
    je	 still
402
    cmp  [ctrl_flag],1
403
    je	 still
404
    cmp  [alt_flag],1
405
    je	 files_information
406
 
407
    mov  [open_param],0
408
.2:
409
    cmp  [select_panel_counter],0
410
    jne  .right_1
411
    mov  ebp,read_folder_name    ;read_folder.name
412
    call  calculate_left_data_1
413
    add  esi,32
414
    cmp  [exit_dir],1
415
    je	 .up_patch
416
    test [esi],byte 0x10
417
    jz	 file_no_folder
418
    cmp  [open_param],0
419
    jne  still
420
    cmp  [esi+40],word 2Eh
421
    je	 still
422
    cmp  [esi+40],word '..'
423
    je	 .up_patch
424
    call calculate_key_28_1
425
    mov  [left_start_draw_cursor_line],0
426
    mov  [left_start_draw_line],0
427
    jmp  proc_read_folder
428
.up_patch:
429
    call calculate_key_28_2
430
    jmp  proc_read_folder
431
.right_1:
432
    mov  ebp,read_folder_1_name   ;read_folder_1.name
433
    call calculate_right_data_1
434
    add  esi,32
435
    cmp  [exit_dir],1
436
    je	 .up_patch_1
437
    test [esi],byte 0x10
438
    jz	 file_no_folder
439
    cmp  [esi+40],word 2Eh
440
    je	 still
441
    cmp  [esi+40],word '..'
442
    je	 .up_patch_1
443
    call calculate_key_28_1
444
    mov  [right_start_draw_cursor_line],0
445
    mov  [right_start_draw_line],0
446
    jmp  proc_read_folder_1
447
.up_patch_1:
448
    call calculate_key_28_2
449
    jmp  proc_read_folder_1
450
;---------------------------------------------------------------------
451
calculate_key_28_1:
452
;    mov  edi,read_folder.name-1
453
    mov  edi,ebp
454
    dec  edi
455
    inc  ebp
456
@@:
457
    inc  edi
458
    cmp  [edi],byte 0
459
    jne  @r
460
    cmp  edi,ebp ;read_folder.name+1
461
    je	 @f
462
    mov  al,'/'
463
    mov [edi],al
464
    inc  edi
465
@@:
466
    add  esi,40
467
@@:
468
    cld
469
    lodsb
470
    stosb
471
    cmp al,0
472
    jnz   @r
473
    ret
474
;---------------------------------------------------------------------
475
calculate_key_28_2:
476
    mov  [exit_dir],0
477
    mov  edi,ebp ;read_folder.name
478
@@:
479
    inc  edi
480
    cmp  [edi],byte 0
481
    jne  @r
482
    mov  [extension_size],edi
483
    dec  edi
484
@@:
485
    dec  edi
486
    cmp  [edi],byte '/'
487
    jne  @r
488
    mov  eax,ebp ;read_folder.name
489
    cmp  edi,eax
490
    jbe  @f
491
    mov  [edi],byte 0
492
@@:
493
    inc  edi
494
    mov  [temp_counter_dword],edi
495
    dec  edi
496
    sub  [extension_size],edi
497
    mov  [search_pre_folder],1
498
    ret
499
;---------------------------------------------------------------------
500
set_background:
501
    cmp  [shift_flag],1
502
    je   .shift
503
    cmp  [ctrl_flag],1
504
    jne  still
505
    mov  [open_param],background_stretch
506
    jmp  key_28.2
507
.shift:
508
    mov  [open_param],background_tile
509
    jmp  key_28.2
510
;---------------------------------------------------------------------
511
reload_dir_1:
512
    cmp  [ctrl_flag],0
513
    je	 still
514
    jmp  reload_dir
515
;---------------------------------------------------------------------
516
symbol_a_up:
517
    cmp  [shift_flag],1
518
    je	 still
519
    cmp  [ctrl_flag],1
520
    je	 .ctrl
521
    cmp  [alt_flag],1
522
    je	 still
523
    jmp  still
524
.ctrl:
525
    mov  [mark_action_counter],0
526
    jmp  mark_all_file
527
;---------------------------------------------------------------------
528
NumPad_plus_Up:
529
    cmp  [shift_flag],1
530
    je	 still
531
    cmp  [ctrl_flag],1
532
    je	 .ctrl
533
    cmp  [alt_flag],1
534
    je	 still
535
    jmp  still
536
.ctrl:
537
    mov  [mark_action_counter],0
538
    jmp  mark_all_file
539
;---------------------------------------------------------------------
540
NumPad_minus_Up:
541
    cmp  [shift_flag],1
542
    je	 still
543
    cmp  [ctrl_flag],1
544
    je	 .ctrl
545
    cmp  [alt_flag],1
546
    je	 still
547
    jmp  still
548
.ctrl:
549
    mov  [mark_action_counter],1
550
    jmp  mark_all_file
551
;---------------------------------------------------------------------
552
NumPad_sneg_Up:
553
    cmp  [shift_flag],1
554
    je	 still
555
    cmp  [ctrl_flag],1
556
    je	 .ctrl
557
    cmp  [alt_flag],1
558
    je	 still
559
    jmp  still
560
.ctrl:
561
    mov  [mark_action_counter],2
562
    jmp  mark_all_file
563
;---------------------------------------------------------------------
564
f_key_f1:
565
;sort_name:
566
    cmp  [shift_flag],1
567
    je	 still
568
    cmp  [ctrl_flag],1
569
    je	 still
570
    cmp  [alt_flag],1
571
    je	 draw_left_select_disk_menu
572
    jmp  help_start
573
;---------------------------------------------------------------------
574
f_key_f2:
575
;sort_name:
576
    cmp  [shift_flag],1
577
    je	 still
578
    cmp  [ctrl_flag],1
579
    je	 still
580
    cmp  [alt_flag],1
581
    je	 draw_right_select_disk_menu
582
    jmp  still
583
;---------------------------------------------------------------------
584
f_key_f3:
585
;sort_name:
586
    cmp  [shift_flag],1
587
    je	 still
588
    cmp  [ctrl_flag],1
589
    je	 .ctrl
590
    cmp  [alt_flag],1
591
    je	 still
592
    jmp  still
593
.ctrl:
594
    cmp  [select_panel_counter],1
595
    je	 right_sort_name
596
    jmp  left_sort_name
597
;---------------------------------------------------------------------
598
f_key_f4:
599
;sort_type:
600
    cmp  [shift_flag],1
601
    je	 still
602
    cmp  [ctrl_flag],1
603
    je	 .ctrl
604
    cmp  [alt_flag],1
605
    je	 still
606
    jmp  open_file_f4
607
.ctrl:
608
    cmp  [select_panel_counter],1
609
    je	 right_sort_type
610
    jmp  left_sort_type
611
;---------------------------------------------------------------------
612
f_key_f5:
613
;sort_size:
614
    cmp  [shift_flag],1
615
    je	 still
616
    cmp  [ctrl_flag],1
617
    je	 .ctrl
618
    cmp  [alt_flag],1
619
    je	 still
620
    jmp  copy_file_f5
621
.ctrl:
622
    cmp  [select_panel_counter],1
623
    je	 right_sort_size
624
    jmp  left_sort_size
625
;---------------------------------------------------------------------
626
f_key_f6:
627
;sort_date:
628
    cmp  [shift_flag],1
629
    je	 still
630
    cmp  [ctrl_flag],1
631
    je	 .ctrl
632
    cmp  [alt_flag],1
633
    je	 still
634
    jmp  move_file_f6
635
.ctrl:
636
    cmp  [select_panel_counter],1
637
    je	 right_sort_date
638
    jmp  left_sort_date
639
;---------------------------------------------------------------------
640
f_key_f7:
641
    cmp  [shift_flag],1
642
    je	 still
643
    cmp  [ctrl_flag],1
644
    je	 still
645
    cmp  [alt_flag],1
646
    je	 still
647
    jmp  create_directory
648
;---------------------------------------------------------------------
649
f_key_f8:
650
    cmp  [shift_flag],1
651
    je	 still
652
    cmp  [ctrl_flag],1
653
    je	 still
654
    cmp  [alt_flag],1
655
    je	 still
656
    jmp  delete_file
657
;---------------------------------------------------------------------
658
f_key_f12:
659
    cmp  [shift_flag],1
660
    je	 still
661
    cmp  [ctrl_flag],1
662
    je	 still
663
    cmp  [alt_flag],1
664
    je	 still
665
    jmp  exit_apl
666
;---------------------------------------------------------------------
667
key_shift_up:
668
    cmp  [shift_flag],1
669
    je	 still
670
    mov  [shift_flag],1
671
    jmp  key_alt_down.for_all
672
;---------------------------------------------------------------------
673
key_shift_down:
674
    mov  [shift_flag],0
675
    jmp  key_alt_down.for_all
676
;---------------------------------------------------------------------
677
key_ctrl_up:
678
    cmp   ah,29
679
    jne   key_ctrl_down
680
.1:
681
    cmp  [ctrl_flag],1
682
    je	 still
683
    mov  [ctrl_flag],1
684
    jmp  key_alt_down.for_all
685
;---------------------------------------------------------------------
686
key_ctrl_down:
687
    cmp   ah,157
688
    jne   key_alt_up
689
.1:
690
    mov  [ctrl_flag],0
691
    jmp  key_alt_down.for_all
692
;---------------------------------------------------------------------
693
key_alt_up:
694
    cmp   ah,56
695
    jne   key_alt_down
696
.1:
697
    cmp  [alt_flag],1
698
    je	 still
699
    mov  [alt_flag],1
700
    jmp  key_alt_down.for_all
701
;---------------------------------------------------------------------
702
key_alt_down:
703
    cmp   ah,184
704
    jne   key_insert
705
.1:
706
    mov  [alt_flag],0
707
.for_all:
708
    call erase_fbutton
709
    call draw_fbutton
710
    jmp  still
711
;---------------------------------------------------------------------
712
key_insert:
713
    cmp   ah,82   ; Insert
714
    je	  mark_file
715
    cmp   ah,83
716
    je	  delete_file
717
key_end:
718
    jmp  still
719
;---------------------------------------------------------------------