Rev 7491 | Rev 7878 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4042 | leency | 1 | |
4428 | leency | 2 | byte copy_from[4096]; |
5514 | leency | 3 | byte cut_active=0; |
4428 | leency | 4 | |
4896 | punk_joker | 5 | |
5804 | punk_joker | 6 | |
5691 | punk_joker | 7 | |
6646 | leency | 8 | dword selected_offset = file_mas[n]*304 + buf+32 + 7; |
6602 | leency | 9 | ESBYTE[selected_offset] = state; |
10 | if (n==0) && (strncmp(file_mas[n]*304+buf+72,"..",2)==0) { |
||
7278 | leency | 11 | ESBYTE[selected_offset] = false; //do not selec ".." directory |
12 | return; |
||
13 | } |
||
14 | if (state==true) selected_count++; |
||
6602 | leency | 15 | if (state==false) selected_count--; |
16 | if (selected_count<0) selected_count=0; |
||
7804 | leency | 17 | } |
4042 | leency | 18 | |
19 | |||
6646 | leency | 20 | dword selected_offset = file_mas[n]*304 + buf+32 + 7; |
21 | return ESBYTE[selected_offset]; |
||
22 | } |
||
23 | |||
24 | |||
6602 | leency | 25 | { |
4042 | leency | 26 | byte copy_t[4096]; |
6602 | leency | 27 | dword buff_data; |
28 | dword path_len = 0; |
||
6597 | punk_joker | 29 | dword size_buf = 0; |
6602 | leency | 30 | dword copy_buf_offset = 0; |
31 | dword i; |
||
7422 | leency | 32 | |
6597 | punk_joker | 33 | |
6602 | leency | 34 | |
7278 | leency | 35 | |
36 | if (!selected_count) |
||
37 | setElementSelectedFlag(files.cur_y, true); |
||
38 | |||
39 | |||
40 | |||
41 | |||
6602 | leency | 42 | for (i=0; i |
43 | { |
||
44 | if (getElementSelectedFlag(i) == true) { |
||
6646 | leency | 45 | sprintf(#copy_t,"%s/%s",#path,file_mas[i]*304+buf+72); |
6635 | leency | 46 | path_len = strlen(#copy_t); |
6602 | leency | 47 | size_buf += path_len + 1; |
48 | } |
||
6597 | punk_joker | 49 | } |
50 | size_buf += 20; |
||
6602 | leency | 51 | buff_data = malloc(size_buf); |
52 | ESDWORD[buff_data] = size_buf; |
||
53 | ESDWORD[buff_data+4] = SLOT_DATA_TYPE_RAW; |
||
6791 | leency | 54 | ESINT[buff_data+8] = selected_count; |
6602 | leency | 55 | copy_buf_offset = buff_data + 10; |
56 | for (i=0; i |
||
57 | { |
||
6597 | punk_joker | 58 | if (getElementSelectedFlag(i) == true) { |
6646 | leency | 59 | sprintf(copy_buf_offset,"%s/%s",#path,file_mas[i]*304+buf+72); |
6635 | leency | 60 | copy_buf_offset += strlen(copy_buf_offset) + 1; |
6602 | leency | 61 | } |
62 | } |
||
6597 | punk_joker | 63 | if (selected_count==1) setElementSelectedFlag(files.cur_y, false); |
6602 | leency | 64 | Clipboard__SetSlotData(size_buf, buff_data); |
7038 | leency | 65 | cut_active = cut; |
6597 | punk_joker | 66 | free(buff_data); |
67 | } |
||
68 | |||
69 | |||
6600 | punk_joker | 70 | copy_stak = free(copy_stak); |
7210 | leency | 71 | copy_stak = malloc(64000); |
6600 | punk_joker | 72 | CreateThread(#PasteThread,copy_stak+64000-4); |
73 | } |
||
74 | |||
75 | |||
6597 | punk_joker | 76 | { |
77 | char copy_rezult; |
||
78 | int j; |
||
79 | int paste_elements_count = 0; |
||
6602 | leency | 80 | dword buf; |
6597 | punk_joker | 81 | dword path_offset; |
6602 | leency | 82 | dword file_count_paste = 0; |
7369 | leency | 83 | _dir_size paste_dir_size; |
84 | BDVK file_info_count; |
||
85 | |||
86 | |||
6597 | punk_joker | 87 | |
6602 | leency | 88 | |
7038 | leency | 89 | if (DSDWORD[buf+4] != 3) return; |
5514 | leency | 90 | paste_elements_count = ESINT[buf+8]; |
6602 | leency | 91 | path_offset = buf + 10; |
92 | //calculate copy files count for progress bar |
||
93 | for (j = 0; j < paste_elements_count; j++) { |
||
94 | GetFileInfo(path_offset, #file_info_count); |
||
95 | if ( file_info_count.isfolder ) { |
||
7369 | leency | 96 | paste_dir_size.get(path_offset); |
97 | file_count_paste += paste_dir_size.files; |
||
98 | } |
||
99 | else file_count_paste++; |
||
100 | path_offset += strlen(path_offset) + 1; |
||
6602 | leency | 101 | } |
5957 | punk_joker | 102 | copy_bar.max = file_count_paste; |
7369 | leency | 103 | |
5804 | punk_joker | 104 | |
5957 | punk_joker | 105 | else operation_flag = COPY_FLAG; |
106 | |||
107 | |||
6602 | leency | 108 | DisplayOperationForm(); |
109 | for (j = 0; j < paste_elements_count; j++) { |
||
110 | strcpy(#copy_from, path_offset); |
||
111 | if (!copy_from) DialogExit(); |
||
5804 | punk_joker | 112 | sprintf(#copy_to, "%s/%s", #path, #copy_from+strrchr(#copy_from,'/')); |
6635 | leency | 113 | if (!strcmp(#copy_from,#copy_to)) |
5957 | punk_joker | 114 | { |
115 | sprintf(#copy_to, "%s/NEW_%s", #path, #copy_from+strrchr(#copy_from,'/')); |
||
6635 | leency | 116 | } |
5957 | punk_joker | 117 | if (strstr(#copy_to, #copy_from)) |
4698 | punk_joker | 118 | { |
119 | notify("Copy directory into itself is a bad idea..."); |
||
120 | DialogExit(); |
||
5804 | punk_joker | 121 | } |
4698 | punk_joker | 122 | |
5957 | punk_joker | 123 | |
124 | { |
||
125 | Write_Error(copy_rezult); |
||
126 | if (copy_rezult==8) DialogExit(); //not enough space |
||
7491 | leency | 127 | } |
5957 | punk_joker | 128 | else if (cut_active) |
129 | { |
||
130 | strcpy(#file_path, #copy_from); |
||
6597 | punk_joker | 131 | Del_File2(#copy_from, 0); |
5957 | punk_joker | 132 | |
133 | |||
134 | path_offset += strlen(path_offset) + 1; |
||
6602 | leency | 135 | } |
5931 | punk_joker | 136 | cut_active=false; |
6602 | leency | 137 | if (info_after_copy.checked) notify(INFO_AFTER_COPY); |
7244 | leency | 138 | DialogExit(); |
5931 | punk_joker | 139 | }>>=0)>0)> |
6602 | leency | 140 |