Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3832 → Rev 3833

/programs/fs/kfm/trunk/data.inc
2,9 → 2,35
align 4
files_counter rd 1
directories_counter rd 1
 
files_size:
.low rd 1
.high rd 1
;Ôîðìàò âðåìåíè:
; * +0: byte: ñåêóíäû
; * +1: byte: ìèíóòû
; * +2: byte: ÷àñû
; * +3: byte: çàðåçåðâèðîâàíî (0)
; * íàïðèìåð, 23.59.59 çàïèñûâàåòñÿ êàê (â hex) 3B 3B 17 00
time:
.create:
rd 1
.access:
rd 1
.change:
rd 1
;Ôîðìàò äàòû:
; * +0: byte: äåíü
; * +1: byte: ìåñÿö
; * +2: word: ãîä
; * íàïðèìåð, 25.11.1979 çàïèñûâàåòñÿ êàê (â hex) 19 0B BB 07
date:
.create:
rd 1
.access:
rd 1
.change:
rd 1
;---------------------------------------------------------------------
open_param rd 1
;---------------------------------------------------------------------
90,7 → 116,6
left_start_draw_line rd 1
left_folder_block rd 1
left_start_draw_cursor_line rw 1
;left_panel_clear_all rb 1
left_folder_block_1 rd 1
;---------------------------------------------------------------------
align 4
97,7 → 122,6
right_start_draw_line rd 1
right_folder_block rd 1
right_start_draw_cursor_line rw 1
;right_panel_clear_all rb 1
right_folder_block_1 rd 1
;---------------------------------------------------------------------
align 4
197,10 → 221,6
rb 512
;---------------------------------------------------------------------
align 4
type_size_string:
rb 32
;---------------------------------------------------------------------
align 4
type_files_string:
rb 16
;---------------------------------------------------------------------
/programs/fs/kfm/trunk/file_inf.inc
6,12 → 6,9
mov [files_size.low],eax
mov [files_size.high],eax
call get_files_information
mov eax,files_size
mov ebx,type_size_string
call decimal_string_20
call start_files_information_thread
jmp still
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
start_files_information_thread:
mcall 9, procinfo, -1
mov eax,[ebx+46]
26,135 → 23,175
mov [files_information_window_x+2],ax
mcall 51,1,thread_files_information_start,thread_stack
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
draw_files_information_window:
mcall 12, 1
mcall 0,[files_information_window_x] ,[files_information_window_y], 0x03ffffcc
mov edx,90 shl 16+50
mov ebx,0xa0000
mov edx,100 shl 16+50
mov ebx,0x800a0000
mov esi,0x10000000
cmp [inf_marked_yes],1
je .continue_4
 
cmp [nesting_direction],1
je @f
 
add edx,15
;--------------------------------------
.continue_4:
; show files counter
mcall 47, ,[files_counter]
;--------------------------------------
@@:
cmp [inf_marked_yes],1
je .continue_2
 
cmp [nesting_direction],0
je .continue_2
 
cmp [directories_counter],0
je @f
;--------------------------------------
.continue_2:
; show directories counter
add edx,15
mcall 47, ,[directories_counter]
mcall ,,[directories_counter]
;--------------------------------------
@@:
; show file or directory size
add edx,15
mov ebx,edx
mcall 4, ,0x90000000,type_size_string
mcall 47,0x80140001,files_size
;--------------------------------------
mov ebp,date.create
call show_date_and_time_of_files_information
;--------------------------------------
mov ebp,date.change
call show_date_and_time_of_files_information
;--------------------------------------
mov ebp,date.access
call show_date_and_time_of_files_information
;--------------------------------------
cmp [select_panel_counter],0
jne .right_1
 
mov edx,read_folder_name
jmp @f
;--------------------------------------
.right_1:
mov edx,read_folder_1_name
;--------------------------------------
@@:
mcall 4,<75,35>,0x80000000, ;file_name
mcall 4,<10,35>,0x90000000,type_location
mcall ,<10,35>,0x90000000,type_location
cmp [inf_marked_yes],1
je .continue
mcall 4,<90,50>,0x80000000,type_name
 
