3,6 → 3,8 |
byte copy_from[4096]; |
byte cut_active=0; |
|
progress_bar copy_bar = {0,16,49,50,20,0,0,1,0xFFFFFF,0x00FF00,0x000000}; |
|
enum {NOCUT, CUT, COPY_PASTE_END}; |
|
Clipboard clipboard; |
13,7 → 15,6 |
byte copy_t[4096]; |
dword buff_data; |
int ind = 0; |
|
if (selected_count) |
{ |
buff_data = malloc(selected_count*4096+10); |
51,7 → 52,37 |
CreateThread(#PasteThread,copy_stak+20000-4); |
} |
|
BDVK file_info_count; |
int file_count_copy; |
|
void DirFileCount(dword way) |
{ |
dword dirbuf, fcount, i, filename; |
dword cur_file; |
if (isdir(way)) |
{ |
cur_file = malloc(4096); |
// In the process of recursive descent, memory must be allocated dynamically, because the static memory -> was a bug !!! But unfortunately pass away to sacrifice speed. |
GetDir(#dirbuf, #fcount, way, DIRS_ONLYREAL); |
for (i=0; i<fcount; i++) |
{ |
filename = i*304+dirbuf+72; |
sprintf(cur_file,"%s/%s",way,filename); |
|
if (TestBit(ESDWORD[filename-40], 4) ) |
{ |
file_count_copy++; |
DirFileCount(cur_file); |
} |
else |
{ |
file_count_copy++; |
} |
} |
free(cur_file); |
} |
} |
|
void PasteThread() |
{ |
char copy_rezult; |
58,6 → 89,8 |
int j; |
int cnt = 0; |
dword buf; |
file_count_copy = 0; |
copy_bar.value = 0; |
|
buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1); |
if (DSDWORD[buf+4] != 3) return; |
64,6 → 97,14 |
cnt = ESINT[buf+8]; |
for (j = 0; j < cnt; j++) { |
strlcpy(#copy_from, j*4096+buf+10, 4096); |
GetFileInfo(#copy_from, #file_info_count); |
if ( file_info_count.isfolder ) DirFileCount(#copy_from); |
else file_count_copy++; |
} |
copy_bar.max = file_count_copy; |
DisplayCopyfForm(); |
for (j = 0; j < cnt; j++) { |
strlcpy(#copy_from, j*4096+buf+10, 4096); |
if (!copy_from) CopyExit(); |
strcpy(#copy_to, #path); |
strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
79,9 → 120,6 |
CopyExit(); |
} |
|
copyf_Draw_Progress(#copy_from); |
pause(1000); |
|
if (copy_rezult = copyf(#copy_from,#copy_to)) |
{ |
Write_Error(copy_rezult); |
102,7 → 140,7 |
} |
|
#define WIN_COPY_W 345 |
#define WIN_COPY_H 80 |
#define WIN_COPY_H 110 |
proc_info Copy_Form; |
|
void DisplayCopyfForm() |
118,7 → 156,7 |
DefineAndDrawWindow(Form.left+Form.width-200,Form.top+90,WIN_COPY_W,GetSkinHeight()+WIN_COPY_H,0x34,0xFFFFFF,T_PASTE_WINDOW_TITLE); |
GetProcessInfo(#Copy_Form, SelfInfo); |
WriteText(45, 11, 0x80, system.color.work_text, T_PASTE_WINDOW_TEXT); |
DrawFlatButton(Copy_Form.cwidth - 90, Copy_Form.cheight - 32, 80, 22, 10, system.color.work_button, T_PASTE_WINDOW_BUTTON); |
DrawFlatButton(Copy_Form.cwidth - 96, Copy_Form.cheight - 32, 80, 22, 10, system.color.work_button, T_PASTE_WINDOW_BUTTON); |
DrawBar(8, 10, 32, 32, 0xFFFfff); |
break; |
} |
132,9 → 170,18 |
|
|
void copyf_Draw_Progress(dword copying_filename) { |
//if (Copy_Form.cwidth==0) return; |
if (Copy_Form.cwidth==0) |
{ |
copy_bar.value++; |
return; |
} |
copy_bar.width = Copy_Form.cwidth-32; |
DisplayCopyfForm(); |
Put_icon(copying_filename+strrchr(copying_filename,'.'), 16, 19, 0xFFFfff, 0); |
DrawBar(45, 29, Copy_Form.cwidth-45, 10, 0xFFFFFF); |
WriteText(45, 29, 0x80, system.color.work_text, copying_filename); |
WriteText(45, 29, 0x80, 0x000000, copying_filename); |
progressbar_draw stdcall (#copy_bar); |
progressbar_progress stdcall (#copy_bar); |
//copy_bar.value++; |
pause(100); |
} |