0,0 → 1,204 |
;------------------------------------------------------------------------------ |
;///// 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 |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |