Subversion Repositories Kolibri OS

Rev

Rev 977 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 977 Rev 984
Line 1... Line 1...
1
//Leency & Veliant -=- KolibriOS Team -=- 2008
1
//Leency & Veliant -=- KolibriOS Team -=- 2008
Line 2... Line 2...
2
 
2
 
3
//ñòðîêà 258, êåéàï!
-
 
4
//find_symbol íàäî ÷èòàòü ñ êîíöà
3
//ñòðîêà 258, êåéàï!
5
//DrawBar(sort_num[1],45,6,9,0xE4DFE1);
-
 
Line 6... Line 4...
6
//Open_Dir íàõðåí èñïàãàíåí èôàìè, ñäåëàòü äåôàéëû èëè åù¸ ÷òî-òî, ïîòîìó ÷òî ïîêà ýòî âûãëÿäèò íåêðàñèâî
4
//DrawBar(sort_num[1],45,6,9,0xE4DFE1);
7
 
5
 
8
#codesize  
6
#codesize  
9
#include "lib\kolibri.h--"
7
#include "lib\kolibri.h--"
10
#include "lib\memory.h--"
8
#include "lib\memory.h--"
11
#include "lib\edit_box_lib.h--"
9
#include "lib\edit_box_lib.h--"
12
#include "lib\file_system.h--" 
10
#include "lib\file_system.h--" 
Line 13... Line 11...
13
#include "imgs\toolbar.txt"
11
#include "imgs\toolbar.txt"
14
#include "imgs\left_p.txt"
12
#include "imgs\left_p.txt"
15
 
13
 
16
//ëîêàëèçàöèÿ è íàñòðîéêè
14
//ïåðåìåííûå
17
#define title "Eolite File Manager v0.98.3"
15
#define title "Eolite File Manager v0.98.5"
18
#define videlenie 0x94AECE //0x94AECE,0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
16
#define videlenie 0x94AECE //0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
19
byte toolbar_buttons_x[6]={9,46,85,134,167,203};
17
byte toolbar_buttons_x[6]={9,46,85,134,167,203};
20
//
18
//
21
dword but_num,
19
int  but_num,
22
     count,
20
     count,
23
     za_kadrom,
21
     za_kadrom,
Line 37... Line 35...
37
     copy_file[256],
35
     copy_file[256],
38
     temp[256];
36
     temp[256];
39
byte PathHistory[2560];
37
byte PathHistory[2560];
Line 40... Line 38...
40
 
38
 
41
dword file_mas[6898];
39
dword file_mas[6898];
Line 42... Line 40...
42
int temp_int, j, i;
40
int j, i;
Line 43... Line 41...
43
 
41
 
44
dword stak[100]=0; //îêíî About 
42
dword stak[100]=0; //îêíî About 
Line 45... Line 43...
45
 
43
 
