forked from KolibriOS/kolibrios
0485c4d0b8
git-svn-id: svn://kolibrios.org@2616 a494cfbc-eb01-0410-851d-a64ba20cac60
721 lines
17 KiB
PHP
721 lines
17 KiB
PHP
key:
|
|
mcall 2
|
|
cmp [extended_key],1
|
|
je .extended_key
|
|
test al, al
|
|
jnz still
|
|
cmp ah, 0xE0
|
|
jne @f
|
|
mov [extended_key],1
|
|
jmp still
|
|
@@:
|
|
cmp ah,15
|
|
jne .no_tab
|
|
inc [select_panel_counter]
|
|
and [select_panel_counter],1b
|
|
call draw_left_panel
|
|
call draw_right_panel
|
|
jmp still
|
|
.no_tab:
|
|
cmp ah,72 ; arrow up
|
|
je key_72.1
|
|
cmp ah,80 ; arrow down
|
|
je key_80.1
|
|
cmp ah,28 ; Enter
|
|
je key_28.1
|
|
cmp ah,17 ; W
|
|
je set_background
|
|
cmp ah,19 ; R
|
|
je reload_dir_1
|
|
cmp ah,42
|
|
je key_shift_up
|
|
cmp ah,54
|
|
je key_shift_up
|
|
cmp ah,142
|
|
je exit_dir_1 ; BackSpace Up
|
|
cmp ah,170
|
|
je key_shift_down
|
|
cmp ah,182
|
|
je key_shift_down
|
|
cmp ah,29
|
|
je key_ctrl_up.1
|
|
cmp ah,157
|
|
je key_ctrl_down.1
|
|
cmp ah,56
|
|
je key_alt_up.1
|
|
cmp ah,184
|
|
je key_alt_down.1
|
|
cmp ah,206 ; NumPad+ Up
|
|
je NumPad_plus_Up
|
|
cmp ah,202 ; NumPad- Up
|
|
je NumPad_minus_Up
|
|
cmp ah,183 ; NumPad* Up
|
|
je NumPad_sneg_Up
|
|
cmp ah,158
|
|
je symbol_a_up
|
|
cmp ah,59 ; down F1
|
|
je f_key_f1
|
|
cmp ah,60 ; down F2
|
|
je f_key_f2
|
|
cmp ah,61 ; down F3
|
|
je f_key_f3 ;sort_name
|
|
cmp ah,62 ; down F4
|
|
je f_key_f4 ;sort_type
|
|
cmp ah,63 ; down F5
|
|
je f_key_f5 ;sort_size
|
|
cmp ah,64 ; down F6
|
|
je f_key_f6 ; sort_date
|
|
cmp ah,65 ; down F7
|
|
je f_key_f7 ;
|
|
cmp ah,66 ; down F8
|
|
je f_key_f8 ; delete_file
|
|
cmp ah,88 ; down F12
|
|
je f_key_f12
|
|
jmp still
|
|
;-------------------------------------------------------------
|
|
.extended_key:
|
|
mov [extended_key],0
|
|
key_80:
|
|
cmp ah,80 ; arrow down
|
|
jne key_72
|
|
.1:
|
|
cmp [select_panel_counter],0
|
|
jne .right_1
|
|
mov eax,[left_folder_block]
|
|
dec eax
|
|
imul eax,10
|
|
cmp ax,[left_start_draw_cursor_line]
|
|
jbe .marked_action ;still
|
|
mov ax,[left_start_draw_cursor_line]
|
|
add ax,10
|
|
cmp ax,[left_panel_y.size_y]
|
|
jae @f
|
|
.add_1:
|
|
add [left_start_draw_cursor_line],10
|
|
call draw_left_panel_selection
|
|
mov [drawing_panel_folder],1
|
|
.all:
|
|
sub ecx,10 shl 16
|
|
mov edx,0xffffff
|
|
int 0x40
|
|
mov [not_clear_lines],1
|
|
call draw_folder_data
|
|
mov [not_clear_lines],0
|
|
jmp still
|
|
.marked_action:
|
|
cmp [marked_action],0
|
|
je still
|
|
mov [marked_action],0
|
|
call draw_left_panel
|
|
jmp still
|
|
.marked_action_1:
|
|
cmp [marked_action],0
|
|
je still
|
|
mov [marked_action],0
|
|
call draw_right_panel
|
|
jmp still
|
|
@@:
|
|
mov eax,[left_folder_block]
|
|
sub eax,[max_panel_line]
|
|
test eax,0x80000000
|
|
jz @f
|
|
xor eax,eax
|
|
@@:
|
|
cmp [marked_action],0
|
|
jne @f
|
|
cmp [left_start_draw_line],eax
|
|
je still
|
|
@@:
|
|
mov [marked_action],0
|
|
inc [left_start_draw_line]
|
|
call draw_left_panel
|
|
jmp still
|
|
.right_1:
|
|
mov eax,[right_folder_block]
|
|
dec eax
|
|
imul eax,10
|
|
cmp ax,[right_start_draw_cursor_line]
|
|
jbe .marked_action_1 ;still
|
|
mov ax,[right_start_draw_cursor_line]
|
|
add ax,10
|
|
cmp ax,[right_panel_y.size_y]
|
|
jae @f
|
|
.add_2:
|
|
add [right_start_draw_cursor_line],10
|
|
call draw_right_panel_selection
|
|
mov [drawing_panel_folder],2
|
|
jmp key_80.all
|
|
@@:
|
|
mov eax,[right_folder_block]
|
|
sub eax,[max_panel_line]
|
|
test eax,0x80000000
|
|
jz @f
|
|
xor eax,eax
|
|
@@:
|
|
cmp [marked_action],0
|
|
jne @f
|
|
cmp [right_start_draw_line],eax
|
|
je still
|
|
@@:
|
|
mov [marked_action],0
|
|
inc [right_start_draw_line]
|
|
call draw_right_panel
|
|
jmp still
|
|
;-------------------------------------------------------------
|
|
key_72:
|
|
cmp ah,72 ;arrow up
|
|
jne key_81
|
|
.1:
|
|
cmp [select_panel_counter],0
|
|
jne .right_1
|
|
mov ax,[left_start_draw_cursor_line]
|
|
add ax,[left_panel_y.start_y]
|
|
cmp [left_panel_y.start_y],ax
|
|
je @f
|
|
sub [left_start_draw_cursor_line],10
|
|
call draw_left_panel_selection
|
|
mov [drawing_panel_folder],1
|
|
.all:
|
|
add ecx,10 shl 16
|
|
mov edx,0xffffff
|
|
int 0x40
|
|
mov [not_clear_lines],1
|
|
call draw_folder_data
|
|
mov [not_clear_lines],0
|
|
jmp still
|
|
@@:
|
|
cmp [left_start_draw_line],0
|
|
je still
|
|
dec [left_start_draw_line]
|
|
call draw_left_panel
|
|
jmp still
|
|
.right_1:
|
|
mov ax,[right_start_draw_cursor_line]
|
|
add ax,[right_panel_y.start_y]
|
|
cmp [right_panel_y.start_y],ax
|
|
je @f
|
|
sub [right_start_draw_cursor_line],10
|
|
call draw_right_panel_selection
|
|
mov [drawing_panel_folder],2
|
|
jmp key_72.all
|
|
@@:
|
|
cmp [right_start_draw_line],0
|
|
je still
|
|
dec [right_start_draw_line]
|
|
call draw_right_panel
|
|
jmp still
|
|
;-------------------------------------------------------------
|
|
key_81:
|
|
cmp ah,81 ; PageDown
|
|
jne key_73
|
|
mov eax,[max_panel_line]
|
|
cmp [select_panel_counter],0
|
|
jne .right_1
|
|
mov ebx,[left_folder_block]
|
|
sub ebx,eax
|
|
test ebx,0x80000000
|
|
jnz .left_2
|
|
sub ebx,[left_start_draw_line]
|
|
cmp ebx,eax
|
|
ja .ok_1
|
|
mov ebx,[left_folder_block]
|
|
sub ebx,eax
|
|
call prepare_data_left_down
|
|
ja @f
|
|
cmp ebx,[left_start_draw_line]
|
|
je still
|
|
@@:
|
|
mov [left_start_draw_line],ebx
|
|
.left_3:
|
|
dec eax
|
|
imul eax,10
|
|
.left_1:
|
|
mov [left_start_draw_cursor_line],ax
|
|
call draw_left_panel
|
|
jmp still
|
|
.left_2:
|
|
mov eax,[left_folder_block]
|
|
sub eax,[left_start_draw_line]
|
|
dec eax
|
|
imul eax,10
|
|
cmp ax,[left_start_draw_cursor_line]
|
|
jbe still
|
|
jmp .left_1
|
|
.ok_1:
|
|
add [left_start_draw_line],eax
|
|
call draw_left_panel
|
|
jmp still
|
|
.right_1:
|
|
mov ebx,[right_folder_block]
|
|
sub ebx,eax
|
|
test ebx,0x80000000
|
|
jnz .right_3
|
|
sub ebx,[right_start_draw_line]
|
|
cmp ebx,eax
|
|
jae .ok_2
|
|
mov ebx,[right_folder_block]
|
|
sub ebx,eax
|
|
call prepare_data_right_down
|
|
ja @f
|
|
cmp ebx,[right_start_draw_line]
|
|
je still
|
|
@@:
|
|
mov [right_start_draw_line],ebx
|
|
.right_4:
|
|
dec eax
|
|
imul eax,10
|
|
.right_2:
|
|
mov [right_start_draw_cursor_line],ax
|
|
call draw_right_panel
|
|
jmp still
|
|
.right_3:
|
|
mov eax,[right_folder_block]
|
|
sub eax,[right_start_draw_line]
|
|
dec eax
|
|
imul eax,10
|
|
cmp ax,[right_start_draw_cursor_line]
|
|
jbe still
|
|
jmp .right_2
|
|
.ok_2:
|
|
add [right_start_draw_line],eax
|
|
call draw_right_panel
|
|
jmp still
|
|
;-------------------------------------------------------------
|
|
prepare_data_right_down:
|
|
mov ecx,[right_folder_block]
|
|
sub ecx,[right_start_draw_line]
|
|
dec ecx
|
|
imul ecx,10
|
|
cmp cx,[right_start_draw_cursor_line]
|
|
ret
|
|
;-------------------------------------------------------------
|
|
prepare_data_left_down:
|
|
mov ecx,[left_folder_block]
|
|
sub ecx,[left_start_draw_line]
|
|
dec ecx
|
|
imul ecx,10
|
|
cmp cx,[left_start_draw_cursor_line]
|
|
ret
|
|
;-------------------------------------------------------------
|
|
key_73:
|
|
cmp ah,73 ; PageUp
|
|
jne key_71
|
|
mov eax,[max_panel_line]
|
|
cmp [select_panel_counter],0
|
|
jne .right_1
|
|
mov ebx,[left_start_draw_line]
|
|
sub ebx,eax
|
|
test ebx,0x8000000
|
|
jz @f
|
|
cmp [left_start_draw_line],0
|
|
jne .draw_line_1
|
|
cmp [left_start_draw_cursor_line],0
|
|
je still
|
|
mov [left_start_draw_cursor_line],0
|
|
.draw_line_1:
|
|
mov [left_start_draw_line],0
|
|
call draw_left_panel
|
|
jmp still
|
|
@@:
|
|
sub [left_start_draw_line],eax
|
|
call draw_left_panel
|
|
jmp still
|
|
.right_1:
|
|
mov ebx,[right_start_draw_line]
|
|
sub ebx,eax
|
|
test ebx,0x80000000
|
|
jz @f
|
|
cmp [right_start_draw_line],0
|
|
jne .draw_line_2
|
|
cmp [right_start_draw_cursor_line],0
|
|
je still
|
|
mov [right_start_draw_cursor_line],0
|
|
.draw_line_2:
|
|
mov [right_start_draw_line],0
|
|
call draw_right_panel
|
|
jmp still
|
|
@@:
|
|
sub [right_start_draw_line],eax
|
|
call draw_right_panel
|
|
jmp still
|
|
;-------------------------------------------------------------
|
|
key_71:
|
|
cmp ah,71 ; Home
|
|
jne key_79
|
|
cmp [select_panel_counter],0
|
|
jne .right_1
|
|
cmp [left_start_draw_line],0
|
|
jne .draw_left_panel
|
|
cmp [left_start_draw_cursor_line],0
|
|
je still
|
|
.draw_left_panel:
|
|
mov [left_start_draw_line],0
|
|
mov [left_start_draw_cursor_line],0
|
|
call draw_left_panel
|
|
jmp still
|
|
.right_1:
|
|
cmp [right_start_draw_line],0
|
|
jne .draw_right_panel
|
|
cmp [right_start_draw_cursor_line],0
|
|
je still
|
|
.draw_right_panel:
|
|
mov [right_start_draw_line],0
|
|
mov [right_start_draw_cursor_line],0
|
|
call draw_right_panel
|
|
jmp still
|
|
;-------------------------------------------------------------
|
|
key_79:
|
|
cmp ah,79 ; End
|
|
jne key_28
|
|
cmp [select_panel_counter],0
|
|
jne .right_1
|
|
mov eax,[left_folder_block]
|
|
sub eax,[max_panel_line]
|
|
test eax,0x80000000
|
|
jnz key_81.left_2
|
|
call prepare_data_left_down
|
|
ja @f
|
|
cmp eax,[left_start_draw_line]
|
|
je still
|
|
@@:
|
|
mov [left_start_draw_line],eax
|
|
mov eax,[max_panel_line]
|
|
jmp key_81.left_3
|
|
.right_1:
|
|
mov eax,[right_folder_block]
|
|
sub eax,[max_panel_line]
|
|
test eax,0x80000000
|
|
jnz key_81.right_3
|
|
call prepare_data_right_down
|
|
ja @f
|
|
cmp eax,[right_start_draw_line]
|
|
je still
|
|
@@:
|
|
mov [right_start_draw_line],eax
|
|
mov eax,[max_panel_line]
|
|
jmp key_81.right_4
|
|
;-------------------------------------------------------------
|
|
key_28:
|
|
cmp ah,28 ; Enter
|
|
jne key_ctrl_up
|
|
.1:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je still
|
|
cmp [alt_flag],1
|
|
je files_information
|
|
|
|
mov [open_param],0
|
|
.2:
|
|
cmp [select_panel_counter],0
|
|
jne .right_1
|
|
mov ebp,read_folder_name ;read_folder.name
|
|
call calculate_left_data_1
|
|
add esi,32
|
|
cmp [exit_dir],1
|
|
je .up_patch
|
|
test [esi],byte 0x10
|
|
jz file_no_folder
|
|
cmp [open_param],0
|
|
jne still
|
|
cmp [esi+40],word 2Eh
|
|
je still
|
|
cmp [esi+40],word '..'
|
|
je .up_patch
|
|
call calculate_key_28_1
|
|
mov [left_start_draw_cursor_line],0
|
|
mov [left_start_draw_line],0
|
|
jmp proc_read_folder
|
|
.up_patch:
|
|
call calculate_key_28_2
|
|
jmp proc_read_folder
|
|
.right_1:
|
|
mov ebp,read_folder_1_name ;read_folder_1.name
|
|
call calculate_right_data_1
|
|
add esi,32
|
|
cmp [exit_dir],1
|
|
je .up_patch_1
|
|
test [esi],byte 0x10
|
|
jz file_no_folder
|
|
cmp [esi+40],word 2Eh
|
|
je still
|
|
cmp [esi+40],word '..'
|
|
je .up_patch_1
|
|
call calculate_key_28_1
|
|
mov [right_start_draw_cursor_line],0
|
|
mov [right_start_draw_line],0
|
|
jmp proc_read_folder_1
|
|
.up_patch_1:
|
|
call calculate_key_28_2
|
|
jmp proc_read_folder_1
|
|
;---------------------------------------------------------------------
|
|
calculate_key_28_1:
|
|
; mov edi,read_folder.name-1
|
|
mov edi,ebp
|
|
dec edi
|
|
inc ebp
|
|
@@:
|
|
inc edi
|
|
cmp [edi],byte 0
|
|
jne @r
|
|
cmp edi,ebp ;read_folder.name+1
|
|
je @f
|
|
mov al,'/'
|
|
mov [edi],al
|
|
inc edi
|
|
@@:
|
|
add esi,40
|
|
@@:
|
|
cld
|
|
lodsb
|
|
stosb
|
|
cmp al,0
|
|
jnz @r
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
calculate_key_28_2:
|
|
mov [exit_dir],0
|
|
mov edi,ebp ;read_folder.name
|
|
@@:
|
|
inc edi
|
|
cmp [edi],byte 0
|
|
jne @r
|
|
mov [extension_size],edi
|
|
dec edi
|
|
@@:
|
|
dec edi
|
|
cmp [edi],byte '/'
|
|
jne @r
|
|
mov eax,ebp ;read_folder.name
|
|
cmp edi,eax
|
|
jbe @f
|
|
mov [edi],byte 0
|
|
@@:
|
|
inc edi
|
|
mov [temp_counter_dword],edi
|
|
dec edi
|
|
sub [extension_size],edi
|
|
mov [search_pre_folder],1
|
|
ret
|
|
;---------------------------------------------------------------------
|
|
set_background:
|
|
cmp [shift_flag],1
|
|
je .shift
|
|
cmp [ctrl_flag],1
|
|
jne still
|
|
mov [open_param],background_stretch
|
|
jmp key_28.2
|
|
.shift:
|
|
mov [open_param],background_tile
|
|
jmp key_28.2
|
|
;---------------------------------------------------------------------
|
|
reload_dir_1:
|
|
cmp [ctrl_flag],0
|
|
je still
|
|
jmp reload_dir
|
|
;---------------------------------------------------------------------
|
|
symbol_a_up:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp still
|
|
.ctrl:
|
|
mov [mark_action_counter],0
|
|
jmp mark_all_file
|
|
;---------------------------------------------------------------------
|
|
NumPad_plus_Up:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp still
|
|
.ctrl:
|
|
mov [mark_action_counter],0
|
|
jmp mark_all_file
|
|
;---------------------------------------------------------------------
|
|
NumPad_minus_Up:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp still
|
|
.ctrl:
|
|
mov [mark_action_counter],1
|
|
jmp mark_all_file
|
|
;---------------------------------------------------------------------
|
|
NumPad_sneg_Up:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp still
|
|
.ctrl:
|
|
mov [mark_action_counter],2
|
|
jmp mark_all_file
|
|
;---------------------------------------------------------------------
|
|
f_key_f1:
|
|
;sort_name:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je still
|
|
cmp [alt_flag],1
|
|
je draw_left_select_disk_menu
|
|
jmp help_start
|
|
;---------------------------------------------------------------------
|
|
f_key_f2:
|
|
;sort_name:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je still
|
|
cmp [alt_flag],1
|
|
je draw_right_select_disk_menu
|
|
jmp still
|
|
;---------------------------------------------------------------------
|
|
f_key_f3:
|
|
;sort_name:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp still
|
|
.ctrl:
|
|
cmp [select_panel_counter],1
|
|
je right_sort_name
|
|
jmp left_sort_name
|
|
;---------------------------------------------------------------------
|
|
f_key_f4:
|
|
;sort_type:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp open_file_f4
|
|
.ctrl:
|
|
cmp [select_panel_counter],1
|
|
je right_sort_type
|
|
jmp left_sort_type
|
|
;---------------------------------------------------------------------
|
|
f_key_f5:
|
|
;sort_size:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp copy_file_f5
|
|
.ctrl:
|
|
cmp [select_panel_counter],1
|
|
je right_sort_size
|
|
jmp left_sort_size
|
|
;---------------------------------------------------------------------
|
|
f_key_f6:
|
|
;sort_date:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je .ctrl
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp move_file_f6
|
|
.ctrl:
|
|
cmp [select_panel_counter],1
|
|
je right_sort_date
|
|
jmp left_sort_date
|
|
;---------------------------------------------------------------------
|
|
f_key_f7:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je still
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp create_directory
|
|
;---------------------------------------------------------------------
|
|
f_key_f8:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je still
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp delete_file
|
|
;---------------------------------------------------------------------
|
|
f_key_f12:
|
|
cmp [shift_flag],1
|
|
je still
|
|
cmp [ctrl_flag],1
|
|
je still
|
|
cmp [alt_flag],1
|
|
je still
|
|
jmp exit_apl
|
|
;---------------------------------------------------------------------
|
|
key_shift_up:
|
|
cmp [shift_flag],1
|
|
je still
|
|
mov [shift_flag],1
|
|
jmp key_alt_down.for_all
|
|
;---------------------------------------------------------------------
|
|
key_shift_down:
|
|
mov [shift_flag],0
|
|
jmp key_alt_down.for_all
|
|
;---------------------------------------------------------------------
|
|
key_ctrl_up:
|
|
cmp ah,29
|
|
jne key_ctrl_down
|
|
.1:
|
|
cmp [ctrl_flag],1
|
|
je still
|
|
mov [ctrl_flag],1
|
|
jmp key_alt_down.for_all
|
|
;---------------------------------------------------------------------
|
|
key_ctrl_down:
|
|
cmp ah,157
|
|
jne key_alt_up
|
|
.1:
|
|
mov [ctrl_flag],0
|
|
jmp key_alt_down.for_all
|
|
;---------------------------------------------------------------------
|
|
key_alt_up:
|
|
cmp ah,56
|
|
jne key_alt_down
|
|
.1:
|
|
cmp [alt_flag],1
|
|
je still
|
|
mov [alt_flag],1
|
|
jmp key_alt_down.for_all
|
|
;---------------------------------------------------------------------
|
|
key_alt_down:
|
|
cmp ah,184
|
|
jne key_insert
|
|
.1:
|
|
mov [alt_flag],0
|
|
.for_all:
|
|
call erase_fbutton
|
|
call draw_fbutton
|
|
jmp still
|
|
;---------------------------------------------------------------------
|
|
key_insert:
|
|
cmp ah,82 ; Insert
|
|
je mark_file
|
|
cmp ah,83
|
|
je f_key_f8 ;delete_file
|
|
key_end:
|
|
jmp still
|
|
;--------------------------------------------------------------------- |