forked from KolibriOS/kolibrios
205 lines
4.7 KiB
PHP
205 lines
4.7 KiB
PHP
|
;------------------------------------------------------------------------------
|
||
|
;///// COPYING ////////////////////////////////////////////////////////////////
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
func copy_file
|
||
|
pushad
|
||
|
|
||
|
cmp [active_panel],0
|
||
|
jne ._00
|
||
|
push f_path0
|
||
|
push [f_plen0]
|
||
|
mov eax,[d_lpos]
|
||
|
shl eax,4
|
||
|
add eax,lstart
|
||
|
push eax
|
||
|
mov esi,f_path1
|
||
|
mov eax,[f_plen1]
|
||
|
jmp @f
|
||
|
._00:
|
||
|
push f_path1
|
||
|
push [f_plen1]
|
||
|
mov eax,[d_rpos]
|
||
|
shl eax,4
|
||
|
add eax,rstart
|
||
|
push eax
|
||
|
mov esi,f_path0
|
||
|
mov eax,[f_plen0]
|
||
|
@@:
|
||
|
mov ebx,[esp]
|
||
|
test byte[ebx+11],FA_FOLDER
|
||
|
jz @f
|
||
|
add esp,3*4
|
||
|
stc
|
||
|
jmp .close
|
||
|
@@:
|
||
|
mov edi,fc_info.path
|
||
|
call get_normal_path
|
||
|
mov eax,[len]
|
||
|
mov byte[edi+eax-1],'/'
|
||
|
mov [fc_len2],eax
|
||
|
|
||
|
pop esi
|
||
|
call get_file_info
|
||
|
mov eax,[f_size]
|
||
|
mov [fc_size],eax
|
||
|
|
||
|
pop eax
|
||
|
pop esi
|
||
|
mov edi,f_info.path
|
||
|
call get_normal_path
|
||
|
mov eax,[len]
|
||
|
mov byte[edi+eax-1],'/'
|
||
|
mov [fc_len1],eax
|
||
|
|
||
|
jmp .redraw_copy
|
||
|
|
||
|
.redraw:
|
||
|
call draw_window_full
|
||
|
.redraw_copy:
|
||
|
call draw_window_copy_main
|
||
|
.still:
|
||
|
mcall MF_WAITEVENT
|
||
|
jmpe al,.still,\
|
||
|
EV_REDRAW,.redraw,\
|
||
|
EV_KEY,.key,\
|
||
|
EV_BUTTON,.button
|
||
|
|
||
|
.key:
|
||
|
mcall MF_GETKEY
|
||
|
|
||
|
jmpe ah,.still,\
|
||
|
VK_ESCAPE,._close,\
|
||
|
VK_RETURN,.copy
|
||
|
|
||
|
.button:
|
||
|
jmp .still
|
||
|
|
||
|
.copy:
|
||
|
mov ecx,[fc_size]
|
||
|
shr ecx,9
|
||
|
inc ecx
|
||
|
push ecx
|
||
|
shl ecx,9
|
||
|
add ecx,MEM_USED
|
||
|
mcall MF_MEMRESIZE,MR_SETSIZE
|
||
|
or eax,eax
|
||
|
jnz .close
|
||
|
|
||
|
mov edi,file_info
|
||
|
mov al,' '
|
||
|
mov ecx,13
|
||
|
repne scasb
|
||
|
sub ecx,12
|
||
|
neg ecx
|
||
|
push ecx
|
||
|
mov esi,file_info
|
||
|
mov edi,f_info.path
|
||
|
add edi,[fc_len1]
|
||
|
rep movsb
|
||
|
mov byte[edi],0
|
||
|
pop ecx
|
||
|
mov esi,file_info
|
||
|
mov edi,fc_info.path
|
||
|
add edi,[fc_len2]
|
||
|
rep movsb
|
||
|
mov byte[edi],0
|
||
|
|
||
|
xor eax,eax ; FS_READ
|
||
|
mov [f_info],eax
|
||
|
mov [f_info+4],eax
|
||
|
pop eax
|
||
|
mov [f_info+8],eax
|
||
|
mov dword[f_info+12],MEM_USED
|
||
|
mcall MF_FSACCESS,f_info
|
||
|
mov eax,[fc_size]
|
||
|
mov [fc_info+8],eax
|
||
|
mcall MF_FSACCESS,fc_info
|
||
|
|
||
|
mcall MF_MEMRESIZE,MR_SETSIZE,MEM_USED
|
||
|
._close:
|
||
|
clc
|
||
|
.close:
|
||
|
popad
|
||
|
ret
|
||
|
endf
|
||
|
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
func draw_window_copy_main
|
||
|
mcall2 MF_FILLRECT,oX+tW*2,tW*76,oY+tH*7,tH*8,0x00C0C0C0
|
||
|
|
||
|
mmov esi,oX+tW*4+2,oX+tW*75+3
|
||
|
mmov edi,oY+tH*8+3,oY+tH*13+5
|
||
|
xor edx,edx
|
||
|
call draw_frame
|
||
|
mmov esi,oX+tW*4+4,oX+tW*75+1
|
||
|
mmov edi,oY+tH*8+5,oY+tH*13+3
|
||
|
call draw_frame
|
||
|
|
||
|
mcall2 MF_DRAWLINE,oX+tW*4+4,oX+tW*75+1,oY+tH*11+3,oY+tH*11+3,0
|
||
|
|
||
|
mcall2 MF_FILLRECT,oX+tW*40-(sz_copy.size-2)*tW/2-tW,sz_copy.size*tW,\
|
||
|
oY+tH*8+3,3,0x00C0C0C0
|
||
|
mcall1 MF_DRAWTEXT,oX+tW*40-(sz_copy.size-2)*tW/2,oY+tH*8,\
|
||
|
0x00000000,sz_copy,sz_copy.size-2
|
||
|
|
||
|
mcall1 ,oX+tW*6,oY+tH*9,,,sz_copy.size
|
||
|
|
||
|
mov edi,file_info
|
||
|
mov al,' '
|
||
|
mov ecx,13
|
||
|
repne scasb
|
||
|
|
||
|
madd ebx,(sz_copy.size)*tW,0
|
||
|
mov esi,ecx
|
||
|
sub esi,12
|
||
|
neg esi
|
||
|
mcall MF_DRAWTEXT,,,file_info
|
||
|
imul esi,tW
|
||
|
shl esi,16
|
||
|
add ebx,esi
|
||
|
mcall ,,,sz_copyto,sz_copyto.size
|
||
|
|
||
|
call draw_copy_input
|
||
|
|
||
|
ret
|
||
|
endf
|
||
|
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
func draw_copy_input
|
||
|
mcall2 MF_FILLRECT,oX+tW*6,tW*68,oY+tH*10,tH,0x00008080
|
||
|
|
||
|
mov edx,fc_info.path
|
||
|
mov esi,[fc_len2]
|
||
|
cmp esi,68
|
||
|
jb @f
|
||
|
sub esi,68
|
||
|
lea edx,[edx+esi+1]
|
||
|
mov esi,67
|
||
|
@@:
|
||
|
mcall1 MF_DRAWTEXT,oX+tW*6,oY+tH*10+1,0x00000000
|
||
|
ret
|
||
|
endf
|
||
|
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
;fc_pst db 0
|
||
|
;fc_cur db 0
|
||
|
|
||
|
align 4
|
||
|
|
||
|
fc_size dd ?
|
||
|
fc_len1 dd 0
|
||
|
fc_len2 dd 0
|
||
|
|
||
|
fc_info:
|
||
|
dd 1
|
||
|
dd 0
|
||
|
dd ?
|
||
|
dd MEM_USED
|
||
|
dd MEM_FOR_OS
|
||
|
.path:
|
||
|
rb 200
|