Subversion Repositories Kolibri OS

Rev

Rev 3042 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3042 Rev 3044
1
#include "..\lib\mem.h" 
1
#include "..\lib\mem.h" 
2
#include "..\lib\dll.h"
2
#include "..\lib\dll.h"
3
#include "..\lib\edit_box_lib.h"
3
#include "..\lib\edit_box_lib.h"
4
 
4
 
5
 
5
 
6
#ifdef LANG_RUS
6
#ifdef LANG_RUS
7
	char *but_text[]={
7
	char *but_text[]={
8
	"Äîáàâèòü äèñê"w,
8
	"Äîáàâèòü äèñê"w,
9
	"Óäàëèòü äèñê"w,
9
	"Óäàëèòü äèñê"w,
10
	"Ïîìîùü"w,
10
	"Ïîìîùü"w,
11
	0};
11
	0};
12
#else
12
#else
13
	char *but_text[]={
13
	char *but_text[]={
14
	"Add disk",
14
	"Add disk",
15
	"Delete disk",
15
	"Delete disk",
16
	"Help",
16
	"Help",
17
	0};
17
	0};
18
#endif
18
#endif
19
 
19
 
20
dword icons[14*56] = FROM "icons.raw";
20
unsigned char icons[14*56] = FROM "icons.raw";
21
 
21
 
22
struct path_string {
22
struct path_string {
23
unsigned char Item[256];
23
unsigned char Item[256];
24
};
24
};
25
 
25
 
26
path_string disk_list[40];
26
path_string disk_list[40];
27
dword devbuf;
27
dword devbuf;
28
int disk_num;
28
int disk_num;
29
int selected;
29
int selected;
30
 
30
 
31
system_colors sc;
31
system_colors sc;
32
proc_info Form;
32
proc_info Form;
33
 
33
 
