Rev 7804 | Rev 7972 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4042 | leency | 1 | |
7878 | leency | 2 | // // |
3 | // MASS ACTIONS // |
||
4 | // // |
||
5 | //===================================================// |
||
6 | |||
4896 | 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 | |||
7878 | leency | 25 | { |
4042 | leency | 26 | int j; |
7878 | leency | 27 | BDVK file_info_count; |
28 | DIR_SIZE paste_dir_size; |
||
29 | |||
30 | |||
31 | if ( file_info_count.isfolder ) { |
||
32 | return paste_dir_size.get(_in_path); |
||
33 | } else { |
||
34 | return 1; |
||
35 | } |
||
36 | } |
||
37 | |||
38 | |||
39 | // // |
||
40 | // COPY AND PASTE // |
||
41 | // // |
||
42 | //===================================================// |
||
43 | byte copy_to[4096]; |
||
44 | byte copy_from[4096]; |
||
45 | bool cut_active = false; |
||
46 | |||
47 | |||
48 | |||
49 | |||
50 | { |
||
51 | byte copy_t[4096]; |
||
6602 | leency | 52 | dword buff_data; |
53 | dword path_len = 0; |
||
6597 | punk_joker | 54 | dword size_buf = 0; |
6602 | leency | 55 | dword copy_buf_offset = 0; |
56 | dword i; |
||
7422 | leency | 57 | |
6597 | punk_joker | 58 | |
6602 | leency | 59 | |
7278 | leency | 60 | |
7878 | leency | 61 | |
62 | |||
7278 | leency | 63 | if (!selected_count) { |
7878 | leency | 64 | setElementSelectedFlag(files.cur_y, true); |
7278 | leency | 65 | } |
7878 | leency | 66 | |
7278 | leency | 67 | |
68 | |||
69 | |||
6602 | leency | 70 | for (i=0; i |
71 | { |
||
72 | if (getElementSelectedFlag(i) == true) { |
||
6646 | leency | 73 | sprintf(#copy_t,"%s/%s",#path,file_mas[i]*304+buf+72); |
6635 | leency | 74 | path_len = strlen(#copy_t); |
6602 | leency | 75 | size_buf += path_len + 1; |
76 | } |
||
6597 | punk_joker | 77 | } |
78 | size_buf += 20; |
||
6602 | leency | 79 | buff_data = malloc(size_buf); |
80 | ESDWORD[buff_data] = size_buf; |
||
81 | ESDWORD[buff_data+4] = SLOT_DATA_TYPE_RAW; |
||
6791 | leency | 82 | ESINT[buff_data+8] = selected_count; |
6602 | leency | 83 | copy_buf_offset = buff_data + 10; |
84 | for (i=0; i |
||
85 | { |
||
6597 | punk_joker | 86 | if (getElementSelectedFlag(i) == true) { |
6646 | leency | 87 | sprintf(copy_buf_offset,"%s/%s",#path,file_mas[i]*304+buf+72); |
6635 | leency | 88 | copy_buf_offset += strlen(copy_buf_offset) + 1; |
6602 | leency | 89 | } |
90 | } |
||
6597 | punk_joker | 91 | if (selected_count==1) setElementSelectedFlag(files.cur_y, false); |
6602 | leency | 92 | Clipboard__SetSlotData(size_buf, buff_data); |
7038 | leency | 93 | free(buff_data); |
6597 | punk_joker | 94 | } |
95 | |||
96 | |||
6600 | punk_joker | 97 | |
6597 | punk_joker | 98 | { |
99 | char copy_rezult; |
||
100 | int j; |
||
101 | int paste_elements_count = 0; |
||
6602 | leency | 102 | dword buf; |
6597 | punk_joker | 103 | dword path_offset; |
6602 | leency | 104 | |
105 | |||
7038 | leency | 106 | if (DSDWORD[buf+4] != 3) return; |
5514 | leency | 107 | paste_elements_count = ESINT[buf+8]; |
6602 | leency | 108 | path_offset = buf + 10; |
109 | |||
7878 | leency | 110 | |
111 | DisplayOperationForm(MOVE_FLAG); |
||
112 | } else { |
||
113 | DisplayOperationForm(COPY_FLAG); |
||
114 | } |
||
115 | |||
116 | |||
6602 | leency | 117 | copy_bar.max += GetFilesCount(path_offset); |
7878 | leency | 118 | path_offset += strlen(path_offset) + 1; |
6602 | leency | 119 | } |
5957 | punk_joker | 120 | |
5804 | punk_joker | 121 | |
6602 | leency | 122 | for (j = 0; j < paste_elements_count; j++) { |
123 | strcpy(#copy_from, path_offset); |
||
124 | if (!copy_from) DialogExit(); |
||
5804 | punk_joker | 125 | sprintf(#copy_to, "%s/%s", #path, #copy_from+strrchr(#copy_from,'/')); |
6635 | leency | 126 | if (!strcmp(#copy_from,#copy_to)) |
5957 | punk_joker | 127 | { |
128 | sprintf(#copy_to, "%s/NEW_%s", #path, #copy_from+strrchr(#copy_from,'/')); |
||
6635 | leency | 129 | } |
5957 | punk_joker | 130 | if (strstr(#copy_to, #copy_from)) |
4698 | punk_joker | 131 | { |
132 | notify("Copy directory into itself is a bad idea..."); |
||
133 | DialogExit(); |
||
5804 | punk_joker | 134 | } |
4698 | punk_joker | 135 | |
5957 | punk_joker | 136 | |
137 | { |
||
138 | Write_Error(copy_rezult); |
||
139 | if (copy_rezult==8) DialogExit(); //not enough space |
||
7491 | leency | 140 | } |
5957 | punk_joker | 141 | else if (cut_active) |
142 | { |
||
143 | strcpy(#file_path, #copy_from); |
||
6597 | punk_joker | 144 | Del_File2(#copy_from, 0); |
5957 | punk_joker | 145 | |
146 | |||
147 | path_offset += strlen(path_offset) + 1; |
||
6602 | leency | 148 | } |
5931 | punk_joker | 149 | cut_active=false; |
6602 | leency | 150 | if (info_after_copy.checked) notify(INFO_AFTER_COPY); |
7244 | leency | 151 | DialogExit(); |
5931 | punk_joker | 152 | } |
6602 | leency | 153 | |
6600 | punk_joker | 154 | |
7878 | leency | 155 | |
156 | // // |
||
157 | // DELETE // |
||
158 | // // |
||
159 | //===================================================// |
||
160 | |||
161 | |||
162 | int Del_File2(dword way, sh_progr) |
||
163 | { |
||
164 | dword dirbuf, fcount, i, filename; |
||
165 | int error; |
||
166 | char del_from[4096]; |
||
167 | if (dir_exists(way)) |
||
168 | { |
||
169 | if (error = GetDir(#dirbuf, #fcount, way, DIRS_ONLYREAL)) del_error = error; |
||
170 | for (i=0; i |
||
171 | { |
||
172 | //if (CheckEvent()==evReDraw) draw_window(); |
||
173 | filename = i*304+dirbuf+72; |
||
174 | sprintf(#del_from,"%s/%s",way,filename); |
||
175 | if ( TestBit(ESDWORD[filename-40], 4) ) |
||
176 | { |
||
177 | Del_File2(#del_from, 1); |
||
178 | } |
||
179 | else |
||
180 | { |
||
181 | if (sh_progr) Operation_Draw_Progress(filename); |
||
182 | if (error = DeleteFile(#del_from)) del_error = error; |
||
183 | } |
||
184 | } |
||
185 | } |
||
186 | if (error = DeleteFile(way)) del_error = error; |
||
187 | } |
||
188 | |||
189 | |||
190 | { |
||
191 | DIR_SIZE delete_dir_size; |
||
192 | del_error = NULL; |
||
193 | |||
194 | |||
195 | copy_bar.max = delete_dir_size.get(#file_path); |
||
196 | } else { |
||
197 | copy_bar.max = 1; |
||
198 | } |
||
199 | |||
200 | |||
201 | |||
202 | |||
203 | DialogExit(); |
||
204 | } |
||
205 | |||
206 | |||
207 | { |
||
208 | byte del_from[4096]; |
||
209 | int i; |
||
210 | |||
211 | |||
212 | |||
213 | |||
214 | |||
215 | |||
216 | { |
||
217 | if (getElementSelectedFlag(i) == true) { |
||
218 | sprintf(#del_from,"%s/%s",#path,file_mas[i]*304+buf+72); |
||
219 | copy_bar.max += GetFilesCount(#del_from); |
||
220 | } |
||
221 | } |
||
222 | |||
223 | |||
224 | |||
225 | |||
226 | { |
||
227 | if (getElementSelectedFlag(i) == true) { |
||
228 | sprintf(#del_from,"%s/%s", #path, file_mas[i]*304+buf+72); |
||
229 | Del_File2(#del_from, 1); |
||
230 | } |
||
231 | } |
||
232 | |||
233 | |||
234 | cmd_free = 6; |
||
235 | DialogExit(); |
||
236 | }>>=0)>0)> |
||
237 |