Subversion Repositories Kolibri OS

Rev

Rev 5931 | 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
 
4896 punk_joker 10
{
4698 punk_joker 11
    dword selected_offset2;
5513 punk_joker 12
    byte copy_t[4096];
13
    dword buff_data;
14
    int ind = 0;
5691 punk_joker 15
    if (selected_count)
5513 punk_joker 16
	{
17
        buff_data = malloc(selected_count*4096+10);
18
        ESDWORD[buff_data] = selected_count*4096+10;
19
        ESDWORD[buff_data+4] = 3;
20
        ESINT[buff_data+8] = selected_count;
21
        for (i=0; i
5174 punk_joker 22
        {
23
            selected_offset2 = file_mas[i]*304 + buf+32 + 7;
5513 punk_joker 24
            if (ESBYTE[selected_offset2]) {
25
                strcpy(#copy_t, #path);
26
                strcat(#copy_t, file_mas[i]*304+buf+72);
27
                strlcpy(ind*4096+buff_data+10, #copy_t, 4096);;
28
                ind++;
29
            }
30
        }
5174 punk_joker 31
		clipboard.SetSlotData(selected_count*4096+10, buff_data);
5513 punk_joker 32
	}
33
	else
34
	{
35
		buff_data = malloc(4106);
36
        ESDWORD[buff_data] = 4106;
37
        ESDWORD[buff_data+4] = 3;
38
        ESINT[buff_data+8] = 1;
39
        strlcpy(buff_data+10, #file_path, 4096);;
40
		clipboard.SetSlotData(4106, buff_data);
41
	}
42
	cut_active = cut;
4042 leency 43
	free(buff_data);
5209 punk_joker 44
}
4042 leency 45
46
 
47
 
5609 leency 48
	copy_stak = malloc(20000);
49
	CreateThread(#PasteThread,copy_stak+20000-4);
5620 leency 50
}
5609 leency 51
52
 
5608 leency 53
{
4042 leency 54
	char copy_rezult;
55
	int j;
5174 punk_joker 56
	int cnt = 0;
5514 leency 57
	dword buf;
4864 punk_joker 58
	file_count_copy = 0;
5691 punk_joker 59
	copy_bar.value = 0;
60
5931 punk_joker 61
 
4864 punk_joker 62
	if (DSDWORD[buf+4] != 3) return;
5514 leency 63
	cnt = ESINT[buf+8];
5174 punk_joker 64
	for (j = 0; j < cnt; j++) {
5957 punk_joker 65
		strlcpy(#copy_from, j*4096+buf+10, 4096);
66
		GetFileInfo(#copy_from, #file_info_count);
67
		if ( file_info_count.isfolder ) DirFileCount(#copy_from);
68
		else file_count_copy++;
69
	}
70
	copy_bar.max = file_count_copy;
71
5804 punk_joker 72
 
5957 punk_joker 73
	else  operation_flag = COPY_FLAG;
74
75
 
76
	for (j = 0; j < cnt; j++) {
5691 punk_joker 77
		strlcpy(#copy_from, j*4096+buf+10, 4096);
78
		if (!copy_from) DialogExit();
5804 punk_joker 79
		strcpy(#copy_to, #path);
4042 leency 80
		strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
81
		if (!strcmp(#copy_from,#copy_to))
5957 punk_joker 82
		{
83
			strcpy(#copy_to, #path);
84
			strcat(#copy_to, "new_");
85
			strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
86
		}
87
		if (strstr(#copy_to, #copy_from))
4698 punk_joker 88
		{
89
			notify("Copy directory into itself is a bad idea...");
90
			DialogExit();
5804 punk_joker 91
		}
4698 punk_joker 92
5957 punk_joker 93
 
94
		{
95
			Write_Error(copy_rezult);
96
		}
97
		else if (cut_active)
98
		{
99
			//strcpy(#file_path, #copy_from);
100
			Del_File2(#copy_from, 0);
101
102
 
103
	}
5931 punk_joker 104
	if (cut_active)
5957 punk_joker 105
	{
106
		cut_active=false;
107
	}
108
	if (info_after_copy) notify(INFO_AFTER_COPY);
5459 punk_joker 109
	DialogExit();
5931 punk_joker 110
}
4861 leency 111