Rev 5804 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5804 | Rev 5883 | ||
---|---|---|---|
1 | byte copy_to[4096]; |
1 | byte copy_to[4096]; |
2 | byte copy_from[4096]; |
2 | byte copy_from[4096]; |
3 | byte cut_active=0; |
3 | byte cut_active=0; |
4 | 4 | ||
5 | enum {NOCUT, CUT}; |
5 | enum {NOCUT, CUT}; |
6 | 6 | ||
7 | Clipboard clipboard; |
7 | Clipboard clipboard; |
8 | 8 | ||
- | 9 | dword _copy_path_ = 0; |
|
9 | void Copy(dword pcth, char cut) |
10 | void Copy(dword pcth, char cut) |
10 | { |
11 | { |
11 | dword selected_offset2; |
12 | dword selected_offset2; |
12 | byte copy_t[4096]; |
13 | byte copy_t[4096]; |
13 | dword buff_data; |
14 | dword buff_data; |
14 | int ind = 0; |
15 | int ind = 0; |
15 | if (selected_count) |
16 | /* |
- | 17 | if (selected_count) |
|
16 | { |
18 | { |
17 | buff_data = malloc(selected_count*4096+10); |
19 | buff_data = malloc(selected_count*4096+10); |
18 | ESDWORD[buff_data] = selected_count*4096+10; |
20 | ESDWORD[buff_data] = selected_count*4096+10; |
19 | ESDWORD[buff_data+4] = 3; |
21 | ESDWORD[buff_data+4] = 3; |
20 | ESINT[buff_data+8] = selected_count; |
22 | ESINT[buff_data+8] = selected_count; |
21 | for (i=0; i |
23 | for (i=0; i |
22 | { |
24 | { |
23 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
25 | selected_offset2 = file_mas[i]*304 + buf+32 + 7; |
24 | if (ESBYTE[selected_offset2]) { |
26 | if (ESBYTE[selected_offset2]) { |
25 | strcpy(#copy_t, #path); |
27 | strcpy(#copy_t, #path); |
26 | strcat(#copy_t, file_mas[i]*304+buf+72); |
28 | strcat(#copy_t, file_mas[i]*304+buf+72); |
27 | strlcpy(ind*4096+buff_data+10, #copy_t, 4096);; |
29 | strlcpy(ind*4096+buff_data+10, #copy_t, 4096);; |
28 | ind++; |
30 | ind++; |
29 | } |
31 | } |
30 | } |
32 | } |
31 | clipboard.SetSlotData(selected_count*4096+10, buff_data); |
33 | clipboard.SetSlotData(selected_count*4096+10, buff_data); |
32 | } |
34 | } |
33 | else |
35 | else |
34 | { |
36 | { |
35 | buff_data = malloc(4106); |
37 | buff_data = malloc(4106); |
36 | ESDWORD[buff_data] = 4106; |
38 | ESDWORD[buff_data] = 4106; |
37 | ESDWORD[buff_data+4] = 3; |
39 | ESDWORD[buff_data+4] = 3; |
38 | ESINT[buff_data+8] = 1; |
40 | ESINT[buff_data+8] = 1; |
39 | strlcpy(buff_data+10, #file_path, 4096);; |
41 | strlcpy(buff_data+10, #file_path, 4096);; |
40 | clipboard.SetSlotData(4106, buff_data); |
42 | clipboard.SetSlotData(4106, buff_data); |
41 | } |
43 | } |
42 | cut_active = cut; |
44 | cut_active = cut; |
43 | free(buff_data); |
45 | free(buff_data); |
44 | } |
46 | */ |
- | 47 | _copy_path_ = strdup(#file_path); |
|
- | 48 | cut_active = cut; |
|
- | 49 | } |
|
45 | 50 | ||
46 | 51 | ||
47 | void Paste() { |
52 | void Paste() { |
48 | copy_stak = malloc(20000); |
53 | copy_stak = malloc(20000); |
49 | CreateThread(#PasteThread,copy_stak+20000-4); |
54 | CreateThread(#PasteThread,copy_stak+20000-4); |
50 | } |
55 | } |
51 | 56 | ||
52 | void PasteThread() |
57 | void PasteThread() |
53 | { |
58 | { |
54 | char copy_rezult; |
59 | char copy_rezult; |
55 | int j; |
60 | int j; |
56 | int cnt = 0; |
61 | int cnt = 0; |
57 | dword buf; |
62 | dword buf; |
58 | file_count_copy = 0; |
63 | dword tmp; |
- | 64 | file_count_copy = 0; |
|
59 | copy_bar.value = 0; |
65 | copy_bar.value = 0; |
60 | 66 | if(_copy_path_) |
|
- | 67 | { |
|
61 | buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1); |
68 | DisplayOperationForm(); |
- | 69 | IF(!TEMP) TEMP = malloc(4096); |
|
- | 70 | buf = _copy_path_; |
|
- | 71 | while(DSBYTE[buf]) |
|
- | 72 | { |
|
- | 73 | IF(DSBYTE[buf]=='/')tmp = buf; |
|
- | 74 | buf++; |
|
- | 75 | } |
|
- | 76 | sprintf(TEMP,"%s/%s",#path,tmp); |
|
- | 77 | IF(cut_active) fs.move(_copy_path_,TEMP); |
|
- | 78 | ELSE fs.copy(_copy_path_,TEMP); |
|
- | 79 | free(_copy_path_); |
|
- | 80 | DialogExit(); |
|
- | 81 | } |
|
- | 82 | _copy_path_ = 0; |
|
- | 83 | /* |
|
- | 84 | buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1); |
|
62 | if (DSDWORD[buf+4] != 3) return; |
85 | if (DSDWORD[buf+4] != 3) return; |
63 | cnt = ESINT[buf+8]; |
86 | cnt = ESINT[buf+8]; |
64 | for (j = 0; j < cnt; j++) { |
87 | for (j = 0; j < cnt; j++) { |
65 | strlcpy(#copy_from, j*4096+buf+10, 4096); |
88 | strlcpy(#copy_from, j*4096+buf+10, 4096); |
66 | GetFileInfo(#copy_from, #file_info_count); |
89 | GetFileInfo(#copy_from, #file_info_count); |
67 | if ( file_info_count.isfolder ) DirFileCount(#copy_from); |
90 | if ( file_info_count.isfolder ) DirFileCount(#copy_from); |
68 | else file_count_copy++; |
91 | else file_count_copy++; |
69 | } |
92 | } |
70 | copy_bar.max = file_count_copy; |
93 | copy_bar.max = file_count_copy; |
71 | 94 | ||
72 | if (cut_active) operation_flag = MOVE_FLAG; |
95 | if (cut_active) operation_flag = MOVE_FLAG; |
73 | else operation_flag = COPY_FLAG; |
96 | else operation_flag = COPY_FLAG; |
74 | 97 | ||
75 | DisplayOperationForm(); |
98 | DisplayOperationForm(); |
76 | for (j = 0; j < cnt; j++) { |
99 | for (j = 0; j < cnt; j++) { |
77 | strlcpy(#copy_from, j*4096+buf+10, 4096); |
100 | strlcpy(#copy_from, j*4096+buf+10, 4096); |
78 | if (!copy_from) DialogExit(); |
101 | if (!copy_from) DialogExit(); |
79 | strcpy(#copy_to, #path); |
102 | strcpy(#copy_to, #path); |
80 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
103 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
81 | if (!strcmp(#copy_from,#copy_to)) |
104 | if (!strcmp(#copy_from,#copy_to)) |
82 | { |
105 | { |
83 | strcpy(#copy_to, #path); |
106 | strcpy(#copy_to, #path); |
84 | strcat(#copy_to, "new_"); |
107 | strcat(#copy_to, "new_"); |
85 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
108 | strcat(#copy_to, #copy_from+strrchr(#copy_from,'/')); |
86 | } |
109 | } |
87 | if (strstr(#copy_to, #copy_from)) |
110 | if (strstr(#copy_to, #copy_from)) |
88 | { |
111 | { |
89 | notify("Copy directory into itself is a bad idea..."); |
112 | notify("Copy directory into itself is a bad idea..."); |
90 | DialogExit(); |
113 | DialogExit(); |
91 | } |
114 | } |
92 | 115 | ||
93 | if (copy_rezult = copyf(#copy_from,#copy_to)) |
116 | if (copy_rezult = copyf(#copy_from,#copy_to)) |
94 | { |
117 | { |
95 | Write_Error(copy_rezult); |
118 | Write_Error(copy_rezult); |
96 | } |
119 | } |
97 | else if (cut_active) |
120 | else if (cut_active) |
98 | { |
121 | { |
99 | //strcpy(#file_path, #copy_from); |
122 | //strcpy(#file_path, #copy_from); |
100 | Del_File2(#copy_from, 0); |
123 | Del_File2(#copy_from, 0); |
101 | 124 | ||
102 | } |
125 | } |
103 | } |
126 | }*/ |
104 | if (cut_active) |
127 | cut_active=false; |
105 | { |
- | |
106 | cut_active=false; |
- | |
107 | } |
128 | if (info_after_copy) notify(INFO_AFTER_COPY); |
108 | if (info_after_copy) notify(INFO_AFTER_COPY); |
- | |
109 | DialogExit(); |
129 | |
110 | }>> |
130 | }>> |
111 | 131 | ||
112 | 132 |