Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
773 | gluk | 1 | //Leency & Veliant -=- KolibriOS Team -=- 2008 |
2 | |||
3 | #pragma option J0 |
||
4 | #pragma option LST |
||
5 | #pragma option OC |
||
6 | #pragma option 4 |
||
7 | #pragma option A |
||
8 | #include "lib\kolibri.h--" |
||
9 | #include "lib\memory.h--" |
||
10 | #include "imgs\Imgs.cpp" |
||
11 | #include "imgs\icons.cpp" |
||
12 | #include "imgs\left_p.cpp" |
||
13 | #include "LVabout.c--" |
||
14 | #speed |
||
15 | |||
16 | //локализация и настройки |
||
17 | char header = "Eolite File Manager v0.84"; |
||
18 | char gotodev = "Goto:"; |
||
19 | char actions = "Actions"; |
||
20 | char preview = "Preview"; |
||
21 | char tfile = "File"; |
||
22 | char ttype = "Type"; |
||
23 | char tsize = "Size"; |
||
24 | dword videlenie=0x94AECE; //цвет выделенного элемента из списка файлов |
||
25 | // |
||
26 | |||
27 | int but_num, kolichestvo, curbtn, za_kadrom, longest_name;; |
||
28 | dword top_actions, show_actions=1, show_preview=0, top_pr; |
||
29 | int razm_scrl, on_y; //для скрола |
||
30 | int y,off; //для текста |
||
31 | char path[256] = "/rd/1/", edit_path[256], temp[256]; //для путей |
||
32 | char file_path[256], param[256], file_name[256]; //для файлов |
||
33 | char copyfile[256],copy_name[256]; //копирование |
||
34 | int i=1; //для циклов |
||
35 | dword id=1; |
||
36 | dword ins_mas[200]=0; //Insert |
||
37 | dword file_mas[2000]; //список файлов |
||
38 | int cut_active, rename_active, del_active; |
||
39 | int temp_int, str_len; |
||
40 | dword stak[100]=0; |
||
41 | |||
42 | proc_info Form; |
||
43 | |||
44 | struct { |
||
45 | int func; |
||
46 | int pos; |
||
47 | int rezerv; |
||
48 | int sizefile; |
||
49 | int buffer; |
||
50 | char rezerv2; |
||
51 | int stroka; |
||
52 | }open_file_70; |
||
53 | dword buf, size, isdir; |
||
54 | |||
55 | struct { |
||
56 | int func; |
||
57 | int flag; |
||
58 | int param; |
||
59 | int rez1; |
||
60 | int rez2; |
||
61 | char rezerv2; |
||
62 | int stroka; |
||
63 | }run_file_70; |
||
64 | |||
65 | void main() |
||
66 | dword pressed, key; |
||
67 | mouse m; |
||
68 | { |
||
69 | skin_width = GetSkinWidth(); |
||
70 | buf = malloc(65536); //65536 |
||
71 | draw_window(); |
||
72 | $mov eax,40 |
||
73 | $mov ebx,100111b |
||
74 | $int 0x40 |
||
75 | loop() |
||
76 | { |
||
77 | switch(WaitEvent()) |
||
78 | { |
||
79 | CASE 6: |
||
80 | IF (del_active==1) break; |
||
81 | m.get(); |
||
82 | IF ((kolichestvo==but_num) || (m.y<57)) break; //если прокрутки нет, то никуда не мотаем |
||
83 | IF (m.y>Form.width) m.y=57; //если курсор над окном |
||
84 | IF (m.lkm==0) pressed=0; ELSE |
||
85 | //if (m.y>=on_y+skin_width) if (m.y<=on_y+razm_scrl+skin_width) |
||
86 | IF (m.x>=onLeft(21,0)) IF (m.x<=onLeft(6,0)) pressed=1; |
||
87 | if (pressed==1) IF (m.y>=on_y+razm_scrl+skin_width) //if (kolichestvo |
||
88 | { |
||
89 | IF (za_kadrom+but_num>=kolichestvo) break; |
||
90 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
91 | za_kadrom=za_kadrom+but_num; //za_kadrom=za_kadrom+1; |
||
92 | List_ReDraw(); |
||
93 | } |
||
94 | ELSE IF (pressed==1) IF (m.y<=on_y) IF (on_y<>57) |
||
95 | { |
||
96 | IF (za_kadrom>but_num) za_kadrom=za_kadrom-but_num; //za_kadrom=za_kadrom-1; |
||
97 | ELSE za_kadrom=0; |
||
98 | List_ReDraw(); |
||
99 | } |
||
100 | break; |
||
101 | CASE evButton: |
||
102 | id=GetButtonID(); |
||
103 | IF (id==1) {ExitProcess(); break;} |
||
104 | IF (del_active==1) |
||
105 | { |
||
106 | IF (id==301) Del_File(); |
||
107 | IF (id==302) {del_active=0; Open_Dir(#path,1);} |
||
108 | break; |
||
109 | } |
||
110 | switch(id) |
||
111 | { |
||
112 | CASE 23: IF (strcmp(#path,"/")==-1) Dir_Up(); break;//up! |
||
113 | case 26: Paste(); break;//paste |
||
114 | case 27: Goto_edit_path(); break; //goto edit_path |
||
115 | case 81: Del_Form(); break;//Delete file |
||
116 | case 24: //cut |
||
117 | case 25: //copy |
||
118 | if (isdir==1) break; //папки пока что копировать не умеем |
||
119 | copystr(#file_name,#copy_name); |
||
120 | copystr(#file_path,#copyfile); //вычисляем какой файл копировать |
||
121 | IF (id==24) cut_active=1; ELSE cut_active=0; //режем или копируем? |
||
122 | break; |
||
123 | case 30: //about |
||
124 | EAX = 51; |
||
125 | EBX = 1; |
||
126 | ECX = #authors; |
||
127 | EDX = #stak; |
||
128 | $int 40h; |
||
129 | break; |
||
130 | case 50: //стрелка вверх на скроле |
||
131 | IF (za_kadrom<=0) break; |
||
132 | za_kadrom=za_kadrom-1; |
||
133 | List_ReDraw(); |
||
134 | break; |
||
135 | case 51: //стрелка вниз на скроле |
||
136 | IF (za_kadrom+but_num>=kolichestvo) break; |
||
137 | za_kadrom=za_kadrom+1; |
||
138 | List_ReDraw(); |
||
139 | break; |
||
140 | case 77: //actions |
||
141 | IF (show_actions==1) show_actions=0; else show_actions=1; |
||
142 | Actions(); //далее рисуем сдесь чтоб меньше была перерисовка |
||
143 | IF (show_actions==1) DrawBar(22,top_actions*16+159,160,15,0x00699C); |
||
144 | ELSE { |
||
145 | DrawBar(22,top_actions*16+120,160,15,0x00699C); |
||
146 | DrawBar(22,top_actions*16+242,160,50,0x00699C); |
||
147 | } |
||
148 | Preview(); |
||
149 | IF (show_preview==0) DrawBar(22,top_pr+18,160,101,0x00699C); //синее рисуем сдесь |
||
150 | break; |
||
151 | case 78: //preview |
||
152 | if (show_preview==0)show_preview=1; else |
||
153 | { show_preview=0; DrawBar(22,top_pr+18,160,101,0x00699C); } //синее |
||
154 | Preview(); |
||
155 | break; |
||
156 | case 80: //rename |
||
157 | if (isdir==1) break; //папки пока что переименовывать не умеем |
||
158 | y= curbtn*18+85; |
||
159 | DrawRegion(219,curbtn*18+57,onLeft(50,197),17,0x94AECE); //ободок |
||
160 | DrawBar(220,curbtn*18+58,onLeft(50,197)-1,16,0xFFFFCC); //жёлтое |
||
161 | WriteTextXY(224<<16+y, 0x80000000, #file_name, 0); |
||
162 | rename_active=1; |
||
163 | break; |
||
164 | case 21: //Назад |
||
165 | GoBack(1); |
||
166 | break; |
||
167 | case 22: //Вперёд |
||
168 | GoBack(0); |
||
169 | break; |
||
170 | }//---------------------------переход по id---------------------- |
||
171 | if (id>200) //кнопки из списка файлов |
||
172 | { |
||
173 | if (curbtn!=id-201) |
||
174 | { |
||
175 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
176 | curbtn=id-201; |
||
177 | Line_ReDraw(videlenie); //выделение |
||
178 | break; |
||
179 | } |
||
180 | else |
||
181 | if ((isdir==1) if (strcmp(curbtn+1*304 + buf+72,"..")==-1) |
||
182 | { |
||
183 | copystr(#file_path, #path); |
||
184 | copystr("/", #path+strlen(#path)); |
||
185 | za_kadrom=0; //вверх списка |
||
186 | curbtn=0; |
||
187 | Open_Dir(#path,1); |
||
188 | } else Dir_Up(); else Run_File(); |
||
189 | break; |
||
190 | } |
||
191 | if (id>=100) //подключённые носители информации |
||
192 | { |
||
193 | Open_Dir("/",0); |
||
194 | copystr(id-100*304+ buf+72, #path); |
||
195 | if (strcmp(#path,"rd")==0) copystr("/rd/1/",#path); |
||
196 | else |
||
197 | { |
||
198 | copystr("/", #temp); |
||
199 | copystr(#path, #temp+strlen(#temp)); |
||
200 | copystr("/", #temp+strlen(#temp)); |
||
201 | copystr(#temp,#path); |
||
202 | } |
||
203 | za_kadrom=0; //вверх списка |
||
204 | curbtn=0; |
||
205 | Open_Dir(#path,1); |
||
206 | break; |
||
207 | } |
||
208 | case evKey: |
||
209 | key = GetKey(); |
||
210 | IF (del_active==1) |
||
211 | { |
||
212 | IF (key==013) Del_File(); |
||
213 | IF (key==027) {del_active=0; Open_Dir(#path,1);} |
||
214 | break; |
||
215 | } |
||
216 | switch (key) |
||
217 | { |
||
218 | case 0x08: //backspace |
||
219 | if (rename_active==1) {copystr(#file_name,#temp); if (strlen(#temp)<=0) break;} |
||
220 | else {copystr(#edit_path,#temp); if (strlen(#temp)<=1) break;} //оставляем только "/" |
||
221 | EBX=#temp + strlen(#temp)-1; |
||
222 | ESBYTE[EBX] = 0; |
||
223 | if (rename_active==1) |
||
224 | { |
||
225 | DrawBar(strlen(#file_name)*6+218,curbtn*18+58,6,16,0xFFFFCC); //жёлтое |
||
226 | copystr(#temp,#file_name); |
||
227 | WriteTextXY(224<<16+y, 0x80000000, #file_name, 0); |
||
228 | } else { copystr(#temp,#edit_path); KEdit(); } |
||
229 | break; |
||
230 | case 014: //новое окно |
||
231 | break; |
||
232 | case 024: //Ctrl+X cut |
||
233 | if (isdir==1) break; //папки пока что копировать не умеем |
||
234 | copystr(#file_name,#copy_name); |
||
235 | copystr(#file_path,#copyfile); //вычисляем какой файл копировать |
||
236 | cut_active=1; |
||
237 | break; |
||
238 | case 089: //Ctrl+Ins copy |
||
239 | case 003: //Ctrl+C copy |
||
240 | if (isdir==1) break; //папки пока что копировать не умеем |
||
241 | copystr(#file_name,#copy_name); |
||
242 | copystr(#file_path,#copyfile); //вычисляем какой файл копировать |
||
243 | cut_active=0; |
||
244 | break; |
||
245 | case 022: //Ctrl+V paste |
||
246 | Paste(); |
||
247 | break; |
||
248 | case 027: //Esc |
||
249 | if (rename_active==1) { rename_active=0; Line_ReDraw(videlenie); } |
||
250 | break; |
||
251 | case 013: //Enter |
||
252 | if (rename_active==1) {Line_ReDraw(videlenie); break;} |
||
253 | if (strcmp(#path,#edit_path)==-1) Goto_edit_path(); else |
||
254 | if ((isdir==1) if (strcmp(curbtn+1*304 + buf+72,"..")==-1) |
||
255 | { |
||
256 | copystr(#file_path, #path); |
||
257 | copystr("/", #path+strlen(#path)); |
||
258 | za_kadrom=0; //вверх списка |
||
259 | curbtn=0; |
||
260 | Open_Dir(#path,1); |
||
261 | } else Dir_Up(); else Run_File(); |
||
262 | break; |
||
263 | case 178: //up |
||
264 | if (curbtn>=1) |
||
265 | { |
||
266 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
267 | curbtn=curbtn-1; |
||
268 | Line_ReDraw(videlenie); //выделение |
||
269 | break; |
||
270 | } |
||
271 | if (za_kadrom<=0) break; |
||
272 | za_kadrom=za_kadrom-1; |
||
273 | List_ReDraw(); |
||
274 | break; |
||
275 | case 177: //down |
||
276 | if(curbtn |
||
277 | { |
||
278 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
279 | curbtn=curbtn+1; |
||
280 | Line_ReDraw(videlenie); //выделение |
||
281 | break; |
||
282 | } |
||
283 | if (za_kadrom+but_num>=kolichestvo) break; |
||
284 | za_kadrom=za_kadrom+1; |
||
285 | List_ReDraw(); |
||
286 | break; |
||
287 | case 180: //home |
||
288 | if (curbtn==0) |
||
289 | if (strcmp(".",buf+72)==-1) if (za_kadrom==0) break; else if (za_kadrom==1) break; |
||
290 | if (za_kadrom==0){ |
||
291 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
292 | curbtn=0; |
||
293 | Line_ReDraw(videlenie); //выделение |
||
294 | break; |
||
295 | } |
||
296 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
297 | za_kadrom=0; //если мы уже промотали и первый элемент за кадром |
||
298 | curbtn=0; |
||
299 | List_ReDraw(); |
||
300 | break; |
||
301 | case 181: //end |
||
302 | if (curbtn==kolichestvo-za_kadrom-1) break; |
||
303 | if (but_num==kolichestvo-za_kadrom){ |
||
304 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
305 | curbtn=but_num-1; |
||
306 | Line_ReDraw(videlenie); //выделение |
||
307 | break; |
||
308 | } |
||
309 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
310 | za_kadrom=kolichestvo-but_num; |
||
311 | curbtn=but_num; |
||
312 | List_ReDraw(); |
||
313 | break; |
||
314 | case 183: //Page Down |
||
315 | IF (but_num==kolichestvo-za_kadrom) break; |
||
316 | IF (kolichestvo-za_kadrom-but_num |
||
317 | za_kadrom=kolichestvo-but_num; ELSE za_kadrom=za_kadrom+but_num; |
||
318 | List_ReDraw(); |
||
319 | break; |
||
320 | case 184: //Page Up |
||
321 | IF (za_kadrom==0) break; |
||
322 | IF (za_kadrom<=but_num) za_kadrom=0; ELSE za_kadrom=za_kadrom-but_num; |
||
323 | List_ReDraw(); |
||
324 | break; |
||
325 | case 185: //Insert |
||
326 | if (ins_mas[file_mas[za_kadrom+curbtn]]==0) ins_mas[file_mas[za_kadrom+curbtn]]=1; |
||
327 | else ins_mas[file_mas[za_kadrom+curbtn]]=0; |
||
328 | if(curbtn |
||
329 | { |
||
330 | Line_ReDraw(0xFFFFFF); //белая полоса |
||
331 | curbtn++; |
||
332 | Line_ReDraw(videlenie); //выделение |
||
333 | break; |
||
334 | } |
||
335 | if (za_kadrom+but_num>=kolichestvo) Line_ReDraw(videlenie); |
||
336 | else { za_kadrom=za_kadrom+1; List_ReDraw(); } |
||
337 | break; |
||
338 | case 182: Del_Form(); break; //delete file |
||
339 | case 054: IF (rename_active==0) {draw_window(); break;} ELSE goto REN_; //перерисовать окно F5 |
||
340 | case 051: //Нажата F2 |
||
341 | if (rename_active==0){ |
||
342 | if (isdir==1) break; //папки пока что переименовывать не умеем |
||
343 | y= curbtn*18+85; |
||
344 | DrawRegion(219,curbtn*18+57,onLeft(50,197),17,0x94AECE); |
||
345 | DrawBar(220,curbtn*18+58,onLeft(50,197)-1,16,0xFFFFCC); |
||
346 | WriteTextXY(224<<16+y, 0x80000000, #file_name, 0); |
||
347 | rename_active=1; |
||
348 | } ELSE GOTO REN_; |
||
349 | break; |
||
350 | default: |
||
351 | REN_: |
||
352 | if (rename_active==1) copystr(#file_name,#temp); else copystr(#edit_path,#temp); |
||
353 | if (strlen(#temp)>256) break; |
||
354 | EBX=#temp + strlen(#temp); |
||
355 | ESBYTE[EBX] = key; |
||
356 | ESBYTE[EBX+1] = 0; |
||
357 | // |
||
358 | if (rename_active==1) |
||
359 | { |
||
360 | DrawBar(220,curbtn*18+58,onLeft(50,197)-1,16,0xFFFFCC); //жёлтое |
||
361 | copystr(#temp,#file_name); |
||
362 | WriteTextXY(224<<16+y, 0x80000000, #file_name, 0); |
||
363 | } else { copystr(#temp,#edit_path); KEdit(); } |
||
364 | break; |
||
365 | } |
||
366 | break; |
||
367 | CASE evReDraw: |
||
368 | draw_window(); |
||
369 | break; |
||
370 | } |
||
371 | } |
||
372 | ExitProcess(); |
||
373 | } |
||
374 | |||
375 | void draw_window() |
||
376 | { |
||
377 | WindowRedrawStatus(1); |
||
378 | DefineAndDrawWindow(100,100,600,410,0x03,0x00E4DFE1,0,0,0); |
||
379 | DrawTitle(#header); |
||
380 | Form.getme(); |
||
381 | if (Form.height |
||
382 | if (Form.width<493) MoveSize(OLD,OLD,493,OLD); |
||
383 | //control buttons |
||
384 | DefineButton(14,5,31,29,21+BT_HIDE,0xE4DFE1); //back |
||
385 | PutImage(#back,30,28,15,6); |
||
386 | DefineButton(50,5,31,29,22+BT_HIDE,0xE4DFE1); //forward |
||
387 | PutImage(#forward,30,28,51,6); |
||
388 | DefineButton(89,5,31,29,23+BT_HIDE,0xE4DFE1); //up! |
||
389 | PutImage(#up,30,28,90,6); |
||
390 | DrawBar(132,8,1,25,0x94AECE); |
||
391 | DefineButton(140,5,31,29,24+BT_HIDE,0xE4DFE1); //cut |
||
392 | PutImage(#fcut,30,28,141,6); |
||
393 | DefineButton(176,5,31,29,25+BT_HIDE,0xE4DFE1); //copy |
||
394 | PutImage(#fcopy,30,28,177,6); |
||
395 | DefineButton(212,5,31,29,26+BT_HIDE,0xE4DFE1); //paste |
||
396 | PutImage(#fpaste,30,28,213,6); |
||
397 | DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about |
||
398 | PutImage(#about,25,26,onLeft(34,0),7); |
||
399 | //полоса адреса |
||
400 | DrawRegion(251,12,onLeft(61,251),16,0x94AECE);//ободок |
||
401 | DefineButton(onLeft(61,0),12,18,16,27+BT_HIDE,0xE4DFE1); //goto there |
||
402 | PutImage(#Edit_Goto,18,17,onLeft(60,0),12); |
||
403 | //главный прямоугольник внутри |
||
404 | DrawRegion(6,40,Form.width-12,Form.height-skin_width-46,0x94AECE); |
||
405 | DrawBar(7,41,190,onTop(6,41),0x00699C); //синий прямоугольник |
||
406 | LeftBar(); //панель слева на синем фоне |
||
407 | //Названия столбцов |
||
408 | DrawBar(197,41,onLeft(6,197),1,0xFFFFFF); //белая полоса сверху |
||
409 | DrawBar(197,56,onLeft(6,197),1,0x94AECE); //полоса снизу |
||
410 | DrawBar(onLeft(163,0),41,1,16,0x94AECE); //полоса вертикальная 1 |
||
411 | DrawBar(onLeft(90,0),41,1,16,0x94AECE); //полоса вертикальная 2 |
||
412 | temp_int=Form.width-163-197>>1-15; //находим середину поля text File |
||
413 | WriteText(temp_int+197,45,0x80,0,#tfile,0);//text File |
||
414 | WriteText(onLeft(137,0),45,0x80,0,#ttype,0);//text Type |
||
415 | WriteText(onLeft(66,0),45,0x80,0,#tsize,0);//text Size |
||
416 | if (curbtn<>0) DrawBar(197,57,onLeft(22,197),18,0xFFFFFF); |
||
417 | Open_Dir(#path,1); |
||
418 | //прокрутка |
||
419 | DefineButton(onLeft(22,0),40,16,16,50+BT_HIDE,0xE4DFE1); //прокрутка вверх |
||
420 | DrawBar(onLeft(21,0),42,1,14,0x00FFFFFF); //белая полоса слева |
||
421 | WriteText(onLeft(16,0),45,0x80,0,"\x18",0); //стрелка вверх |
||
422 | DefineButton(onLeft(22,0),onTop(22,0),16,16,51+BT_DEL,0xE4DFE1); //удаляем |
||
423 | DrawFlatButton(onLeft(22,0),onTop(22,0),16,16,51,0xE4DFE1); //прокрутка вниз |
||
424 | DrawBar(onLeft(21,0),onTop(22,0)+15,15,1,0xE4DFE1); //удаляем тень |
||
425 | DrawBar(onLeft(7,0),onTop(20,0),1,14,0xE4DFE1); //удаляем тень |
||
426 | WriteText(onLeft(16,0),onTop(17,0),0x80,0,"\x19",0); //стрелка вниз |
||
427 | DrawBar(onLeft(22,0),41,1,onTop(6,57),0x94AECE); //линия слева от прокрутки |
||
428 | IF (del_active==1) Del_Form(); |
||
429 | WindowRedrawStatus(2); |
||
430 | } |
||
431 | |||
432 | void KEdit() |
||
433 | { |
||
434 | temp_int=onLeft(61,252)/6; |
||
435 | IF (strlen(#edit_path) |
||
436 | { |
||
437 | DrawBar(strlen(#edit_path)*6+252+5,17,6,9,0xFFFFFF); //белая область под KEdit |
||
438 | WriteText(257,17,0x80,0,#edit_path,0); //text 'path' |
||
439 | } |
||
440 | ELSE |
||
441 | { |
||
442 | DrawBar(252,17,onLeft(61,252),9,0xFFFFFF); //белая область |
||
443 | WriteText(257,17,0x80,0,#edit_path+strlen(#edit_path)-temp_int,0); //text 'path' |
||
444 | } |
||
445 | } |
||
446 | |||
447 | char drive_name[30]; |
||
448 | dword dev_icon; |
||
449 | void LeftBar(){ |
||
450 | //список дисков |
||
451 | DrawBar(22,56,160,17,0xE4DFE1); //серое сверху |
||
452 | WriteText(30,61,0x80,0,#gotodev,0); //text Goto: |
||
453 | DrawBar(22,73,160,1,0x94AECE); //подчёркивание |
||
454 | Open_Dir("/",0); |
||
455 | DrawBar(22,74,160,kolichestvo*16+1,0xFFFFFF); //белое |
||
456 | for (i=0;i |
||
457 | { |
||
458 | copystr("Unknown drive",#drive_name); //изначально неизвесный носитель |
||
459 | DefineButton(22,i*16+74,159,16,100+i+BT_HIDE,0xE4DFE1); //создаём кнопки, а потом выводим названия дисков |
||
460 | IF (strcmp(i*304+ buf+72,"rd")<>-1) { copystr("RAM-disk /rd/1/",#drive_name); dev_icon=#rd; } |
||
461 | IF (strcmp(i*304+ buf+72,"fd")<>-1) { copystr("Floppy disk /fd/",#drive_name); dev_icon=#fd; } |
||
462 | IF (strcmp(i*304+ buf+72,"hd0")<>-1) { copystr("Hard disk drive /hd0/",#drive_name); dev_icon=#hd; } |
||
463 | IF (strcmp(i*304+ buf+72,"hd1")<>-1) { copystr("Hard disk drive /hd1/",#drive_name); dev_icon=#hd; } |
||
464 | IF (strcmp(i*304+ buf+72,"hd2")<>-1) { copystr("Hard disk drive /hd2/",#drive_name); dev_icon=#hd; } |
||
465 | IF (strcmp(i*304+ buf+72,"bd0")<>-1) { copystr("Hard disk drive /bd0/",#drive_name); dev_icon=#hd; } |
||
466 | IF (strcmp(i*304+ buf+72,"bd1")<>-1) { copystr("Hard disk drive /bd1/",#drive_name); dev_icon=#hd; } |
||
467 | IF (strcmp(i*304+ buf+72,"bd2")<>-1) { copystr("Hard disk drive /bd2/",#drive_name); dev_icon=#hd; } |
||
468 | IF (strcmp(i*304+ buf+72,"cd1")<>-1) { copystr("CD-drive /cd1/",#drive_name); dev_icon=#cd; } |
||
469 | IF (strcmp(i*304+ buf+72,"cd2")<>-1) { copystr("CD-drive /cd2/",#drive_name); dev_icon=#cd; } |
||
470 | WriteText(45,i*16+79,0x80,0,#drive_name,0); |
||
471 | PutImage(dev_icon,14,13,26,i*16+76); |
||
472 | } |
||
473 | //функции файлов и папок |
||
474 | top_actions=kolichestvo; |
||
475 | Actions(); |
||
476 | Preview(); |
||
477 | } |
||
478 | |||
479 | void Actions() |
||
480 | { |
||
481 | DrawBar(22,top_actions*16+90,160,17,0xE4DFE1); //серое сверху |
||
482 | WriteText(30,top_actions*16+95,0x80,0,#actions,0); //text Actions |
||
483 | DefineButton(164,top_actions*16+91,16,16,77+BT_HIDE+BT_NOFRAME,0xE4DFE1); //кнопа для стрелки |
||
484 | DrawBar(22,top_actions*16+107,160,1,0x94AECE); //подчёркивание |
||
485 | if (show_actions==1) |
||
486 | { |
||
487 | WriteText(170,top_actions*16+95,0x80,0,"\x19",0); //стрелка вниз |
||
488 | DrawBar(22,top_actions*16+108,160,51,0xFFFFFF); //белое |
||
489 | //rename file |
||
490 | DefineButton(22,top_actions*16+108,159,16,80+BT_HIDE,0xE4DFE1); |
||
491 | WriteText(47,top_actions*16+113,0x80,0,"Rename file |
||
492 | PutImage(#ren_file,16,15,26,top_actions*16+109); |
||
493 | //delete file |
||
494 | DefineButton(22,top_actions*16+125,159,16,81+BT_HIDE,0xE4DFE1); |
||
495 | WriteText(47,top_actions*16+130,0x80,0,"Delete file |
||
496 | PutImage(#del_file,16,15,26,top_actions*16+125); |
||
497 | //create folder |
||
498 | DefineButton(22,top_actions*16+142,159,16,82+BT_HIDE,0xE4DFE1); |
||
499 | WriteText(47,top_actions*16+147,0x80,0,"Create folder |
||
500 | PutImage(#new_fol,16,15,26,top_actions*16+142); |
||
501 | } |
||
502 | else |
||
503 | { |
||
504 | DefineButton(22,top_actions*16+108,159,16,80+BT_DEL,0xE4DFE1); |
||
505 | DefineButton(22,top_actions*16+125,159,16,81+BT_DEL,0xE4DFE1); |
||
506 | DefineButton(22,top_actions*16+142,159,16,82+BT_DEL,0xE4DFE1); |
||
507 | WriteText(170,top_actions*16+95,0x80,0,"\x18",0); //стрелка вверх |
||
508 | DrawBar(22,top_actions*16+108,160,51,0x00699C); //синее |
||
509 | } |
||
510 | } |
||
511 | |||
512 | void Preview() |
||
513 | { |
||
514 | IF (show_actions==1) top_pr=top_actions*16+174; ELSE top_pr=top_actions*16+174-51; |
||
515 | DrawBar(22,top_pr,160,17,0xE4DFE1); //серое сверху |
||
516 | WriteText(30,top_pr+5,0x80,0,#preview,0); //text Preview |
||
517 | DefineButton(164,top_pr+1,16,16,78+BT_DEL,0xE4DFE1); |
||
518 | DefineButton(164,top_pr+1,16,16,78+BT_HIDE+BT_NOFRAME,0xE4DFE1); //кнопа для стрелки |
||
519 | DrawBar(22,top_pr+17,160,1,0x94AECE); //подчёркивание |
||
520 | IF (show_preview==0) WriteText(170,top_pr+5,0x80,0,"\x18",0); else//стрелка вверх |
||
521 | { |
||
522 | WriteText(170,top_pr+5,0x80,0,"\x19",0); //стрелка вниз |
||
523 | DrawBar(22,top_pr+18,160,100,0xFFFFFF); //белое |
||
524 | /*WriteText(30,top_pr+30,0x80,0,IntToStr(kolichestvo),0); |
||
525 | WriteText(30,top_pr+50,0x80,0,IntToStr(but_num),0); |
||
526 | WriteText(30,top_pr+60,0x80,0,IntToStr(za_kadrom),0); |
||
527 | WriteText(30,top_pr+70,0x80,0,#file_path,0); |
||
528 | WriteText(30,top_pr+80,0x80,0,#param,0);*/ |
||
529 | WriteText(30,top_pr+60,0x80,0,"Not realized... Yet.",0); |
||
530 | } |
||
531 | } |
||
532 | |||
533 | void TVScroll() { //Прокрутка |
||
534 | if (but_num==kolichestvo) |
||
535 | { |
||
536 | DefineButton(onLeft(22,0),57,15,on_y-57,54+BT_DEL,0xE4DFE1); //удаляем |
||
537 | DefineButton(onLeft(22,0),on_y+razm_scrl+2,16,onTop(22,57)-razm_scrl-on_y+55,55+BT_DEL,0xE4DFE1); //удаляем |
||
538 | DrawBar(onLeft(21,0),57,15,onTop(79,0),0xCED0D0); //серую область рисуем |
||
539 | } |
||
540 | else |
||
541 | { |
||
542 | razm_scrl=onTop(22,57) * but_num - but_num / kolichestvo; //считает по-порядку |
||
543 | on_y = za_kadrom / but_num * razm_scrl+57; |
||
544 | IF (razm_scrl<20) razm_scrl = 20; //устанавливаем минимальный размер скролла |
||
545 | IF (za_kadrom==0) on_y= 57; ELSE IF (za_kadrom |
||
546 | IF (za_kadrom+but_num==kolichestvo) on_y= onTop(23,57)-razm_scrl+57; //в конец если там ничё нет |
||
547 | //ползунок, рисуем видимый, красивый прямоугольник |
||
548 | DrawBar(onLeft(21,0),on_y,15,1,0x94AECE); //синяя линия сверху |
||
549 | DrawBar(onLeft(21,0),on_y+razm_scrl,15,1,0x94AECE); //синяя линия снизу |
||
550 | DrawBar(onLeft(21,0),on_y+1,1,razm_scrl-1,0x00FFFFFF); //белая полоса слева |
||
551 | DrawBar(onLeft(21,0),on_y+1,15,1,0x00FFFFFF); //белая полоса сверху |
||
552 | DrawBar(onLeft(20,0),on_y+2,14,razm_scrl-2,0x00E4DFE1); //прямоугольник внутри |
||
553 | //полосы |
||
554 | DrawBar(onLeft(21,0),57,15,on_y-57,0xCED0D0); //поле до ползунка |
||
555 | DrawBar(onLeft(21,0),on_y+razm_scrl+1,15,onTop(22,57)-razm_scrl-on_y+56,0xCED0D0); //поле после ползунка |
||
556 | } |
||
557 | } |
||
558 | |||
559 | void List_ReDraw() |
||
560 | { |
||
561 | y=85; |
||
562 | if ((kolichestvo-za_kadrom |
||
563 | { |
||
564 | za_kadrom=kolichestvo-but_num; |
||
565 | curbtn=but_num-1; |
||
566 | } else if (curbtn>but_num-1) curbtn=but_num-1; //это если выделение после схлопывания окна за кадром |
||
567 | // |
||
568 | if (onLeft(165,220)/6 |
||
569 | DrawBar(220,57,longest_name*6,curbtn-3*18+57-3,0xFFFFFF); //белая область слева |
||
570 | DrawBar(220,curbtn+1*18+57,longest_name*6,onTop(6,curbtn+1*18+57),0xFFFFFF); //белая область слева |
||
571 | DrawBar(onLeft(155,0),57,121,curbtn-3*18+57-3,0xFFFFFF); //белая область справа |
||
572 | DrawBar(onLeft(155,0),curbtn+1*18+57,121,onTop(6,curbtn+1*18+57),0xFFFFFF); //белая область справа |
||
573 | // |
||
574 | str_len = onLeft(220,160)/6; //длинна названия файла |
||
575 | longest_name=strlen(off); |
||
576 | for (i=za_kadrom;i |
||
577 | { |
||
578 | if (strcmp(".",buf+72)==-1) off = file_mas[i]*304 + buf+72; else off = file_mas[i+1]*304 + buf+72; |
||
579 | EAX = off - 8; |
||
580 | size=ESDWORD[EAX]; |
||
581 | EAX = off - 40; |
||
582 | EAX=ESDWORD[EAX]; |
||
583 | $shr eax,4 |
||
584 | $and eax,1 |
||
585 | isdir=EAX; |
||
586 | if (curbtn<>i) if (isdir==1) Put_icon(" |
||
587 | { |
||
588 | WriteText(7-strlen(ConvertSize(size))*6+onLeft(75,0),y-22,0x80,0,ConvertSize(size),0); |
||
589 | Put_icon(off+strlen(off)-4); |
||
590 | } |
||
591 | if (strlen(off) |
||
592 | if (ins_mas[file_mas[i]]==0) |
||
593 | WriteTextXY(220<<16+y, 0, off, temp_int); //выделено ли инсертом? |
||
594 | else WriteTextXY(220<<16+y, 0x00FF9900, off, temp_int); |
||
595 | y=y+18; |
||
596 | if (longest_name |
||
597 | } |
||
598 | Line_ReDraw(videlenie); |
||
599 | DrawBar(onLeft(90,0),57,1,onTop(7,57),0xE4DFE1); //полоса серая вертикальная 2 |
||
600 | TVScroll(); |
||
601 | } |
||
602 | |||
603 | void Line_ReDraw(dword color){ |
||
604 | if (rename_active==1) |
||
605 | { |
||
606 | rename_active=0; |
||
607 | copystr(#path,#temp); |
||
608 | copystr(#file_name,#temp+strlen(#temp)); |
||
609 | if (strcmp(#file_path,#temp)==-1) if (strlen(#file_name)>0) |
||
610 | { |
||
611 | CopyFile(#file_path,#temp); |
||
612 | Del_File(); |
||
613 | //za_kadrom=kolichestvo-but_num; |
||
614 | //curbtn=but_num-1; |
||
615 | //Line_ReDraw(videlenie); |
||
616 | } |
||
617 | } |
||
618 | DrawBar(197,curbtn*18+57,onLeft(22,197),18,color); //полоса белая или выделения |
||
619 | y= curbtn*18+85; //положение текста по Y |
||
620 | if (strcmp(".",buf+72)==-1) off = file_mas[curbtn+za_kadrom]*304 + buf+72; else off = file_mas[curbtn+za_kadrom+1]*304 + buf+72; |
||
621 | temp_int = onLeft(220,160)/6; |
||
622 | if (strlen(off) |
||
623 | if (ins_mas[file_mas[za_kadrom+curbtn]]==0) |
||
624 | WriteTextXY(220<<16+y, 0, off, temp_int); //выделено ли инсертом? |
||
625 | //EDI = 0x80FFFFFF; |
||
626 | //WriteTextXY(temp_int<<16+y, 0xC0000000,#temp, 7); //DD8500 или FF3399 |
||
627 | else WriteTextXY(220<<16+y, 0x80DD8500, off, temp_int); //DD8500 или FF3399 |
||
628 | EAX = off - 8; |
||
629 | size=ESDWORD[EAX]; |
||
630 | EAX = off - 40; |
||
631 | EAX=ESDWORD[EAX]; |
||
632 | $shr eax,4 |
||
633 | $and eax,1 |
||
634 | isdir=EAX; |
||
635 | if (isdir==1) Put_icon(" |
||
636 | { |
||
637 | WriteText(7-strlen(ConvertSize(size))*6+onLeft(75,0),y-22,0x80,0,ConvertSize(size),0); |
||
638 | Put_icon(off+strlen(off)-4); |
||
639 | } |
||
640 | copystr(#path,#file_path); |
||
641 | copystr(off,#file_name); |
||
642 | copystr(off,#file_path+strlen(#file_path)); //итак, file_path=файлу, т.к. по-умолчанию это прога |
||
643 | DrawBar(onLeft(163,0),curbtn*18+57,1,18,0xE4DFE1); //полоса серая вертикальная 1 |
||
644 | DrawBar(onLeft(90,0),curbtn*18+57,1,18,0xE4DFE1); //полоса серая вертикальная 2 |
||
645 | if (color==videlenie) //закрашиваем иконку |
||
646 | { |
||
647 | if (temp_int==1) //файлик |
||
648 | { |
||
649 | DrawBar(200,y-26,2,15,videlenie); |
||
650 | DrawBar(214,y-26,2,15,videlenie); |
||
651 | DrawBar(210,y-26,4,1,videlenie);//ле |
||
652 | DrawBar(211,y-25,3,1,videlenie);//сен |
||
653 | DrawBar(212,y-24,2,1,videlenie);//ка |
||
654 | DrawBar(213,y-23,1,1,videlenie);// |
||
655 | } |
||
656 | if (temp_int==2) //папка |
||
657 | { |
||
658 | DrawBar(201,y-13,15,2,videlenie); //снизу линия |
||
659 | DrawBar(200,y-26,1,15,videlenie); //слева линия |
||
660 | DrawBar(208,y-26,8,2,videlenie); //сверху справа линия |
||
661 | //.точки |
||
662 | PutPixel(201,y-26+skin_width,videlenie); //сверху слева точка |
||
663 | PutPixel(207,y-26+skin_width,videlenie); //сверху справа точка |
||
664 | PutPixel(201,y-14+skin_width,videlenie); //слева снизу точка |
||
665 | PutPixel(215,y-14+skin_width,videlenie); //справа снизу точка |
||
666 | PutPixel(215,y-24+skin_width,videlenie); //какая разница где |
||
667 | } |
||
668 | IF (temp_int==3) PutPixel(215,y-26+skin_width,videlenie); //skin |
||
669 | IF (temp_int==5) {DrawBar(200,y-26,1,15,videlenie); DrawBar(215,y-26,1,15,videlenie);} //video |
||
670 | } |
||
671 | } |
||
672 | |||
673 | void Open_Dir(dword path_,redraw){ |
||
674 | for (i=0;i |
||
675 | //temp=path+3; |
||
676 | //copestr(#temp |
||
677 | //if (strcmp(#temp,"/rd")==0) ExitProcess(); //realloc(500000 |
||
678 | open_file_70.func = 1; |
||
679 | open_file_70.pos = 0; |
||
680 | open_file_70.rezerv = 0; |
||
681 | open_file_70.sizefile = 65536; |
||
682 | open_file_70.buffer = buf; |
||
683 | open_file_70.rezerv2 = 0; |
||
684 | open_file_70.stroka = path_; |
||
685 | $mov eax,70 |
||
686 | $mov ebx,#open_file_70.func |
||
687 | $int 0x40 |
||
688 | kolichestvo=EBX; |
||
689 | // |
||
690 | if (kolichestvo<>-1) if (redraw==1) |
||
691 | { |
||
692 | FOR (i=0;i |
||
693 | but_num=onTop(6,57)/18; |
||
694 | if (strcmp(".",buf+72)==0) kolichestvo--; //фильтруем элемент "." |
||
695 | IF (but_num>100) but_num=1; ELSE//эта странная строчка для того если размеры окра слишком маленькие |
||
696 | IF (kolichestvo |
||
697 | FOR (i=0;i |
||
698 | DrawBar(197,75,onLeft(22,197),onTop(6,75),0xFFFFFF); //белая область |
||
699 | DrawBar(onLeft(163,0),57,1,onTop(7,57),0xE4DFE1); //полоса серая вертикальная 1 |
||
700 | FoldesGoUp(); |
||
701 | List_ReDraw(); |
||
702 | copystr(path_,#edit_path); |
||
703 | DrawBar(252,13,onLeft(61,252),15,0xFFFFFF); //белая область под KEdit |
||
704 | KEdit(); |
||
705 | } |
||
706 | } |
||
707 | |||
708 | int k,l; |
||
709 | void FoldesGoUp(){ |
||
710 | if (strcmp(#path,"/rd/1/")==0) kolichestvo--; else if (strcmp(#path,"/fd/1/")==0) kolichestvo--; |
||
711 | else if (strlen(#path)>7) if (strcmp(".",buf+72)==-1) kolichestvo--; //>7 это для /hd1/ и т.д. |
||
712 | k=0; l=0; |
||
713 | off=buf+72; |
||
714 | FOR (i=0;i<=kolichestvo;i++) |
||
715 | { |
||
716 | EAX = off - 8; |
||
717 | EAX = off - 40; |
||
718 | EAX=ESDWORD[EAX]; |
||
719 | $shr eax,4 |
||
720 | $and eax,1 |
||
721 | isdir=EAX; |
||
722 | IF (isdir==1) {file_mas[k]=i; k++;} |
||
723 | ELSE {file_mas[kolichestvo-l]=i; l++;} |
||
724 | off = off + 304; |
||
725 | } |
||
726 | } |
||
727 | |||
728 | dword offs_put_icon, file_type; |
||
729 | void Put_icon(dword extension){ |
||
730 | lowcase(extension); |
||
731 | offs_put_icon = #somefile; //еши неизвесный файл |
||
732 | file_type = ""; temp_int=1; |
||
733 | IF (strcmp(extension,".kex")==0) { offs_put_icon = #kex; file_type="Program"; temp_int=0;} |
||
734 | IF (strcmp(extension,".cmd")==0) { offs_put_icon = #cmd; file_type="CMD skript"; temp_int=0;} |
||
735 | IF (strcmp(extension,".skn")==0) { offs_put_icon = #skn; file_type="Skin"; temp_int=3;} |
||
736 | IF (strcmp(extension,".chr")==0) { offs_put_icon = #font; file_type="Font"; temp_int=4;} |
||
737 | IF (strcmp(extension,".avi")==0) { offs_put_icon = #video; file_type="Video"; temp_int=5;} |
||
738 | IF (strcmp(extension,".ini")==0) { offs_put_icon = #ini; file_type="Config"; temp_int=1;} |
||
739 | IF (strcmp(extension,"conf")==0) { offs_put_icon = #ini; file_type="Config"; temp_int=1;} |
||
740 | IF (strcmp(extension,".htm")==0) { offs_put_icon = #web; file_type="Web-page"; temp_int=1;} |
||
741 | IF (strcmp(extension,"html")==0) { offs_put_icon = #web; file_type="Web-page"; temp_int=1;} |
||
742 | IF (strcmp(extension,".asm")==0) { offs_put_icon = #source; file_type="Source"; } |
||
743 | IF (strcmp(extension,".inc")==0) { offs_put_icon = #inc ; temp_int=8;} |
||
744 | IF (strcmp(extension,".exe")==0) { offs_put_icon = #exe; file_type="Win32 Exec"; temp_int=0;} |
||
745 | IF (strcmp(extension,".dll")==0) { offs_put_icon = #lib; file_type="Library"; temp_int=0;} |
||
746 | IF (strcmp(extension,".obj")==0) { offs_put_icon = #lib; file_type="Library"; temp_int=0;} |
||
747 | //text |
||
748 | IF (strcmp(extension,".txt")==0) { offs_put_icon = #text; file_type="Text"; temp_int=1;} |
||
749 | IF (strcmp(extension,".doc")==0) { offs_put_icon = #text; file_type="Text"; temp_int=1;} |
||
750 | IF (strcmp(extension,".rtf")==0) { offs_put_icon = #text; file_type="Text"; temp_int=1;} |
||
751 | //изображения |
||
752 | IF (strcmp(extension,".gif")==0) { offs_put_icon = #pic; file_type="Image"; temp_int=1;} |
||
753 | IF (strcmp(extension,".bmp")==0) { offs_put_icon = #pic; file_type="Image"; temp_int=1;} |
||
754 | IF (strcmp(extension,".png")==0) { offs_put_icon = #pic; file_type="Image"; temp_int=1;} |
||
755 | IF (strcmp(extension,".jpg")==0) { offs_put_icon = #pic; file_type="Image"; temp_int=1;} |
||
756 | IF (strcmp(extension,"jpeg")==0) { offs_put_icon = #pic; file_type="Image"; temp_int=1;} |
||
757 | IF (strcmp(extension,".raw")==0) { offs_put_icon = #pic; file_type="Image"; temp_int=1;} |
||
758 | //архивы |
||
759 | IF (strcmp(extension,".rar")==0) { offs_put_icon = #arhiv; file_type="Archive"; temp_int=6;} |
||
760 | IF (strcmp(extension,".zip")==0) { offs_put_icon = #arhiv; file_type="Archive"; temp_int=6;} |
||
761 | IF (strcmp(extension,".cab")==0) { offs_put_icon = #arhiv; file_type="Archive"; temp_int=6;} |
||
762 | IF (strcmp(extension,".tar")==0) { offs_put_icon = #arhiv; file_type="Archive"; temp_int=6;} |
||
763 | IF (strcmp(extension,".ajr")==0) { offs_put_icon = #arhiv; file_type="Archive"; temp_int=6;} |
||
764 | //audio |
||
765 | IF (strcmp(extension,".mp3")==0) { offs_put_icon = #audio; file_type="Music"; temp_int=7;} |
||
766 | IF (strcmp(extension,".wav")==0) { offs_put_icon = #audio; file_type="Audio"; temp_int=7;} |
||
767 | IF (strcmp(extension,".mid")==0) { offs_put_icon = #audio; file_type="Audio"; temp_int=7;} |
||
768 | IF (strcmp(extension,"midi")==0) { offs_put_icon = #audio; file_type="Audio"; temp_int=7;} |
||
769 | IF (strcmp(extension,".ogg")==0) { offs_put_icon = #audio; file_type="Audio"; temp_int=7;} |
||
770 | //папка |
||
771 | IF (strcmp(extension," |
||
772 | PutImage(offs_put_icon,16,15,200,y-26); |
||
773 | WriteText(onLeft(155,0),y-22,0x80,0,file_type,0); |
||
774 | } |
||
775 | |||
776 | void Dir_Up() |
||
777 | { |
||
778 | i=strlen(#path)-1; |
||
779 | do |
||
780 | { |
||
781 | path[i]=0x00; |
||
782 | i--; |
||
783 | IF (i==0) break; |
||
784 | } |
||
785 | while (path[i]!='/'); |
||
786 | za_kadrom=0; //в самый вверх списка |
||
787 | curbtn=0; |
||
788 | Open_Dir(#path,1); |
||
789 | } |
||
790 | |||
791 | dword onLeft(dword right,left) {return Form.width-right-left;} |
||
792 | dword onTop(dword down,up) {return Form.height-skin_width-down-up;} |
||
793 | |||
794 | char extension[5]; |
||
795 | void Run_File(){ |
||
796 | copystr(#file_path,#param); //по-умолчанию прога и параметр равны, если окажется что это файл, парам - сбросим |
||
797 | copystr(#file_path+strlen(#file_path)-4,#extension); //узнаём расширение файла с каким работаем |
||
798 | lowcase(#extension); |
||
799 | //тут мы это расширение сравнимаем, и, если оно асоциируется с прогой, прога - это file_path |
||
800 | IF (strcmp(#extension,".skn")==0) copystr("/rd/1/desktop",#file_path); |
||
801 | IF (strcmp(#extension,".avi")==0) copystr("/rd/1/kvid",#file_path); |
||
802 | IF (strcmp(#extension,".htm")==0) copystr("/rd/1/network/hTTPC",#file_path); |
||
803 | IF (strcmp(#extension,"html")==0) copystr("/rd/1/network/hTTPC",#file_path); |
||
804 | IF (strcmp(#extension,".3ds")==0) copystr("/rd/1/3d/view3ds",#file_path); |
||
805 | IF (strcmp(#extension,".lif")==0) copystr("/rd/1/demos/life2",#file_path); |
||
806 | //audio |
||
807 | IF (strcmp(#extension,".mp3")==0) copystr("/rd/1/AC97SND",#file_path); |
||
808 | IF (strcmp(#extension,".wav")==0) copystr("/rd/1/AC97SND",#file_path); |
||
809 | IF (strcmp(#extension,".mid")==0) copystr("/rd/1/MIDAMP",#file_path); |
||
810 | IF (strcmp(#extension,"midi")==0) copystr("/rd/1/MIDAMP",#file_path); |
||
811 | //text |
||
812 | IF (strcmp(#extension,".rtf")==0) copystr("/rd/1/RtfRead",#file_path); |
||
813 | IF (strcmp(#extension,".txt")==0) copystr("/rd/1/TinyPad",#file_path); |
||
814 | IF (strcmp(#extension,".inc")==0) copystr("/rd/1/TinyPad",#file_path); |
||
815 | IF (strcmp(#extension,".ini")==0) copystr("/rd/1/TinyPad",#file_path); |
||
816 | IF (strcmp(#extension,"conf")==0) copystr("/rd/1/TinyPad",#file_path); |
||
817 | IF (strcmp(#extension,".dat")==0) copystr("/rd/1/TinyPad",#file_path); |
||
818 | IF (strcmp(#extension,".asm")==0) copystr("/rd/1/TinyPad",#file_path); //AsmMenu1,AsmMenu2 |
||
819 | //изображения |
||
820 | IF (strcmp(#extension,".gif")==0) copystr("/rd/1/GIFVIEW",#file_path); //GifMenu1,MenuAnimage |
||
821 | IF (strcmp(#extension,".bmp")==0) copystr("/rd/1/MV",#file_path); //BmpMenu1,MenuAnimage |
||
822 | IF (strcmp(#extension,".png")==0) copystr("/rd/1/@rcher",#file_path); |
||
823 | IF (strcmp(#extension,".jpg")==0) copystr("/rd/1/JpegView",#file_path); |
||
824 | IF (strcmp(#extension,"jpeg")==0) copystr("/rd/1/JpegView",#file_path); |
||
825 | IF (strcmp(#file_path,#param)==0) copystr("",#param); //если file_path не изменился, то это таки, наверное, прога, параметров нет. |
||
826 | Run_Program(); //запуск! |
||
827 | } |
||
828 | |||
829 | void Run_Program() |
||
830 | { |
||
831 | run_file_70.func = 7; |
||
832 | run_file_70.flag = 0; |
||
833 | run_file_70.param= #param; |
||
834 | run_file_70.rez1 = 0; |
||
835 | run_file_70.rez2 = 0; |
||
836 | run_file_70.rezerv2 = 0; |
||
837 | run_file_70.stroka = #file_path; |
||
838 | $mov eax,70 |
||
839 | $mov ebx,#run_file_70.func |
||
840 | $int 0x40 |
||
841 | } |
||
842 | |||
843 | void Del_Form() |
||
844 | { |
||
845 | if (isdir==0){//папки пока что удалять не умеем |
||
846 | temp_int=Form.width-200+197/2; |
||
847 | //типа окно |
||
848 | FOR (i=5;i<11;i++) DefineButton(197,i+1*18+39,onLeft(22,197),18,201+i+BT_DEL,0xFFFFFF); //удаляем кнопки под формой |
||
849 | DrawFlatButton(temp_int,160,200,80,0,0xE4DFE1); //форма |
||
850 | WriteText(temp_int+19,175,0x80,0,"Do you really want to delete",28); |
||
851 | WriteTextXY(220<<16+y, 0, off, strlen(off)); |
||
852 | WriteText(temp_int+20,190,0x80,0,#file_name,0); //пишем имя и оно может быть очень длинным |
||
853 | WriteText(strlen(#file_name)*6+temp_int+20,190,0x80,0,"?",1); |
||
854 | //кнопочки |
||
855 | DrawFlatButton(temp_int+20,208,70,20,301,0xFFB6B5); |
||
856 | WriteText(temp_int+46,215,0x80,0,"Yes",3); |
||
857 | DrawFlatButton(temp_int+111,208,70,20,302,0xC6DFC6); |
||
858 | WriteText(temp_int+141,215,0x80,0,"No",2); |
||
859 | del_active=1; |
||
860 | }} |
||
861 | |||
862 | void Del_File() |
||
863 | { |
||
864 | run_file_70.func = 8; |
||
865 | run_file_70.flag = 0; |
||
866 | run_file_70.param= 0; |
||
867 | run_file_70.rez1 = 0; |
||
868 | run_file_70.rez2 = 0; |
||
869 | run_file_70.rezerv2 = 0; |
||
870 | run_file_70.stroka = #file_path; |
||
871 | $mov eax,70 |
||
872 | $mov ebx,#run_file_70.func |
||
873 | $int 0x40 |
||
874 | del_active=0; |
||
875 | Open_Dir(#path,1); |
||
876 | } |
||
877 | |||
878 | dword size_prefix; |
||
879 | dword ConvertSize(dword bytes) |
||
880 | { |
||
881 | copystr(IntToStr(bytes),#size_prefix); |
||
882 | copystr(" b ",#size_prefix+strlen(#size_prefix)); |
||
883 | if (bytes>=1024) |
||
884 | { |
||
885 | bytes=bytes/1024; |
||
886 | copystr(IntToStr(bytes),#size_prefix); |
||
887 | copystr(" Kb",#size_prefix+strlen(#size_prefix)); |
||
888 | } |
||
889 | if (bytes>=1024) |
||
890 | { |
||
891 | bytes=bytes/1024; |
||
892 | copystr(IntToStr(bytes),#size_prefix); |
||
893 | copystr(" Mb",#size_prefix+strlen(#size_prefix)); |
||
894 | } |
||
895 | if (bytes>=1024) |
||
896 | { |
||
897 | bytes=bytes/1024; |
||
898 | copystr(IntToStr(bytes),#size_prefix); |
||
899 | copystr(" Gb",#size_prefix+strlen(#size_prefix)); |
||
900 | } |
||
901 | return #size_prefix; |
||
902 | } |
||
903 | |||
904 | void Paste() |
||
905 | { |
||
906 | if (strcmp(#copyfile,"")==-1){ //отмена, еши ещё ничё не скопировали |
||
907 | copystr(#path,#temp); |
||
908 | copystr(#copy_name,#temp+strlen(#temp)); |
||
909 | if (strcmp(#copyfile,#temp)==0) //если мы копируем и вставляем в одной и той же папке |
||
910 | { |
||
911 | copystr(#path,#temp); |
||
912 | copystr("new_",#temp+strlen(#temp)); |
||
913 | copystr(#copy_name,#temp+strlen(#temp)); |
||
914 | } |
||
915 | CopyFile(#copyfile,#temp); |
||
916 | // |
||
917 | if (cut_active==1) //если мы выбрали вырезать |
||
918 | { |
||
919 | copystr(#copyfile,#file_path); |
||
920 | Del_File(); |
||
921 | copystr("",#copyfile); |
||
922 | } |
||
923 | Open_Dir(#path,1); |
||
924 | }} |
||
925 | |||
926 | void Goto_edit_path() |
||
927 | { |
||
928 | if (strcmp(#path,#edit_path)==-1) //проверка не в этой ли мы папке |
||
929 | { |
||
930 | copystr(#edit_path+strlen(#edit_path)-1,#temp); //если лень было ставить / |
||
931 | if (strcmp(#temp,"/")==-1) copystr("/",#edit_path+strlen(#edit_path)); |
||
932 | copystr(#edit_path,#temp); |
||
933 | Open_Dir(#temp,0); |
||
934 | if (kolichestvo==-1) KEdit(); else //просто очищаем полосу адреса |
||
935 | { |
||
936 | za_kadrom=0; //наверх списка |
||
937 | curbtn=0; |
||
938 | copystr(#temp,#path); |
||
939 | } |
||
940 | Open_Dir(#path,1); |
||
941 | } |
||
942 | } |
||
943 | |||
944 | // |
||
945 | dword PathHistory[256*8]="/rd/1/"; |
||
946 | dword PathHistory_Len[8]=0; |
||
947 | int cur_path=0; |
||
948 | // |
||
949 | void GoBack(dword back) |
||
950 | { |
||
951 | if (back==0) //IF (cur_path<=8) |
||
952 | { |
||
953 | cur_path++; |
||
954 | copystr(#path,256*cur_path+#PathHistory); //пишем |
||
955 | PathHistory_Len[cur_path]=strlen(#path); |
||
956 | } |
||
957 | if (back==1) IF (cur_path>=1) |
||
958 | { |
||
959 | cur_path--; |
||
960 | copystr(256*cur_path+#PathHistory,#edit_path); //читаем |
||
961 | } |
||
962 | DrawBar(252,13,onLeft(61,252),15,0xFFFFFF); //белая область под KEdit |
||
963 | copystr(IntToStr(cur_path),#edit_path); //читаем |
||
964 | KEdit(); |
||
965 | //Open_Dir(#path); |
||
966 | } |
||
967 | |||
968 | /*int i,j,k; |
||
969 | int n=20; |
||
970 | |||
971 | void sort_by_name(int z){ |
||
972 | for(i = 0; i <= n-1; i++) |
||
973 | { |
||
974 | for(j = 0; j <= n-2-i; j++) |
||
975 | { |
||
976 | if( mas[j][z]>mas[j+1][z] ) |
||
977 | { |
||
978 | if (mas[j][z-1] == mas[j+1][z-1]) |
||
979 | { |
||
980 | strcpy(back,mas[j]); |
||
981 | strcpy(mas[j],mas[j+1]); |
||
982 | strcpy(mas[j+1],back); |
||
983 | } |
||
984 | } |
||
985 | } |
||
986 | } |
||
987 | }*/ |
||
988 | |||
989 | /*int q,z; |
||
990 | int n=20; |
||
991 | void sort_by_name(int z) |
||
992 | { |
||
993 | for(q = 0; q <= n-1; q++) for(i = 0; i <= n-2-i; i++) |
||
994 | if( mas[i][z]>mas[j+1][z]) if (mas[i][z-1]==mas[i+1][z-1]) |
||
995 | { |
||
996 | strcpy(back,mas[i]); |
||
997 | strcpy(mas[i],mas[i+1]); |
||
998 | strcpy(mas[i+1],back); |
||
999 | } |
||
1000 | }*/ |
||
1001 | |||
1002 | /*вызывать так |
||
1003 | for (k=0;k<255;k++) sort(k); |
||
1004 | */ |
||
1005 | |||
1006 | stop:255;k++)>=>=>=>=>=8) |