mcall ,<90,50>,0x80000000,type_name
mov ecx,0x90000000
cmp [nesting_direction],1
je @f
mcall 4,<10,50>, ,type_dir_name
 
mcall ,<10,50>,,type_dir_name
jmp .continue
;--------------------------------------
@@:
mcall 4,<10,50>, ,type_file_name
mcall ,<10,50>,,type_file_name
;--------------------------------------
.continue:
cmp [inf_marked_yes],1
je .continue_3
 
cmp [nesting_direction],1
je @f
;--------------------------------------
.continue_3:
add ebx,15
mcall 4, , ,type_files
mcall ,,,type_files
;--------------------------------------
@@:
cmp [inf_marked_yes],1
je .continue_1
 
cmp [nesting_direction],0
je .continue_1
 
cmp [directories_counter],0
je @f
;--------------------------------------
.continue_1:
add ebx,15
mcall 4, , ,type_dir
mcall ,,,type_dir
;--------------------------------------
@@:
add ebx,15
mcall 4, , ,type_size
mcall ,,,type_size
add ebx,15
mcall ,,,type_create
add ebx,15
mcall ,,,type_change
add ebx,15
mcall ,,,type_access
sub ebx,30
add ebx,107 shl 16
mcall ,,0x80000000,type_limiters_data_time
add ebx,15
mcall
add ebx,15
mcall
 
mcall 12, 2
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
show_date_and_time_of_files_information:
; show date
add edx,15
push edx
movzx ecx,byte [ebp+0]
mcall ,0x00020000
add edx,24 shl 16
movzx ecx,byte [ebp+1]
mcall
add edx,23 shl 16
movzx ecx,word [ebp+2]
mcall ,0x00040000
sub ebp,12
; show time
add edx,37 shl 16
movzx ecx,byte [ebp+2]
mcall ,0x00020000
add edx,24 shl 16
movzx ecx,byte [ebp+1]
mcall
add edx,23 shl 16
movzx ecx,byte [ebp+0]
mcall
pop edx
ret
;------------------------------------------------------------------------------
thread_files_information_start:
.red:
call draw_files_information_window
;--------------------------------------
.still:
mcall 10
cmp eax,1
je .red
 
cmp eax,2
je .key
 
cmp eax,3
je .button
 
jmp .still
;--------------------------------------
.key:
mcall 2
;--------------------------------------
.button:
mcall -1
jmp .still
;---------------------------------------------------------------------
; ÏÅÐÅÂÎÄ 10-ÍÛÕ ×ÈÑÅË ÑÎ ÇÍÀÊÎÌ Â ÑÒÐÎÊÎÂÛÉ ÂÈÄ
; Âõîä:
; EAX - óêàçàòåëü íà ÷èñëî
; EBX - àäðåñ ñòðîêè
;---------------------------------------------------------------------
decimal_string_20:
push eax ebx ecx edx
mov [divisor],word 10
mov ebp,eax
xor ecx,ecx
; mov [ebx],byte '0'
; inc ebx
.p3:
xor edx,edx
push ebx
call Division_64bit
mov eax,[quotent]
mov [ebp],eax
mov eax,[quotent+4]
mov [ebp+4],eax
pop ebx
add edx,48
push edx
inc ecx
cmp [ebp],dword 0
jne .p3
cmp [ebp+4],dword 0
jne .p3
cmp ecx,19
jbe .p4
mov ecx,20
dec ebx
.p4:
pop edx
mov [ebx],dl
inc ebx
loop .p4
mov [ebx], byte 0
pop edx ecx ebx eax
ret
;----------------------------------------------------------
;------------------------------------------------------------------------------
; äåëåíèå 64-áèòíîãî ÷èñëà divident íà 16-áèòíîå ÷èñëî divisor.
; ×àñòíîå ïîìåùàåòñÿ â 64-áèòíóþ ïåðåìåííóþ quotent,
; à îñòàòîê - â 16-áèòíóþ ïåðåìåííóþ modulo
175,7 → 212,7
mov [quotent],ax
; mov [modulo],dx
ret
;--------------------------------------
;divident:
; rb 8
divisor:
184,28 → 221,32
rb 8
;modulo:
; rb 2
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
copy_type_name:
push esi
mov esi,ebx
mov edi,type_name
cld
;--------------------------------------
@@:
cld
lodsb
stosb
test al,al
jnz @b
 
