Rev 6600 | Rev 6635 | 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 | |
4427 | punk_joker | 8 | |
9 | |||
6602 | leency | 10 | dword selected_offset = file_mas[n]*304 + buf+32 + 7; |
11 | if (!n) if (!strncmp(selected_offset+33, "..", 2)) return; //do not selec ".." directory |
||
12 | ESBYTE[selected_offset] = state; |
||
13 | if (state==true) selected_count++; |
||
14 | if (state==false) selected_count--; |
||
15 | } |
||
4042 | leency | 16 | |
17 | |||
6602 | leency | 18 | { |
4042 | leency | 19 | dword selected_offset2; |
6602 | leency | 20 | byte copy_t[4096]; |
21 | dword buff_data; |
||
22 | dword path_len = 0; |
||
6597 | punk_joker | 23 | dword size_buf = 0; |
6602 | leency | 24 | dword copy_buf_offset = 0; |
25 | |||
6597 | punk_joker | 26 | |
6602 | leency | 27 | if (selected_count==0) setElementSelectedFlag(files.cur_y, true); //no element selected by "insert", so we copy current element |
28 | debugi(selected_count); |
||
29 | size_buf = 4; |
||
30 | for (i=0; i |
||
31 | { |
||
32 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
||
33 | if (ESBYTE[selected_offset2]) { |
||
34 | strcpy(#copy_t, #path); |
||
35 | strcat(#copy_t, file_mas[i]*304+buf+72); |
||
36 | path_len = strlen(#copy_t); |
||
37 | size_buf += path_len + 1; |
||
38 | } |
||
6597 | punk_joker | 39 | } |
40 | size_buf += 20; |
||
6602 | leency | 41 | buff_data = malloc(size_buf); |
42 | ESDWORD[buff_data] = size_buf; |
||
43 | ESDWORD[buff_data+4] = 3; |
||
44 | ESINT[buff_data+8] = selected_count; |
||
45 | copy_buf_offset = buff_data + 10; |
||
46 | for (i=0; i |
||
47 | { |
||
6597 | punk_joker | 48 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
6602 | leency | 49 | if (ESBYTE[selected_offset2]) { |
50 | strcpy(copy_buf_offset, #path); |
||
51 | strcat(copy_buf_offset, file_mas[i]*304+buf+72); |
||
52 | copy_buf_offset += strlen(copy_buf_offset) + 1; |
||
53 | } |
||
54 | } |
||
6597 | punk_joker | 55 | WriteFile(size_buf, buff_data, "/rd/1/log.log"); |
6602 | leency | 56 | if (selected_count==1) setElementSelectedFlag(files.cur_y, false); |
57 | clipboard.SetSlotData(size_buf, buff_data); |
||
58 | cut_active = cut; |
||
6597 | punk_joker | 59 | free(buff_data); |
60 | } |
||
61 | |||
62 | |||
6600 | punk_joker | 63 | copy_stak = malloc(64000); |
64 | CreateThread(#PasteThread,copy_stak+64000-4); |
||
65 | } |
||
66 | |||
67 | |||
6597 | punk_joker | 68 | { |
69 | char copy_rezult; |
||
70 | int j; |
||
71 | int paste_elements_count = 0; |
||
6602 | leency | 72 | dword buf; |
6597 | punk_joker | 73 | dword path_offset; |
6602 | leency | 74 | file_count_copy = 0; |
75 | copy_bar.value = 0; |
||
6597 | punk_joker | 76 | |
6602 | leency | 77 | |
78 | if (DSDWORD[buf+4] != 3) return; |
||
5514 | leency | 79 | paste_elements_count = ESINT[buf+8]; |
6602 | leency | 80 | path_offset = buf + 10; |
81 | //calculate copy files count for progress bar |
||
82 | for (j = 0; j < paste_elements_count; j++) { |
||
83 | GetFileInfo(path_offset, #file_info_count); |
||
84 | if ( file_info_count.isfolder ) DirFileCount(path_offset); |
||
85 | else file_count_copy++; |
||
5957 | punk_joker | 86 | path_offset += strlen(path_offset) + 1; |
6602 | leency | 87 | } |
5957 | punk_joker | 88 | copy_bar.max = file_count_copy; |
89 | |||
5804 | punk_joker | 90 | |
5957 | punk_joker | 91 | else operation_flag = COPY_FLAG; |
92 | |||
93 | |||
6602 | leency | 94 | DisplayOperationForm(); |
95 | for (j = 0; j < paste_elements_count; j++) { |
||
96 | strcpy(#copy_from, path_offset); |
||
97 | if (!copy_from) DialogExit(); |
||
5804 | punk_joker | 98 | strcpy(#copy_to, #path); |
4042 | leency | 99 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
100 | if (!strcmp(#copy_from,#copy_to)) |
||
5957 | punk_joker | 101 | { |
102 | strcpy(#copy_to, #path); |
||
103 | strcat(#copy_to, "NEW_"); |
||
6602 | leency | 104 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
5957 | punk_joker | 105 | } |
106 | if (strstr(#copy_to, #copy_from)) |
||
4698 | punk_joker | 107 | { |
108 | notify("Copy directory into itself is a bad idea..."); |
||
109 | DialogExit(); |
||
5804 | punk_joker | 110 | } |
4698 | punk_joker | 111 | |
5957 | punk_joker | 112 | |
113 | { |
||
114 | Write_Error(copy_rezult); |
||
115 | } |
||
116 | else if (cut_active) |
||
117 | { |
||
118 | strcpy(#file_path, #copy_from); |
||
6597 | punk_joker | 119 | Del_File2(#copy_from, 0); |
5957 | punk_joker | 120 | |
121 | |||
122 | path_offset += strlen(path_offset) + 1; |
||
6602 | leency | 123 | } |
5931 | punk_joker | 124 | cut_active=false; |
6602 | leency | 125 | if (info_after_copy) notify(INFO_AFTER_COPY); |
5459 | punk_joker | 126 | DialogExit(); |
5931 | punk_joker | 127 | }>>=0)> |
6602 | leency | 128 |