Rev 3336 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3336 | Rev 3401 | ||
---|---|---|---|
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]", |
8 | "®¡ ¢¨âì ¤¨áª [F2]", |
9 | "¤ «¨âì ¤¨áª [Del]", |
9 | "¤ «¨âì ¤¨áª [Del]", |
10 | "®¡ ¢¨âì [Ctrl+Enter]", |
10 | "®¡ ¢¨âì [Ctrl+Enter]", |
11 | 0}; |
11 | 0}; |
12 | 12 | ||
13 | ?define INTRO_TEXT_1 "¤¥áì ¡ã¤¥â ®â®¡à ¦ âìáï ᯨ᮪" |
13 | ?define INTRO_TEXT_1 "¤¥áì ¡ã¤¥â ®â®¡à ¦ âìáï ᯨ᮪" |
14 | ?define INTRO_TEXT_2 "¢¨àâã «ìëå ¤¨áª®¢ ¢ á¨á⥬¥." |
14 | ?define INTRO_TEXT_2 "¢¨àâã «ìëå ¤¨áª®¢ ¢ á¨á⥬¥." |
15 | ?define INTRO_TEXT_3 "®¯à®¡ã©â¥ ¤®¡ ¢¨âì ®¤¨..." |
15 | ?define INTRO_TEXT_3 "®¯à®¡ã©â¥ ¤®¡ ¢¨âì ®¤¨..." |
16 | 16 | ||
17 | ?define NOTIFY_TEXT_NO_DISK "«ï ç « ¤®¡ ¢ì⥠å®âï ¡ë ®¤¨ ¤¨áª" |
17 | ?define NOTIFY_TEXT_NO_DISK "«ï ç « ¤®¡ ¢ì⥠å®âï ¡ë ®¤¨ ¤¨áª" |
18 | ?define NOTIFY_TEXT_DISK_LIMIT "®á⨣ã⠯।¥« ª®«¨ç¥á⢠¢¨àâã «ìëå ¤¨áª®¢" |
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 | #define TOPPANELH 30 |
50 | #define TOPPANELH 30 |
51 | #define BOTPANELH 20 |
51 | #define BOTPANELH 20 |
52 | 52 | ||
53 | 53 | ||
54 | 54 | ||
55 | void Main_Window() |
55 | void Main_Window() |
56 | { |
56 | { |
57 | unsigned int id, key, err; |
57 | unsigned int id, key, err; |
58 | int i, x; |
58 | int i, x; |
59 | 59 | ||
60 | mem_Init(); |
60 | mem_Init(); |
61 | if (load_dll2(boxlib, #edit_box_draw,0)!=0) |
61 | if (load_dll2(boxlib, #edit_box_draw,0)!=0) |
62 | { |
62 | { |
63 | notify("error: library doesn't exist /rd/1/lib/box_lib.obj"); |
63 | notify("error: library doesn't exist /rd/1/lib/box_lib.obj"); |
64 | ExitProcess(); |
64 | ExitProcess(); |
65 | } |
65 | } |
66 | SetEventMask(0x27); |
66 | SetEventMask(0x27); |
67 | loop() |
67 | loop() |
68 | { |
68 | { |
69 | switch(WaitEvent()) |
69 | switch(WaitEvent()) |
70 | { |
70 | { |
71 | case evMouse: |
71 | case evMouse: |
72 | //edit_box_mouse stdcall (#edit1); |
72 | //edit_box_mouse stdcall (#edit1); |
73 | break; |
73 | break; |
74 | case evButton: |
74 | case evButton: |
75 | id=GetButtonID(); |
75 | id=GetButtonID(); |
76 | if (id==1) ExitProcess(); |
76 | if (id==1) ExitProcess(); |
77 | if (id==10) AddDisk(); |
77 | if (id==10) AddDisk(); |
78 | if (id==11) //del |
78 | if (id==11) //del |
79 | { |
79 | { |
80 | _DEL_DISK: |
80 | _DEL_DISK: |
81 | if (disk_num==0) |
81 | if (disk_num==0) |
82 | { |
82 | { |
83 | notify(NOTIFY_TEXT_NO_DISK); |
83 | notify(NOTIFY_TEXT_NO_DISK); |
84 | break; |
84 | break; |
85 | } |
85 | } |
86 | param[0]='d'; |
86 | param[0]='d'; |
87 | param[1]=disk_list[selected].Item[3]; |
87 | param[1]=disk_list[selected].Item[3]; |
88 | err = Console_Work(); |
88 | err = Console_Work(); |
89 | if ((err!=0) && (err<7)) notify(rezult_text[err]); |
89 | if ((err!=0) && (err<7)) notify(rezult_text[err]); |
90 | pause(15); |
90 | pause(15); |
91 | GetDisks(); |
91 | GetDisks(); |
92 | DrawTmpDisks(); |
92 | DrawTmpDisks(); |
93 | } |
93 | } |
94 | if (id>=20) |
94 | if (id>=20) |
95 | { |
95 | { |
96 | if (selected==id-20) OpenTmpDisk(); |
96 | if (selected==id-20) OpenTmpDisk(); |
97 | selected=id-20; |
97 | selected=id-20; |
98 | DrawTmpDisks(); |
98 | DrawTmpDisks(); |
99 | } |
99 | } |
100 | break; |
100 | break; |
101 | case evKey: |
101 | case evKey: |
102 | key = GetKey(); |
102 | key = GetKey(); |
103 | if (key==182) if (disk_num<>0) goto _DEL_DISK; |
103 | if (key==182) if (disk_num<>0) goto _DEL_DISK; |
104 | if (key==51) AddDisk(); |
104 | if (key==51) AddDisk(); |
105 | if (key==13) OpenTmpDisk(); |
105 | if (key==13) OpenTmpDisk(); |
106 | if (key==178) |
106 | if (key==178) |
107 | { |
107 | { |
108 | if (selected==0) break; |
108 | if (selected==0) break; |
109 | selected--; |
109 | selected--; |
110 | DrawTmpDisks(); |
110 | DrawTmpDisks(); |
111 | } |
111 | } |
112 | if (key==177) |
112 | if (key==177) |
113 | { |
113 | { |
114 | if (selected+2>disk_num) break; |
114 | if (selected+2>disk_num) break; |
115 | selected++; |
115 | selected++; |
116 | DrawTmpDisks(); |
116 | DrawTmpDisks(); |
117 | } |
117 | } |
118 | if (key==176) |
118 | if (key==176) |
119 | { |
119 | { |
120 | if (selected<3) break; |
120 | if (selected<3) break; |
121 | selected-=3; |
121 | selected-=3; |
122 | DrawTmpDisks(); |
122 | DrawTmpDisks(); |
123 | } |
123 | } |
124 | if (key==179) |
124 | if (key==179) |
125 | { |
125 | { |
126 | if (selected+4>disk_num) break; |
126 | if (selected+4>disk_num) break; |
127 | selected+=3; |
127 | selected+=3; |
128 | DrawTmpDisks(); |
128 | DrawTmpDisks(); |
129 | } |
129 | } |
130 | //EAX=key<<8; |
130 | //EAX=key<<8; |
131 | //edit_box_key stdcall(#edit1); |
131 | //edit_box_key stdcall(#edit1); |
132 | break; |
132 | break; |
133 | case evReDraw: |
133 | case evReDraw: |
134 | sc.get(); |
134 | sc.get(); |
135 | DefineAndDrawWindow(170,150,314,250,0x74,sc.work,"Virtual Disk Manager 0.45",0); |
135 | DefineAndDrawWindow(170,150,314,250,0x74,sc.work,"Virtual Disk Manager 0.45",0); |
136 | GetProcessInfo(#Form, SelfInfo); |
136 | GetProcessInfo(#Form, SelfInfo); |
137 | if (Form.status_window>2) return; |
137 | if (Form.status_window>2) return; |
138 | 138 | ||
139 | DrawBar(0,0, Form.cwidth,TOPPANELH, sc.work); |
139 | DrawBar(0,0, Form.cwidth,TOPPANELH, sc.work); |
140 | DrawBar(0,TOPPANELH, Form.cwidth,1, sc.work_graph); |
140 | DrawBar(0,TOPPANELH, Form.cwidth,1, sc.work_graph); |
141 | x=6; |
141 | x=6; |
142 | for (i=0; i<2; i++) |
142 | for (i=0; i<2; i++) |
143 | { |
143 | { |
144 | DefineButton(x,5, strlen(but_text[i])*6+28,19, 10+i, sc.work_button); |
144 | DefineButton(x,5, strlen(but_text[i])*6+28,19, 10+i, sc.work_button); |
145 | _PutImage(x+3,8, 14,14, i*14*14*3+#icons); |
145 | _PutImage(x+3,8, 14,14, i*14*14*3+#icons); |
146 | WriteText(x+22,11, 0x80, sc.work_button_text, but_text[i]); |
146 | WriteText(x+22,11, 0x80, sc.work_button_text, but_text[i]); |
147 | x+=strlen(but_text[i])*6+37; |
147 | x+=strlen(but_text[i])*6+37; |
148 | } |
148 | } |
149 | GetDisks(); |
149 | GetDisks(); |
150 | DrawTmpDisks(); |
150 | DrawTmpDisks(); |
151 | } |
151 | } |
152 | } |
152 | } |
153 | } |
153 | } |
154 | 154 | ||
155 | 155 | ||
156 | void OpenTmpDisk() |
156 | void OpenTmpDisk() |
157 | { |
157 | { |
158 | unsigned char eol_param[256]; |
158 | unsigned char eol_param[256]; |
159 | if (!disk_num) return; |
159 | if (!disk_num) return; |
160 | strcpy(#eol_param, "/tmp#/1/"); |
160 | strcpy(#eol_param, "/tmp#/1/"); |
161 | eol_param[4]=disk_list[selected].Item[3]; |
161 | eol_param[4]=disk_list[selected].Item[3]; |
162 | RunProgram("/sys/File managers/Eolite", #eol_param); |
162 | RunProgram("/sys/File managers/Eolite", #eol_param); |
163 | } |
163 | } |
164 | 164 | ||
165 | 165 | ||
166 | void GetDisks() |
166 | void GetDisks() |
167 | { |
167 | { |
168 | unsigned int j, fcount=30; |
168 | unsigned int j, fcount=30; |
169 | unsigned char disk_name[256]; |
169 | unsigned char disk_name[256]; |
170 | 170 | ||
171 | mem_Free(devbuf); |
171 | mem_Free(devbuf); |
172 | devbuf= mem_Alloc(32); |
172 | devbuf= mem_Alloc(32); |
173 | ReadDir(0, devbuf, "/"); |
173 | ReadDir(0, devbuf, "/"); |
174 | fcount=ESDWORD[devbuf+8]; |
174 | fcount=ESDWORD[devbuf+8]; |
175 | mem_Free(devbuf); |
175 | mem_Free(devbuf); |
176 | devbuf = mem_Alloc(fcount+1*304+32); |
176 | devbuf = mem_Alloc(fcount+1*304+32); |
177 | ReadDir(fcount, devbuf, "/"); |
177 | ReadDir(fcount, devbuf, "/"); |
178 | 178 | ||
179 | disk_num=0; |
179 | disk_num=0; |
180 | for (j=0; j |
180 | for (j=0; j |
181 | { |
181 | { |
182 | strcpy(#disk_name, j*304+devbuf+72); |
182 | strcpy(#disk_name, j*304+devbuf+72); |
183 | if (disk_name[0]!='t') continue; |
183 | if (disk_name[0]!='t') continue; |
184 | strcpy(#disk_list[disk_num].Item, #disk_name); |
184 | strcpy(#disk_list[disk_num].Item, #disk_name); |
185 | disk_num++; |
185 | disk_num++; |
186 | } |
186 | } |
187 | if (disk_num>12) disk_num=12; |
187 | if (disk_num>12) disk_num=12; |
188 | } |
188 | } |
189 | 189 | ||
190 | 190 | ||
191 | unsigned int disk_pos_x[]={13,13,13,83,83,83,153,153,153,223,223,223}; |
191 | unsigned int disk_pos_x[]={13,13,13,83,83,83,153,153,153,223,223,223}; |
192 | unsigned int disk_pos_y[]={40,65,90,40,65,90,40,65,90,40,65,90}; |
192 | unsigned int disk_pos_y[]={40,65,90,40,65,90,40,65,90,40,65,90}; |
193 | 193 | ||
194 | void DrawTmpDisks() |
194 | void DrawTmpDisks() |
195 | { |
195 | { |
196 | int i; |
196 | int i,FreeRAM=GetFreeRAM()/1024; |
197 | DrawBar(0,31, Form.cwidth,Form.cheight-TOPPANELH-BOTPANELH-2, 0xFFFFFF); |
197 | DrawBar(0,31, Form.cwidth,Form.cheight-TOPPANELH-BOTPANELH-2, 0xFFFFFF); |
198 | DrawBar(0,Form.cheight-BOTPANELH-1, Form.cwidth,1, sc.work_graph); |
198 | DrawBar(0,Form.cheight-BOTPANELH-1, Form.cwidth,1, sc.work_graph); |
199 | DrawBar(0,Form.cheight-BOTPANELH, Form.cwidth,BOTPANELH, sc.work); |
199 | DrawBar(0,Form.cheight-BOTPANELH, Form.cwidth,BOTPANELH, sc.work); |
200 | WriteText(10, Form.cheight-13, 0x80, sc.work_text, "Free RAM size:"); |
200 | WriteText(10, Form.cheight-13, 0x80, sc.work_text, "Free RAM size:"); |
201 | WriteText(100, Form.cheight-13, 0x80, sc.work_text, itoa(GetFreeRAM()/2048)); |
201 | WriteText(100, Form.cheight-13, 0x80, sc.work_text, itoa(FreeRAM)); |
202 | WriteText(strlen(itoa(GetFreeRAM()/2048))*6 + 100, Form.cheight-13, 0x80, sc.work_text, " MB"); |
202 | WriteText(strlen(itoa(FreeRAM))*6 + 100, Form.cheight-13, 0x80, sc.work_text, " MB"); |
203 | if (disk_num==0) |
203 | if (disk_num==0) |
204 | { |
204 | { |
205 | WriteText(17,45, 0x90, 0x777777, INTRO_TEXT_1); |
205 | WriteText(17,45, 0x90, 0x777777, INTRO_TEXT_1); |
206 | WriteText(17,45+15, 0x90, 0x777777, INTRO_TEXT_2); |
206 | WriteText(17,45+15, 0x90, 0x777777, INTRO_TEXT_2); |
207 | WriteText(17,45+42, 0x90, 0x777777, INTRO_TEXT_3); |
207 | WriteText(17,45+42, 0x90, 0x777777, INTRO_TEXT_3); |
208 | return; |
208 | return; |
209 | }; |
209 | }; |
210 | if (selected>=disk_num) selected=disk_num-1; //restore selected |
210 | if (selected>=disk_num) selected=disk_num-1; //restore selected |
211 | for (i=0; i<10; i++) DeleteButton(20+i); |
211 | for (i=0; i<10; i++) DeleteButton(20+i); |
212 | for (i=0; i |
212 | for (i=0; i |
213 | { |
213 | { |
214 | DefineButton(disk_pos_x[i], disk_pos_y[i], 60, 20, 20+i, 0xFFFfff); |
214 | DefineButton(disk_pos_x[i], disk_pos_y[i], 60, 20, 20+i, 0xFFFfff); |
215 | WriteText(disk_pos_x[i]+25,disk_pos_y[i]+6, 0x90, 0, #disk_list[i].Item); |
215 | WriteText(disk_pos_x[i]+25,disk_pos_y[i]+6, 0x90, 0, #disk_list[i].Item); |
216 | _PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 3*14*14*3+#icons); |
216 | _PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 3*14*14*3+#icons); |
217 | if (selected==i) DrawRectangle(disk_pos_x[i], disk_pos_y[i], 60-1, 20-1, 0x00459A); |
217 | if (selected==i) DrawRectangle(disk_pos_x[i], disk_pos_y[i], 60-1, 20-1, 0x00459A); |
218 | } |
218 | } |
219 | } |
219 | } |
220 | 220 | ||
221 | void AddDisk() |
221 | void AddDisk() |
222 | { |
222 | { |
223 | unsigned int i, j, err; |
223 | unsigned int i, j, err; |
224 | if (disk_num>=10) |
224 | if (disk_num>=10) |
225 | { |
225 | { |
226 | notify(NOTIFY_TEXT_DISK_LIMIT); |
226 | notify(NOTIFY_TEXT_DISK_LIMIT); |
227 | return; |
227 | return; |
228 | } |
228 | } |
229 | param[0]='a'; |
229 | param[0]='a'; |
230 | for (i=0; i<9; i++) |
230 | for (i=0; i<9; i++) |
231 | { |
231 | { |
232 | for (j=0; j<=disk_num; j++) |
232 | for (j=0; j<=disk_num; j++) |
233 | { |
233 | { |
234 | if (i+48==disk_list[j].Item[3]) continue 1; |
234 | if (i+48==disk_list[j].Item[3]) continue 1; |
235 | } |
235 | } |
236 | break; |
236 | break; |
237 | } |
237 | } |
238 | param[1]=i+48; |
238 | param[1]=i+48; |
239 | err = Console_Work(); |
239 | err = Console_Work(); |
240 | if ((err!=0) && (err<7)) notify(rezult_text[err]); |
240 | if ((err!=0) && (err<7)) notify(rezult_text[err]); |
241 | pause(5); |
241 | pause(5); |
242 | GetDisks(); |
242 | GetDisks(); |
243 | DrawTmpDisks(); |
243 | DrawTmpDisks(); |
244 | }7))>=disk_num;>9;>10;>2;>8; |
244 | }7))>=disk_num;>9;>10;>2;>8; |
245 | ><8; |
245 | ><8; |
246 | >3)>>7))> |
246 | >3)>>7))> |