Subversion Repositories Kolibri OS

Rev

Rev 4076 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4042 leency 1
//Leency 2008-2013
2
 
3
 
4
byte copy_from[4096], copy_to[4096], cut_active=0;
5
enum {NOCUT, CUT, COPY_PASTE_END};
4427 punk_joker 6
 
7
struct buffer_data
8
{
9
	dword	size;
10
	dword	type;
11
	dword	encoding;
12
	byte	buffer_data[4096];
13
};
14
 
15
buffer_data buf_data;
16
Clipboard clipboard;
17
 
4042 leency 18
#define WIN_W 300
19
#define WIN_H 50
20
 
21
 
22
void Copy(dword pcth, char cut)
23
{
24
	strcpy(#copy_from, pcth);
4427 punk_joker 25
	buf_data.size = sizeof(buffer_data);
26
	buf_data.type = 0;
27
	buf_data.encoding = 866;
28
	strcpy(#buf_data.buffer_data, pcth);
29
	clipboard.SetSlotData(sizeof(buffer_data), #buf_data);
4042 leency 30
	cut_active = cut;
31
}
32
 
33
void copyf_Draw_Progress(dword filename) {
4076 leency 34
	DefineAndDrawWindow(Form.left+Form.width-200,Form.top+90,WIN_W,GetSkinHeight()+WIN_H-1,0x34,sc.work,T_PASTE_WINDOW);
35
	WriteText(5,8, 0x80, sc.work_text, T_PASTE_WINDOW_TEXT);
36
	DrawBar(5, 26, WIN_W-10, 10, sc.work);
37
	WriteText(5,26, 0x80, sc.work_text, filename);
4042 leency 38
	if (CheckEvent()==evButton)
39
	{
40
		notify(T_CANCEL_PASTE);
41
		ExitProcess();
42
	}
43
}
44
 
45
 
46
void Paste()
47
{
48
	char copy_rezult;
49
 
4427 punk_joker 50
	strcpy(#copy_from, clipboard.GetSlotData(clipboard.GetSlotCount()-1)+12);
51
 
4042 leency 52
	if (!copy_from) ExitProcess();
53
	strcpy(#copy_to, #path);
54
	strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
55
	if (!strcmp(#copy_from,#copy_to))
56
	{
57
		strcpy(#copy_to, #path);
58
		strcat(#copy_to, "new_");
59
		strcat(#copy_to, #copy_from+strrchr(#copy_from,'/'));
60
	}
61
	if (strstr(#copy_to, #copy_from))
62
	{
63
		notify("Copy directory into itself is a bad idea...");
64
		ExitProcess();
65
	}
66
	if (copy_rezult = copyf(#copy_from,#copy_to))
67
	{
68
		Write_Error(copy_rezult);
69
	}
70
	else if (cut_active)
71
	{
72
		strcpy(#file_path, #copy_from);
73
		Del_File(true);
74
		copy_from=NULL;
75
		cut_active=false;
76
	}
77
	action_buf = COPY_PASTE_END;
78
	ActivateWindow(GetProcessSlot(Form.ID));
79
	ExitProcess();
80
}