Rev 3107 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3107 | Rev 3135 | ||
---|---|---|---|
1 | #include "..\lib\figures.h" |
1 | #include "..\lib\figures.h" |
2 | #include "..\lib\mem.h" |
2 | #include "..\lib\mem.h" |
3 | #include "..\lib\dll.h" |
3 | #include "..\lib\dll.h" |
4 | #include "..\lib\edit_box_lib.h" |
4 | #include "..\lib\edit_box_lib.h" |
5 | 5 | ||
6 | #ifdef LANG_RUS |
6 | #ifdef LANG_RUS |
7 | unsigned char *but_text[]={ |
7 | unsigned char *but_text[]={ |
8 | "Äîáàâèòü äèñê [F2]"w, |
8 | "®¡ ¢¨âì ¤¨áª [F2]", |
9 | "Óäàëèòü äèñê [Del]"w, |
9 | "¤ «¨âì ¤¨áª [Del]", |
10 | "Äîáàâèòü [Ctrl+Enter]"w, |
10 | "®¡ ¢¨âì [Ctrl+Enter]", |
11 | 0}; |
11 | 0}; |
12 | 12 | ||
13 | ?define INTRO_TEXT_1 "Çäåñü áóäåò îòîáðàæàòüñÿ ñïèñîê"w |
13 | ?define INTRO_TEXT_1 "¤¥áì ¡ã¤¥â ®â®¡à ¦ âìáï ᯨ᮪" |
14 | ?define INTRO_TEXT_2 "âèðòóàëüíûõ äèñêîâ â ñèñòåìå."w |
14 | ?define INTRO_TEXT_2 "¢¨àâã «ìëå ¤¨áª®¢ ¢ á¨á⥬¥." |
15 | ?define INTRO_TEXT_3 "Ïîïðîáóéòå äîáàâèòü îäèí..."w |
15 | ?define INTRO_TEXT_3 "®¯à®¡ã©â¥ ¤®¡ ¢¨âì ®¤¨..." |
16 | 16 | ||
17 | ?define NOTIFY_TEXT_NO_DISK "Äëÿ íà÷àëà äîáàâüòå õîòÿ áû îäèí äèñê"w |
17 | ?define NOTIFY_TEXT_NO_DISK "«ï ç « ¤®¡ ¢ì⥠å®âï ¡ë ®¤¨ ¤¨áª" |
18 | ?define NOTIFY_TEXT_DISK_LIMIT "Äîñòèãíóò ïðåäåë êîëè÷åñòâà âèðòóàëüíûõ äèñêîâ"w |
18 | ?define NOTIFY_TEXT_DISK_LIMIT "®á⨣ã⠯।¥« ª®«¨ç¥á⢠¢¨àâã «ìëå ¤¨áª®¢" |
19 | 19 | ||
20 | #else |
20 | #else |
21 | unsigned char *but_text[]={ |
21 | unsigned char *but_text[]={ |
22 | "Add disk [F2]", |
22 | "Add disk [F2]", |
23 | "Delete disk [Del]", |
23 | "Delete disk [Del]", |
24 | "Add [Ctrl+Enter]", |
24 | "Add [Ctrl+Enter]", |
25 | 0}; |
25 | 0}; |
26 | 26 | ||
27 | ?define INTRO_TEXT_1 " There will be list of mounted" |
27 | ?define INTRO_TEXT_1 " There will be list of mounted" |
28 | ?define INTRO_TEXT_2 " virtual disks." |
28 | ?define INTRO_TEXT_2 " virtual disks." |
29 | ?define INTRO_TEXT_3 " Try to add one..." |
29 | ?define INTRO_TEXT_3 " Try to add one..." |
30 | 30 | ||
31 | ?define NOTIFY_TEXT_NO_DISK "You need to have at least one disk" |
31 | ?define NOTIFY_TEXT_NO_DISK "You need to have at least one disk" |
32 | ?define NOTIFY_TEXT_DISK_LIMIT "Reached the limit of the number of virtual disks" |
32 | ?define NOTIFY_TEXT_DISK_LIMIT "Reached the limit of the number of virtual disks" |
33 | #endif |
33 | #endif |
34 | 34 | ||
35 | struct path_string { unsigned char Item[256]; }; |
35 | struct path_string { unsigned char Item[256]; }; |
36 | path_string disk_list[40]; |
36 | path_string disk_list[40]; |
37 | 37 | ||
38 | dword devbuf; |
38 | dword devbuf; |
39 | int disk_num; |
39 | int disk_num; |
40 | int selected; |
40 | int selected; |
41 | 41 | ||
42 | system_colors sc; |
42 | system_colors sc; |
43 | proc_info Form; |
43 | proc_info Form; |
44 | 44 | ||
45 | int mouse_dd; |
45 | int mouse_dd; |
46 | unsigned char dsize[30]; |
46 | unsigned char dsize[30]; |
47 | edit_box edit1= {40,20,200,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,4,#dsize,#mouse_dd,100000000000010b}; |
47 | edit_box edit1= {40,20,200,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,4,#dsize,#mouse_dd,100000000000010b}; |
48 | 48 | ||
49 | unsigned char icons[14*56] = FROM "icons.raw"; |
49 | unsigned char icons[14*56] = FROM "icons.raw"; |
50 | 50 | ||
51 | 51 | ||
52 | 52 | ||
53 | void Main_Window() |
53 | void Main_Window() |
54 | { |
54 | { |
55 | unsigned int id; |
55 | unsigned int id; |
56 | unsigned char key; |
56 | unsigned char key; |
57 | 57 | ||
58 | mem_Init(); |
58 | mem_Init(); |
59 | if (load_dll2(boxlib, #edit_box_draw,0)!=0) |
59 | if (load_dll2(boxlib, #edit_box_draw,0)!=0) |
60 | { |
60 | { |
61 | notify("error: library doesn't exists /rd/1/lib/box_lib.obj"); |
61 | notify("error: library doesn't exists /rd/1/lib/box_lib.obj"); |
62 | ExitProcess(); |
62 | ExitProcess(); |
63 | } |
63 | } |
64 | SetEventMask(0x27); |
64 | SetEventMask(0x27); |
65 | loop() |
65 | loop() |
66 | { |
66 | { |
67 | switch(WaitEvent()) |
67 | switch(WaitEvent()) |
68 | { |
68 | { |
69 | case evMouse: |
69 | case evMouse: |
70 | //edit_box_mouse stdcall (#edit1); |
70 | //edit_box_mouse stdcall (#edit1); |
71 | break; |
71 | break; |
72 | case evButton: |
72 | case evButton: |
73 | id=GetButtonID(); |
73 | id=GetButtonID(); |
74 | if (id==1) ExitProcess(); |
74 | if (id==1) ExitProcess(); |
75 | if (id==10) AddDisk(); |
75 | if (id==10) AddDisk(); |
76 | if (id==11) //del |
76 | if (id==11) //del |
77 | { |
77 | { |
78 | _DEL_DISK: |
78 | _DEL_DISK: |
79 | if (disk_num==0) |
79 | if (disk_num==0) |
80 | { |
80 | { |
81 | notify(NOTIFY_TEXT_NO_DISK); |
81 | notify(NOTIFY_TEXT_NO_DISK); |
82 | break; |
82 | break; |
83 | } |
83 | } |
84 | param[0]='d'; |
84 | param[0]='d'; |
85 | param[1]=disk_list[selected].Item[3]; |
85 | param[1]=disk_list[selected].Item[3]; |
86 | Console_Work(); |
86 | Console_Work(); |
87 | pause(15); |
87 | pause(15); |
88 | GetDisks(); |
88 | GetDisks(); |
89 | DrawTmpDisks(); |
89 | DrawTmpDisks(); |
90 | } |
90 | } |
91 | if (id>=20) |
91 | if (id>=20) |
92 | { |
92 | { |
93 | if (selected==id-20) OpenTmpDisk(); |
93 | if (selected==id-20) OpenTmpDisk(); |
94 | selected=id-20; |
94 | selected=id-20; |
95 | DrawTmpDisks(); |
95 | DrawTmpDisks(); |
96 | } |
96 | } |
97 | break; |
97 | break; |
98 | case evKey: |
98 | case evKey: |
99 | key = GetKey(); |
99 | key = GetKey(); |
100 | if (key==182) if (disk_num<>0) goto _DEL_DISK; |
100 | if (key==182) if (disk_num<>0) goto _DEL_DISK; |
101 | if (key==51) AddDisk(); |
101 | if (key==51) AddDisk(); |
102 | if (key==13) OpenTmpDisk(); |
102 | if (key==13) OpenTmpDisk(); |
103 | if (key==178) |
103 | if (key==178) |
104 | { |
104 | { |
105 | if (selected==0) break; |
105 | if (selected==0) break; |
106 | selected--; |
106 | selected--; |
107 | DrawTmpDisks(); |
107 | DrawTmpDisks(); |
108 | } |
108 | } |
109 | if (key==177) |
109 | if (key==177) |
110 | { |
110 | { |
111 | if (selected+2>disk_num) break; |
111 | if (selected+2>disk_num) break; |
112 | selected++; |
112 | selected++; |
113 | DrawTmpDisks(); |
113 | DrawTmpDisks(); |
114 | } |
114 | } |
115 | if (key==176) |
115 | if (key==176) |
116 | { |
116 | { |
117 | if (selected<3) break; |
117 | if (selected<3) break; |
118 | selected-=3; |
118 | selected-=3; |
119 | DrawTmpDisks(); |
119 | DrawTmpDisks(); |
120 | } |
120 | } |
121 | if (key==179) |
121 | if (key==179) |
122 | { |
122 | { |
123 | if (selected+4>disk_num) break; |
123 | if (selected+4>disk_num) break; |
124 | selected+=3; |
124 | selected+=3; |
125 | DrawTmpDisks(); |
125 | DrawTmpDisks(); |
126 | } |
126 | } |
127 | //EAX=key<<8; |
127 | //EAX=key<<8; |
128 | //edit_box_key stdcall(#edit1); |
128 | //edit_box_key stdcall(#edit1); |
129 | break; |
129 | break; |
130 | case evReDraw: |
130 | case evReDraw: |
131 | Draw_Window(); |
131 | Draw_Window(); |
132 | } |
132 | } |
133 | } |
133 | } |
134 | } |
134 | } |
135 | 135 | ||
136 | 136 | ||
137 | void OpenTmpDisk() |
137 | void OpenTmpDisk() |
138 | { |
138 | { |
139 | unsigned char eol_param[256]; |
139 | unsigned char eol_param[256]; |
140 | if (!disk_num) return; |
140 | if (!disk_num) return; |
141 | strcpy(#eol_param, "/tmp#/1/"); |
141 | strcpy(#eol_param, "/tmp#/1/"); |
142 | eol_param[4]=disk_list[selected].Item[3]; |
142 | eol_param[4]=disk_list[selected].Item[3]; |
143 | RunProgram("/sys/File managers/Eolite", #eol_param); |
143 | RunProgram("/sys/File managers/Eolite", #eol_param); |
144 | } |
144 | } |
145 | 145 | ||
146 | 146 | ||
147 | void GetDisks() |
147 | void GetDisks() |
148 | { |
148 | { |
149 | unsigned int j, fcount=30; |
149 | unsigned int j, fcount=30; |
150 | unsigned char disk_name[256]; |
150 | unsigned char disk_name[256]; |
151 | 151 | ||
152 | mem_Free(devbuf); |
152 | mem_Free(devbuf); |
153 | devbuf= mem_Alloc(32); |
153 | devbuf= mem_Alloc(32); |
154 | ReadDir(0, devbuf, "/"); |
154 | ReadDir(0, devbuf, "/"); |
155 | fcount=ESDWORD[devbuf+8]; |
155 | fcount=ESDWORD[devbuf+8]; |
156 | mem_Free(devbuf); |
156 | mem_Free(devbuf); |
157 | devbuf = mem_Alloc(fcount+1*304+32); |
157 | devbuf = mem_Alloc(fcount+1*304+32); |
158 | ReadDir(fcount, devbuf, "/"); |
158 | ReadDir(fcount, devbuf, "/"); |
159 | 159 | ||
160 | disk_num=0; |
160 | disk_num=0; |
161 | for (j=0; j |
161 | for (j=0; j |
162 | { |
162 | { |
163 | strcpy(#disk_name, j*304+devbuf+72); |
163 | strcpy(#disk_name, j*304+devbuf+72); |
164 | if (disk_name[0]!='t') continue; |
164 | if (disk_name[0]!='t') continue; |
165 | strcpy(#disk_list[disk_num].Item, #disk_name); |
165 | strcpy(#disk_list[disk_num].Item, #disk_name); |
166 | disk_num++; |
166 | disk_num++; |
167 | } |
167 | } |
168 | if (disk_num>12) disk_num=12; |
168 | if (disk_num>12) disk_num=12; |
169 | } |
169 | } |
170 | 170 | ||
171 | 171 | ||
172 | unsigned int disk_pos_x[]={13,13,13,83,83,83,153,153,153,223,223,223}; |
172 | unsigned int disk_pos_x[]={13,13,13,83,83,83,153,153,153,223,223,223}; |
173 | unsigned int disk_pos_y[]={40,65,90,40,65,90,40,65,90,40,65,90}; |
173 | unsigned int disk_pos_y[]={40,65,90,40,65,90,40,65,90,40,65,90}; |
174 | 174 | ||
175 | void DrawTmpDisks() |
175 | void DrawTmpDisks() |
176 | { |
176 | { |
177 | int i; |
177 | int i; |
178 | DrawBar(0,31, Form.width-9,Form.height-GetSkinHeight()-5-30, 0xFFFFFF); |
178 | DrawBar(0,31, Form.width-9,Form.height-GetSkinHeight()-5-30, 0xFFFFFF); |
179 | if (disk_num==0) |
179 | if (disk_num==0) |
180 | { |
180 | { |
181 | WriteText(17,45, 0x90, 0x777777, INTRO_TEXT_1); |
181 | WriteText(17,45, 0x90, 0x777777, INTRO_TEXT_1); |
182 | WriteText(17,45+15, 0x90, 0x777777, INTRO_TEXT_2); |
182 | WriteText(17,45+15, 0x90, 0x777777, INTRO_TEXT_2); |
183 | WriteText(17,45+42, 0x90, 0x777777, INTRO_TEXT_3); |
183 | WriteText(17,45+42, 0x90, 0x777777, INTRO_TEXT_3); |
184 | return; |
184 | return; |
185 | }; |
185 | }; |
186 | if (selected>=disk_num) selected=disk_num-1; //âîññòàíàâëèâàåò âûäåëåíèå - õîðîøàÿ ôè÷à |
186 | if (selected>=disk_num) selected=disk_num-1; //âîññòàíàâëèâàåò âûäåëåíèå - õîðîøàÿ ôè÷à |
187 | for (i=0; i<10; i++) DeleteButton(20+i); |
187 | for (i=0; i<10; i++) DeleteButton(20+i); |
188 | for (i=0; i |
188 | for (i=0; i |
189 | { |
189 | { |
190 | DefineButton(disk_pos_x[i], disk_pos_y[i], 60, 20, 20+i, 0xFFFfff); |
190 | DefineButton(disk_pos_x[i], disk_pos_y[i], 60, 20, 20+i, 0xFFFfff); |
191 | WriteText(disk_pos_x[i]+25,disk_pos_y[i]+6, 0x90, 0, #disk_list[i].Item); |
191 | WriteText(disk_pos_x[i]+25,disk_pos_y[i]+6, 0x90, 0, #disk_list[i].Item); |
192 | _PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 3*14*14*3+#icons); |
192 | _PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 3*14*14*3+#icons); |
193 | if (selected==i) DrawRectangle(disk_pos_x[i], disk_pos_y[i], 60-1, 20-1, 0x00459A); |
193 | if (selected==i) DrawRectangle(disk_pos_x[i], disk_pos_y[i], 60-1, 20-1, 0x00459A); |
194 | } |
194 | } |
195 | } |
195 | } |
196 | 196 | ||
197 | void AddDisk() |
197 | void AddDisk() |
198 | { |
198 | { |
199 | unsigned int i, j; |
199 | unsigned int i, j; |
200 | if (disk_num>=10) |
200 | if (disk_num>=10) |
201 | { |
201 | { |
202 | notify(NOTIFY_TEXT_DISK_LIMIT); |
202 | notify(NOTIFY_TEXT_DISK_LIMIT); |
203 | return; |
203 | return; |
204 | } |
204 | } |
205 | param[0]='a'; |
205 | param[0]='a'; |
206 | for (i=0; i<9; i++) |
206 | for (i=0; i<9; i++) |
207 | { |
207 | { |
208 | for (j=0; j<=disk_num; j++) |
208 | for (j=0; j<=disk_num; j++) |
209 | { |
209 | { |
210 | if (i+48==disk_list[j].Item[3]) continue 1; |
210 | if (i+48==disk_list[j].Item[3]) continue 1; |
211 | } |
211 | } |
212 | break; |
212 | break; |
213 | } |
213 | } |
214 | param[1]=i+48; |
214 | param[1]=i+48; |
215 | Console_Work(); |
215 | Console_Work(); |
216 | pause(5); |
216 | pause(5); |
217 | GetDisks(); |
217 | GetDisks(); |
218 | DrawTmpDisks(); |
218 | DrawTmpDisks(); |
219 | } |
219 | } |
220 | 220 | ||
221 | void Draw_Window() |
221 | void Draw_Window() |
222 | { |
222 | { |
223 | int i, x; |
223 | int i, x; |
224 | 224 | ||
225 | sc.get(); |
225 | sc.get(); |
226 | DefineAndDrawWindow(170,150,314,250,0x74,sc.work,"Virtual Disk Manager 0.4",0); |
226 | DefineAndDrawWindow(170,150,314,250,0x74,sc.work,"Virtual Disk Manager 0.4",0); |
227 | GetProcessInfo(#Form, SelfInfo); |
227 | GetProcessInfo(#Form, SelfInfo); |
228 | if (Form.status_window>2) return; //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì |
228 | if (Form.status_window>2) return; |
229 | 229 | ||
230 | //ðèñóåì ïàíåëü |
230 | //ðèñóåì ïàíåëü |
231 | DrawBar(0,0, Form.width-9,30, sc.work); |
231 | DrawBar(0,0, Form.width-9,30, sc.work); |
232 | DrawBar(0,30, Form.width-9,1, sc.work_graph); |
232 | DrawBar(0,30, Form.width-9,1, sc.work_graph); |
233 | x=6; |
233 | x=6; |
234 | for (i=0; i<2; i++) |
234 | for (i=0; i<2; i++) |
235 | { |
235 | { |
236 | DefineButton(x,5, strlen(but_text[i])*6+28,19, 10+i, sc.work_button); |
236 | DefineButton(x,5, strlen(but_text[i])*6+28,19, 10+i, sc.work_button); |
237 | _PutImage(x+3,8, 14,14, i*14*14*3+#icons); |
237 | _PutImage(x+3,8, 14,14, i*14*14*3+#icons); |
238 | WriteText(x+22,11, 0x80, sc.work_button_text, but_text[i]); |
238 | WriteText(x+22,11, 0x80, sc.work_button_text, but_text[i]); |
239 | x+=strlen(but_text[i])*6+37; |
239 | x+=strlen(but_text[i])*6+37; |
240 | } |
240 | } |
241 | - | ||
242 | //ïîëó÷àåì ñïèñîê äîñòóïíûõ äèñêîâ |
241 | |
243 | GetDisks(); |
- | |
244 | //âûâîäèì äîñòóïíûå äèñêè |
242 | GetDisks(); |
245 | DrawTmpDisks(); |
243 | DrawTmpDisks(); |
246 | //AddPanel(); |
244 | //AddPanel(); |
247 | } |
245 | } |
248 | 246 | ||
249 | /*void AddPanel() |
247 | /*void AddPanel() |
250 | { |
248 | { |
251 | DrawBar(0,Form.height-GetSkinHeight()-40, Form.width-9,1, sc.work_graph); |
249 | DrawBar(0,Form.height-GetSkinHeight()-40, Form.width-9,1, sc.work_graph); |
252 | DrawBar(0,Form.height-GetSkinHeight()-39, Form.width-9,35, sc.work); |
250 | DrawBar(0,Form.height-GetSkinHeight()-39, Form.width-9,35, sc.work); |
253 | 251 | ||
254 | strcpy(#dsize, itoa(GetFreeRAM()/10)); |
252 | strcpy(#dsize, itoa(GetFreeRAM()/10)); |
255 | //strcpy(#dsize, "100"); |
253 | //strcpy(#dsize, "100"); |
256 | edit1.size=edit1.pos=strlen(#dsize); |
254 | edit1.size=edit1.pos=strlen(#dsize); |
257 | edit_box_draw stdcall(#edit1); //ðèñóåì ñòðîêó àäðåñà |
255 | edit_box_draw stdcall(#edit1); //ðèñóåì ñòðîêó àäðåñà |
258 | //DefineButton(-strlen(but_text[2])+Form.width-9,200, strlen(but_text[2])*6+28,19, 12, sc.work_button); |
256 | //DefineButton(-strlen(but_text[2])+Form.width-9,200, strlen(but_text[2])*6+28,19, 12, sc.work_button); |
259 | //_PutImage(-strlen(but_text[2])+Form.width-9+3,200+3, 14,14, 2*14*14*3+#icons); |
257 | //_PutImage(-strlen(but_text[2])+Form.width-9+3,200+3, 14,14, 2*14*14*3+#icons); |
260 | }*/2;>=disk_num;>9;>10;>8; |
258 | }*/2;>=disk_num;>9;>10;>8; |
261 | ><8; |
259 | ><8; |
262 | >3)>> |
260 | >3)>> |