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 | }3;>3)>>=disk_num;>9;> |
238 | }3;>3)>>=disk_num;>9;> |