46
edit_box edit1= {250,247,17,0xffffff,0x94AECE,0xD3DDEB,0xffffff,0,248,#edit_path,64,6,6};
44
edit_box edit1= {250,247,13,0xffffff,videlenie,0xD3DDEB,0xffffff,0,248,#edit_path,64,6,6};
47
edit_box edit2= {250,213,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,64,6,6};
45
edit_box edit2= {250,213,80,0xFFFFCC,videlenie,0xFFFFCC,0xffffff,0,248,#file_name,64,6,6};
48
 
46
 
49
proc_info Form;
47
proc_info Form;
50
dword buf=0, off; //äëÿ òåêñòà è áóôåðà
48
dword buf, off; //äëÿ òåêñòà è áóôåðà
-
 
49
dword devbuf, dev_num;
Line 51... Line 50...
51
dword devbuf=0, dev_num;
50
#include "include\LVabout.h--"
52
#include "include\LVabout.h--"
51
#include "include\sorting.h--"
53
#include "include\sorting.h--"
52
#include "include\icons_f.h--"
54
#include "include\icons_f.h--"
53
#include "include\ini.h--"
55
 
54
 
56
 
55
 
57
void main() 
56
void main() 
58
byte key, id; 
57
word key, id; 
59
mouse m;
58
mouse m;
60
int pressed_y;
59
int pressed_y;
-
 
60
{
61
{
61
	load_editbox_lib();
62
	load_editbox_lib();
62
	devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
63
	devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
63
	ReadDir(10, devbuf, "/");
64
	ReadDir(10, devbuf, "/");
64
	dev_num=EBX;
65
	dev_num=EBX;
65
	IF (param[0]<>'') {copystr(#param,#edit_path); Goto_edit_path();} ELSE Open_Dir(#path,2); //áûë ëè çàïóñê ñ ïàðàìåòðîì
Line 103... Line 103...
103
					IF (m.vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1);
103
					IF (m.vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1);
104
					//ñêðîëë
104
					//ñêðîëë
105
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) while (m.lkm)
105
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) while (m.lkm)
106
					{
106
					{
107
						IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì
107
						IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì
108
						temp_int=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
108
						id=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
109
						j= scroll_size/2;
109
						j= scroll_size/2;
110
						za_kadrom = m.y -j -57 * count / onTop(22,57);
110
						za_kadrom = m.y -j -57 * count;	za_kadrom /= onTop(22,57);
111
						IF (but_num+za_kadrom>count) za_kadrom=count-but_num;
111
						IF (but_num+za_kadrom>count) za_kadrom=count-but_num;
112
						IF (temp_int<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
112
						IF (id<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
113
						m.get();
113
						m.get();
114
					}
114
					}
115
					break;  
115
					break;  
116
//Button pressed-----------------------------------------------------------------------------
116
//Button pressed-----------------------------------------------------------------------------
117
			case evButton:
117
			case evButton:
Line 138... Line 138...
138
					case 30: //about
138
					case 30: //about
139
						CreateThread(#authors,#stak); 
139
						CreateThread(#authors,#stak); 
140
						break;
140
						break;
141
					case 78: //preview
141
					case 78: //preview
142
						IF (show_preview==1) show_preview=0; ELSE show_preview=1;
142
						IF (show_preview==1) show_preview=0; ELSE show_preview=1;
143
						Preview();
143
						Preview(ANIM);
144
						break;
144
						break;
145
					case 77: //actions
145
					case 77: //actions
146
						IF (show_actions==1) show_actions=0; ELSE show_actions=1;
146
						IF (show_actions==1) show_actions=0; ELSE show_actions=1;
147
						Actions();
147
						Actions();
148
						break;
148
						break;
Line 169... Line 169...
169
						GOTO OPEN_DEV;
169
						GOTO OPEN_DEV;
170
					default:
170
					default:
171
						if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
171
						if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
172
						IF (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
172
						IF (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
173
						else OPEN_MARK:
173
						else OPEN_MARK:
174
						if (!isdir) Run_File(#file_path); else
174
						if (!isdir) GetIni("/sys/File managers/Eolite.ini"); ELSE //Run_File(#file_path); ELSE
175
						if (strcmp(#file_name,"..")==0) Dir_Up(); else
175
						IF (strcmp(#file_name,"..")==0) Dir_Up(); ELSE
176
						{	OPEN_DEV:
176
						{	OPEN_DEV:
177
								copystr(#file_path, #path);
177
								copystr(#file_path, #path);
178
								copystr("/", #path+strlen(#path));
178
								copystr("/", #path+strlen(#path));
179
								za_kadrom=curbtn=0;
179
								za_kadrom=curbtn=0;
180
								Open_Dir(#path,1);
180
								Open_Dir(#path,1);
Line 188... Line 188...
188
					{
188
					{
189
					IF (key==013) Del_File(true);
189
					IF (key==013) Del_File(true);
190
					IF (key==027) Del_File(false);
190
					IF (key==027) Del_File(false);
191
				 	break;
191
				 	break;
192
				 	}
192
				 	}
193
				IF (edit1.flags<>64) && IF (edit1.flags<>0) && (key<>13) {EAX=key<<8; edit_box_key stdcall (#edit1); break;} 
193
				IF (edit1.flags<>64) && (edit1.flags<>0) && (key<>13) {EAX=key<<8; edit_box_key stdcall (#edit1); break;} 
194
                IF (edit2.flags<>64) && (key<>13) && (key<>27) {EAX=key<<8; edit_box_key stdcall (#edit2); break;}
194
                IF (edit2.flags<>64) && (key<>13) && (key<>27) {EAX=key<<8; edit_box_key stdcall (#edit2); break;}
195
				switch (key)
195
				switch (key)
196
				{
196
				{
197
						case 209...217: id=key-109; GOTO DEVICE_MARK;
197
						case 209...217: id=key-109; GOTO DEVICE_MARK;
198
						case 8: GoBack(); break; //Íàçàä
198
						case 8: GoBack(); break; //Íàçàä
Line 205... Line 205...
205
								copystr(#file_path,#copy_file); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
205
								copystr(#file_path,#copy_file); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
206
								IF (key==24) cut_active=1; ELSE cut_active=0; 
206
								IF (key==24) cut_active=1; ELSE cut_active=0; 
207
								break;
207
								break;
208
						case 022: Paste(); break;//Ctrl+V paste
208
						case 022: Paste(); break;//Ctrl+V paste
209
						case 027: //Esc
209
						case 027: //Esc
210
								IF (rename_active==1) {Line_ReDraw(videlenie, 100);}
210
								IF (rename_active==1) ReName(false);
211
								break;
211
								break;
212
						case 013: //Enter
212
						case 013: //Enter
213
								IF (rename_active==1) {Line_ReDraw(videlenie, curbtn); break;}
213
								IF (rename_active==1) {ReName(true); break;}
214
								IF (strcmp(#path,#edit_path)<>0) Goto_edit_path();
214
								IF (strcmp(#path,#edit_path)<>0) Goto_edit_path();
215
								ELSE GOTO OPEN_MARK;
215
								ELSE GOTO OPEN_MARK;
216
								break; 
216
								break; 
217
						case 55: //F6 - new folder
217
						case 55: //F6 - new folder
218
								goto NEW_FOLDER_MARK;
218
								goto NEW_FOLDER_MARK;
Line 273... Line 273...
273
 
273
 
274
 
274
 
275
inline fastcall void draw_window()
275
inline fastcall void draw_window()
276
{
-
 
277
	WindowRedrawStatus(1);
276
{                
-
 
277
	WindowRedrawStatus(1);
278
	skin_width = GetSkinWidth(); 
278
	DefineAndDrawWindow(100,100,600,410,0x73,0x10E4DFE1,0,0,title); 
279
	DefineAndDrawWindow(100,100,600,410,0x73,0x10E4DFE1,0,0,title);
279
	WindowRedrawStatus(2);
280
	Form.GetInfo(SelfInfo);
280
	Form.GetInfo(SelfInfo);
281
	IF (Form.height==skin_width+3) {WindowRedrawStatus(2); return;} //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê
281
	IF (Form.height==GetSkinWidth()+3) return; //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê
282
	  IF (Form.height<280) MoveSize(OLD,OLD,OLD,280);
282
	  IF (Form.height<280) MoveSize(OLD,OLD,OLD,280);
283
	  IF (Form.width<480) MoveSize(OLD,OLD,480,OLD);
283
	  IF (Form.width<480) MoveSize(OLD,OLD,480,OLD);
284
	//toolbar buttons
284
	//toolbar buttons
285
	PutPaletteImage(#toolbar,246,39,0,0,#toolbar_pal);
285
	PutPaletteImage(#toolbar,246,39,0,0,#toolbar_pal);
286
	FOR (j=0; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,0xE4DFE1);
-
 
287
	//ïîëîñà àäðåñà
286
	FOR (j=0; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,0xE4DFE1);
288
	DrawBar(246,0,onLeft(246,60),12,0xE4DFE1); //ôîí íàä ïîëîñîé àäðåñà
-
 
289
	edit1.width=Form.width-314;
-
 
290
	edit1.top=13;
287
	//ïîëîñà àäðåñà
291
	KEdit();
288
	edit1.width=Form.width-314;
-
 
289
	DrawBar(246,0,onLeft(246,60),12,0xE4DFE1); //ôîí íàä ïîëîñîé àäðåñà
292
	DrawRegion_3D(246,12,onLeft(66,246),16,0x94AECE,0x94AECE);	//îáîäîê
290
	DrawBar(246,29,onLeft(246,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà
293
	DrawBar(246,29,onLeft(246,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà
291
	DrawRegion_3D(246,12,onLeft(66,246),16,0x94AECE,0x94AECE);	//îáîäîê
294
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about
292
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about
295
	DefineButton(onLeft(66,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà
293
	DefineButton(onLeft(66,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà
296
	PutPaletteImage(#goto_about,56,40,Form.width-65,0,#goto_about_pal);
294
	PutPaletteImage(#goto_about,56,40,Form.width-65,0,#goto_about_pal);
297
	//ïðÿìîóãîëüíèêè âíóòðè
295
	//ïðÿìîóãîëüíèêè âíóòðè
298
	DrawRegion_3D(1,40,Form.width-12,Form.height-skin_width-46,0x94AECE,0x94AECE); //ñèíèé îáîäîê
296
	DrawRegion_3D(1,40,Form.width-12,onTop(46,0),0x94AECE,0x94AECE); //ñèíèé îáîäîê
299
	DrawRegion_3D(0,39,Form.width-10,Form.height-skin_width-44,0xE4DFE1,0xE4DFE1); //ôîí
297
	DrawRegion_3D(0,39,Form.width-10,onTop(44,0),0xE4DFE1,0xE4DFE1); //ôîí
300
    Devices(); //ïàíåëü ñëåâà íà ñèíåì ôîíå
298
    Devices(); //ïàíåëü ñëåâà íà ñèíåì ôîíå
301
	//SortButtons
299
	//SortButtons
302
	DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
300
	DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
303
	DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
-
 
304
	DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
301
	DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
305
	//
-
 
306
	//sort_type[1]=onLeft(192,168)/2+210;
302
	DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
307
	//sort_type[2]=onLeft(115,0);
303
	//Ïåðåðèñîâûâàåì ñïèñîê
308
	//sort_type[3]=onLeft(44,0);
304
	Open_Dir(#path,ONLY_SHOW);
309
	//ïðîêðóòêà
305
	//ïðîêðóòêà
310
	DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
306
	DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
311
	DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
-
 
312
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
-
 
313
	//
-
 
314
	Open_Dir(#path,3);
-
 
315
	//
307
	DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
Line 316... Line 308...
316
	WindowRedrawStatus(2);
308
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
317
}
309
}
318
 
310
 
319
 
311
 
320
void KEdit()
-
 
321
{
-
 
322
	edit1.size=edit1.pos=strlen(#edit_path);
-
 
323
	edit_box_draw  stdcall (#edit1);
-
 
324
	/*edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
-
 
325
	edit2.width=onLeft(24,217);
312
void KEdit()
Line 326... Line 313...
326
	edit2.top=curbtn*18+59;
313
{
327
	edit2.size=edit2.pos=strlen(#file_name);
314
	edit1.size=edit1.pos=strlen(#edit_path);
Line 344... Line 331...
344
 
331
 
345
void FileList_ReDraw(int curbtn_)
332
void FileList_ReDraw(int curbtn_)
346
{
333
{
347
	if (curbtn_<=0) //ââåðõ
334
	if (curbtn_<=0) //ââåðõ
348
	{
335
	{
349
		IF (za_kadrom==0) && (curbtn==0) return;
336
		IF (za_kadrom==0) && (curbtn<=0) return;
350
		IF (-curbtn_-1
337
		IF (-curbtn_-1
351
		{
338
		{
352
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
339
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
353
			curbtn+=curbtn_;
340
			curbtn+=curbtn_;
Line 382... Line 369...
382
}
369
}
Line 383... Line 370...
383
 
370
 
384
 
371
 
-
 
372
void List_ReDraw()
385
void List_ReDraw()
373
{
386
{
374
	int paint_x=but_num*18+57;
387
	IF (count-za_kadrombut_num-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
375
	IF (count-za_kadrombut_num-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
388
	{ za_kadrom=count-but_num; curbtn=but_num-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
376
	{ za_kadrom=count-but_num; curbtn=but_num-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
389
	//
-
 
390
	FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn);
377
	//
391
		temp_int=but_num*18+57;
378
	FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn);
392
		DrawBar(192,temp_int,onLeft(27,192),onTop(temp_int,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
379
		DrawBar(192,paint_x,onLeft(27,192),onTop(paint_x,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
393
		DrawBar(onLeft(168,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
380
		DrawBar(onLeft(168,0),paint_x,1,onTop(paint_x,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
394
		DrawBar(onLeft(95,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
381
		DrawBar(onLeft(95,0),paint_x,1,onTop(paint_x,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
Line -... Line 382...
-
 
382
	TVScroll();
395
	TVScroll();
383
}
396
}
-
 
397
 
-
 
398
 
-
 
399
void Line_ReDraw(dword color, filenum){
-
 
400
	dword text_col, y;//ïîëîæåíèå òåêñòà ïî Y;
-
 
401
	if (rename_active==1) //âñ¸ ýòî ïîëíûé ïèïåö, è íàäî âûíåñòè â îòäåëüíóþ ïðîöåäóðó
-
 
402
	{
-
 
403
		rename_active=0;
-
 
404
		edit2.flags=64;
384
 
405
		DefineButton(192,curbtn*18+57,onLeft(27,192),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
-
 
406
		IF (filenum==100) filenum=curbtn; else
385
 
407
		{
-
 
408
			copystr(#path,#temp);
-
 
409
			copystr(#file_name,#temp+strlen(#temp));
-
 
410
			if (strcmp(#file_path,#temp)<>0) && (strlen(#file_name)>0)
386
//puticon+icon_fairing!!!
411
			IF (isdir)
-
 
412
			{
-
 
413
				//Del_File(true);
-
 
414
				DeleleFile(#file_path);
-
 
415
				IF (EAX) {DrawFlatButton(Form.width-200+192/2,160,200,80,0,0xFFB6B5, "Error. Folder isn't empty."); Pause(200);}
-
 
416
				ELSE CreateFolder(#temp);
-
 
417
				Open_Dir(#path,1);
-
 
418
			}
-
 
419
			ELSE { CopyFile(#file_path,#temp);	Del_File(true); }
387
void Line_ReDraw(dword color, filenum){
420
		}
388
	dword text_col=0, temp_int,
421
	}
389
	y=filenum*18+57; //ïîëîæåíèå òåêñòà ïî Y
422
	y=filenum*18+57;
-
 
423
	//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî ïåðåðèñîâêà çàòî ìàëåíüêàÿ
390
	IF (rename_active==1) ReName(false);
424
	DrawBar(192,y,3,18,color); DrawBar(195,y,16,2,color); 
-
 
425
	DrawBar(192+19,y,onLeft(46,192),18,color); DrawBar(195,y+17,16,1,color);
391
	//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî ïåðåðèñîâêà çàòî ìàëåíüêàÿ
426
	off=file_mas[filenum+za_kadrom]*304 + buf+72;
-
 
427
	//
392
	DrawBar(192,y,3,18,color); DrawBar(195,y,16,2,color); 
428
	EBX=EAX=ESDWORD[off-40];
-
 
429
	$shr ebx,2 //ôàéë ñêðûòûé?
-
 
430
	$and ebx,1
393
	DrawBar(192+19,y,onLeft(46,192),18,color); DrawBar(195,y+17,16,1,color);
431
	IF (!EBX) text_col=0; ELSE text_col=0xA6A6B7;
-
 
432
	$shr eax,4 //ýòî ïàïêà?
394
	//
433
	$and eax,1
395
	off=file_mas[filenum+za_kadrom]*304 + buf+72;
434
	IF (color==videlenie) isdir=EAX;
396
	if (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7;
435
	if (!EAX)
397
	if (!TestBit(ESDWORD[off-40],4))
436
	{
398
	{
437
		temp_int = Put_icon(off+strlen(off)-4, y+2);
399
		temp_int = Put_icon(off+strlen(off)-4, y+2);
-
 
400
		WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size
438
		WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size
401
	} ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("", y+2);
439
	} ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("", y+2);
402
	if (color==videlenie)
440
	if (color==videlenie)
403
	{
441
	{
404
		isdir=TestBit(ESDWORD[off-40], 4);
442
		IconFairing(temp_int, y+2); //çàêðàøèâàåì èêîíêó
405
		IconFairing(temp_int, y+2); //çàêðàøèâàåì èêîíêó
443
		copystr(off,#file_name);
406
		copystr(off,#file_name);
444
		copystr(#path,#file_path);
-
 
445
		copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó
-
 
446
		Preview();
-
 
447
		IF (text_col==0xA6A6B7) text_col=0xFFFFFF;
-
 
448
		/*IF (show_preview) && (!isdir)
-
 
449
		{
-
 
450
			GetImage(#file_path);
-
 
451
			j=dev_num*16+123;
407
		copystr(#path,#file_path);
452
			j+=show_actions*51;
408
		copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó
453
			IF (pLoadedImage<>0) DrawImage(#CurrentImage, 22*65536+j+skin_width+18);
409
		Preview(NOTIP);
454
		}*/
410
		IF (text_col==0xA6A6B7) text_col=0xFFFFFF;
455
	}
411
	}
Line 461... Line 417...
461
}
417
}
Line 462... Line 418...
462
 
418
 
463
 
419
 
464
void Open_Dir(dword temp_, redraw){
420
void Open_Dir(dword temp_, redraw){
465
	byte path_[256], somelen=strlen(temp_)-1;
421
	byte path_[256], somelen=strlen(temp_)-1;
466
	if (redraw<>3)
422
	if (redraw<>ONLY_SHOW)
467
	{
423
	{
468
		copystr(temp_, #path_);
424
		copystr(temp_, #path_);
469
		IF (somelen) path_[somelen]=0x00;
425
		IF (somelen) path_[somelen]=0x00;
Line 475... Line 431...
475
    	buf = realloc(count * 304 + 32, buf);
431
    	buf = realloc(count * 304 + 32, buf);
476
		ReadDir(count, buf, #path_);
432
		ReadDir(count, buf, #path_);
477
		IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 íà óäà÷ó ;)
433
		IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 íà óäà÷ó ;)
478
		count=EBX;
434
		count=EBX;
479
	}  
435
	}  
480
	if (count<>-1) && (redraw>0)
436
	if (count<>-1)
481
	{
437
	{
482
		IF (!strcmp(".",buf+72)) {memmov(buf,buf+304,count-1*304); count--; } //ôèëüòðóåì ýëåìåíò "."
438
		IF (!strcmp(".",buf+72)) {memmov(buf,buf+304,count-1*304); count--;} //ôèëüòðóåì ýëåìåíò "."
483
		FOR (j=0;j
439
		FOR (j=0;j
484
		but_num=onTop(6,57)/18;                                                                                             
440
		but_num=onTop(6,57)/18;                                                                                             
485
		IF (but_num>100) but_num=1; ELSE //ýòà ñòðàííàÿ ñòðî÷êà äëÿ òîãî åñëè ðàçìåðû îêíà ñëèøêîì ìàëåíüêèå
-
 
486
		IF (count
441
		IF (count
487
		FOR (j=0;j
442
		FOR (j=0;j
488
		IF (redraw<>3) Sorting();
443
		//ñòðåëî÷êà ñîðòèðîâêè
-
 
444
		IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19",0);
-
 
445
		IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19",0);
-
 
446
		IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19",0);
-
 
447
		IF (redraw<>ONLY_SHOW) Sorting(); //äëÿ áîëüøèõ ïàïîê ïðè ðåïåèíòå îêíà
489
		IF (redraw==1) || (redraw==3) List_ReDraw();
448
		IF (redraw<>ONLY_OPEN) List_ReDraw();
490
		copystr(temp_,#edit_path);
449
		copystr(temp_,#edit_path);
491
		KEdit();
450
		KEdit();
492
		HistoryPath(add_new_path);
451
		HistoryPath(add_new_path);
493
		//ñòðåëî÷êà ñîðòèðîâêè
-
 
494
		IF (sort_num==1) WriteText(onLeft(192,168)/2+210,45,0x80,0x4E78AC,"\x19",0);
-
 
495
		IF (sort_num==2) WriteText(onLeft(115,0),45,0x80,0x4E78AC,"\x19",0);
-
 
496
		IF (sort_num==3) WriteText(onLeft(44,0),45,0x80,0x4E78AC,"\x19",0);
-
 
497
	}
452
	}
498
	IF (count==-1) {but_num=count=0; List_ReDraw();}
453
	IF (count==-1) && (redraw<>ONLY_OPEN) {but_num=count=0; List_ReDraw();}
499
}
454
}
Line 500... Line 455...
500
 
455
 
Line 505... Line 460...
505
	dword k=0, l=1;
460
	dword k=0, l=1;
506
	IF (!strcmp(#path,"/")) {FOR(k=1;k
461
	IF (!strcmp(#path,"/")) {FOR(k=1;k
507
	FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;)  //ïàïêè ââåðõ, ôàéëû âíèç
462
	FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;)  //ïàïêè ââåðõ, ôàéëû âíèç
508
	{
463
	{
509
		ChangeCase(off+40);
464
		ChangeCase(off+40);
510
		EAX=ESDWORD[off];
-
 
511
		$shr eax,4
-
 
512
		$and eax,1
-
 
513
		IF (EAX) {file_mas[k]=j; k++;} ELSE
465
		IF (TestBit(ESDWORD[off],4)) {file_mas[k]=j; k++;}
514
			 {file_mas[count-l]=j; l++;}
466
			ELSE {file_mas[count-l]=j; l++;}
515
	}
467
	}
516
	//Ñîáñòâåííî ñîðòèðîâêà
468
	//Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû
517
	Sort_by_Name(0,k-1); //ñîðòèðóåì ïàïêè, íèæå - ôàéëû
469
	Sort_by_Name(0,k-1);
518
	IF (sort_num==1) Sort_by_Name(k,count-1);
470
	IF (sort_num==1) Sort_by_Name(k,count-1);
519
	IF (sort_num==2) Sort_by_Type(k, count-1);
471
	IF (sort_num==2) Sort_by_Type(k, count-1);
520
	IF (sort_num==3) Sort_by_Size(k,count-1);
472
	IF (sort_num==3) Sort_by_Size(k,count-1);
521
	//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
473
	//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
522
	IF (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k=k-1; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]>
474
	IF (k>0) && (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k=k-1; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]>
523
}
475
}
Line 524... Line 476...
524
 
476
 
525
 
477
 
Line 591... Line 543...
591
	WriteText(165,y+5,0x80,0,arrow,0); //ñòðåëêà âíèç
543
	WriteText(165,y+5,0x80,0,arrow,0); //ñòðåëêà âíèç
592
	DrawBar(17,y+17,160,1,0x94AECE);		//ïîä÷¸ðêèâàíèå
544
	DrawBar(17,y+17,160,1,0x94AECE);		//ïîä÷¸ðêèâàíèå
593
}
545
}
Line -... Line 546...
-
 
546
 
-
 
547
 
-
 
548
void ReName(byte rename)
-
 
549
{
-
 
550
	rename_active=0;
-
 
551
	edit2.flags=64;
-
 
552
	DefineButton(192,curbtn*18+57,onLeft(27,192),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
-
 
553
	if (rename==true)
-
 
554
	{
-
 
555
		copystr(#path,#temp);
-
 
556
		copystr(#file_name,#temp+strlen(#temp));
-
 
557
		if (strcmp(#file_path,#temp)<>0) && (file_name)
-
 
558
		IF (isdir)
-
 
559
		{
-
 
560
			DeleleFile(#file_path);
-
 
561
			IF (EAX) {DrawFlatButton(Form.width-8/2,160,200,80,0,0xFFB6B5, "Error. Folder isn't empty."); Pause(200);}
-
 
562
			ELSE CreateFolder(#temp);
-
 
563
			Open_Dir(#path,1);
-
 
564
		}
-
 
565
		ELSE
-
 
566
		{
-
 
567
			CopyFile(#file_path,#temp);
-
 
568
			Del_File(true);
-
 
569
		}
-
 
570
		SelectFile(#temp+find_symbol(#path,'/'));
-
 
571
	}
-
 
572
	Line_ReDraw(videlenie,curbtn);
-
 
573
}
594
 
574
 
595
 
575
 
596
void Devices()
576
void Devices()
597
{          
577
{          
598
	byte dev_icon; dword drive_name[30]; char dev_name[4];
578
	byte dev_icon; dword drive_name[30]; char dev_name[4];
599
	DrawBar(2,41,190,15,0x00699C);		//ñèíèé ïðÿìîóãîëüíèê - ñâåðõó
579
	DrawBar(2,41,190,15,0x00699C);		//ñèíèé ïðÿìîóãîëüíèê - ñâåðõó
600
	DrawBar(2,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñëåâà       
580
	DrawBar(2,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñëåâà       
601
	DrawBar(177,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñïðàâà
581
	DrawBar(177,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñïðàâà
602
	//ñïèñîê äèñêîâ
-
 
603
	Tip(56, "Goto:", 0, "");
582
	//ñïèñîê äèñêîâ
604
	DrawBar(17,74,160,dev_num*16+1,0xFFFFFF);	//áåëîå
583
	Tip(56, "Goto:", 0, "");
-
 
584
	for (i=0;i
605
	for (i=0;i
585
	{
606
	{
586
		DrawBar(17,i*16+74,160,17,0xFFFFFF); //áåëîå
607
		DefineButton(17,i*16+74,159,16,100+i+BT_HIDE,0xE4DFE1); //ñîçäà¸ì êíîïêè, à ïîòîì âûâîäèì íàçâàíèÿ äèñêîâ
587
		DefineButton(17,i*16+74,159,16,100+i+BT_HIDE,0xFFFFFF); //ñîçäà¸ì êíîïêè, à ïîòîì âûâîäèì íàçâàíèÿ äèñêîâ
608
		copystr("Unknown drive",#drive_name); //èçíà÷àëüíî íåèçâåñíûé íîñèòåëü
588
		copystr("Unknown drive",#drive_name); //èçíà÷àëüíî íåèçâåñíûé íîñèòåëü
609
		dev_icon=3; //ïî-óìîë÷àíèþ óñòðîéñòâî âûãëÿäèò êàê æåñòÿê
589
		dev_icon=3; //ïî-óìîë÷àíèþ óñòðîéñòâî âûãëÿäèò êàê æåñòÿê
610
		copystr(i*304+ devbuf+72, #dev_name);
590
		copystr(i*304+ devbuf+72, #dev_name);
Line 647... Line 627...
647
	{
627
	{
648
		DeleteButton(80);	DeleteButton(81);	DeleteButton(82);
628
		DeleteButton(80);	DeleteButton(81);	DeleteButton(82);
649
		Tip(dev_num*16+90, "Actions", 77, "\x18");
629
		Tip(dev_num*16+90, "Actions", 77, "\x18");
650
		DrawBar(17,dev_num*16+108,160,51,0x00699C); //ñèíåå
630
		DrawBar(17,dev_num*16+108,160,51,0x00699C); //ñèíåå
651
	}
631
	}
652
	Preview();
632
	Preview(REDRAW);
653
}
633
}
Line 654... Line 634...
654
 
634
 
655
 
635
 
656
void Preview()
636
void Preview(byte param)
657
{        
637
{        
658
	dword top_pr=dev_num*16+123;
638
	dword ti, text_buf, top_pr=dev_num*16+123;
659
	top_pr+=show_actions*51; //íà÷èíàåì íèæå, åñëè Ýêøíñ âèäèìû
639
	top_pr+=show_actions*51; //íà÷èíàåì íèæå, åñëè Ýêøíñ âèäèìû
660
	DeleteButton(78);
640
	IF (param<>NOTIP) DeleteButton(78);
661
	if (show_preview==1)
641
	if (show_preview==1)
662
	{
642
	{
663
		Tip(top_pr,"Preview",78,"\x19");
643
		IF (param<>NOTIP) Tip(top_pr,"Preview",78,"\x19");
-
 
644
		DrawBar(17,top_pr+18,160,5,0xFFFFFF); //áåëîå
-
 
645
		DrawBar(17,top_pr+113,160,onTop(top_pr+113,6),0x00699C); //ñèíåå  
-
 
646
		//
-
 
647
		text_buf = malloc(256);
-
 
648
		ReadFile(0, 256, text_buf, #file_path);
-
 
649
		FOR (ti=0;ti<9; ti++) 
-
 
650
		{
-
 
651
			DrawBar(17,ti*10+top_pr+23,160,10,0xFFFFFF); //áåëîå
-
 
652
			WriteText(22,ti*10+top_pr+23,0x00,0,ti*25+text_buf,25);
664
		DrawBar(17,top_pr+18,160,100,0xFFFFFF); //áåëîå
653
			IF (param==ANIM) Pause(2);
-
 
654
		}
-
 
655
		//
-
 
656
		/*WriteDebug(""); 
665
		DrawBar(17,top_pr+118,160,onTop(top_pr+118,6),0x00699C); //ñèíåå  
657
		WriteDebug("");
666
		//
658
		WriteDebug(#path);
667
		WriteText(25,top_pr+30,0x80,0,"Number of files:",0); WriteText(135,top_pr+30,0x80,0,IntToStr(count),0); 
659
		WriteDebug("Number of files:"); WriteDebug(IntToStr(count)); 
668
		WriteText(30,top_pr+40,0x80,0,"but_num:",0);	 WriteText(105,top_pr+40,0x80,0,IntToStr(but_num),0);
660
		WriteDebug("but_num:");	 		WriteDebug(IntToStr(but_num));
669
		WriteText(30,top_pr+50,0x80,0,"curbtn",0);		 WriteText(105,top_pr+50,0x80,0,IntToStr(curbtn),0);
-
 
670
		WriteText(30,top_pr+60,0x80,0,"ra_kadrom:",0);	 WriteText(105,top_pr+60,0x80,0,IntToStr(za_kadrom),0);
-
 
671
		WriteText(30,top_pr+70,0x80,0,#file_path,0);
661
		WriteDebug("curbtn");		 	WriteDebug(IntToStr(curbtn));
672
		WriteText(30,top_pr+80,0x80,0,IntToStr(edit1.flags),0); WriteText(30,top_pr+90,0x80,0,IntToStr(edit2.flags),0);
662
		WriteDebug("ra_kadrom:");	 	WriteDebug(IntToStr(za_kadrom));*/
673
	} 
663
	} 
674
	ELSE
664
	ELSE
675
	{
665
	{
676
		Tip(top_pr,"Preview",78,"\x18");
666
		IF (param<>NOTIP) Tip(top_pr,"Preview",78,"\x18");
677
		DrawBar(17,top_pr+18,160,onTop(top_pr+18,6),0x00699C); //ñèíåå
667
		DrawBar(17,top_pr+18,160,onTop(top_pr+18,6),0x00699C); //ñèíåå
Line 678... Line 668...
678
	}
668
	}
679
}
669
}
680
 
670
 
681
 
671
 
682
void Goto_edit_path()
672
void Goto_edit_path()
683
{
673
{
684
	IF (strcmp(#path,#edit_path)==0) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå
674
	IF (strcmp(#path,#edit_path)==0) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå
685
 	IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/"
675
 	IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/"
686
	Open_Dir(#edit_path,0); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà
676
	Open_Dir(#edit_path,2); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà
Line 705... Line 695...
705
}
695
}
Line 706... Line 696...
706
 
696
 
707
 
697
 
708
void Dir_Up()
698
void Dir_Up()
709
{
699
{
710
	char temp_[256];
700
	byte temp_[256];
711
	i=strlen(#path)-1;
701
	i=strlen(#path)-1;
712
	path[i]=0x00;
702
	path[i]=0x00;
713
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_); 
703
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_); 
714
	path[i+1]=0x00;
704
	path[i+1]=0x00;
Line 715... Line -...
715
	SelectFile(#temp_);
-
 
716
}
-
 
717
 
-
 
718
 
-
 
719
/*inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
-
 
720
{
-
 
721
	i=strlen(#PathHistory)-1;
-
 
722
	PathHistory[i]=0x00;
-
 
723
	copystr(#PathHistory+find_symbol(#PathHistory,'/'),#temp); //ïàïêà â êîòîðîé áûëè
-
 
724
	HistoryPath(go_back);
705
	SelectFile(#temp_);
725
	SelectFile(#temp);
706
}
726
}*/
707
 
727
 
708
 
728
inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
709
inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
729
{
710
{
730
	i=strlen(#PathHistory)-1;
711
	i=strlen(#PathHistory)-1;
731
	IF (i<7) return;
712
	IF (i<7) RETURN;
732
	PathHistory[i]=0x00;
713
	PathHistory[i]=0x00;