Subversion Repositories Kolibri OS

Rev

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