mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-24 23:56:49 +03:00
e612357931
git-svn-id: svn://kolibrios.org@3840 a494cfbc-eb01-0410-851d-a64ba20cac60
460 lines
10 KiB
PHP
460 lines
10 KiB
PHP
;---------------------------------------------------------------------
|
|
move_file_f6:
|
|
mov [move_file_flag],1
|
|
copy_file_f5:
|
|
call clear_file_buffer
|
|
xor edx,edx
|
|
xor eax,eax
|
|
; mov byte [copy_many_files],al
|
|
mov [current_progress_value],eax
|
|
mov [current_progress_value_1],eax
|
|
cmp [select_panel_counter],al
|
|
jne .right_1
|
|
cmp [left_marked_counter],eax
|
|
jne .confirmation_action
|
|
mov ax,[left_start_draw_cursor_line]
|
|
mov ebx,10
|
|
div ebx
|
|
mov ebx,[left_start_draw_line]
|
|
add ebx,eax
|
|
imul ebx,304
|
|
add ebx,[left_folder_data]
|
|
call prepare_data_7
|
|
call .copy_name
|
|
jmp editbox_copy_name
|
|
.right_1:
|
|
cmp [right_marked_counter],eax
|
|
jne .confirmation_action
|
|
mov ax,[right_start_draw_cursor_line]
|
|
mov ebx,10
|
|
div ebx
|
|
mov ebx,[right_start_draw_line]
|
|
add ebx,eax
|
|
imul ebx,304
|
|
add ebx,[right_folder_data]
|
|
call prepare_data_7
|
|
call .copy_name
|
|
jmp editbox_copy_name
|
|
|
|
.confirmation_action:
|
|
cmp [move_file_flag],0
|
|
je .copy
|
|
mov [confirmation_type],move_type
|
|
jmp @f
|
|
.copy:
|
|
mov [confirmation_type],copy_type
|
|
@@:
|
|
call confirmation_action
|
|
cmp [work_confirmation_yes],1
|
|
je copy_marked_files
|
|
mov [move_file_flag],0
|
|
jmp red
|
|
|
|
.copy_name:
|
|
mov esi,ebx
|
|
mov edi,create_dir_name
|
|
@@:
|
|
cld
|
|
lodsb
|
|
stosb
|
|
test al,al
|
|
jne @r
|
|
sub edi,create_dir_name
|
|
mov eax,edi
|
|
dec eax
|
|
mov edi, edit1
|
|
mov ed_size, eax
|
|
mov ed_pos, eax
|
|
default_box
|
|
cmp [select_panel_counter],0
|
|
jne .right_2
|
|
mov esi,read_folder_name
|
|
jmp @f
|
|
.right_2:
|
|
mov esi,read_folder_1_name
|
|
@@:
|
|
mov edi,file_name
|
|
call copy_path_1
|
|
ret
|
|
;-------------------------------------------------------------
|
|
editbox_copy_name:
|
|
mcall 66, 1, 0
|
|
jmp .red
|
|
.red_1:
|
|
call draw_window
|
|
.red:
|
|
call draw_editbox_copy_name
|
|
.still:
|
|
mcall 10
|
|
cmp eax,1
|
|
je .red_1
|
|
cmp eax,2
|
|
je .key_copy
|
|
cmp eax,3
|
|
je .button_copy
|
|
mouse_edit_box copy_editboxes
|
|
jmp .still
|
|
;-------------------------------------------------------------
|
|
.button_copy:
|
|
mov eax,17
|
|
mcall
|
|
test ah,ah
|
|
jz .still
|
|
cmp ah,160
|
|
je .exit_with_copy
|
|
cmp ah,161
|
|
je .exit_without_copy
|
|
cmp ah,1
|
|
jne .still
|
|
mcall -1
|
|
.exit_with_copy:
|
|
mov [max_progress_value],1
|
|
mov [draw_all_progressbar],1
|
|
call copy_file_1
|
|
cmp [move_file_flag],0
|
|
je @f
|
|
call del_file
|
|
test eax,eax
|
|
jz @f
|
|
call start_error_window_thread
|
|
@@:
|
|
call proc_read_left_folder
|
|
call proc_read_right_folder
|
|
.exit_without_copy:
|
|
mcall 66, 1, 1
|
|
mov [move_file_flag],0
|
|
jmp red
|
|
;-------------------------------------------------------------
|
|
.key_copy:
|
|
mov eax,2
|
|
mcall
|
|
cmp ah,13
|
|
je .exit_with_copy
|
|
cmp ah,27
|
|
je .exit_without_copy
|
|
key_edit_box copy_editboxes
|
|
jmp .still
|
|
;-------------------------------------------------------------
|
|
draw_editbox_copy_name:
|
|
mov ecx,[window_high]
|
|
mov ebx,[window_width]
|
|
shr ecx,1
|
|
shr ebx,1
|
|
sub ecx,30
|
|
sub ebx,87
|
|
shl ecx,16
|
|
shl ebx,16
|
|
mov cx,60
|
|
mov bx,174
|
|
mcall 13, , ,0x6060ff ;0xff
|
|
pusha
|
|
shr ebx,16
|
|
add ebx,10
|
|
shr ecx,16
|
|
add ecx,17
|
|
mov eax,copy_editboxes
|
|
mov dword [eax+4],ebx
|
|
mov dword [eax+8],ecx
|
|
draw_edit_box copy_editboxes
|
|
popa
|
|
pusha
|
|
add ebx,70 shl 16
|
|
add ecx,37 shl 16
|
|
mov cx,15
|
|
mov bx,40
|
|
mov esi,0xffffff
|
|
mov edx,0x40000000+160
|
|
mov eax,8
|
|
mcall
|
|
add ebx,50 shl 16
|
|
inc edx
|
|
mcall
|
|
popa
|
|
|
|
push ebx ecx
|
|
add ebx,70 shl 16
|
|
add ecx,37 shl 16
|
|
mov bx,40
|
|
mov cx,15
|
|
mov edx,0
|
|
push ebx ecx
|
|
sub ecx,1 shl 16
|
|
sub ebx,1 shl 16
|
|
mov bx,42
|
|
mov cx,17
|
|
mcall
|
|
add ebx,50 shl 16
|
|
mcall
|
|
pop ecx ebx
|
|
mov edx,0xff7700
|
|
mcall
|
|
mov edx,0xaa00
|
|
add ebx,50 shl 16
|
|
mcall
|
|
pop ecx ebx
|
|
|
|
shr ecx,16
|
|
mov bx,cx
|
|
add ebx,60 shl 16+5
|
|
cmp [move_file_flag],0
|
|
je .copy
|
|
mov edx,move_type_1
|
|
jmp @f
|
|
.copy:
|
|
mov edx,copy_type_1
|
|
@@:
|
|
mcall 4, ,0x90ffffff
|
|
add ebx,18 shl 16+36
|
|
mov edx,type_yes
|
|
mcall
|
|
add ebx,56 shl 16
|
|
mov edx,type_no
|
|
mcall
|
|
ret
|
|
;-------------------------------------------------------------
|
|
copy_file_1:
|
|
mov ebx,create_dir_name
|
|
.1:
|
|
mov [error_pointer],ebx
|
|
cmp [select_panel_counter],0
|
|
je .right_2
|
|
mov esi,read_folder_name
|
|
jmp @f
|
|
.right_2:
|
|
mov esi,read_folder_1_name
|
|
@@:
|
|
mov edi,start_parameter
|
|
call copy_path_1
|
|
call get_file_size
|
|
test eax,eax
|
|
jnz .error
|
|
mov [read_file.Offset],eax
|
|
mov [add_save_file.Offset],eax
|
|
mov eax,[appl_memory]
|
|
mov [read_file.return],eax
|
|
mov [save_file.pointer],eax
|
|
mov [add_save_file.pointer],eax
|
|
mcall 18,16
|
|
mov ebx,[file_features_temp_area+32]
|
|
shr ebx,10
|
|
shr eax,2
|
|
cmp ebx,eax
|
|
jb .copy_for_one
|
|
shl eax,10
|
|
mov ecx,eax
|
|
mov [read_file.size],eax
|
|
mov [save_file.size],eax
|
|
mov [add_save_file.size],eax
|
|
|
|
cmp [copy_many_files], byte 1
|
|
je .continue_5
|
|
pusha
|
|
mov eax,[file_features_temp_area+32]
|
|
mov ebx,[save_file.size]
|
|
xor edx,edx
|
|
mov [current_progress_value],edx
|
|
mov [current_progress_value_1],edx
|
|
div ebx
|
|
test edx,edx
|
|
jz @f
|
|
inc eax
|
|
@@:
|
|
mov [max_progress_value],eax
|
|
popa
|
|
.continue_5:
|
|
call progress_bar_copy ;_1
|
|
call add_application_memory.1
|
|
cmp [copy_many_files],byte 0
|
|
jne @f
|
|
inc [current_progress_value]
|
|
call progress_bar_copy ;_1
|
|
@@:
|
|
call load_file
|
|
test eax,eax
|
|
jnz .error
|
|
cmp [copy_many_files],byte 0
|
|
jne @f
|
|
inc [current_progress_value_1]
|
|
call progress_bar_copy ;_1
|
|
@@:
|
|
call write_file
|
|
test eax,eax
|
|
jnz .error
|
|
.continue:
|
|
mov eax,[file_features_temp_area+32]
|
|
mov ebx,[save_file.size]
|
|
sub eax,ebx
|
|
cmp eax,ebx
|
|
jbe .end_copy_write
|
|
mov [file_features_temp_area+32],eax
|
|
add [add_save_file.Offset],ebx
|
|
add [read_file.Offset],ebx
|
|
cmp [copy_many_files],byte 0
|
|
jne @f
|
|
inc [current_progress_value]
|
|
call progress_bar_copy ;_1
|
|
@@:
|
|
call load_file
|
|
test eax,eax
|
|
jnz .error_1
|
|
cmp [copy_many_files],byte 0
|
|
jne @f
|
|
inc [current_progress_value_1]
|
|
call progress_bar_copy ;_1
|
|
@@:
|
|
call add_write_file
|
|
test eax,eax
|
|
jnz .error_1
|
|
jmp .continue
|
|
|
|
.end_copy_write:
|
|
mov [add_save_file.size],eax
|
|
add [add_save_file.Offset],ebx
|
|
mov [read_file.size],eax
|
|
add [read_file.Offset],ebx
|
|
inc [current_progress_value]
|
|
call progress_bar_copy
|
|
call load_file
|
|
test eax,eax
|
|
jnz .error_1
|
|
inc [current_progress_value_1]
|
|
call progress_bar_copy
|
|
call add_write_file
|
|
test eax,eax
|
|
jnz .error_1
|
|
mov ecx,[appl_memory]
|
|
sub ecx,[save_file.size]
|
|
call sub_application_memory.1
|
|
.exit:
|
|
ret
|
|
|
|
|
|
.copy_for_one:
|
|
call add_application_memory
|
|
mov eax,[file_features_temp_area+32]
|
|
mov [read_file.size],eax
|
|
inc [current_progress_value]
|
|
call progress_bar_copy
|
|
call load_file
|
|
test eax,eax
|
|
jnz .error
|
|
mov [save_file.size],ebx
|
|
inc [current_progress_value_1]
|
|
call progress_bar_copy
|
|
call write_file
|
|
test eax,eax
|
|
jnz .error
|
|
call sub_application_memory
|
|
ret
|
|
|
|
.error:
|
|
call start_error_window_thread
|
|
call sub_application_memory
|
|
add esp,4
|
|
mov [move_file_flag],0
|
|
jmp editbox_copy_name.exit_without_copy
|
|
|
|
.error_1:
|
|
call start_error_window_thread
|
|
mov ecx,[appl_memory]
|
|
sub ecx,[save_file.size]
|
|
call sub_application_memory.1
|
|
add esp,4
|
|
mov [move_file_flag],0
|
|
jmp editbox_copy_name.exit_without_copy
|
|
;-------------------------------------------------------------
|
|
copy_marked_files:
|
|
mov [copy_many_files],byte 1
|
|
mov [draw_all_progressbar],1
|
|
xor eax,eax
|
|
mov [current_progress_value],eax
|
|
mov [current_progress_value_1],eax
|
|
cmp [select_panel_counter],al
|
|
jne .right_1
|
|
mov eax,[left_marked_counter]
|
|
mov [max_progress_value],eax
|
|
mov ebp,[left_folder_block]
|
|
.start:
|
|
mov ebx,ebp
|
|
dec ebx
|
|
imul ebx,304
|
|
add ebx,[left_folder_data]
|
|
add ebx,32+40
|
|
test [ebx-40],byte 0x10
|
|
jnz @f
|
|
cmp [ebx+299-40],byte 0
|
|
je @f
|
|
cmp [ebx],word '..'
|
|
jne .continue
|
|
cmp [ebx+2],byte 0
|
|
je .continue_1
|
|
.continue:
|
|
push ebx
|
|
mov esi,read_folder_name
|
|
mov edi,file_name
|
|
call copy_path_1
|
|
pop ebx
|
|
call copy_file_1.1
|
|
cmp [move_file_flag],0
|
|
je .continue_1
|
|
call del_file
|
|
test eax,eax
|
|
jz .continue_1
|
|
mov [move_file_flag],0
|
|
call start_error_window_thread
|
|
jmp reload_dir_all
|
|
.continue_1:
|
|
@@:
|
|
dec ebp
|
|
jnz .start
|
|
cmp [move_file_flag],0
|
|
je reload_dir_all
|
|
mov [left_start_draw_cursor_line],0
|
|
mov [move_file_flag],0
|
|
mov [copy_many_files],byte 0
|
|
jmp reload_dir_all
|
|
|
|
.right_1:
|
|
mov eax,[right_marked_counter]
|
|
mov [max_progress_value],eax
|
|
mov ebp,[right_folder_block]
|
|
.start_1:
|
|
mov ebx,ebp
|
|
dec ebx
|
|
imul ebx,304
|
|
add ebx,[right_folder_data]
|
|
add ebx,32+40
|
|
test [ebx-40],byte 0x10
|
|
jnz @f
|
|
cmp [ebx+299-40],byte 0
|
|
je @f
|
|
cmp [ebx],word '..'
|
|
jne .continue_2
|
|
cmp [ebx+2],byte 0
|
|
je .continue_3
|
|
.continue_2:
|
|
push ebx
|
|
mov esi,read_folder_1_name
|
|
mov edi,file_name
|
|
call copy_path_1
|
|
pop ebx
|
|
call copy_file_1.1
|
|
cmp [move_file_flag],0
|
|
je .continue_3
|
|
call del_file
|
|
test eax,eax
|
|
jz .continue_3
|
|
mov [move_file_flag],0
|
|
call start_error_window_thread
|
|
jmp reload_dir_all
|
|
.continue_3:
|
|
@@:
|
|
dec ebp
|
|
jnz .start_1
|
|
cmp [move_file_flag],0
|
|
je reload_dir_all
|
|
mov [right_start_draw_cursor_line],0
|
|
mov [move_file_flag],0
|
|
mov [copy_many_files],byte 0
|
|
jmp reload_dir_all
|
|
;--------------------------------------------------------------------- |