Subversion Repositories Kolibri OS

Rev

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

Rev 944 Rev 975
Line 1... Line 1...
1
//Leency & Veliant -=- KolibriOS Team -=- 2008
1
//Leency & Veliant -=- KolibriOS Team -=- 2008
Line -... Line 2...
-
 
2
 
-
 
3
//ñòðîêà 258, êåéàï!
-
 
4
//âîçìîæíî, áàã â KEdit
-
 
5
//find_symbol íàäî ÷èòàòü ñ êîíöà
-
 
6
//335 ñòðîêà
-
 
7
//PathHistory  áëÿ íàäî API äëÿ ðàáîòû ñ èñòîðèåé, â ò.÷. ïðîâåðÿòü íå ðàâíà ëè íîâàÿ ïàïêà ïðåäûäóùåé
-
 
8
//DrawBar(sort_num[1],45,6,9,0xE4DFE1);
2
 
9
 
3
#codesize   
10
#codesize   
4
#include "lib\kolibri.h--"
11
#include "lib\kolibri.h--"
5
#include "lib\memory.h--"
12
#include "lib\memory.h--"
6
#include "lib\edit_box_lib.h--"
13
#include "lib\edit_box_lib.h--"
7
#include "lib\file_system.h--" 
14
#include "lib\file_system.h--" 
8
#include "imgs\toolbar.txt"
15
#include "imgs\toolbar.txt"
Line 9... Line 16...
9
#include "imgs\left_p.txt"
16
#include "imgs\left_p.txt"
10
 
17
 
11
//ëîêàëèçàöèÿ è íàñòðîéêè
18
//ëîêàëèçàöèÿ è íàñòðîéêè
12
#define header "Eolite File Manager v0.97.2"
19
#define header "Eolite File Manager v0.98.2"
13
#define videlenie 0x94AECE //0x94AECE,0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
20
#define videlenie 0x94AECE //0x94AECE,0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
-
 
21
byte toolbar_buttons_x[6]={9,46,85,134,167,203};
14
byte toolbar_buttons_x[6]={14,51,90,139,172,208};
22
//
-
 
23
dword but_num,
-
 
24
     kolichestvo,
-
 
25
     za_kadrom,
-
 
26
     curbtn,
15
//
27
     razm_scrl;
-
 
28
byte cut_active,
16
dword but_num, kolichestvo, za_kadrom, curbtn, razm_scrl;
29
     rename_active,
-
 
30
     del_active;
-
 
31
byte show_actions=1,
-
 
32
     show_preview=0,
17
byte cut_active, rename_active, del_active;
33
     sort_num=2,
-
 
34
     isdir;
18
byte show_actions=1, show_preview=0, sort_num=1, isdir;
35
char path[256]="/rd/1/",
19
char path[256]="/rd/1/", edit_path[256], PathHistory[2560], temp[256]; //äëÿ ïóòåé
36
     edit_path[256],
-
 
37
     file_path[256],
-
 
38
     file_name[256],
-
 
39
     copy_file[256],
-
 
40
     temp[256];
20
char file_path[256], file_name[256]; //äëÿ ôàéëîâ
41
char PathHistory[2560];
21
char copyfile[256],copy_name[256]; //êîïèðîâàíèå
42
 
-
 
43
dword file_mas[6898];
22
dword file_mas[6898]; //ñïèñîê ôàéëîâ
44
int temp_int, j, i;
Line 23... Line 45...
23
int temp_int, j, i;
45
 
24
dword stak[100]=0; //îêíî About 
46
dword stak[100]=0; //îêíî About 
Line 25... Line 47...
25
 
47
 
