;--------------------------------------------------------------------- delete_file: ; call progress_bar ; jmp still mov [confirmation_type],delete_type call confirmation_action cmp [work_confirmation_yes],1 jne red ;reload_dir xor eax,eax mov [files_counter],eax mov [directories_counter],eax mov [files_size.low],eax mov [files_size.high],eax call get_files_information call delete_marked_files cmp [delete_marked_yes],1 je .end_1 ;reload_dir_all xor eax,eax xor edx,edx cmp [select_panel_counter],0 jne .right_1 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 mov esi,read_folder_name ;read_folder.name jmp .end .right_1: 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 mov esi,read_folder_1_name ;read_folder_1.name .end: mov [error_pointer],ebx mov edi,file_name ;delete_file_data.name call copy_path_1 test [ebx-40],byte 0x10 jz @f push eax ebx xor eax,eax mov [current_progress_value],eax ; mov [delete_marked_yes],al mov [draw_all_progressbar],1 call delete_dir pop ebx eax jmp .end_1 @@: call del_file test eax,eax jz .end_1 call start_error_window_thread jmp reload_dir_all .end_1: cmp [select_panel_counter],0 jne .right call proc_read_left_folder jmp red .right: call proc_read_right_folder jmp red ;--------------------------------------------------------------------- delete_marked_files: mov eax,[directories_counter] add eax,[files_counter] mov [max_progress_value],eax xor eax,eax mov [current_progress_value],eax mov [delete_marked_yes],al mov [draw_all_progressbar],1 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 cmp [ebx+299-40],byte 0 je @f cmp [ebx],word '..' jne .continue cmp [ebx+2],byte 0 je .continue_1 .continue: mov esi,read_folder_name ;read_folder.name call prepare_data_6 .continue_1: mov [delete_marked_yes],1 @@: dec ebp jnz .start cmp [delete_marked_yes],0 je @f mov [left_start_draw_cursor_line],0 @@: ret .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 cmp [ebx+299-40],byte 0 je @f cmp [ebx],word '..' jne .continue_2 cmp [ebx+2],byte 0 je .continue_3 .continue_2: mov esi,read_folder_1_name ;read_folder_1.name call prepare_data_6 .continue_3: mov [delete_marked_yes],1 @@: dec ebp jnz .start_1 cmp [delete_marked_yes],0 je @f mov [right_start_draw_cursor_line],0 @@: ret ;--------------------------------------------------------------------- prepare_data_6: mov [error_pointer],ebx mov edi,file_name ;delete_file_data.name call copy_path_1 ; inc [current_progress_value] ; call progress_bar_delete test [ebx-40],byte 0x10 jz @f call delete_dir jmp .continue @@: inc [current_progress_value] call progress_bar_delete call del_file test eax,eax jz .continue ; .continue_1 call start_error_window_thread add esp,8 .continue: ret ;--------------------------------------------------------------------- prepare_data_7: add ebx,32+40 cmp [ebx],word '..' jne .continue cmp [ebx+2],byte 0 jne .continue add esp,4 jmp reload_dir .continue: ret ;--------------------------------------------------------------------- delete_dir: pusha mov [recursive_pointer],0 mov eax,[appl_memory] mov [appl_memory_old],eax .1: mov [read_delete_dir_data.size],0 mov [read_delete_dir_data.return],delete_dir_data call read_delete_dir test eax,eax jz @f mov [error_pointer],file_name call start_error_window_thread popa add esp,8+4 ret @@: mov eax,[delete_dir_data+8] cmp eax,2 ja @f inc [current_progress_value] call progress_bar_delete call del_file test eax,eax jz .end mov [error_pointer],file_name call start_error_window_thread popa add esp,8+4 ret @@: imul eax,304 add eax,32 mov ebx,eax add ebx,[appl_memory_old] cmp ebx,[appl_memory] jbe @f mov ecx,[appl_memory] mov ecx,ebx mov [appl_memory],ecx mcall 64,1 @@: mov eax,[delete_dir_data+8] mov [read_delete_dir_data.size],eax mov eax,[appl_memory_old] mov [read_delete_dir_data.return],eax call read_delete_dir test eax,eax jz @f mov [error_pointer],file_name call start_error_window_thread popa add esp,8+4 ret @@: call delete_dir_1 jc .1 .end: call return_delete_path dec [recursive_pointer] cmp [recursive_pointer],0 jge .1 @@: mov ecx,[appl_memory_old] cmp [appl_memory],ecx je @f mov [appl_memory],ecx mcall 64,1 @@: popa ret ;--------------------------------------------------------------------- delete_dir_1: mov ebp,[appl_memory_old] mov ebp,[ebp+8] .start: mov ebx,ebp dec ebx imul ebx,304 add ebx,[appl_memory_old] add ebx,32+40 cmp [ebx],byte '.' jne @f cmp [ebx+1],byte 0 je .continue_4 @@: cmp [ebx],word '..' jne .continue cmp [ebx+2],byte 0 je .continue_4 .continue: mov esi,file_name inc [recursive_pointer] call copy_path_2 test [ebx-40],byte 0x10 jnz .continue_3 @@: inc [current_progress_value] call progress_bar_delete call del_file test eax,eax jz .continue_1 mov [error_pointer],file_name call start_error_window_thread add esp,4 popa add esp,8+4 ret .continue_1: dec [recursive_pointer] call return_delete_path dec ebp jnz .start .continue_4: inc [current_progress_value] call progress_bar_delete call del_file test eax,eax jz .continue_2 call start_error_window_thread add esp,4 popa add esp,8+4 ret .continue_2: clc ret .continue_3: stc ret ;--------------------------------------------------------------------- return_delete_path: mov edi,file_name @@: inc edi cmp [edi],byte 0 jne @r dec edi @@: dec edi cmp [edi],byte '/' jne @r cmp edi,file_name jbe @f mov [edi],byte 0 @@: ret ;--------------------------------------------------------------------- copy_path_2: xor eax,eax @@: cld lodsb test al,al jnz @b mov edi,esi mov [edi-1],byte '/' mov esi,ebx @@: cld lodsb stosb test al,al jnz @b ret ;---------------------------------------------------------------------