pop esi
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_files_information:
call get_information_marked_files
cmp [inf_marked_yes],1
je .end_2
 
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
216,6 → 257,7
call prepare_data_8
mov esi,read_folder_name
jmp .end
;--------------------------------------
.right_1:
mov ax,[right_start_draw_cursor_line]
mov ebx,10
226,13 → 268,39
add ebx,[right_folder_data]
call prepare_data_8
mov esi,read_folder_1_name
;--------------------------------------
.end:
mov [error_pointer],ebx
;--------------------------------------
push eax ebx
sub ebx,40
; âðåìÿ ñîçäàíèÿ ôàéëà
mov eax,[ebx+8]
mov [time.create],eax
; äàòà ñîçäàíèÿ ôàéëà
mov eax,[ebx+12]
mov [date.create],eax
; âðåìÿ ïîñëåäíåãî äîñòóïà (÷òåíèå èëè çàïèñü)
mov eax,[ebx+16]
mov [time.access],eax
; äàòà ïîñëåäíåãî äîñòóïà
mov eax,[ebx+20]
mov [date.access],eax
; âðåìÿ ïîñëåäíåé ìîäèôèêàöèè
mov eax,[ebx+24]
mov [time.change],eax
; äàòà ïîñëåäíåé ìîäèôèêàöèè
mov eax,[ebx+28]
mov [date.change],eax
pop ebx eax
;--------------------------------------
call copy_type_name
mov edi,file_name
call copy_path_1
 
test [ebx-40],byte 0x10
jz @f
 
push eax ebx
call get_inf_dir
mov [nesting_direction],0
239,29 → 307,34
pop ebx eax
dec [directories_counter]
jmp .end_2
;--------------------------------------
@@:
mov [nesting_direction],1
call get_file_size
test eax,eax
jz .end_1
 
call start_error_window_thread
add esp,4
jmp reload_dir_all
;--------------------------------------
.end_1:
; inc [files_counter]
mov eax,[file_features_temp_area+32]
add [files_size.low],eax
mov eax,[file_features_temp_area+32+4]
adc [files_size.high],eax
;--------------------------------------
.end_2:
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_information_marked_files:
xor eax,eax
mov [inf_marked_yes],al
cmp [select_panel_counter],al
jne .right_1
 
mov ebp,[left_folder_block]
;--------------------------------------
.start:
mov ebx,ebp
dec ebx
270,21 → 343,29
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
call prepare_data_9
;--------------------------------------
.continue_1:
mov [inf_marked_yes],1
;--------------------------------------
@@:
dec ebp
jnz .start
 
ret
;--------------------------------------
.right_1:
mov ebp,[right_folder_block]
;--------------------------------------
.start_1:
mov ebx,ebp
dec ebx
293,20 → 374,26
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
call prepare_data_9
;--------------------------------------
.continue_3:
mov [inf_marked_yes],1
;--------------------------------------
@@:
dec ebp
jnz .start_1
 
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
prepare_data_9:
mov [error_pointer],ebx
mov edi,file_name
313,35 → 400,43
call copy_path_1
test [ebx-40],byte 0x10
jz @f
 
call get_inf_dir
ret
;--------------------------------------
@@:
inc [files_counter]
call get_file_size
test eax,eax
jz .continue
 
call start_error_window_thread
add esp,8+4
ret
;--------------------------------------
.continue:
mov eax,[file_features_temp_area+32]
add [files_size.low],eax
mov eax,[file_features_temp_area+32+4]
adc [files_size.high],eax
;--------------------------------------
.continue_1:
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
prepare_data_8:
add ebx,32+40
cmp [ebx],word '..'
jne .continue
 
cmp [ebx+2],byte 0
jne .continue
 