34
int mouse_dd;
34
int mouse_dd;
35
unsigned char dsize[30];
35
unsigned char dsize[30];
36
edit_box edit1= {200,20,16,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,248,#dsize,#mouse_dd,100000000000010b};
36
edit_box edit1= {200,20,16,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,248,#dsize,#mouse_dd,100000000000010b};
37
 
37
 
38
 
38
 
39
 
39
 
40
void Main_Window()
40
void Main_Window()
41
{
41
{
42
	unsigned int id;
42
	unsigned int id;
43
	unsigned char key;
43
	unsigned char key;
44
	unsigned int i, j, bbreak;
44
	unsigned int i, j, bbreak;
45
	
45
	
46
   	mem_Init();
46
   	mem_Init();
47
	if (load_dll2(boxlib, #edit_box_draw,0)!=0)
47
	if (load_dll2(boxlib, #edit_box_draw,0)!=0)
48
	{
48
	{
49
		notify("error: library doesn't exists /rd/1/lib/box_lib.obj");
49
		notify("error: library doesn't exists /rd/1/lib/box_lib.obj");
50
		ExitProcess();
50
		ExitProcess();
51
	}
51
	}
52
	SetEventMask(0x27);
52
	SetEventMask(0x27);
53
	loop()
53
	loop()
54
	{
54
	{
55
		switch(WaitEvent()) 
55
		switch(WaitEvent()) 
56
		{
56
		{
57
		case evMouse:
57
		case evMouse:
58
			//edit_box_mouse stdcall (#edit1);
58
			//edit_box_mouse stdcall (#edit1);
59
			break;
59
			break;
60
		case evButton:
60
		case evButton:
61
            id=GetButtonID();               
61
            id=GetButtonID();               
62
			if (id==1) ExitProcess();
62
			if (id==1) ExitProcess();
63
			if (id==10) //add
63
			if (id==10) //add
64
			{
64
			{
65
				_ADD_DISK:
65
				_ADD_DISK:
66
				if (disk_num>=10)
66
				if (disk_num>=10)
67
				{
67
				{
68
					notify("Äîñòèãíóò ïðåäåë êîëè÷åñòâà âèðòóàëüíûõ äèñêîâ"w);
68
					notify("Äîñòèãíóò ïðåäåë êîëè÷åñòâà âèðòóàëüíûõ äèñêîâ"w);
69
					break;
69
					break;
70
				}
70
				}
71
				param[0]='a';
71
				param[0]='a';
72
				//
72
				//
73
				for (i=0; i<9; i++)
73
				for (i=0; i<9; i++)
74
				{
74
				{
75
					bbreak = true;
75
					bbreak = true;
76
					for (j=0; j<=disk_num; j++)
76
					for (j=0; j<=disk_num; j++)
77
					{
77
					{
78
						if (i+48==disk_list[j].Item[3]) bbreak=false;
78
						if (i+48==disk_list[j].Item[3]) bbreak=false;
79
					}
79
					}
80
					if (bbreak) break;
80
					if (bbreak) break;
81
				}
81
				}
82
				param[1]=i+48;
82
				param[1]=i+48;
83
				Console_Work();
83
				Console_Work();
84
				Pause(5);
84
				Pause(5);
85
				GetDisks();
85
				GetDisks();
86
				DrawTmpDisks();
86
				DrawTmpDisks();
87
			}
87
			}
88
			if (id==11) //del
88
			if (id==11) //del
89
			{
89
			{
90
				_DEL_DISK:
90
				_DEL_DISK:
91
				if (disk_num==0)
91
				if (disk_num==0)
92
				{
92
				{
93
					notify("Äëÿ íà÷àëà äîáàâüòå õîòÿ áû îäèí äèñê"w);
93
					notify("Äëÿ íà÷àëà äîáàâüòå õîòÿ áû îäèí äèñê"w);
94
					break;
94
					break;
95
				}
95
				}
96
				param[0]='d';
96
				param[0]='d';
97
				param[1]=disk_list[selected].Item[3];
97
				param[1]=disk_list[selected].Item[3];
98
				Console_Work();
98
				Console_Work();
99
				Pause(15);
99
				Pause(15);
100
				GetDisks();
100
				GetDisks();
101
				DrawTmpDisks();
101
				DrawTmpDisks();
102
			}
102
			}
103
			if (id==12) //help
103
			if (id==12) //help
104
			{
104
			{
105
				notify("Ðàçäåë â ðàçðàáîòêå"w);
105
				notify("Ðàçäåë â ðàçðàáîòêå"w);
106
			}
106
			}
107
			if (id>=20)
107
			if (id>=20)
108
			{
108
			{
109
				if (selected==id-20) OpenTmpDisk();
109
				if (selected==id-20) OpenTmpDisk();
110
				selected=id-20;
110
				selected=id-20;
111
				DrawTmpDisks();
111
				DrawTmpDisks();
112
			}
112
			}
113
            break;
113
            break;
114
        case evKey:
114
        case evKey:
115
			key = GetKey();
115
			key = GetKey();
116
			if (key==182) if (disk_num<>0) goto _DEL_DISK;
116
			if (key==182) if (disk_num<>0) goto _DEL_DISK;
117
			if (key==14) goto _ADD_DISK;
117
			if (key==14) goto _ADD_DISK;
118
			if (key==178)
118
			if (key==178)
119
			{
119
			{
120
				if (selected==0) break;
120
				if (selected==0) break;
121
				selected--;
121
				selected--;
122
				DrawTmpDisks();
122
				DrawTmpDisks();
123
			}
123
			}
124
			if (key==177)
124
			if (key==177)
125
			{
125
			{
126
				if (selected+2>disk_num) break;
126
				if (selected+2>disk_num) break;
127
				selected++;
127
				selected++;
128
				DrawTmpDisks();
128
				DrawTmpDisks();
129
			}
129
			}
130
			if (key==176)
130
			if (key==176)
131
			{
131
			{
132
				if (selected<3) break;
132
				if (selected<3) break;
133
				selected-=3;
133
				selected-=3;
134
				DrawTmpDisks();
134
				DrawTmpDisks();
135
			}
135
			}
136
			if (key==179)
136
			if (key==179)
137
			{
137
			{
138
				if (selected+4>disk_num) break;
138
				if (selected+4>disk_num) break;
139
				selected+=3;
139
				selected+=3;
140
				DrawTmpDisks();
140
				DrawTmpDisks();
141
			}
141
			}
142
			if (key==013)
142
			if (key==013)
143
			{
143
			{
144
				OpenTmpDisk();
144
				OpenTmpDisk();
145
			}
145
			}
146
			break;
146
			break;
147
         case evReDraw:
147
         case evReDraw:
148
			Draw_Window();
148
			Draw_Window();
149
		}
149
		}
150
	}
150
	}
151
}
151
}
152
 
152
 
153
 
153
 
154
void OpenTmpDisk()
154
void OpenTmpDisk()
155
{
155
{
156
	unsigned char eol_param[256];
156
	unsigned char eol_param[256];
157
	if (!disk_num) return;
157
	if (!disk_num) return;
158
	strcpy(#eol_param, "/tmp#/1/");
158
	strcpy(#eol_param, "/tmp#/1/");
159
	eol_param[4]=disk_list[selected].Item[3];
159
	eol_param[4]=disk_list[selected].Item[3];
160
	RunProgram("/sys/File managers/Eolite", #eol_param);
160
	RunProgram("/sys/File managers/Eolite", #eol_param);
161
}
161
}
162
 
162
 
163
 
163
 
164
void GetDisks()
164
void GetDisks()
165
{
165
{
166
	unsigned int j, fcount=30;
166
	unsigned int j, fcount=30;
167
	unsigned char disk_name[256];
167
	unsigned char disk_name[256];
168
	
168
	
169
	mem_Free(devbuf);
169
	mem_Free(devbuf);
170
	devbuf= mem_Alloc(32);
170
	devbuf= mem_Alloc(32);
171
	ReadDir(0, devbuf, "/");
171
	ReadDir(0, devbuf, "/");
172
	fcount=ESDWORD[devbuf+8];
172
	fcount=ESDWORD[devbuf+8];
173
	mem_Free(devbuf);
173
	mem_Free(devbuf);
174
	devbuf = mem_Alloc(fcount+1*304+32);
174
	devbuf = mem_Alloc(fcount+1*304+32);
175
	ReadDir(fcount, devbuf, "/");
175
	ReadDir(fcount, devbuf, "/");
176
	
176
	
177
	disk_num=0;
177
	disk_num=0;
178
	for (j=0; j
178
	for (j=0; j
179
	{
179
	{
180
		strcpy(#disk_name, j*304+devbuf+72);
180
		strcpy(#disk_name, j*304+devbuf+72);
181
		if (disk_name[0]!='t') continue;
181
		if (disk_name[0]!='t') continue;
182
		strcpy(#disk_list[disk_num].Item, #disk_name);
182
		strcpy(#disk_list[disk_num].Item, #disk_name);
183
		disk_num++;
183
		disk_num++;
184
	}
184
	}
185
	if (disk_num>12) disk_num=12;
185
	if (disk_num>12) disk_num=12;
186
}
186
}
187
 
187
 
188
 
188
 
189
unsigned int disk_pos_x[]={13,13,13,83,83,83,153,153,153,223,223,223};
189
unsigned int disk_pos_x[]={13,13,13,83,83,83,153,153,153,223,223,223};
190
unsigned int disk_pos_y[]={40,65,90,40,65,90,40,65,90,40,65,90};
190
unsigned int disk_pos_y[]={40,65,90,40,65,90,40,65,90,40,65,90};
191
void DrawTmpDisks()
191
void DrawTmpDisks()
192
{
192
{
193
	int i;
193
	int i;
194
	DrawBar(0,31, Form.width-9,Form.height-GetSkinHeight()-5-30, 0xFFFFFF);
194
	DrawBar(0,31, Form.width-9,Form.height-GetSkinHeight()-5-30, 0xFFFFFF);
195
	if (disk_num==0)
195
	if (disk_num==0)
196
	{
196
	{
197
		WriteText(17,45,    0x90, 0x777777, "Çäåñü áóäåò îòîáðàæàòüñÿ ñïèñîê"w, 0);
197
		WriteText(17,45,    0x90, 0x777777, "Çäåñü áóäåò îòîáðàæàòüñÿ ñïèñîê"w, 0);
198
		WriteText(17,45+15, 0x90, 0x777777, "âèðòóàëüíûõ äèñêîâ â ñèñòåìå."w, 0);
198
		WriteText(17,45+15, 0x90, 0x777777, "âèðòóàëüíûõ äèñêîâ â ñèñòåìå."w, 0);
199
		WriteText(17,45+42, 0x90, 0x777777, "Ïîïðîáóéòå äîáàâèòü îäèí..."w, 0);
199
		WriteText(17,45+42, 0x90, 0x777777, "Ïîïðîáóéòå äîáàâèòü îäèí..."w, 0);
200
		return;
200
		return;
201
	};
201
	};
202
	if (selected>=disk_num) selected=disk_num-1; //âîññòàíàâëèâàåò âûäåëåíèå - õîðîøàÿ ôè÷à
202
	if (selected>=disk_num) selected=disk_num-1; //âîññòàíàâëèâàåò âûäåëåíèå - õîðîøàÿ ôè÷à
203
	for (i=0; i
203
	for (i=0; i
204
	{
204
	{
205
		DefineButton(disk_pos_x[i], disk_pos_y[i], 60, 20, 20+i, 0xFFFfff);
205
		DefineButton(disk_pos_x[i], disk_pos_y[i], 60, 20, 20+i, 0xFFFfff);
206
		WriteText(disk_pos_x[i]+25,disk_pos_y[i]+6, 0x90, 0, #disk_list[i].Item, 0);
206
		WriteText(disk_pos_x[i]+25,disk_pos_y[i]+6, 0x90, 0, #disk_list[i].Item, 0);
207
		_PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 3*14*14*3+#icons);
207
		_PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 3*14*14*3+#icons);
208
		if (selected==i) DrawRegion(disk_pos_x[i], disk_pos_y[i], 60-1, 20-1, 0x00459A);
208
		if (selected==i) DrawRegion(disk_pos_x[i], disk_pos_y[i], 60-1, 20-1, 0x00459A);
209
	}
209
	}
210
}
210
}
211
 
211
 
212
void Draw_Window()
212
void Draw_Window()
213
{	
213
{	
214
	int i, x;
214
	int i, x;
215
	
215
	
216
	sc.get();
216
	sc.get();
217
	DefineAndDrawWindow(170,150,314,250,0x74,sc.work,"Virtual Disk Manager 0.35");
217
	DefineAndDrawWindow(170,150,314,250,0x74,sc.work,"Virtual Disk Manager 0.35");
218
	GetProcessInfo(#Form, SelfInfo);
218
	GetProcessInfo(#Form, SelfInfo);
219
	if (Form.status_window>2) return; //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì
219
	if (Form.status_window>2) return; //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì
220
	
220
	
221
	//ðèñóåì ïàíåëü
221
	//ðèñóåì ïàíåëü
222
	DrawBar(0,0,  Form.width-9,30, sc.work);
222
	DrawBar(0,0,  Form.width-9,30, sc.work);
223
	DrawBar(0,30, Form.width-9,1,  sc.work_graph);
223
	DrawBar(0,30, Form.width-9,1,  sc.work_graph);
224
	x=6;
224
	x=6;
225
	for (i=0; i<3; i++)
225
	for (i=0; i<3; i++)
226
	{
226
	{
227
		DefineButton(x,5, strlen(but_text[i])*6+28,19, 10+i, sc.work_button);
227
		DefineButton(x,5, strlen(but_text[i])*6+28,19, 10+i, sc.work_button);
228
		_PutImage(x+3,8,  14,14,   i*14*14*3+#icons);
228
		_PutImage(x+3,8,  14,14,   i*14*14*3+#icons);
229
		WriteText(x+22,11, 0x80, sc.work_button_text, but_text[i], 0);
229
		WriteText(x+22,11, 0x80, sc.work_button_text, but_text[i], 0);
230
		x+=strlen(but_text[i])*6+37; 
230
		x+=strlen(but_text[i])*6+37; 
231
	}
231
	}
232
	
232
	
233
	//ïîëó÷àåì ñïèñîê äîñòóïíûõ äèñêîâ
233
	//ïîëó÷àåì ñïèñîê äîñòóïíûõ äèñêîâ
234
	GetDisks();
234
	GetDisks();
235
	//âûâîäèì äîñòóïíûå äèñêè
235
	//âûâîäèì äîñòóïíûå äèñêè
236
	DrawTmpDisks();
236
	DrawTmpDisks();
237
	//äîïîëíèòåëüíàÿ ïàíåëü
237
	//äîïîëíèòåëüíàÿ ïàíåëü
238
}
238
}