26
edit_box edit1= {250,252,17,0xffffff,0x94AECE,0xD3DDEB,0xffffff,0,248,#edit_path,64,6,6};
48
edit_box edit1= {250,247,17,0xffffff,0x94AECE,0xD3DDEB,0xffffff,0,248,#edit_path,64,6,6};
27
edit_box edit2= {250,218,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,64,6,6};
49
edit_box edit2= {250,213,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,64,6,6};
28
 
50
 
-
 
51
proc_info Form;
29
proc_info	Form;
52
dword buf=0, off; //äëÿ òåêñòà è áóôåðà
Line 30... Line -...
30
dword buf=0, off; //äëÿ òåêñòà è áóôåðà
-
 
31
dword devbuf=0, dev_num;
-
 
32
#include "include\LVabout.c--"
-
 
33
#include "include\icons_f.h--"
-
 
34
 
-
 
35
 
-
 
36
 
-
 
37
//IPC
-
 
38
#include "lib\Nable_lib.h--"
-
 
39
#include "lib\ipc.h--"
-
 
40
 
-
 
41
int pLoadedImage;
-
 
42
void GetImage(dword ipath)
-
 
43
{
-
 
44
	IF (pLoadedImage) free(pLoadedImage);
53
dword devbuf=0, dev_num;
45
	pLoadedImage=loadimage_viaIPC(ipath, #CurrentImage);
54
#include "include\LVabout.h--"
46
	SetEventMask(100111b); //restore normal event mask
55
#include "include\sorting.h--"
47
}
56
#include "include\icons_f.h--"
48
 
57
 
-
 
58
 
49
 
59
void main() 
50
void main()   
60
byte key, id; 
51
byte pressed, key, id; 
61
mouse m;
52
mouse m;
-
 
53
int pressed_y;
62
int pressed_y;
54
{
-
 
55
	devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
63
{
56
	ReadDir(10, devbuf, "/");
64
	load_editbox_lib();
57
	dev_num=EBX;
65
	devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
58
	load_dll(); //ïîäãðóæàåò ëèáó ñ åäèò_áîêñîì                               
66
	ReadDir(10, devbuf, "/");
59
	IF (param[0]<>'') {copystr(#param,#edit_path); Goto_edit_path();}
67
	dev_num=EBX;
60
	Open_Dir(#path,2);
-
 
61
	loop()
68
	IF (param[0]<>'') {copystr(#param,#edit_path); Goto_edit_path();} ELSE Open_Dir(#path,2); //áûë ëè çàïóñê ñ ïàðàìåòðîì
62
	{
69
	loop()
-
 
70
	{
-
 
71
		switch(WaitEvent())
-
 
72
		{
-
 
73
			CASE evMouse:
-
 
74
					IF (del_active==1) break;
63
		switch(WaitEvent())
75
					m.get();
-
 
76
 
-
 
77
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57)
-
 
78
					{
-
 
79
						IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF);
-
 
80
						WHILE (m.lkm==1) && (za_kadrom>0)
-
 
81
						{
-
 
82
							Pause(10);
-
 
83
							za_kadrom--;
-
 
84
							List_ReDraw();
-
 
85
							m.get();
-
 
86
						}
-
 
87
						DrawRegion_3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7);
-
 
88
					}
-
 
89
 
-
 
90
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y
-
 
91
					{
-
 
92
						IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF);
-
 
93
						while (m.lkm==1) && (za_kadrom
-
 
94
						{
-
 
95
							Pause(10);
-
 
96
							za_kadrom++;
-
 
97
							List_ReDraw();
64
		{
98
							m.get();
65
			CASE evMouse:
99
						}
66
					id = 0;
100
						DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
67
					IF (del_active==1) break;
-
 
68
					m.get();
-
 
69
					//
101
					}
70
					IF (vert==65535) IF (curbtn==0) FileList_ReDraw(-3); ELSE FileList_ReDraw(-1);
-
 
71
					IF (vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1);
102
 
-
 
103
					//êîë¸ñèêî ìûøè
72
					//ñêðîëë
104
					IF (vert==65535) IF (curbtn==0) FileList_ReDraw(-3); ELSE FileList_ReDraw(-1);
73
					IF (razm_scrl/2+57>m.y)  || (m.y<0) || (m.y>4000) m.y=razm_scrl/2+57; //åñëè êóðñîð íàä îêíîì
105
					IF (vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1);
74
					IF (m.lkm==0) pressed=0; ELSE
106
					//ñêðîëë
75
					IF (m.x>=Form.width-21) && (m.x<=Form.width-6) pressed=1;
107
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) while (m.lkm)
76
					IF (pressed==1)
108
					{
-
 
109
						IF (razm_scrl/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=razm_scrl/2+57; //åñëè êóðñîð íàä îêíîì
77
					{
110
						temp_int=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
78
						temp_int=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
111
						j= razm_scrl/2;
79
						j= razm_scrl/2;
112
						za_kadrom = m.y -j -57 * kolichestvo / onTop(22,57);
80
						za_kadrom = m.y -j -57 * kolichestvo / onTop(22,57);
113
						IF (but_num+za_kadrom>kolichestvo) za_kadrom=kolichestvo-but_num;
81
						IF (but_num+za_kadrom>kolichestvo) za_kadrom=kolichestvo-but_num;
114
						IF (temp_int<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
Line 96... Line 129...
96
					CASE 25: goto CTRLC_MARK; //copy
129
					CASE 25: goto CTRLC_MARK; //copy
97
					CASE 26: Paste(); break;//paste
130
					CASE 26: Paste(); break;//paste
98
					CASE 27: Goto_edit_path(); break; //goto edit_path
131
					CASE 27: Goto_edit_path(); break; //goto edit_path
99
					CASE 31...33: //sort
132
					CASE 31...33: //sort
100
							IF (sort_num==id-30) break;
133
							IF (sort_num==id-30) break;
101
							IF(sort_num==1)DrawBar(onLeft(197,163)/2+215,45,6,9,0xE4DFE1);
134
							IF(sort_num==1)DrawBar(onLeft(192,168)/2+210,45,6,9,0xE4DFE1);
102
							IF(sort_num==2)DrawBar(onLeft(110,0),45,6,9,0xE4DFE1);
135
							IF(sort_num==2)DrawBar(onLeft(115,0),45,6,9,0xE4DFE1);
103
							IF(sort_num==3)DrawBar(onLeft(39,0),45,6,9,0xE4DFE1);
136
							IF(sort_num==3)DrawBar(onLeft(44,0),45,6,9,0xE4DFE1);
104
							sort_num=id-30;
137
							sort_num=id-30;
105
							Open_Dir(#path,1);
138
							Open_Dir(#path,1);
106
							break; 
139
							break; 
107
					case 30: //about
140
					case 30: //about
108
						EAX = 51; EBX = 1;
-
 
109
						ECX = #authors; EDX = #stak;
141
						CreateThread(#authors,#stak); 
110
						$int 40h;	
-
 
111
						break;
-
 
112
					case 50: //ñòðåëêà ââåðõ íà ñêðîëå
-
 
113
						FileList_ReDraw(-1);
-
 
114
						break;
-
 
115
					case 51: //ñòðåëêà âíèç íà ñêðîëå
-
 
116
						FileList_ReDraw(1);
-
 
117
						break;
142
						break;
118
					case 78: //preview
143
					case 78: //preview
119
						IF (show_preview==1) show_preview=0; ELSE show_preview=1;
144
						IF (show_preview==1) show_preview=0; ELSE show_preview=1;
120
						Preview();
145
						Preview();
121
						break;
146
						break;
Line 134... Line 159...
134
						copystr("New folder", #temp+strlen(#temp));
159
						copystr("New folder", #temp+strlen(#temp));
135
						CreateFolder(#temp);
160
						CreateFolder(#temp);
136
						za_kadrom=curbtn=0;
161
						za_kadrom=curbtn=0;
137
						Open_Dir(#path,1);
162
						Open_Dir(#path,1);
138
						FOR (i=0; i
163
						FOR (i=0; i
139
							IF (strcmp("New folder",file_mas[i]*304+buf+72)==0) {IF(!strcmp("..",buf+72+304))i--; FileList_ReDraw(i); break;}
164
							IF (strcmp("New folder",file_mas[i]*304+buf+72)==0) {FileList_ReDraw(i); break;}
140
						goto REN_MARK;
165
						goto REN_MARK;
141
					case 100...120:
166
					case 100...120:
142
						DEVICE_MARK:
167
						DEVICE_MARK:
143
						copystr(id-100*304+ devbuf+72, #path);
168
						copystr(id-100*304+ devbuf+72, #path);
144
						IF (path[0]=='r') copystr("/rd/1",#file_path);
169
						IF (path[0]=='r') copystr("/rd/1",#file_path);
145
						ELSE  {
170
						ELSE {
146
							copystr("/", #file_path);
171
								copystr("/", #file_path);
147
							copystr(#path, #file_path+strlen(#file_path));
172
								copystr(#path, #file_path+strlen(#file_path));
148
							}
173
							 }
149
						goto OPEN_DEV;
174
						GOTO OPEN_DEV;
150
					default:
175
					default:
151
						if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
176
						if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
152
						IF (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
177
						IF (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
153
						else OPEN_MARK:
178
						else OPEN_MARK:
154
						if (!isdir) Run_File(#file_path); else
179
						if (!isdir) Run_File(#file_path); else
155
						if (strcmp(za_kadrom+curbtn+1*304 + buf+72,"..")==0) Dir_Up(); else
180
						if (strcmp(#file_name,"..")==0) Dir_Up(); else
156
						{	OPEN_DEV:
181
						{	OPEN_DEV:
157
								copystr(#file_path, #path);
182
								copystr(#file_path, #path);
158
								copystr("/", #path+strlen(#path));
183
								copystr("/", #path+strlen(#path));
159
								DrawBar(197,curbtn*18+57,onLeft(22,197),18,0xFFFFFF); //çàêðàøèâàåì ñòàðîå âûäåëåíèå
-
 
160
								za_kadrom=curbtn=0;
184
								za_kadrom=curbtn=0;
161
								Open_Dir(#path,1);
185
								Open_Dir(#path,1);
162
						}
186
						}
163
						break;
-
 
164
				}
187
				}
165
				break;
188
				break;
166
//Key pressed-----------------------------------------------------------------------------
189
//Key pressed-----------------------------------------------------------------------------
167
			case evKey:
190
			case evKey:
168
				key = GetKey();
191
				key = GetKey();
Line 174... Line 197...
174
				 	}
197
				 	}
175
				IF (edit1.flags<>64) && (key<>13) {EAX=key<<8; edit_box_key stdcall (#edit1); break;} 
198
				IF (edit1.flags<>64) && (key<>13) {EAX=key<<8; edit_box_key stdcall (#edit1); break;} 
176
                IF (edit2.flags<>64) && (key<>13) && (key<>27) {EAX=key<<8; edit_box_key stdcall (#edit2); break;}
199
                IF (edit2.flags<>64) && (key<>13) && (key<>27) {EAX=key<<8; edit_box_key stdcall (#edit2); break;}
177
				switch (key)
200
				switch (key)
178
				{
201
				{
179
						case 209...217: id=key-109; IF(dev_num>id-100)GOTO DEVICE_MARK; break;
202
						case 209...217: id=key-109; GOTO DEVICE_MARK;
180
						case 8: GoBack(); break; //Íàçàä
203
						case 8: GoBack(); break; //Íàçàä
181
						case 014: MoveSize(80,80,OLD,OLD); RunProgram("/sys/File Managers/Eolite", #path); break; //íîâîå îêíî
204
						case 014: MoveSize(80,80,OLD,OLD); RunProgram("/sys/File Managers/Eolite", #path); break; //íîâîå îêíî
182
						case 024:  //Ctrl+X cut
205
						case 024:  //Ctrl+X cut
183
						case 089: //Ctrl+Ins copy
206
						case 089: //Ctrl+Ins copy
184
						case 003: //Ctrl+C copy
207
						case 003: //Ctrl+C copy
185
								CTRLC_MARK:
208
								CTRLC_MARK:
186
								IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì
209
								IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì
187
								copystr(#file_name,#copy_name);
-
 
188
								copystr(#file_path,#copyfile); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
210
								copystr(#file_path,#copy_file); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
189
								IF (key==24) cut_active=1; ELSE cut_active=0; 
211
								IF (key==24) cut_active=1; ELSE cut_active=0; 
190
								break;
212
								break;
191
						case 022: Paste(); break;//Ctrl+V paste
213
						case 022: Paste(); break;//Ctrl+V paste
192
						case 027: //Esc
214
						case 027: //Esc
193
								IF (rename_active==1) {Line_ReDraw(videlenie, 100);}
215
								IF (rename_active==1) {Line_ReDraw(videlenie, 100);}
Line 208... Line 230...
208
								break;
230
								break;
209
						case 180: //home
231
						case 180: //home
210
								FileList_ReDraw(-za_kadrom-curbtn);
232
								FileList_ReDraw(-za_kadrom-curbtn);
211
								break;
233
								break;
212
						case 181: //end
234
						case 181: //end
213
								FileList_ReDraw(kolichestvo-za_kadrom-curbtn+but_num);
235
								FileList_ReDraw(kolichestvo-za_kadrom-curbtn+but_num-1);
214
								break;
236
								break;
215
						case 183: //Page Down
237
						case 183: //Page Down
216
								FileList_ReDraw(but_num-1);
238
								FileList_ReDraw(but_num-1);
217
								break;
239
								break;
218
						case 184: //Page Up
240
						case 184: //Page Up
219
								FileList_ReDraw(-but_num+1);
241
								FileList_ReDraw(-but_num+1);
220
								break;
242
								break;
221
						case 051: //Íàæàòà F2
243
						case 051: //Íàæàòà F2
222
								REN_MARK:
244
								REN_MARK:
223
								//IF (isdir==1) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì
-
 
224
								edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
-
 
225
								DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ
245
								DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ
-
 
246
								edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
226
								edit2.width=onLeft(24,217);
247
								edit2.width=onLeft(24,217);
227
								edit2.top=curbtn*18+59+skin_width;
248
								edit2.top=curbtn*18+59;
228
								edit2.size=strlen(#file_name); edit2.pos=strlen(#file_name);
249
								edit2.size=edit2.pos=strlen(#file_name);
229
								edit_box_draw  stdcall (#edit2);
250
								edit_box_draw  stdcall (#edit2);
230
								DrawBar(218,curbtn*18+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè
251
								DrawBar(213,curbtn*18+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè
231
								rename_active=1;
252
								rename_active=1;
232
								break;
253
								break;
233
						case 052: //Íàæàòà F3
254
						case 052: //Íàæàòà F3
234
								IF (isdir==false) RunProgram("/sys/tinypad", #file_path); break;
255
								IF (isdir==false) RunProgram("/sys/tinypad", #file_path);
-
 
256
								break;
-
 
257
						case 054: //F5
235
						case 054: Open_Dir(#path,1); break; //ïåðåðèñîâàòü îêíî F5
258
								Open_Dir(#path,1);
-
 
259
								break;
236
						case 182: Del_Form(); break; //delete file
260
						case 182: //delete file
-
 
261
								Del_Form();
-
 
262
								break; 
237
						default:    
263
						default:    
238
								IF (strcmp("..",buf+72+304)<>0) temp_int=0; ELSE temp_int=1;
-
 
239
								for (i=curbtn+za_kadrom+1; i
264
								FOR (i=curbtn+za_kadrom+1; i
240
								{
265
								{
241
									copystr(file_mas[i+temp_int]*304+buf+72,#temp);
266
									copystr(file_mas[i]*304+buf+72,#temp);
242
									AL=DSBYTE[#temp]; 
267
									AL=DSBYTE[#temp]; 
243
									IF(AL>='A')&&(AL<='Z')DSBYTE[#temp]=AL|0x20;
268
									IF(AL>='A')&&(AL<='Z')DSBYTE[#temp]=AL|0x20;
244
									IF (temp[0]==key) {FileList_ReDraw(i-curbtn-za_kadrom); break;}
269
									IF (temp[0]==key) {FileList_ReDraw(i-curbtn-za_kadrom); break;}
245
								}
270
								}
246
				}                         
271
				}                         
247
				break;
272
				BREAK;
248
				case evReDraw:	draw_window();	BREAK;
273
				case evReDraw:	draw_window();
249
		}
274
		}
250
		IF (rename_active==0) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2);
275
		IF (rename_active==0) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2);
251
	}
276
	}
252
}
277
}
Line 253... Line 278...
253
 
278
 
254
 
279
 
255
inline fastcall void draw_window()
280
inline fastcall void draw_window()
256
{
281
{
257
	WindowRedrawStatus(1);
282
	WindowRedrawStatus(1);
258
	skin_width = GetSkinWidth(); 
283
	skin_width = GetSkinWidth(); 
259
	DefineAndDrawWindow(100,100,600,410,0x43,0x10E4DFE1,0,0,header);
284
	DefineAndDrawWindow(100,100,600,410,0x73,0x10E4DFE1,0,0,header);
260
	Form.GetInfo(SelfInfo);
285
	Form.GetInfo(SelfInfo);
261
	IF (Form.height==skin_width+3) {WindowRedrawStatus(2); return;} //ýòî çà÷¸ò!
286
	IF (Form.height==skin_width+3) {WindowRedrawStatus(2); return;} //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê
262
	  IF (Form.height<280) MoveSize(OLD,OLD,OLD,280);
287
	  IF (Form.height<280) MoveSize(OLD,OLD,OLD,280);
263
	  IF (Form.width<480) MoveSize(OLD,OLD,480,OLD);
288
	  IF (Form.width<480) MoveSize(OLD,OLD,480,OLD);
264
	//toolbar buttons
289
	//toolbar buttons
265
	PutPaletteImage(#toolbar,246,39,5,0,#toolbar_pal);
290
	PutPaletteImage(#toolbar,246,39,0,0,#toolbar_pal);
266
	FOR (j=0; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,0xE4DFE1);
291
	FOR (j=0; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,0xE4DFE1);
267
	//ïîëîñà àäðåñà
292
	//ïîëîñà àäðåñà
268
	DrawBar(251,0,onLeft(251,60),12,0xE4DFE1); //ôîí íàä ïîëîñîé àäðåñà
293
	DrawBar(246,0,onLeft(246,60),12,0xE4DFE1); //ôîí íàä ïîëîñîé àäðåñà
269
	edit1.width=Form.width-314;
294
	edit1.width=Form.width-314;
270
	edit1.top=13+skin_width;
295
	edit1.top=13;
271
	KEdit();
296
	KEdit();
272
	DrawRegion(251,12,onLeft(61,251),16,0x94AECE);	//îáîäîê
297
	DrawRegion_3D(246,12,onLeft(66,246),16,0x94AECE,0x94AECE);	//îáîäîê
273
	DrawBar(251,29,onLeft(251,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà
298
	DrawBar(246,29,onLeft(246,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà
274
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about
299
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about
275
	DefineButton(onLeft(61,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà
300
	DefineButton(onLeft(61,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà
276
	PutPaletteImage(#goto_about,56,40,Form.width-60,0,#goto_about_pal);
301
	PutPaletteImage(#goto_about,56,40,Form.width-65,0,#goto_about_pal);
277
	//ïðÿìîóãîëüíèêè âíóòðè
302
	//ïðÿìîóãîëüíèêè âíóòðè
278
	DrawRegion(6,40,Form.width-12,Form.height-skin_width-46,0x94AECE); //ñèíèé îáîäîê
303
	DrawRegion_3D(1,40,Form.width-12,Form.height-skin_width-46,0x94AECE,0x94AECE); //ñèíèé îáîäîê
279
	DrawRegion(5,39,Form.width-10,Form.height-skin_width-44,0xE4DFE1); //ôîí
304
	DrawRegion_3D(0,39,Form.width-10,Form.height-skin_width-44,0xE4DFE1,0xE4DFE1); //ôîí
280
    Devices(); //ïàíåëü ñëåâà íà ñèíåì ôîíå
305
    Devices(); //ïàíåëü ñëåâà íà ñèíåì ôîíå
281
	//Buttons
306
	//SortButtons
282
	DrawFlatButton(197,40,onLeft(197,163),16,31,0xE4DFE1,"File");
307
	DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
283
	DrawFlatButton(onLeft(163,0),40,73,16,32,0xE4DFE1,"Type");
-
 
284
	DrawFlatButton(onLeft(90,0),40,68,16,33,0xE4DFE1,"Size");
-
 
285
	IF (sort_num==1) WriteText(onLeft(197,163)/2+197+18,45,0x80,0x4E78AC,"\x19",0);
-
 
286
		ELSE IF (sort_num==2) WriteText(onLeft(110,0),45,0x80,0x4E78AC,"\x19",0);
308
	DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
287
		ELSE WriteText(onLeft(39,0),45,0x80,0x4E78AC,"\x19",0);
309
	DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
288
	//ïðîêðóòêà
310
	//ïðîêðóòêà
289
	DrawFlatButton(onLeft(22,0),40,16,16,50,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
-
 
290
	DrawFlatButton(onLeft(22,0),onTop(22,0),16,16,51,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
311
	DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
291
	//
312
	DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
292
	//DrawBar(197,57,onLeft(22,197),onTop(57,6),0xFFFFFF); //çàëèâêà áåëûì
-
 
293
	//
-
 
294
	DrawBar(onLeft(22,0),57,1,onTop(22,57),0x94AECE); 			//ëèíèÿ ñëåâà îò ïðîêðóòêè  
-
 
295
		but_num=onTop(6,57)/18;
-
 
296
		IF (but_num>100) but_num=1; ELSE IF (kolichestvo
313
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
297
		FOR (j=0;j
-
 
298
		List_ReDraw();
314
	//
299
	IF (del_active==1) Del_Form();
315
	Open_Dir(#path,3);
300
	//
316
	//
Line 309... Line 325...
309
}
325
}
Line 310... Line 326...
310
 
326
 
311
 
327
 
312
inline fastcall void TVScroll() { //Ïðîêðóòêà
328
inline fastcall void TVScroll() { //Ïðîêðóòêà
313
	dword on_y;
329
	dword on_y;
314
	IF (kolichestvo<=0) {DrawFlatButton(onLeft(22,0),57,16,onTop(22,58),0,0xE4DFE1,""); return;}
330
	IF (kolichestvo<=0) {DrawFlatButton(onLeft(27,0),57,16,onTop(22,58),0,0xE4DFE1,""); return;}
315
	on_y = za_kadrom * onTop(22,57) / kolichestvo +57;
331
	on_y = za_kadrom * onTop(22,57) / kolichestvo +57;
316
	razm_scrl=onTop(22,57) * but_num - but_num / kolichestvo;		
332
	razm_scrl=onTop(22,57) * but_num - but_num / kolichestvo;
317
	IF (razm_scrl<20) razm_scrl = 20; //óñòàíàâëèâàåì ìèíèìàëüíûé ðàçìåð ñêðîëëà
333
	IF (razm_scrl<20) razm_scrl = 20; //óñòàíàâëèâàåì ìèíèìàëüíûé ðàçìåð ñêðîëëà
318
	IF (razm_scrl>onTop(22,57)-on_y+56) || (za_kadrom+but_num>=kolichestvo) on_y=onTop(23+razm_scrl,0); //äëÿ áîëüøîãî ñïèñêà 
334
	IF (razm_scrl>onTop(22,57)-on_y+56) || (za_kadrom+but_num>=kolichestvo) on_y=onTop(23+razm_scrl,0); //äëÿ áîëüøîãî ñïèñêà 
319
	DrawFlatButton(onLeft(22,0),on_y,16,razm_scrl,0,0xE4DFE1,"");//ïîëçóíîê
335
	DrawFlatButton(onLeft(27,0),on_y,16,razm_scrl,0,0xE4DFE1,"");//ïîëçóíîê
320
	DrawBar(onLeft(21,0),57,15,on_y-57,0xCED0D0);//ïîëå äî ïîëçóíêà
336
	DrawBar(onLeft(26,0),57,15,on_y-57,0xCED0D0);//ïîëå äî ïîëçóíêà
Line 321... Line 337...
321
	DrawBar(onLeft(21,0),on_y+razm_scrl+1,15,onTop(22,57)-razm_scrl-on_y+56,0xCED0D0); //ïîëå ïîñëå ïîëçóíêà
337
	DrawBar(onLeft(26,0),on_y+razm_scrl+1,15,onTop(22,57)-razm_scrl-on_y+56,0xCED0D0); //ïîëå ïîñëå ïîëçóíêà
322
}
338
}
Line 353... Line 369...
353
			return;
369
			return;
354
		}
370
		}
355
		ELSE
371
		ELSE
356
		{
372
		{
357
			IF(but_num+za_kadrom+curbtn_>=kolichestvo) za_kadrom=kolichestvo-but_num;  ELSE za_kadrom+=curbtn_+curbtn-but_num+1;
373
			IF(but_num+za_kadrom+curbtn_>=kolichestvo) za_kadrom=kolichestvo-but_num;  ELSE za_kadrom+=curbtn_+curbtn-but_num+1;
358
			curbtn=but_num;
374
			curbtn=but_num-1;
359
			List_ReDraw();
375
			List_ReDraw();
360
		}
376
		}
361
	}
377
	}
362
}
378
}
Line 363... Line 379...
363
 
379
 
364
 
380
 
365
void List_ReDraw()
381
void List_ReDraw()
366
{
-
 
367
	IF (kolichestvo-za_kadrom
382
{
368
	{ za_kadrom=kolichestvo-but_num; DrawBar(197,curbtn*18+57,onLeft(22,197),18,0xFFFFFF); curbtn=but_num-1; } 
383
	IF (kolichestvo-za_kadrombut_num-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
369
		ELSE IF (curbtn>but_num-1) curbtn=but_num-1; //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
384
	{ za_kadrom=kolichestvo-but_num; curbtn=but_num-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
370
	//
385
	//
371
	FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn);
386
	FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn);
372
		temp_int=but_num*18+57;
387
		temp_int=but_num*18+57;
373
		DrawBar(197,temp_int,onLeft(22,197),onTop(temp_int,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
388
		DrawBar(192,temp_int,onLeft(27,192),onTop(temp_int,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
374
		DrawBar(onLeft(163,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
389
		DrawBar(onLeft(168,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
375
		DrawBar(onLeft(90,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
390
		DrawBar(onLeft(95,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
Line 376... Line 391...
376
	TVScroll();
391
	TVScroll();
377
}
392
}
378
 
393
 
379
 
394
 
380
void Line_ReDraw(dword color, filenum){
395
void Line_ReDraw(dword color, filenum){
381
	dword y;//ïîëîæåíèå òåêñòà ïî Y;
396
	dword y;//ïîëîæåíèå òåêñòà ïî Y;
382
	if (rename_active==1)
397
	if (rename_active==1)
383
	{
398
	{
384
		rename_active=0;
399
		rename_active=0;
385
		edit2.flags=64;
400
		edit2.flags=64;
386
		DefineButton(197,curbtn*18+57,onLeft(22,197),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
401
		DefineButton(192,curbtn*18+57,onLeft(27,192),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
387
		IF (filenum==100) filenum=curbtn; else
402
		IF (filenum==100) filenum=curbtn; else
388
		{
403
		{
389
			copystr(#path,#temp);
404
			copystr(#path,#temp);
390
			copystr(#file_name,#temp+strlen(#temp));
405
			copystr(#file_name,#temp+strlen(#temp));
391
			if (strcmp(#file_path,#temp)<>0) && (strlen(#file_name)>0)
406
			if (strcmp(#file_path,#temp)<>0) && (strlen(#file_name)>0)
392
			IF (isdir)
407
			IF (isdir)
393
			{
408
			{
394
				//Del_File(true);
409
				//Del_File(true);
395
				DeleleFile(#file_path);
410
				DeleleFile(#file_path);
396
				IF (EAX<>0) {DrawFlatButton(Form.width-200+197/2,160,200,80,0,0xFFB6B5, "Error. Folder isn't empty."); Pause(200);}
411
				IF (EAX) {DrawFlatButton(Form.width-200+192/2,160,200,80,0,0xFFB6B5, "Error. Folder isn't empty."); Pause(200);}
397
				ELSE CreateFolder(#temp);
412
				ELSE CreateFolder(#temp);
398
				Open_Dir(#path,1);
413
				Open_Dir(#path,1);
399
			}
414
			}
400
			ELSE { CopyFile(#file_path,#temp);	Del_File(true); }
415
			ELSE { CopyFile(#file_path,#temp);	Del_File(true); }
401
		}
416
		}
402
	}
-
 
403
	y=filenum*18+57;
417
	}
404
	//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî ïåðåðèñîâêà çàòî ìàëåíüêàÿ
-
 
405
	DrawBar(197,y,3,18,color);
418
	y=filenum*18+57;
406
	DrawBar(200,y,16,2,color);
419
	//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî ïåðåðèñîâêà çàòî ìàëåíüêàÿ
407
	DrawBar(197+19,y,onLeft(22+19,197),18,color);
420
	DrawBar(192,y,3,18,color); DrawBar(195,y,16,2,color); 
408
	DrawBar(200,y+17,16,1,color);
421
	DrawBar(192+19,y,onLeft(46,192),18,color); DrawBar(195,y+17,16,1,color);
409
	//
422
	//
410
	IF (strcmp(".",buf+72)<>0) off=file_mas[filenum+za_kadrom]*304 + buf+72; ELSE off=file_mas[filenum+za_kadrom+1]*304 + buf+72;
423
	off=file_mas[filenum+za_kadrom]*304 + buf+72;
411
	EAX=ESDWORD[off-40];
424
	EAX=ESDWORD[off-40];
412
	$shr eax,4
425
	$shr eax,4
413
	$and eax,1
426
	$and eax,1
414
	IF (color==videlenie) isdir=EAX;
427
	IF (color==videlenie) isdir=EAX;
415
	if (!EAX)
428
	if (!EAX)
416
	{
429
	{
417
		temp_int = Put_icon(off+strlen(off)-4, y+2);
430
		temp_int = Put_icon(off+strlen(off)-4, y+2);
418
		WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size
431
		WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(70,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size
419
	} ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("", y+2);
-
 
420
	if (color==videlenie)
432
	} ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("", y+2);
-
 
433
	if (color==videlenie)
421
	{
434
	{
422
		IconFairing(temp_int, y+2); //çàêðàøèâàåì èêîíêó
435
		IconFairing(temp_int, y+2); //çàêðàøèâàåì èêîíêó
423
		copystr(#path,#file_path);
436
		copystr(off,#file_name);
424
		copystr(off,#file_name);
437
		copystr(#path,#file_path);
425
		copystr(off,#file_path+strlen(#file_path)); //èòàê, file_path=ôàéëó, ò.ê. ïî-óìîë÷àíèþ ýòî ïðîãà
438
		copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó
426
		/*IF (show_preview) && (!isdir)
439
		/*IF (show_preview) && (!isdir)
427
		{
440
		{
428
			GetImage(#file_path);
441
			GetImage(#file_path);
429
			j=dev_num*16+123;
442
			j=dev_num*16+123;
430
			j+=show_actions*51;
443
			j+=show_actions*51;
431
			IF (pLoadedImage<>0) DrawImage(#CurrentImage, 22*65536+j+skin_width+18);
444
			IF (pLoadedImage<>0) DrawImage(#CurrentImage, 22*65536+j+skin_width+18);
432
		}*/
445
		}*/
433
	}
446
	}
434
	temp_int = onLeft(220,160)/6;
447
	temp_int = onLeft(215,160)/6;
435
	IF (strlen(off)
448
	IF (strlen(off)
Line 436... Line 449...
436
		WriteText(220,y+6,0,0,off,temp_int);  //èìÿ ôàéëà
449
		WriteText(215,y+6,0,0,off,temp_int);  //èìÿ ôàéëà
-
 
450
	DrawBar(onLeft(168,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
-
 
451
	DrawBar(onLeft(95,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
-
 
452
}
-
 
453
 
-
 
454
 
-
 
455
void Open_Dir(dword temp_, redraw){
437
	DrawBar(onLeft(163,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
456
	byte path_[256], somelen=strlen(temp_)-1;
438
	DrawBar(onLeft(90,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
-
 
439
}
-
 
440
 
457
	if (redraw<>3)
441
 
458
	{
442
void Open_Dir(dword path_,redraw){
-
 
443
  IF (buf) free(buf);
459
		copystr(temp_, #path_);
444
	//buf = malloc(2097152);
460
		IF (somelen) path_[somelen]=0x00;
445
	//ReadDir(6898, buf, path_);
461
		//
446
    buf = malloc(32);
-
 
-
 
462
		IF (buf) free(buf);
447
	ReadDir(0, buf, path_);
463
    	buf = malloc(32);
448
    EAX = buf + 8;
464
		ReadDir(0, buf, #path_);
449
    kolichestvo = ESDWORD[EAX];
465
    	kolichestvo = ESDWORD[buf+8];
450
    buf = realloc(kolichestvo * 304 + 32, buf);
466
    	buf = realloc(kolichestvo * 304 + 32, buf);
451
	ReadDir(kolichestvo, buf, path_);
467
		ReadDir(kolichestvo, buf, #path_);
452
	//
468
		IF (EBX>6898) && (EBX<>-1) EBX=6898;
453
	kolichestvo=EBX;
469
		kolichestvo=EBX;
454
	//
-
 
455
	if (kolichestvo<>-1) && (redraw>0)
-
 
456
	{
470
	}
457
		FOR (j=0;j0) ChangeCase(off);} //ðåãèñòð
471
	if (kolichestvo<>-1) && (redraw>0)
458
		FOR (j=0;j
472
	{
459
		but_num=onTop(6,57)/18;
473
		IF (!strcmp(".",buf+72)) {memmov(buf,buf+304,kolichestvo-1*304); kolichestvo--; } //ôèëüòðóåì ýëåìåíò "."
460
		IF (strcmp(".",buf+72)==0) kolichestvo--; //ôèëüòðóåì ýëåìåíò "."
474
		FOR (j=0;j
461
		//IF (strcmp(".",buf+72)==0) copystr(304+buf+72,buf);
475
		but_num=onTop(6,57)/18;                                                                                             
462
		IF (but_num>100) but_num=1; ELSE//ýòà ñòðàííàÿ ñòðî÷êà äëÿ òîãî åñëè ðàçìåðû îêíà ñëèøêîì ìàëåíüêèå
476
		IF (but_num>100) but_num=1; ELSE //ýòà ñòðàííàÿ ñòðî÷êà äëÿ òîãî åñëè ðàçìåðû îêíà ñëèøêîì ìàëåíüêèå
463
		IF (kolichestvo
477
		IF (kolichestvo
464
		FOR (j=0;j
478
		FOR (j=0;j
-
 
479
		IF (redraw<>3) Sorting();
-
 
480
		IF (redraw==1) || (redraw==3) List_ReDraw();
-
 
481
		copystr(temp_,#edit_path);
-
 
482
		KEdit();
465
		FoldesGoUp();
483
		copystr("|",#PathHistory+strlen(#PathHistory));
-
 
484
		copystr(#path,#PathHistory+strlen(#PathHistory));
466
		IF (redraw==1) List_ReDraw();
485
		//ñòðåëî÷êà ñîðòèðîâêè
Line 467... Line 486...
467
		copystr(path_,#edit_path);
486
		IF (sort_num==1) WriteText(onLeft(192,168)/2+210,45,0x80,0x4E78AC,"\x19",0);
468
		KEdit();
487
		IF (sort_num==2) WriteText(onLeft(115,0),45,0x80,0x4E78AC,"\x19",0);
469
		copystr("|",#PathHistory+strlen(#PathHistory));
488
		IF (sort_num==3) WriteText(onLeft(44,0),45,0x80,0x4E78AC,"\x19",0);
470
		copystr(#path,#PathHistory+strlen(#PathHistory));
-
 
471
	}
489
	}
472
}
490
	IF (kolichestvo==-1) {but_num=kolichestvo=0; List_ReDraw();}
473
 
491
}
-
 
492
 
474
 
493
 
475
 
494
 
476
void FoldesGoUp()
495
inline Sorting()
477
{
496
{
478
	dword k=0, l=0; off=buf+72;
497
	dword k=0, l=1;
479
	IF (strcmp(#path,"/rd/1/")==0) || (strcmp(#path,"/fd/1/")==0) kolichestvo--; 
-
 
480
	IF (strcmp(".",buf+72)<>0) && (strlen(#path)>6) kolichestvo--; //ôàê! ýòî áðåä! õç êàê îíî ðàáîòàåò
-
 
481
	FOR (j=0;j<=kolichestvo;j++)  //à ïàïêè ââåðõ, ôàéëû âíèç
-
 
482
	{
-
 
483
		EAX=ESDWORD[off-40];
-
 
484
		$shr eax,4
-
 
485
		$and eax,1
-
 
486
		IF (EAX) {file_mas[k]=j; k++;}
-
 
487
			ELSE {file_mas[kolichestvo-l]=j; l++;}
-
 
488
		off += 304;
-
 
489
	}
-
 
490
	switch(sort_num)
-
 
491
	{
-
 
492
		CASE 1: //óïîðÿäî÷èâàåì ôàéëû ïî èìåíè
-
 
493
			WriteText(onLeft(197,163)/2+215,45,0x80,0x4E78AC,"\x19",0);
-
 
494
			IF (strcmp(#path,"/")==0) break;
-
 
495
			IF (strcmp("..",buf+72+304)<>0) Sort_by_Name(k,kolichestvo-1); ELSE Sort_by_Name(k,kolichestvo);
-
 
496
			break;
498
	IF (!strcmp(#path,"/")) {FOR(k=1;k
-
 
499
	FOR (j=kolichestvo-1, off=kolichestvo-1*304+buf+32; j>=0; j--, off-=304;)  //ïàïêè ââåðõ, ôàéëû âíèç
-
 
500
	{
497
		case 2: //óïîðÿäî÷èâàåì ôàéëû ïî òèïó
501
		ChangeCase(off+40);
498
			WriteText(onLeft(110,0),45,0x80,0x4E78AC,"\x19",0);
502
		EAX=ESDWORD[off];
-
 
503
		$shr eax,4
-
 
504
		$and eax,1
-
 
505
		IF (EAX) {file_mas[k]=j; k++;} ELSE
499
			IF (strcmp("..",buf+72+304)<>0) Sort_by_Type(k, kolichestvo-1); ELSE Sort_by_Type(k, kolichestvo);
506
			 {file_mas[kolichestvo-l]=j; l++;}
Line 500... Line -...
500
			break;
-
 
501
		case 3:
-
 
502
			WriteText(onLeft(39,0),45,0x80,0x4E78AC,"\x19",0);
-
 
503
			IF (strcmp("..",buf+72+304)<>0) Sort_by_Size(k,kolichestvo-1); ELSE Sort_by_Size(k,kolichestvo);
-
 
504
			BREAK;
507
	}
505
	}
508
	//Ñîáñòâåííî ñîðòèðîâêà
506
	IF (strcmp(#path,"/")<>0) IF (strcmp("..",304+buf+72)<>0) Sort_by_Name(0,k-1); ELSE Sort_by_Name(2,k-1); //èíîãäà èìÿ ïàïêè íà÷èíàåòñÿ ñ !,&...
509
	Sort_by_Name(0,k-1);
507
	IF (strcmp(".",buf+72)<>0) && (strlen(#path)>6) kolichestvo++;
510
	IF (sort_num==1) Sort_by_Name(k,kolichestvo-1);
508
}
511
	IF (sort_num==2) Sort_by_Type(k, kolichestvo-1);
509
 
512
	IF (sort_num==3) Sort_by_Size(k,kolichestvo-1);
510
 
513
	//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
511
dword onLeft(dword right,left) {return Form.width-right-left;}
514
	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]>
512
dword onTop(dword down,up) {return Form.height-skin_width-down-up;}
515
}
513
 
516
 
514
 
517
 
515
void Del_Form()
518
void Del_Form()
516
{
519
{
517
	temp_int=Form.width-200+197/2;
520
	int dform_x=Form.width/2-13;
518
	//òèïà îêíî
521
	//òèïà îêíî
519
	FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé
522
	FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé
520
	DrawFlatButton(temp_int,160,200,80,0,0xE4DFE1, ""); //ôîðìà
523
	DrawFlatButton(dform_x,160,200,80,0,0xE4DFE1, ""); //ôîðìà
521
	WriteText(temp_int+19,175,0x80,0,"Do you really want to delete",0);
524
	WriteText(dform_x+19,175,0x80,0,"Do you really want to delete",0);
522
	IF (strlen(#file_name)<28) 
525
	IF (strlen(#file_name)<28) 
523
		{
526
		{
524
			WriteText(strlen(#file_name)*6+temp_int+20,190,0x80,0,"?",0);
527
			WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?",0);
525
			WriteText(temp_int+20,190,0x80,0,#file_name,0); //ïèøåì èìÿ
528
			WriteText(dform_x+20,190,0x80,0,#file_name,0); //ïèøåì èìÿ
Line 526... Line 529...
526
		}
529
		}
527
	ELSE
530
	ELSE
528
		{
531
		{
529
			WriteText(164+temp_int,190,0x80,0,"...?",0);
532
			WriteText(164+dform_x,190,0x80,0,"...?",0);
530
			WriteText(temp_int+20,190,0,0,#file_name,24); //ïèøåì èìÿ
533
			WriteText(dform_x+20,190,0,0,#file_name,24); //ïèøåì èìÿ
531
		}
534
		}
532
	//êíîïî÷êè
535
	//êíîïî÷êè
533
	DrawFlatButton(temp_int+20,208,70,20,301,0xFFB6B5,"Yes");
536
	DrawFlatButton(dform_x+20,208,70,20,301,0xFFB6B5,"Yes");
534
	DrawFlatButton(temp_int+111,208,70,20,302,0xC6DFC6,"No");
537
	DrawFlatButton(dform_x+111,208,70,20,302,0xC6DFC6,"No");
535
	del_active=1;
538
	del_active=1;
536
}
539
}
Line 537... Line 540...
537
 
540
 
538
	
541
	
539
void Del_File(byte dodel)
542
void Del_File(byte dodel)
540
{    
543
{    
541
	IF (dodel==true)
544
	IF (dodel==true)
542
	{
545
	{
543
		DeleleFile(#file_path);
546
		DeleleFile(#file_path);
544
		IF (EAX<>0) && (isdir==true) {DrawFlatButton(temp_int,160,200,80,0,0xFFB6B5, "Error. Folder isn't empty."); Pause(200);}
547
		IF (EAX<>0) && (isdir==true) {DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. Folder isn't empty."); Pause(200);}
545
 	}
548
 	}
546
	del_active=0;
549
	del_active=0;
547
	DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No
550
	DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No
548
	Open_Dir(#path,1);
551
	Open_Dir(#path,1);
549
}    
552
}    
550
 
553
 
551
 
554
 
552
void Paste()
555
void Paste()
553
{
556
{
554
	IF (strcmp(#copyfile,"")==0) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè
557
	IF (!copy_file) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè
555
	copystr(#path,#temp);
558
	copystr(#path,#temp);
556
	copystr(#copy_name,#temp+strlen(#temp));
559
	copystr(#copy_file+find_symbol(#copy_file,'/'),#temp+strlen(#temp));
557
	if (strcmp(#copyfile,#temp)==0) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå
560
	if (strcmp(#copy_file,#temp)==0) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå
Line 558... Line 561...
558
		{
561
		{
559
			copystr(#path,#temp);
562
			copystr(#path,#temp);
560
			copystr("new_",#temp+strlen(#temp));
563
			copystr("new_",#temp+strlen(#temp));
561
			copystr(#copy_name,#temp+strlen(#temp));
564
			copystr(#copy_file+find_symbol(#copy_file,'/'),#temp+strlen(#temp));
562
		}
565
		}
563
	CopyFile(#copyfile,#temp);
566
	CopyFile(#copy_file,#temp);
564
	IF (cut_active==1) //åñëè ìû âûáðàëè âûðåçàòü
567
	IF (cut_active==1) //åñëè ìû âûáðàëè âûðåçàòü
565
		{
568
		{
Line 566... Line 569...
566
			copystr(#copyfile,#file_path);
569
			copystr(#copy_file,#file_path);
567
			Del_File(true);
570
			Del_File(true);
568
			copyfile='';
571
			copy_file='';
569
			cut_active=0;
572
			cut_active=0;
570
		}
573
		}
571
	Open_Dir(#path,1);
574
	Open_Dir(#path,1);
572
}
575
}
573
 
576
 
574
 
577
 
575
void Tip(int y, dword caption, id, arrow)
578
void Tip(int y, dword caption, id, arrow)
576
{
579
{
577
	DrawBar(22,y,160,17,0xE4DFE1); //ñåðîå ñâåðõó
580
	DrawBar(17,y,160,17,0xE4DFE1); //ñåðîå ñâåðõó
578
	WriteText(30,y+5,0x80,0,caption,0);		//text Goto:
581
	WriteText(25,y+5,0x80,0,caption,0);		//text Goto:
579
	IF (id<>0) DefineButton(164,y+1,16,16,id+BT_HIDE+BT_NOFRAME,0xE4DFE1); //êíîïà äëÿ ñòðåëêè
582
	IF (id<>0) DefineButton(159,y+1,16,16,id+BT_HIDE+BT_NOFRAME,0xE4DFE1); //êíîïà äëÿ ñòðåëêè
580
	WriteText(170,y+5,0x80,0,arrow,0); //ñòðåëêà âíèç
583
	WriteText(165,y+5,0x80,0,arrow,0); //ñòðåëêà âíèç
581
	DrawBar(22,y+17,160,1,0x94AECE);		//ïîä÷¸ðêèâàíèå
584
	DrawBar(17,y+17,160,1,0x94AECE);		//ïîä÷¸ðêèâàíèå
582
}
585
}
Line 603... Line 606...
603
		IF (dev_name[0]=='c')  {copystr("CD-drive /",#drive_name); dev_icon=1;}
606
		IF (dev_name[0]=='c')  {copystr("CD-drive /",#drive_name); dev_icon=1;}
604
		copystr(#dev_name,#drive_name+strlen(#drive_name));
607
		copystr(#dev_name,#drive_name+strlen(#drive_name));
605
		copystr("/",#drive_name+strlen(#drive_name));
608
		copystr("/",#drive_name+strlen(#drive_name));
606
		IF (dev_name[0]=='r')  { copystr("RAM-disk /rd/1/",#drive_name); dev_icon=0; }
609
		IF (dev_name[0]=='r')  { copystr("RAM-disk /rd/1/",#drive_name); dev_icon=0; }
607
	  WriteText(45,i*16+79,0x80,0,#drive_name,0);
610
	  WriteText(45,i*16+79,0x80,0,#drive_name,0);
608
	  PutImage(dev_icon*14*13*3+#devices,14,13,26,i*16+76);
611
	  PutImage(dev_icon*14*13*3+#devices,14,13,21,i*16+76);
609
	}
612
	}
610
	Actions();  //ôóíêöèè ôàéëîâ è ïàïîê
613
	Actions();  //ôóíêöèè ôàéëîâ è ïàïîê
611
	Preview();
614
	Preview();
612
}
615
}
Line 613... Line 616...
613
 
616
 
614
 
617
 
615
void Actions()
618
void Actions()
616
{
619
{
617
	DrawBar(22,dev_num*16+75,160,15,0x00699C); //ñèíèé ïðÿìîóãîëüíèê - ïîä äåâàéñàìè
620
	DrawBar(17,dev_num*16+75,160,15,0x00699C); //ñèíèé ïðÿìîóãîëüíèê - ïîä äåâàéñàìè
618
	if (show_actions==1)
621
	if (show_actions==1)
619
	{
622
	{
620
		Tip(dev_num*16+90, "Actions", 77, "\x19");
623
		Tip(dev_num*16+90, "Actions", 77, "\x19");
621
		DrawBar(22,dev_num*16+108,160,51,0xFFFFFF); //áåëîå
624
		DrawBar(17,dev_num*16+108,160,51,0xFFFFFF); //áåëîå
622
		PutImage(#factions,16,44,26,dev_num*16+113); //ïèêòîãðàìêè
625
		PutImage(#factions,16,44,21,dev_num*16+113); //ïèêòîãðàìêè
623
		//rename file 
626
		//rename file 
624
		DefineButton(22,dev_num*16+108,159,16,80+BT_HIDE,0xE4DFE1);
627
		DefineButton(22,dev_num*16+108,159,16,80+BT_HIDE,0xE4DFE1);
625
		WriteText(47,dev_num*16+113,0x80,0,"Rename file ",0);
628
		WriteText(42,dev_num*16+113,0x80,0,"Rename file ",0);
626
		//delete file
629
		//delete file
627
		DefineButton(22,dev_num*16+125,159,16,81+BT_HIDE,0xE4DFE1);
630
		DefineButton(17,dev_num*16+125,159,16,81+BT_HIDE,0xE4DFE1);
628
		WriteText(47,dev_num*16+130,0x80,0,"Delete file ",0);
631
		WriteText(42,dev_num*16+130,0x80,0,"Delete file ",0);
629
		//create folder
632
		//create folder
630
		DefineButton(22,dev_num*16+142,159,16,82+BT_HIDE,0xE4DFE1);
633
		DefineButton(17,dev_num*16+142,159,16,82+BT_HIDE,0xE4DFE1);
631
		WriteText(47,dev_num*16+147,0x80,0,"Create folder ",0);
634
		WriteText(42,dev_num*16+147,0x80,0,"Create folder ",0);
632
		DrawBar(22,dev_num*16+159,160,15,0x00699C); //ñèíåå ïîñëå Actions
635
		DrawBar(17,dev_num*16+159,160,15,0x00699C); //ñèíåå ïîñëå Actions
633
	}
636
	}
634
	ELSE
637
	ELSE
635
	{
638
	{
636
	DeleteButton(80);	DeleteButton(81);	DeleteButton(82);
639
	DeleteButton(80);	DeleteButton(81);	DeleteButton(82);
637
	Tip(dev_num*16+90, "Actions", 77, "\x18");
640
	Tip(dev_num*16+90, "Actions", 77, "\x18");
638
	DrawBar(22,dev_num*16+108,160,51,0x00699C); //ñèíåå
641
	DrawBar(17,dev_num*16+108,160,51,0x00699C); //ñèíåå
Line 639... Line 642...
639
	}
642
	}
640
}
643
}
641
 
644
 
642
 
645
 
643
void Dir_Up()
646
void Dir_Up()
644
{
647
{
645
	byte temp_[256];
648
	char temp_[256];
646
	i=strlen(#path)-1;
649
	i=strlen(#path)-1;
647
	path[i]=0x00;
650
	path[i]=0x00;
648
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_); 
651
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_); 
649
	path[i+1]=0x00;
652
	path[i+1]=0x00;
650
	ChangeCase(#temp_);
653
	ChangeCase(#temp_);
651
	za_kadrom=curbtn=0; //ââåðõ ñïèñêà
654
	za_kadrom=curbtn=0; //ââåðõ ñïèñêà
652
   	Open_Dir(#path,2);
655
   	Open_Dir(#path,2);
653
	FOR (i=kolichestvo; i>0; i--;)	IF(strcmp(file_mas[i]*304+buf+72,#temp_)==0) BREAK;
656
	FOR (i=kolichestvo-1; i>0; i--;) IF(strcmp(file_mas[i]*304+buf+72,#temp_)==0) BREAK;
654
	//
657
	//
655
	if (i>kolichestvo-but_num)
658
	if (i>kolichestvo-but_num)
656
	{
659
	{
657
		za_kadrom=kolichestvo-but_num;
660
		za_kadrom=kolichestvo-but_num;
658
		IF (strcmp(".",buf+72)<>0) curbtn=i-kolichestvo+but_num; ELSE curbtn=i-kolichestvo+but_num-1;
661
		curbtn=i-kolichestvo+but_num;
Line 659... Line 662...
659
	}
662
	}
Line 668... Line 671...
668
	top_pr+=show_actions*51; //íà÷èíàåì íèæå, åñëè Ýêøíñ âèäèìû
671
	top_pr+=show_actions*51; //íà÷èíàåì íèæå, åñëè Ýêøíñ âèäèìû
669
	DeleteButton(78);
672
	DeleteButton(78);
670
	if (show_preview==1)
673
	if (show_preview==1)
671
	{
674
	{
672
		Tip(top_pr,"Preview",78,"\x19");
675
		Tip(top_pr,"Preview",78,"\x19");
673
		DrawBar(22,top_pr+18,160,100,0xFFFFFF); //áåëîå
676
		DrawBar(17,top_pr+18,160,100,0xFFFFFF); //áåëîå
674
		/*WriteText(30,top_pr+30,0x80,0,"kolichestvo:",0); WriteText(105,top_pr+30,0x80,0,IntToStr(kolichestvo),0); 
677
		WriteText(25,top_pr+30,0x80,0,"Number of files:",0); WriteText(135,top_pr+30,0x80,0,IntToStr(kolichestvo),0); 
675
		WriteText(30,top_pr+40,0x80,0,"but_num:",0);	 WriteText(105,top_pr+40,0x80,0,IntToStr(but_num),0);
678
		/*WriteText(30,top_pr+40,0x80,0,"but_num:",0);	 WriteText(105,top_pr+40,0x80,0,IntToStr(but_num),0);
676
		WriteText(30,top_pr+50,0x80,0,"curbtn",0);		 WriteText(105,top_pr+50,0x80,0,IntToStr(curbtn),0);
679
		WriteText(30,top_pr+50,0x80,0,"curbtn",0);		 WriteText(105,top_pr+50,0x80,0,IntToStr(curbtn),0);
677
		WriteText(30,top_pr+60,0x80,0,"ra_kadrom:",0);	 WriteText(105,top_pr+60,0x80,0,IntToStr(za_kadrom),0);
680
		WriteText(30,top_pr+60,0x80,0,"ra_kadrom:",0);	 WriteText(105,top_pr+60,0x80,0,IntToStr(za_kadrom),0);
678
		WriteText(30,top_pr+70,0x80,0,#file_path,0);
681
		WriteText(30,top_pr+70,0x80,0,#file_path,0);
679
		WriteText(30,top_pr+80,0x80,0,#file_name,0);*/
682
		WriteText(30,top_pr+80,0x80,0,#file_name,0);*/
680
		//WriteText(30,top_pr+60,0x80,0,"Not realized... I think",0);
683
		//WriteText(30,top_pr+60,0x80,0,"Not realized... I think",0);
681
		//WriteText(30,top_pr+70,0x80,0,"it will be realired soon.",0);
684
		//WriteText(30,top_pr+70,0x80,0,"it will be realired soon.",0);
682
		DrawBar(22,top_pr+118,160,onTop(top_pr+118,6),0x00699C); //ñèíåå  
685
		DrawBar(17,top_pr+118,160,onTop(top_pr+118,6),0x00699C); //ñèíåå  
683
	} 
686
	} 
684
	ELSE
687
	ELSE
685
	{
688
	{
686
		Tip(top_pr,"Preview",78,"\x18");
689
		Tip(top_pr,"Preview",78,"\x18");
687
		DrawBar(22,top_pr+18,160,onTop(top_pr+18,6),0x00699C); //ñèíåå
690
		DrawBar(17,top_pr+18,160,onTop(top_pr+18,6),0x00699C); //ñèíåå
688
	}
691
	}
689
}
692
}
Line 690... Line 693...
690
 
693
 
Line 698... Line 701...
698
		{za_kadrom=curbtn=0; copystr(#edit_path,#path);}//íàâåðõ ñïèñêà
701
		{za_kadrom=curbtn=0; copystr(#edit_path,#path);}//íàâåðõ ñïèñêà
699
	Open_Dir(#path,1);
702
	Open_Dir(#path,1);
700
}
703
}
Line -... Line 704...
-
 
704
 
701
 
705
 
702
 
706
 
703
inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
707
inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
704
{
708
{
705
	//char old_dir[256]='';
709
	//char old_dir[256]='';