add esp,4+4
jmp reload_dir
;--------------------------------------
.continue:
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_inf_dir:
mov [nesting_direction],0
pusha
348,6 → 443,7
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
354,11 → 450,13
call read_delete_dir
test eax,eax
jz @f
 
mov [error_pointer],file_name
call start_error_window_thread
popa
add esp,8+8
ret
;--------------------------------------
@@:
mov eax,[delete_dir_data+8]
imul eax,304
367,10 → 465,12
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
379,19 → 479,24
call read_delete_dir
test eax,eax
jz @f
 
mov [error_pointer],file_name
call start_error_window_thread
popa
add esp,8+8
ret
;--------------------------------------
@@:
cmp [nesting_direction],0
je @f
 
call get_inf_dir_2
jnc .end
 
dec ebp
push ebp
jmp .1
;--------------------------------------
@@:
call get_inf_dir_1
jnc .end
398,29 → 503,35
dec ebp
push ebp
jmp .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
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
get_inf_dir_2:
pop eax
pop ebp
push eax
jmp get_inf_dir_1.start
;--------------------------------------
get_inf_dir_1:
inc [directories_counter]
mov ebp,[appl_memory_old]
mov ebp,[ebp+8]
;--------------------------------------
.start:
mov ebx,ebp
dec ebx
429,13 → 540,17
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]
442,8 → 557,10
call copy_path_2
test [ebx-40],byte 0x10
jnz .continue_3
;--------------------------------------
@@:
inc [files_counter]
;--------------------------------------
.continue_1:
mov eax,[ebx+32-40]
add [files_size.low],eax
453,16 → 570,17
call return_delete_path
dec ebp
jnz .start
 
;--------------------------------------
.continue_4:
clc
mov [nesting_direction],1
ret
;--------------------------------------
.continue_3:
stc
mov [nesting_direction],0
ret
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
;type_patch_test:
; pusha
; mcall 5,200
478,4 → 596,4
;temp_value_3 db '3',0
;temp_value_4 db '4',0
;temp_value_5 db '5',0
;---------------------------------------------------------------------
;------------------------------------------------------------------------------
/programs/fs/kfm/trunk/kfm.asm
1,6 → 1,6
;*****************************************************************************
; KFM - Kolibri File Manager
; Copyright (c) 2006 - 2012, Marat Zakiyanov aka Mario79, aka Mario
; Copyright (c) 2006 - 2013, Marat Zakiyanov aka Mario79, aka Mario
; All rights reserved.
;
; Redistribution and use in source and binary forms, with or without
25,7 → 25,7
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;*****************************************************************************
; KFM v0.47e 16.04.2012
; KFM v0.47g 24/07/2013
;---------------------------------------------------------------------
use32
org 0x0
/programs/fs/kfm/trunk/text.inc
1,4 → 1,4
header_text db 'Kolibri File Manager v0.47f 04/07/2013',0
header_text db 'Kolibri File Manager v0.47g 24/07/2013',0
;---------------------------------------------------------------------
fbutton_name:
.f1 db '1 Help',0
155,11 → 155,23
db 'Files:',0
;---------------------------------------------------------------------
type_dir:
db 'Dir.:',0
db 'Directories:',0
;---------------------------------------------------------------------
type_size:
db 'Size:',0
;---------------------------------------------------------------------
type_create:
db 'Create date:',0
;---------------------------------------------------------------------
type_change:
db 'Change date:',0
;---------------------------------------------------------------------
type_access:
db 'Access date:',0
;---------------------------------------------------------------------
type_limiters_data_time:
db '/ / : :',0
;---------------------------------------------------------------------
mouse_left_panel:
db 'Left ',0
mouse_right_panel:
191,8 → 203,8
background_stretch:
db '\S '
;---------------------------------------------------------------------
files_information_window_x: dd 100 shl 16 + 250
files_information_window_y: dd 100 shl 16 + 300
files_information_window_x: dd 100 shl 16 + 300
files_information_window_y: dd 100 shl 16 + 200
;---------------------------------------------------------------------
error_window_x: dd 100 shl 16 + 250
error_window_y: dd 100 shl 16 + 80