Subversion Repositories Kolibri OS

Rev

Rev 5962 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5962 Rev 6597
Line 10... Line 10...
10
{
10
{
11
    dword selected_offset2;
11
    dword selected_offset2;
12
    byte copy_t[4096];
12
    byte copy_t[4096];
13
    dword buff_data;
13
    dword buff_data;
14
    int ind = 0; 
14
    dword path_len = 0;
-
 
15
    dword buffer_len = 0;
-
 
16
    dword size_buf = 0;
-
 
17
    int ind = 0; 
15
    if (selected_count)
18
    if (selected_count)
16
	{
19
	{
17
        buff_data = malloc(selected_count*4096+10);
20
        for (i=0; i
-
 
21
        {
-
 
22
            selected_offset2 = file_mas[i]*304 + buf+32 + 7;
-
 
23
            if (ESBYTE[selected_offset2]) {
-
 
24
                strcpy(#copy_t, #path);
-
 
25
                strcat(#copy_t, file_mas[i]*304+buf+72);
-
 
26
                path_len = strlen(#copy_t);
-
 
27
                size_buf = size_buf + path_len;
-
 
28
            }
-
 
29
        }
-
 
30
        
-
 
31
        buff_data = malloc(size_buf);
18
        ESDWORD[buff_data] = selected_count*4096+10;
32
        ESDWORD[buff_data] = size_buf;
19
        ESDWORD[buff_data+4] = 3;
33
        ESDWORD[buff_data+4] = 3;
20
        ESINT[buff_data+8] = selected_count;
34
        ESINT[buff_data+8] = selected_count;    
21
        for (i=0; i
35
        
-
 
36
        for (i=0; i
22
        {
37
        {
23
            selected_offset2 = file_mas[i]*304 + buf+32 + 7;
38
            selected_offset2 = file_mas[i]*304 + buf+32 + 7;
24
            if (ESBYTE[selected_offset2]) {
39
            if (ESBYTE[selected_offset2]) {
25
                strcpy(#copy_t, #path);
40
                strcpy(#copy_t, #path);
26
                strcat(#copy_t, file_mas[i]*304+buf+72);                         
41
                strcat(#copy_t, file_mas[i]*304+buf+72);
27
                strlcpy(ind*4096+buff_data+10, #copy_t, 4096);;
42
                path_len = strlen(#copy_t);
-
 
43
                strlcpy(buff_data+10+buffer_len+1, #copy_t, path_len);
28
                ind++;
44
                buffer_len = buffer_len + path_len;
-
 
45
                ind++;
29
            }
46
            }
30
        }
47
        }
31
		clipboard.SetSlotData(selected_count*4096+10, buff_data);
48
		clipboard.SetSlotData(size_buf+10, buff_data);
32
	}
49
	}
33
	else
50
	else
34
	{
51
	{
35
		buff_data = malloc(4106);
52
		buff_data = malloc(4106);
36
        ESDWORD[buff_data] = 4106;
53
        ESDWORD[buff_data] = 4106;
37
        ESDWORD[buff_data+4] = 3;
54
        ESDWORD[buff_data+4] = 3;
Line 54... Line 71...
54
	char copy_rezult;
71
	char copy_rezult;
55
	int j;
72
	int j;
56
	int cnt = 0;
73
	int cnt = 0;
57
	dword buf;
74
	dword buf;
58
	file_count_copy = 0;
75
	dword path_len = 0;
-
 
76
    dword buffer_len = 0;
-
 
77
    file_count_copy = 0;
-
 
78
	copy_bar.value = 0; 
-
 
79
    
-
 
80
    buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1);
-
 
81
	if (DSDWORD[buf+4] != 3) return;
-
 
82
	cnt = ESINT[buf+8];
-
 
83
	for (j = 0; j < cnt; j++) {
-
 
84
		if (j==0) strlcpy(#copy_from, buf+10+buffer_len);
-
 
85
		else strlcpy(#copy_from, buf+10+buffer_len+1);
-
 
86
		buffer_len = buffer_len + path_len;
-
 
87
		GetFileInfo(#copy_from, #file_info_count);
-
 
88
		if ( file_info_count.isfolder ) DirFileCount(#copy_from);
-
 
89
		else file_count_copy++;
-
 
90
	}
-
 
91
	copy_bar.max = file_count_copy;
-
 
92
	
-
 
93
	if (cut_active)  operation_flag = MOVE_FLAG;
-
 
94
	else  operation_flag = COPY_FLAG;
-
 
95
	
-
 
96
	path_len = 0;
-
 
97
    buffer_len = 0;
-
 
98
    DisplayOperationForm();
-
 
99
	for (j = 0; j < cnt; j++) {
-
 
100
		if (j==0) strlcpy(#copy_from, buf+10+buffer_len);
-
 
101
		else strlcpy(#copy_from, buf+10+buffer_len+1);
-
 
102
		path_len = strlen(#copy_from);
-
 
103
		buffer_len = buffer_len + path_len;
-
 
104
		if (!copy_from) DialogExit();
-
 
105
		strcpy(#copy_to, #path);
-
 
106
		strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
-
 
107
		if (!strcmp(#copy_from,#copy_to))
-
 
108
		{
-
 
109
			strcpy(#copy_to, #path);
-
 
110
			strcat(#copy_to, "new_");
-
 
111
			strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
-
 
112
		}
-
 
113
		if (strstr(#copy_to, #copy_from))
-
 
114
		{
-
 
115
			notify("Copy directory into itself is a bad idea...");
-
 
116
			DialogExit();
-
 
117
		}
-
 
118
 
-
 
119
		if (copy_rezult = copyf(#copy_from,#copy_to))
-
 
120
		{
-
 
121
			Write_Error(copy_rezult);
-
 
122
		}
-
 
123
		else if (cut_active)
-
 
124
		{
-
 
125
			strcpy(#file_path, #copy_from);
-
 
126
			Del_File2(#copy_from, 0);
-
 
127
			
-
 
128
		}
-
 
129
	}
-
 
130
	if (cut_active)
-
 
131
	{
-
 
132
		cut_active=false;
-
 
133
	}
-
 
134
	if (info_after_copy) notify(INFO_AFTER_COPY);
-
 
135
	DialogExit();
-
 
136
}
-
 
137
 
-
 
138
//Another version of the function copy/paste
-
 
139
 
-
 
140
/*
-
 
141
void Copy(dword pcth, char cut)
-
 
142
{
-
 
143
    dword selected_offset2;
-
 
144
    byte copy_t[4096];
-
 
145
    dword buff_data;
-
 
146
    dword path_len = 0;
-
 
147
    dword buffer_len = 0;
-
 
148
    dword size_buf = 0;
-
 
149
    int ind = 0; 
-
 
150
    if (selected_count)
-
 
151
	{
-
 
152
        for (i=0; i
-
 
153
        {
-
 
154
            selected_offset2 = file_mas[i]*304 + buf+32 + 7;
-
 
155
            if (ESBYTE[selected_offset2]) {
-
 
156
                strcpy(#copy_t, #path);
-
 
157
                strcat(#copy_t, file_mas[i]*304+buf+72);
-
 
158
                path_len = strlen(#copy_t);
-
 
159
                size_buf = size_buf + path_len + 4;
-
 
160
            }
-
 
161
        }
-
 
162
        
-
 
163
        buff_data = malloc(size_buf);
-
 
164
        ESDWORD[buff_data] = size_buf;
-
 
165
        ESDWORD[buff_data+4] = 3;
-
 
166
        ESINT[buff_data+8] = selected_count;    
-
 
167
        
-
 
168
        for (i=0; i
-
 
169
        {
-
 
170
            selected_offset2 = file_mas[i]*304 + buf+32 + 7;
-
 
171
            if (ESBYTE[selected_offset2]) {
-
 
172
                strcpy(#copy_t, #path);
-
 
173
                strcat(#copy_t, file_mas[i]*304+buf+72);
-
 
174
                path_len = strlen(#copy_t);
-
 
175
                ESDWORD[buff_data+10+buffer_len] = path_len;
-
 
176
                strlcpy(buff_data+10+4+buffer_len, #copy_t, path_len);
-
 
177
                buffer_len = buffer_len + 4 + path_len;
-
 
178
                ind++;
-
 
179
            }
-
 
180
        }
-
 
181
		clipboard.SetSlotData(size_buf+10, buff_data);
-
 
182
	}
-
 
183
	else
-
 
184
	{
-
 
185
		buff_data = malloc(4106);
-
 
186
        ESDWORD[buff_data] = 4106;
-
 
187
        ESDWORD[buff_data+4] = 3;
-
 
188
        ESINT[buff_data+8] = 1;
-
 
189
        strlcpy(buff_data+10, #file_path, 4096);;
-
 
190
		clipboard.SetSlotData(4106, buff_data);
-
 
191
	}
-
 
192
	cut_active = cut;
-
 
193
	free(buff_data);
-
 
194
}
-
 
195
 
-
 
196
 
-
 
197
void PasteThread()
-
 
198
{
-
 
199
	char copy_rezult;
-
 
200
	int j;
-
 
201
	int cnt = 0;
-
 
202
	dword buf;
-
 
203
	dword path_len = 0;
-
 
204
    dword buffer_len = 0;
-
 
205
    file_count_copy = 0;
59
	copy_bar.value = 0; 
206
	copy_bar.value = 0; 
60
	
207
    
Line 61... Line 208...
61
	buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1);
208
    buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1);
62
	if (DSDWORD[buf+4] != 3) return;
209
	if (DSDWORD[buf+4] != 3) return;
63
	cnt = ESINT[buf+8];
210
	cnt = ESINT[buf+8];
64
	for (j = 0; j < cnt; j++) {
211
	for (j = 0; j < cnt; j++) {
-
 
212
		path_len = ESDWORD[buf+10+buffer_len];
65
		strlcpy(#copy_from, j*4096+buf+10, 4096);
213
		strlcpy(#copy_from, buf+10+buffer_len+4, path_len);
-
 
214
		buffer_len = buffer_len + 4 + path_len;
66
		GetFileInfo(#copy_from, #file_info_count);
215
		GetFileInfo(#copy_from, #file_info_count);
67
		if ( file_info_count.isfolder ) DirFileCount(#copy_from);
216
		if ( file_info_count.isfolder ) DirFileCount(#copy_from);
68
		else file_count_copy++;
217
		else file_count_copy++;
69
	}
218
	}
70
	copy_bar.max = file_count_copy;
219
	copy_bar.max = file_count_copy;
Line 71... Line 220...
71
	
220
	
72
	if (cut_active)  operation_flag = MOVE_FLAG;
221
	if (cut_active)  operation_flag = MOVE_FLAG;
Line -... Line 222...
-
 
222
	else  operation_flag = COPY_FLAG;
-
 
223
	
73
	else  operation_flag = COPY_FLAG;
224
	path_len = 0;
74
	
225
    buffer_len = 0;
-
 
226
    DisplayOperationForm();
75
	DisplayOperationForm();
227
	for (j = 0; j < cnt; j++) {
-
 
228
		path_len = ESDWORD[buf+10+buffer_len];
76
	for (j = 0; j < cnt; j++) {
229
		strlcpy(#copy_from, buf+10+buffer_len+4, path_len);
77
		strlcpy(#copy_from, j*4096+buf+10, 4096);
230
		buffer_len = buffer_len + 4 + path_len;
78
		if (!copy_from) DialogExit();
231
		if (!copy_from) DialogExit();
79
		strcpy(#copy_to, #path);
232
		strcpy(#copy_to, #path);
80
		strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
233
		strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
Line 95... Line 248...
95
			Write_Error(copy_rezult);
248
			Write_Error(copy_rezult);
96
		}
249
		}
97
		else if (cut_active)
250
		else if (cut_active)
98
		{
251
		{
99
			//strcpy(#file_path, #copy_from);
252
			strcpy(#file_path, #copy_from);
100
			Del_File2(#copy_from, 0);
253
			Del_File2(#copy_from, 0);
101
			
254
			
Line 102... Line 255...
102
		}
255
		}
103
	}
256
	}
104
	if (cut_active)
257
	if (cut_active)
Line 107... Line 260...
107
	}
260
	}
108
	if (info_after_copy) notify(INFO_AFTER_COPY);
261
	if (info_after_copy) notify(INFO_AFTER_COPY);
109
	DialogExit();
262
	DialogExit();
110
}
263
}
111
264
*/
112
265
-
 
266