Subversion Repositories Kolibri OS

Rev

Rev 2054 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2054 Rev 2098
1
//Leency & Veliant -=- KolibriOS Team -=- 2011
1
//Leency & Veliant -=- KolibriOS Team -=- 2011
2
//GNU GPL licence.
2
//GNU GPL licence.
3
 
3
 
4
 
4
 
5
//íå âûäåëÿåò, åñëè ïåðåèìåíîâàòü â /rd/1/ -----   ñòðî÷êà 392
5
//íå âûäåëÿåò, åñëè ïåðåèìåíîâàòü â /rd/1/ -----   ñòðî÷êà 392
6
//ïðè îòêðûòèè ïðîãðàììû ñ ïàðàìåòðîì âûäåëÿåò ïîñëåäíèé ôàéë â ïàïêå
6
//ïðè îòêðûòèè ïðîãðàììû ñ ïàðàìåòðîì âûäåëÿåò ïîñëåäíèé ôàéë â ïàïêå
-
 
7
//íåìíîãî êðèâàÿ ïðîêðóòêà
7
 
-
 
8
#codesize  
8
 
9
#include "lib\kolibri.h--"
9
#include "lib\kolibri.h--"
10
#include "lib\memory.h--"
10
#include "lib\memory.h--"
11
#include "lib\edit_box_lib.h--"
11
#include "lib\edit_box_lib.h--"
12
#include "lib\file_system.h--" 
12
#include "lib\file_system.h--" 
13
#include "imgs\toolbar.txt"
13
#include "imgs\toolbar.txt"
14
#include "imgs\left_p.txt"
14
#include "imgs\left_p.txt"
15
 
15
 
16
 
16
 
17
//ïåðåìåííûå
17
//ïåðåìåííûå
18
#define title "Eolite File Manager v0.98.9"
18
#define title "Eolite File Manager v0.99"
19
#define videlenie 0x94AECE //0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
19
#define videlenie 0x94AECE //0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
20
byte toolbar_buttons_x[6]={9,46,85,134,167,203};
20
byte toolbar_buttons_x[6]={9,46,85,134,167,203};
21
//
21
//
22
int  but_num,
22
int  but_num,
23
     count,
23
     count,
24
     za_kadrom,
24
     za_kadrom,
25
     curbtn,
25
     curbtn,
26
     scroll_size;
26
     scroll_size;
27
byte cut_active,
27
byte cut_active,
28
     rename_active,
28
     rename_active,
29
     del_active;
29
     del_active;
30
byte show_actions=1,
30
byte show_actions=1,
31
     sort_num=2,
31
     sort_num=2,
32
     isdir;
32
     isdir;
33
char path[4096]="/rd/1/",
33
char path[4096]="/rd/1/",
34
     edit_path[4096],
34
     edit_path[4096],
35
     file_path[4096],
35
     file_path[4096],
36
     file_name[4096],
36
     file_name[4096],
37
     copy_file[4096],
37
     copy_file[4096],
38
     temp[4096];
38
     temp[4096];
39
byte PathHistory[4096];
39
byte PathHistory[4096];
40
 
40
 
41
dword file_mas[6898];
41
dword file_mas[6898];
42
int j, i, mouse_dd;
42
int j, i, mouse_dd;
43
 
43
 
44
dword stak[100]=0; //îêíî About 
44
dword stak[100]=0; //îêíî About 
45
 
45
 
46
edit_box edit1= {250,247,13,0xffffff,videlenie,0xD3DDEB,0xffffff,0,248,#edit_path,#mouse_dd,64,6,6};
46
edit_box edit1= {250,247,13,0xffffff,videlenie,0xD3DDEB,0xffffff,0,248,#edit_path,#mouse_dd,64,6,6};
47
edit_box edit2= {250,213,80,0xFFFFCC,videlenie,0xFFFFCC,0xffffff,0,248,#file_name,#mouse_dd,64,6,6};
47
edit_box edit2= {250,213,80,0xFFFFCC,videlenie,0xFFFFCC,0xffffff,0,248,#file_name,#mouse_dd,64,6,6};
48
 
48
 
49
proc_info Form;
49
proc_info Form;
50
dword buf, off; //äëÿ òåêñòà è áóôåðà
50
dword buf, off; //äëÿ òåêñòà è áóôåðà
51
dword devbuf, dev_num;
51
dword devbuf, dev_num;
52
#include "include\LVabout.h--"
52
#include "include\LVabout.h--"
53
#include "include\sorting.h--"
53
#include "include\sorting.h--"
54
#include "include\icons_f.h--"
54
#include "include\icons_f.h--"
55
#include "include\ini.h--"
55
#include "include\ini.h--"
56
 
56
 
57
 
57
 
58
void Devices()
58
void Devices()
59
{    
59
{    
60
	//on load
60
	//on load
61
	/*devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
61
	/*devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
62
	ReadDir(10, devbuf, "/");
62
	ReadDir(10, devbuf, "/");
63
	dev_num=EBX;
63
	dev_num=EBX;
64
	*/
64
	*/
65
      
65
      
66
	byte dev_icon; dword drive_name[30]; char dev_name[4];
66
	byte dev_icon; dword drive_name[30]; char dev_name[4];
67
	DrawBar(2,41,190,15,0x00699C);		//ñèíèé ïðÿìîóãîëüíèê - ñâåðõó
67
	DrawBar(2,41,190,15,0x00699C);		//ñèíèé ïðÿìîóãîëüíèê - ñâåðõó
68
	DrawBar(2,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñëåâà       
68
	DrawBar(2,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñëåâà       
69
	DrawBar(177,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñïðàâà
69
	DrawBar(177,56,15,onTop(21,41),0x00699C);	//ñèíèé ïðÿìîóãîëüíèê - ñïðàâà
70
	//ñïèñîê äèñêîâ
70
	//ñïèñîê äèñêîâ
71
	Tip(56, "Goto:", 0, "");
71
	Tip(56, "Goto:", 0, "");
72
	for (i=0;i
72
	for (i=0;i
73
	{
73
	{
74
		DrawBar(17,i*16+74,160,17,0xFFFFFF); //áåëîå
74
		DrawBar(17,i*16+74,160,17,0xFFFFFF); //áåëîå
75
		DefineButton(17,i*16+74,159,16,100+i+BT_HIDE,0xFFFFFF); //ñîçäà¸ì êíîïêè, à ïîòîì âûâîäèì íàçâàíèÿ äèñêîâ
75
		DefineButton(17,i*16+74,159,16,100+i+BT_HIDE,0xFFFFFF); //ñîçäà¸ì êíîïêè, à ïîòîì âûâîäèì íàçâàíèÿ äèñêîâ
76
		copystr("Unknown drive",#drive_name); //èçíà÷àëüíî íåèçâåñíûé íîñèòåëü
76
		copystr("Unknown drive",#drive_name); //èçíà÷àëüíî íåèçâåñíûé íîñèòåëü
77
		dev_icon=3; //ïî-óìîë÷àíèþ óñòðîéñòâî âûãëÿäèò êàê æåñòÿê
77
		dev_icon=3; //ïî-óìîë÷àíèþ óñòðîéñòâî âûãëÿäèò êàê æåñòÿê
78
		copystr(i*304+ devbuf+72, #dev_name);
78
		copystr(i*304+ devbuf+72, #dev_name);
79
		IF (dev_name[0]=='r')  { dev_icon=0; copystr("RAM-disk /rd/1",#drive_name); }
79
		IF (dev_name[0]=='r')  { dev_icon=0; copystr("RAM-disk /rd/1",#drive_name); }
80
		IF (dev_name[0]=='c')  { dev_icon=1; copystr("CD-drive /",#drive_name); }
80
		IF (dev_name[0]=='c')  { dev_icon=1; copystr("CD-drive /",#drive_name); }
81
		IF (dev_name[0]=='f')  { dev_icon=2; copystr("Floppy disk /",#drive_name); }
81
		IF (dev_name[0]=='f')  { dev_icon=2; copystr("Floppy disk /",#drive_name); }
82
		IF (dev_name[0]=='h')   copystr("Hard disk drive /",#drive_name); 
82
		IF (dev_name[0]=='h')   copystr("Hard disk drive /",#drive_name); 
83
		IF (dev_name[0]=='b')   copystr("SATA disk drive /",#drive_name); 
83
		IF (dev_name[0]=='b')   copystr("SATA disk drive /",#drive_name); 
84
		//
84
		//
85
		IF (dev_icon<>0) copystr(#dev_name,#drive_name+strlen(#drive_name));
85
		IF (dev_icon<>0) copystr(#dev_name,#drive_name+strlen(#drive_name));
86
		copystr("/",#drive_name+strlen(#drive_name));
86
		copystr("/",#drive_name+strlen(#drive_name));
87
		//
87
		//
88
		WriteText(45,i*16+79,0x80,0,#drive_name,0);
88
		WriteText(45,i*16+79,0x80,0,#drive_name,0);
89
		PutImage(dev_icon*14*13*3+#devices,14,13,21,i*16+76);
89
		PutImage(dev_icon*14*13*3+#devices,14,13,21,i*16+76);
90
	}
90
	}
91
	Actions();  //ôóíêöèè ôàéëîâ è ïàïîê
91
	Actions();  //ôóíêöèè ôàéëîâ è ïàïîê
92
}
92
}
93
 
93
 
94
void main() 
94
void main() 
95
word key, id; 
95
word key, id; 
96
mouse m;
96
mouse m;
97
int pressed_y;
97
int pressed_y;
98
{
98
{
99
	GetIni(1);
99
	GetIni(1);
100
	//
100
	//
101
	load_editbox_lib();
101
	load_editbox_lib();
102
	devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
102
	devbuf= malloc(3112); //áóôåð ãäå-òî íà 10 äåâàéñîâ â ëåâîé ïàíåëè
103
	ReadDir(10, devbuf, "/");
103
	ReadDir(10, devbuf, "/");
104
	dev_num=EBX;
104
	dev_num=EBX;
105
	//
105
	//
106
	IF (param[0]<>'')
106
	IF (param[0]<>'')
107
	{
107
	{
-
 
108
		IF (strcmp(#path,#param)==0) copystr("/sys/",#path); //ýòî ïîòîìó ÷òî åñëè çàïóñòèòü Eolite '/rd/1/' áóäåò ïóñòîå îêíî
108
		copystr(#param,#edit_path);
109
		copystr(#param,#edit_path);
109
		Goto_edit_path();
110
		Goto_edit_path();
110
	} ELSE Open_Dir(#path,2); //áûë ëè çàïóñê ñ ïàðàìåòðîì
111
	} ELSE Open_Dir(#path,2); //áûë ëè çàïóñê ñ ïàðàìåòðîì
111
	loop()
112
	loop()
112
	{
113
	{
113
		switch(WaitEvent())
114
		switch(WaitEvent())
114
		{
115
		{
115
			CASE evMouse:
116
			CASE evMouse:
116
					IF (del_active==1) break;
117
					IF (del_active==1) break;
117
					m.get();
118
					m.get();
118
 
119
 
119
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57)
120
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57)
120
					{
121
					{
121
						IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF);
122
						IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF);
122
						WHILE (m.lkm==1) && (za_kadrom>0)
123
						WHILE (m.lkm==1) && (za_kadrom>0)
123
						{
124
						{
124
							Pause(10);
125
							Pause(10);
125
							za_kadrom--;
126
							za_kadrom--;
126
							List_ReDraw();
127
							List_ReDraw();
127
							m.get();
128
							m.get();
128
						}
129
						}
129
						DrawRegion_3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7);
130
						DrawRegion_3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7);
130
					}
131
					}
131
 
132
 
132
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y
133
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y
133
					{
134
					{
134
						IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF);
135
						IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF);
135
						while (m.lkm==1) && (za_kadrom
136
						while (m.lkm==1) && (za_kadrom
136
						{
137
						{
137
							Pause(10);
138
							Pause(10);
138
							za_kadrom++;
139
							za_kadrom++;
139
							List_ReDraw();
140
							List_ReDraw();
140
							m.get();
141
							m.get();
141
						}
142
						}
142
						DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
143
						DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
143
					}
144
					}
144
 
145
 
145
					//êîë¸ñèêî ìûøè
146
					//êîë¸ñèêî ìûøè
146
					IF (m.vert==65535) IF (curbtn==0) FileList_ReDraw(-3); ELSE FileList_ReDraw(-1);
147
					IF (m.vert==65535) IF (curbtn==0) FileList_ReDraw(-3); ELSE FileList_ReDraw(-1);
147
					IF (m.vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1);
148
					IF (m.vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1);
148
					//ñêðîëë
149
					//ñêðîëë
149
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) while (m.lkm)
150
					if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>56) while (m.lkm)
150
					{
151
					{
151
						IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì
152
						IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì
152
						id=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
153
						id=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
153
						j= scroll_size/2;
154
						j= scroll_size/2;
154
						za_kadrom = m.y -j -57 * count;	za_kadrom /= onTop(22,57);
155
						za_kadrom = m.y -j -57 * count;	za_kadrom /= onTop(22,57);
155
						IF (but_num+za_kadrom>count) za_kadrom=count-but_num;
156
						IF (but_num+za_kadrom>count) za_kadrom=count-but_num;
156
						IF (id<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
157
						IF (id<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
157
						m.get();
158
						m.get();
158
					}
159
					}
159
					break;  
160
					break;  
160
//Button pressed-----------------------------------------------------------------------------
161
//Button pressed-----------------------------------------------------------------------------
161
			case evButton:
162
			case evButton:
162
				IF (edit1.flags<>64) {edit1.flags=64; edit_box_draw stdcall(#edit1);} //ñáðàñûâàåì âûäåëåíèå ïðè íàæàòèè íà áàòîí
163
				IF (edit1.flags<>64) {edit1.flags=64; edit_box_draw stdcall(#edit1);} //ñáðàñûâàåì âûäåëåíèå ïðè íàæàòèè íà áàòîí
163
				id=GetButtonID();
164
				id=GetButtonID();
164
				IF (id==1) ExitProcess();
165
				IF (id==1) ExitProcess();
165
				IF (del_active==1) {IF (id==301) || (id==302) Del_File(302-id); break;}
166
				IF (del_active==1) {IF (id==301) || (id==302) Del_File(302-id); break;}
166
				switch(id) 
167
				switch(id) 
167
				{
168
				{
168
					CASE 21: GoBack(); break;//Íàçàä
169
					CASE 21: //Íàçàä
-
 
170
							GoBack();
-
 
171
							break;
-
 
172
					CASE 23: //up!
169
					CASE 23: IF (strcmp(#path,"/")<>0) Dir_Up(); break;//up!
173
							IF (strcmp(#path,"/")<>0) Dir_Up();
-
 
174
							break;
170
					CASE 24: key=24; //cut
175
					CASE 24: //cut
-
 
176
							key=24; 
-
 
177
					CASE 25: //copy
171
					CASE 25: goto CTRLC_MARK; //copy
178
							goto CTRLC_MARK;
172
					CASE 26: Paste(); break;//paste
179
					CASE 26: //paste
-
 
180
							Paste();
-
 
181
							break;
173
					CASE 27: Goto_edit_path(); break; //goto edit_path
182
					CASE 27: //goto edit_path
-
 
183
							Goto_edit_path();
-
 
184
							break; 
174
					CASE 31...33: //sort
185
					CASE 31...33: //sort
175
							IF (sort_num==id-30) break;
186
							IF (sort_num==id-30) break;
176
							IF(sort_num==1)DrawBar(onLeft(192,168)/2+210,45,6,9,0xE4DFE1);
187
							IF(sort_num==1)DrawBar(onLeft(192,168)/2+210,45,6,9,0xE4DFE1);
177
							IF(sort_num==2)DrawBar(onLeft(115,0),45,6,9,0xE4DFE1);
188
							IF(sort_num==2)DrawBar(onLeft(115,0),45,6,9,0xE4DFE1);
178
							IF(sort_num==3)DrawBar(onLeft(44,0),45,6,9,0xE4DFE1);
189
							IF(sort_num==3)DrawBar(onLeft(44,0),45,6,9,0xE4DFE1);
179
							sort_num=id-30;
190
							sort_num=id-30;
180
							Open_Dir(#path,1);
191
							Open_Dir(#path,1);
181
							break; 
192
							break; 
182
					case 30: //about
193
					case 30: //about
183
						CreateThread(#authors,#stak); 
194
							CreateThread(#authors,#stak); 
184
						break;
195
							break;
185
					case 77: //actions
196
					case 77: //actions
186
						IF (show_actions==1) show_actions=0; ELSE show_actions=1;
197
							IF (show_actions==1) show_actions=0; ELSE show_actions=1;
187
						Actions();
198
							Actions();
188
						break;
199
							break;
189
					case 80: //rename
200
					case 80: //rename
190
						goto REN_MARK; 
201
							goto REN_MARK; 
191
					case 81: //Delete file
202
					case 81: //Delete file
192
						Del_Form();
203
							Del_Form();
193
						break;
204
							break;
194
					case 82: //create folder
205
					case 82: //create folder
195
						NEW_FOLDER_MARK:
206
							NEW_FOLDER_MARK:
196
						copystr(#path, #temp);
207
							copystr(#path, #temp);
197
						copystr("New folder", #temp+strlen(#temp));
208
							copystr("New folder", #temp+strlen(#temp));
198
						CreateFolder(#temp);
209
							CreateFolder(#temp);
199
						IF (EAX==0){
210
							IF (EAX==0){
200
							SelectFile("New folder");
211
								SelectFile("New folder");
201
							goto REN_MARK;
212
								goto REN_MARK;
202
						}
213
							}
203
						ELSE  ShowMessage("Folder can not be created.");
214
							ELSE  ShowMessage("Folder can not be created.");
204
						break;
215
							break;
205
					case 100...120:
216
					case 100...120:
206
						DEVICE_MARK:
217
							DEVICE_MARK:
207
						copystr(id-100*304+ devbuf+72, #path);
218
							copystr(id-100*304+ devbuf+72, #path);
208
						IF (path[0]=='r') copystr("/rd/1",#file_path);
219
							IF (path[0]=='r') copystr("/rd/1",#file_path);
209
						ELSE {
220
							ELSE {
210
								copystr("/", #file_path);
221
									copystr("/", #file_path);
211
								copystr(#path, #file_path+strlen(#file_path));
222
									copystr(#path, #file_path+strlen(#file_path));
212
							 }
223
								 }
213
						GOTO OPEN_DEV;
224
							GOTO OPEN_DEV;
214
					default:
225
					default:
215
						if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
226
							if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
216
						IF (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
227
							IF (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
217
						else OPEN_MARK:
228
							else OPEN_MARK:
218
						if (!isdir) GetIni(0); ELSE
229
							if (!isdir) GetIni(0); ELSE
219
						IF (strcmp(#file_name,"..")==0) Dir_Up(); ELSE
230
							IF (strcmp(#file_name,"..")==0) Dir_Up(); ELSE
220
						{	OPEN_DEV:
231
							{	OPEN_DEV:
221
								copystr(#file_path, #path);
232
									copystr(#file_path, #path);
222
								copystr("/", #path+strlen(#path));
233
									copystr("/", #path+strlen(#path));
223
								za_kadrom=curbtn=0;
234
									za_kadrom=curbtn=0;
224
								Open_Dir(#path,1);
235
									Open_Dir(#path,1);
225
						}
236
							}
226
				}
237
				}
227
				break;
238
				break;
228
//Key pressed-----------------------------------------------------------------------------
239
//Key pressed-----------------------------------------------------------------------------
229
			case evKey:
240
			case evKey:
230
				key = GetKey();
241
				key = GetKey();
231
				IF (del_active==1)
242
				IF (del_active==1)
232
					{
243
					{
233
					IF (key==013) Del_File(true);
244
					IF (key==013) Del_File(true);
234
					IF (key==027) Del_File(false);
245
					IF (key==027) Del_File(false);
235
				 	break;
246
				 	break;
236
				 	}
247
				 	}
237
				IF (edit1.flags<>64) && (edit1.flags<>0) && (key<>13) {EAX=key<<8; edit_box_key stdcall (#edit1); break;} 
248
				IF (edit1.flags<>64) && (edit1.flags<>0) && (key<>13) {EAX=key<<8; edit_box_key stdcall (#edit1); break;} 
238
                IF (edit2.flags<>64) && (key<>13) && (key<>27) {EAX=key<<8; edit_box_key stdcall (#edit2); break;}
249
                IF (edit2.flags<>64) && (key<>13) && (key<>27) {EAX=key<<8; edit_box_key stdcall (#edit2); break;}
239
				switch (key)
250
				switch (key)
240
				{
251
				{
241
						case 209...217:
252
						case 209...217:
242
								id=key-110;
253
								id=key-110;
243
								IF (id-100>=dev_num) break;
254
								IF (id-100>=dev_num) break;
244
								GOTO DEVICE_MARK;
255
								GOTO DEVICE_MARK;
245
						case   8: GoBack(); break; //Íàçàä
256
						case   8: //Íàçàä
-
 
257
								GoBack();
-
 
258
								break; 
-
 
259
						case 004: //Ctrl+D ðèñ íà ðàá ñòîë ðàñòÿíóòü
-
 
260
								copystr("\\S__", #temp);
-
 
261
								copystr(#file_path, #temp+strlen(#temp));
-
 
262
								RunProgram("/sys/media/kiv", #temp);
-
 
263
								WriteDebug(#temp);
-
 
264
								break;
-
 
265
						case 014: //Ctrl+N íîâîå îêíî
-
 
266
								IF (Form.left==98) MoveSize(Form.left-20,Form.top-20,OLD,OLD);
246
						case 014: MoveSize(80,80,OLD,OLD); RunProgram("/sys/File Managers/Eolite", #path); break; //íîâîå îêíî
267
								RunProgram("/sys/File Managers/Eolite", #path);
-
 
268
								break; 
247
						case 024: //Ctrl+X cut
269
						case 024: //Ctrl+X cut
248
						case 003: //Ctrl+C copy
270
						case 003: //Ctrl+C copy
249
								CTRLC_MARK:
271
								CTRLC_MARK:
250
								IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì
272
								IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì
251
								copystr(#file_path,#copy_file); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
273
								copystr(#file_path,#copy_file); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
252
								IF (key==24) cut_active=1; ELSE cut_active=0; 
274
								IF (key==24) cut_active=1; ELSE cut_active=0; 
253
								break;
275
								break;
254
						case 022: Paste(); break;//Ctrl+V paste
276
						case 022: Paste(); break;//Ctrl+V paste
255
						case 027: //Esc
277
						case 027: //Esc
256
								IF (rename_active==1) ReName(false);
278
								IF (rename_active==1) ReName(false);
257
								break;
279
								break;
258
						case 013: //Enter
280
						case 013: //Enter
259
								IF (rename_active==1) {ReName(true); break;}
281
								IF (rename_active==1) {ReName(true); break;}
260
								IF (strcmp(#path,#edit_path)<>0) Goto_edit_path();
282
								IF (strcmp(#path,#edit_path)<>0) Goto_edit_path();
261
								ELSE GOTO OPEN_MARK;
283
								ELSE GOTO OPEN_MARK;
262
								break; 
284
								break; 
263
						case 55: //F6 - new folder
285
						case 55: //F6 - new folder
264
								goto NEW_FOLDER_MARK;
286
								goto NEW_FOLDER_MARK;
265
						case 56:  //IF (rename_active==1) break;//up
287
						case 56:  //IF (rename_active==1) break;//up
266
						case 178: //up
288
						case 178: //up
267
								FileList_ReDraw(-1);
289
								FileList_ReDraw(-1);
268
								break;
290
								break;
269
						case 177: //down
291
						case 177: //down
270
								FileList_ReDraw(1);
292
								FileList_ReDraw(1);
271
								break;
293
								break;
272
						case 180: //home
294
						case 180: //home
273
								za_kadrom=0;
295
								za_kadrom=0;
274
								curbtn=0;
296
								curbtn=0;
275
								List_ReDraw();
297
								List_ReDraw();
276
								break;
298
								break;
277
						case 181: //end
299
						case 181: //end
278
								za_kadrom=count-but_num;
300
								za_kadrom=count-but_num;
279
								curbtn=but_num-1;
301
								curbtn=but_num-1;
280
								List_ReDraw();
302
								List_ReDraw();
281
								break;
303
								break;
282
						case 183: //Page Down
304
						case 183: //Page Down
283
								FileList_ReDraw(but_num-1);
305
								FileList_ReDraw(but_num-1);
284
								break;
306
								break;
285
						case 184: //Page Up
307
						case 184: //Page Up
286
								FileList_ReDraw(-but_num+1);
308
								FileList_ReDraw(-but_num+1);
287
								break;
309
								break;
288
						case 051: //Íàæàòà F2
310
						case 051: //Íàæàòà F2
289
								REN_MARK:
311
								REN_MARK:
290
								DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ
312
								DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ
291
								edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
313
								edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
292
								edit2.width=onLeft(24,217);
314
								edit2.width=onLeft(24,217);
293
								edit2.top=curbtn*18+59;
315
								edit2.top=curbtn*18+59;
294
								edit2.size=edit2.pos=strlen(#file_name);
316
								edit2.size=edit2.pos=strlen(#file_name);
295
								edit_box_draw  stdcall (#edit2);
317
								edit_box_draw  stdcall (#edit2);
296
								DrawBar(213,curbtn*18+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè
318
								DrawBar(213,curbtn*18+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè
297
								rename_active=1;
319
								rename_active=1;
298
								break;
320
								break;
299
						case 052: //Íàæàòà F3
321
						case 052: //Íàæàòà F3
300
								IF (isdir==false) RunProgram("/sys/tinypad", #file_path);
322
								IF (isdir==false) RunProgram("/sys/tinypad", #file_path);
301
								break;
323
								break;
302
						case 053: //Íàæàòà F4
324
						case 053: //Íàæàòà F4
303
								IF (isdir==false) RunProgram("/sys/develop/heed", #file_path);
325
								IF (isdir==false) RunProgram("/sys/develop/heed", #file_path);
304
								break;
326
								break;
305
						case 054: //F5
327
						case 054: //F5
306
								Open_Dir(#path,1);
328
								Open_Dir(#path,1);
307
								break;
329
								break;
308
						case 182: //delete file
330
						case 182: //delete file
309
								Del_Form();
331
								Del_Form();
310
								break; 
332
								break; 
311
						default:    
333
						default:    
312
								//FOR (i=curbtn+za_kadrom+1; i
334
								//FOR (i=curbtn+za_kadrom+1; i
313
								for (i=curbtn+za_kadrom+1; i
335
								for (i=curbtn+za_kadrom+1; i
314
								{
336
								{
315
									copystr(file_mas[i]*304+buf+72,#temp);
337
									copystr(file_mas[i]*304+buf+72,#temp);
316
									AL=DSBYTE[#temp]; 
338
									AL=DSBYTE[#temp]; 
317
									IF(AL>='A')&&(AL<='Z')DSBYTE[#temp]=AL|0x20;
339
									IF(AL>='A')&&(AL<='Z')DSBYTE[#temp]=AL|0x20;
318
									IF (temp[0]==key)
340
									IF (temp[0]==key)
319
									{
341
									{
320
										FileList_ReDraw(i-curbtn-za_kadrom);
342
										FileList_ReDraw(i-curbtn-za_kadrom);
321
										break;
343
										break;
322
									}
344
									}
323
								}
345
								}
324
				}                         
346
				}                         
325
				BREAK;
347
				BREAK;
326
				case evReDraw:	draw_window();
348
				case evReDraw:	draw_window();
327
		}
349
		}
328
		IF (rename_active==0) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2);
350
		IF (rename_active==0) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2);
329
	}
351
	}
330
}
352
}
331
 
353
 
332
 
354
 
333
inline fastcall void draw_window()
355
inline fastcall void draw_window()
334
{                
356
{                
335
	WindowRedrawStatus(1);
357
	WindowRedrawStatus(1);
336
	DefineAndDrawWindow(98,90,560,481,0x73,0x10E4DFE1,0,0,title); 
358
	DefineAndDrawWindow(98,90,560,481,0x73,0x10E4DFE1,0,0,title); 
337
	WindowRedrawStatus(2);
359
	WindowRedrawStatus(2);
338
	Form.GetInfo(SelfInfo);
360
	Form.GetInfo(SelfInfo);
339
	IF (Form.height==GetSkinWidth()+3) return; //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê
361
	IF (Form.height==GetSkinWidth()+3) return; //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê
340
	  IF (Form.height<280) MoveSize(OLD,OLD,OLD,280);
362
	  IF (Form.height<280) MoveSize(OLD,OLD,OLD,280);
341
	  IF (Form.width<480) MoveSize(OLD,OLD,480,OLD);
363
	  IF (Form.width<480) MoveSize(OLD,OLD,480,OLD);
342
	//toolbar buttons
364
	//toolbar buttons
343
	PutPaletteImage(#toolbar,246,39,0,0,#toolbar_pal);
365
	PutPaletteImage(#toolbar,246,39,0,0,#toolbar_pal);
-
 
366
	FOR (j=0; j<3; j++) DefineButton(toolbar_buttons_x[j]+2,5+2,31-5,29-5,21+j+BT_HIDE,0xE4DFE1);
344
	FOR (j=0; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,0xE4DFE1);
367
	FOR (j=3; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,0xE4DFE1);
345
	//ïîëîñà àäðåñà
368
	//ïîëîñà àäðåñà
346
	edit1.width=Form.width-314;
369
	edit1.width=Form.width-314;
347
	DrawBar(246,0,onLeft(246,60),12,0xE4DFE1); //ôîí íàä ïîëîñîé àäðåñà
370
	DrawBar(246,0,onLeft(246,60),12,0xE4DFE1); //ôîí íàä ïîëîñîé àäðåñà
348
	DrawBar(246,29,onLeft(246,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà
371
	DrawBar(246,29,onLeft(246,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà
349
	DrawRegion_3D(246,12,onLeft(66,246),16,0x94AECE,0x94AECE);	//îáîäîê
372
	DrawRegion_3D(246,12,onLeft(66,246),16,0x94AECE,0x94AECE);	//îáîäîê
350
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about
373
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about
351
	DefineButton(onLeft(66,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà
374
	DefineButton(onLeft(66,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà
352
	PutPaletteImage(#goto_about,56,40,Form.width-65,0,#goto_about_pal);
375
	PutPaletteImage(#goto_about,56,40,Form.width-65,0,#goto_about_pal);
353
	//ïðÿìîóãîëüíèêè âíóòðè
376
	//ïðÿìîóãîëüíèêè âíóòðè
354
	DrawRegion_3D(1,40,Form.width-12,onTop(46,0),0x94AECE,0x94AECE); //ñèíèé îáîäîê
377
	DrawRegion_3D(1,40,Form.width-12,onTop(46,0),0x94AECE,0x94AECE); //ñèíèé îáîäîê
355
	DrawRegion_3D(0,39,Form.width-10,onTop(44,0),0xE4DFE1,0xE4DFE1); //ôîí
378
	DrawRegion_3D(0,39,Form.width-10,onTop(44,0),0xE4DFE1,0xE4DFE1); //ôîí
356
	Devices(); //ïàíåëü ñëåâà íà ñèíåì ôîíå
379
	Devices(); //ïàíåëü ñëåâà íà ñèíåì ôîíå
357
	//SortButtons
380
	//SortButtons
358
	DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
381
	DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
359
	DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
382
	DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
360
	DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
383
	DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
361
	//Ïåðåðèñîâûâàåì ñïèñîê
384
	//Ïåðåðèñîâûâàåì ñïèñîê
362
	Open_Dir(#path,ONLY_SHOW);
385
	Open_Dir(#path,ONLY_SHOW);
363
	//ïðîêðóòêà
386
	//ïðîêðóòêà
364
	DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
387
	DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
365
	DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
388
	DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
366
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
389
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
367
}
390
}
368
 
391
 
369
 
392
 
370
void KEdit()
393
void KEdit()
371
{
394
{
372
	edit1.size=edit1.pos=strlen(#edit_path);
395
	edit1.size=edit1.pos=strlen(#edit_path);
373
	edit_box_draw  stdcall (#edit1);
396
	edit_box_draw  stdcall (#edit1);
374
}
397
}
375
 
398
 
376
 
399
 
377
inline fastcall void TVScroll() { //Ïðîêðóòêà
400
inline fastcall void TVScroll() { //Ïðîêðóòêà
378
	dword on_y;
401
	dword on_y;
379
	IF (count<=0) {DrawFlatButton(onLeft(27,0),57,16,onTop(22,58),0,0xE4DFE1,""); return;}
402
	IF (count<=0) {DrawFlatButton(onLeft(27,0),57,16,onTop(22,58),0,0xE4DFE1,""); return;}
380
	on_y = za_kadrom * onTop(22,57) / count +57;
403
	on_y = za_kadrom * onTop(22,57) / count +57;
381
	scroll_size=onTop(22,57) * but_num - but_num / count;
404
	scroll_size=onTop(22,57) * but_num - but_num / count;
382
	IF (scroll_size<20) scroll_size = 20; //óñòàíàâëèâàåì ìèíèìàëüíûé ðàçìåð ñêðîëëà
405
	IF (scroll_size<20) scroll_size = 20; //óñòàíàâëèâàåì ìèíèìàëüíûé ðàçìåð ñêðîëëà
383
	IF (scroll_size>onTop(22,57)-on_y+56) || (za_kadrom+but_num>=count) on_y=onTop(23+scroll_size,0); //äëÿ áîëüøîãî ñïèñêà 
406
	IF (scroll_size>onTop(22,57)-on_y+56) || (za_kadrom+but_num>=count) on_y=onTop(23+scroll_size,0); //äëÿ áîëüøîãî ñïèñêà 
384
	DrawFlatButton(onLeft(27,0),on_y,16,scroll_size,0,0xE4DFE1,"");//ïîëçóíîê
407
	DrawFlatButton(onLeft(27,0),on_y,16,scroll_size,0,0xE4DFE1,"");//ïîëçóíîê
385
	DrawBar(onLeft(26,0),57,15,on_y-57,0xCED0D0);//ïîëå äî ïîëçóíêà
408
	DrawBar(onLeft(26,0),57,15,on_y-57,0xCED0D0);//ïîëå äî ïîëçóíêà
386
	DrawBar(onLeft(26,0),on_y+scroll_size+1,15,onTop(22,57)-scroll_size-on_y+56,0xCED0D0); //ïîëå ïîñëå ïîëçóíêà
409
	DrawBar(onLeft(26,0),on_y+scroll_size+1,15,onTop(22,57)-scroll_size-on_y+56,0xCED0D0); //ïîëå ïîñëå ïîëçóíêà
387
}
410
}
388
 
411
 
389
 
412
 
390
void FileList_ReDraw(int curbtn_)
413
void FileList_ReDraw(int curbtn_)
391
{
414
{
392
	if (curbtn_<=0) //ââåðõ
415
	if (curbtn_<=0) //ââåðõ
393
	{
416
	{
394
		IF (za_kadrom==0) && (curbtn<=0) return;
417
		IF (za_kadrom==0) && (curbtn<=0) return;
395
		IF (-curbtn_-1
418
		IF (-curbtn_-1
396
		{
419
		{
397
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
420
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
398
			curbtn+=curbtn_;
421
			curbtn+=curbtn_;
399
			Line_ReDraw(videlenie, curbtn); //âûäåëåíèå
422
			Line_ReDraw(videlenie, curbtn); //âûäåëåíèå
400
			return;
423
			return;
401
		}
424
		}
402
		ELSE
425
		ELSE
403
		{
426
		{
404
			IF (-curbtn_
427
			IF (-curbtn_
405
			curbtn=0;
428
			curbtn=0;
406
			List_ReDraw();
429
			List_ReDraw();
407
			return;
430
			return;
408
		}
431
		}
409
	}
432
	}
410
	else  //âíèç
433
	else  //âíèç
411
	{
434
	{
412
		IF (za_kadrom==count-but_num) && (curbtn==but_num-1) return;
435
		IF (za_kadrom==count-but_num) && (curbtn==but_num-1) return;
413
		IF (but_num-curbtn>curbtn_) // 18-0>33?
436
		IF (but_num-curbtn>curbtn_) // 18-0>33?
414
		{
437
		{
415
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
438
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
416
			curbtn+=curbtn_;
439
			curbtn+=curbtn_;
417
			Line_ReDraw(videlenie, curbtn); //âûäåëåíèå
440
			Line_ReDraw(videlenie, curbtn); //âûäåëåíèå
418
			return;
441
			return;
419
		}
442
		}
420
		else
443
		else
421
		{
444
		{
422
			IF(but_num+za_kadrom+curbtn_>=count) //18+0+33>=41
445
			IF(but_num+za_kadrom+curbtn_>=count) //18+0+33>=41
423
			{
446
			{
424
				//WriteDebug("1");
447
				//WriteDebug("1");
425
				za_kadrom=count-but_num;
448
				za_kadrom=count-but_num;
-
 
449
				//WriteDebug(IntToStr(curbtn));
-
 
450
				//WriteDebug(IntToStr(curbtn_));
426
				curbtn=curbtn_-za_kadrom+curbtn;
451
				curbtn=curbtn_-za_kadrom+curbtn;
427
				}
452
				}
428
			ELSE
453
			ELSE
429
			{
454
			{
430
				//WriteDebug("2");
-
 
431
				za_kadrom+=curbtn_+curbtn-but_num+1;
455
				za_kadrom+=curbtn_+curbtn-but_num+1;
432
				//curbtn=but_num-1;
-
 
433
				curbtn=but_num-1;
456
				curbtn=but_num-1;
434
			}
457
			}
435
			IF (curbtn<0) || (curbtn>but_num)
458
			IF (curbtn<0) || (curbtn>but_num)
436
			{
459
			{
-
 
460
				//WriteDebug(IntToStr(curbtn));
437
				//ShowMessage("Bug found! Tell it Leency!");
461
				//ShowMessage("Bug found! Tell it Leency!");
438
				curbtn=but_num-1;
462
				curbtn=but_num-1;
439
			}
463
			}
440
			List_ReDraw();
464
			List_ReDraw();
441
			//WriteDebug(IntToStr(curbtn)); //=0
465
			//WriteDebug(IntToStr(curbtn)); //=0
442
			//WriteDebug(IntToStr(za_kadrom)); //=0
466
			//WriteDebug(IntToStr(za_kadrom)); //=0
443
			//WriteDebug(IntToStr(but_num)); //=41
467
			//WriteDebug(IntToStr(but_num)); //=41
444
			//WriteDebug(IntToStr(count)); //=41
468
			//WriteDebug(IntToStr(count)); //=41
445
			
469
			
446
			/*WriteDebug(""); 
470
			/*WriteDebug(""); 
447
			WriteDebug(#path);
471
			WriteDebug(#path);
448
			WriteDebug("Number of files:"); WriteDebug(IntToStr(count)); 
472
			WriteDebug("Number of files:"); WriteDebug(IntToStr(count)); 
449
			WriteDebug("but_num:");	 		WriteDebug(IntToStr(but_num));
473
			WriteDebug("but_num:");	 		WriteDebug(IntToStr(but_num));
450
			WriteDebug("curbtn");		 	WriteDebug(IntToStr(curbtn));
474
			WriteDebug("curbtn");		 	WriteDebug(IntToStr(curbtn));
451
			WriteDebug("ra_kadrom:");	 	WriteDebug(IntToStr(za_kadrom));*/
475
			WriteDebug("ra_kadrom:");	 	WriteDebug(IntToStr(za_kadrom));*/
452
		}
476
		}
453
	}
477
	}
454
}
478
}
455
 
479
 
456
 
480
 
457
void List_ReDraw()
481
void List_ReDraw()
458
{
482
{
459
	int paint_x=but_num*18+57;
483
	int paint_x=but_num*18+57;
460
	IF (count-za_kadrombut_num-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
484
	IF (count-za_kadrombut_num-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
461
	{ za_kadrom=count-but_num; curbtn=but_num-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
485
	{ za_kadrom=count-but_num; curbtn=but_num-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
462
	//
486
	//
463
	FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn);
487
	FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn);
464
		DrawBar(192,paint_x,onLeft(27,192),onTop(paint_x,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
488
		DrawBar(192,paint_x,onLeft(27,192),onTop(paint_x,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
465
		DrawBar(onLeft(168,0),paint_x,1,onTop(paint_x,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
489
		DrawBar(onLeft(168,0),paint_x,1,onTop(paint_x,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
466
		DrawBar(onLeft(95,0),paint_x,1,onTop(paint_x,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
490
		DrawBar(onLeft(95,0),paint_x,1,onTop(paint_x,6),0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
467
	TVScroll();
491
	TVScroll();
468
}
492
}
469
 
493
 
470
 
494
 
471
//puticon+icon_fairing!!!
495
//puticon+icon_fairing!!!
472
void Line_ReDraw(dword color, filenum){
496
void Line_ReDraw(dword color, filenum){
473
	dword text_col=0, temp_int,
497
	dword text_col=0, temp_int,
474
	y=filenum*18+57; //ïîëîæåíèå òåêñòà ïî Y
498
	y=filenum*18+57; //ïîëîæåíèå òåêñòà ïî Y
475
	IF (rename_active==1) ReName(false);
499
	IF (rename_active==1) ReName(false);
476
	//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî ïåðåðèñîâêà çàòî ìàëåíüêàÿ
500
	//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî ïåðåðèñîâêà çàòî ìàëåíüêàÿ
477
	DrawBar(192,y,3,18,color); DrawBar(195,y,16,2,color); 
501
	DrawBar(192,y,3,18,color); DrawBar(195,y,16,2,color); 
478
	DrawBar(192+19,y,onLeft(46,192),18,color); DrawBar(195,y+17,16,1,color);
502
	DrawBar(192+19,y,onLeft(46,192),18,color); DrawBar(195,y+17,16,1,color);
479
	//
503
	//
480
	off=file_mas[filenum+za_kadrom]*304 + buf+72;
504
	off=file_mas[filenum+za_kadrom]*304 + buf+72;
481
	if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7;
505
	if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7;
482
	if (!TestBit(ESDWORD[off-40],4))
506
	if (!TestBit(ESDWORD[off-40],4))
483
	{
507
	{
484
		copystr(off,#temp);
508
		copystr(off,#temp);
485
		temp_int = Put_icon(#temp+find_symbol(#temp,'.'), y+2);
509
		temp_int = Put_icon(#temp+find_symbol(#temp,'.'), y+2);
486
		WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size
510
		WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size
487
	} ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("", y+2);
511
	} ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("", y+2);
488
	if (color==videlenie)
512
	if (color==videlenie)
489
	{
513
	{
490
		isdir=TestBit(ESDWORD[off-40], 4);
514
		isdir=TestBit(ESDWORD[off-40], 4);
491
		IconFairing(temp_int, y+2); //çàêðàøèâàåì èêîíêó
515
		IconFairing(temp_int, y+2); //çàêðàøèâàåì èêîíêó
492
		copystr(off,#file_name);
516
		copystr(off,#file_name);
493
		copystr(#path,#file_path);
517
		copystr(#path,#file_path);
494
		copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó
518
		copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó
495
		IF (text_col==0xA6A6B7) text_col=0xFFFFFF;
519
		IF (text_col==0xA6A6B7) text_col=0xFFFFFF;
496
	}
520
	}
497
	temp_int = onLeft(215,165)/6;
521
	temp_int = onLeft(215,165)/6;
498
	IF (strlen(off)
522
	IF (strlen(off)
499
		WriteText(215,y+6,0,text_col,off,temp_int);  //èìÿ ôàéëà
523
		WriteText(215,y+6,0,text_col,off,temp_int);  //èìÿ ôàéëà
500
	DrawBar(onLeft(168,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
524
	DrawBar(onLeft(168,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
501
	DrawBar(onLeft(95,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
525
	DrawBar(onLeft(95,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
502
}
526
}
503
 
527
 
504
 
528
 
505
void Open_Dir(dword temp_, redraw){
529
void Open_Dir(dword temp_, redraw){
506
	int errornum;
530
	int errornum;
507
	byte path_[256],
531
	byte path_[256],
508
	somelen=strlen(temp_)-1;
532
	somelen=strlen(temp_)-1;
509
	if (redraw<>ONLY_SHOW)
533
	if (redraw<>ONLY_SHOW)
510
	{
534
	{
511
		copystr(temp_, #path_);
535
		copystr(temp_, #path_);
512
		IF (somelen) path_[somelen]=0x00;
536
		IF (somelen) path_[somelen]=0x00;
513
		//
537
		//
514
		IF (buf) free(buf);
538
		IF (buf) free(buf);
515
    		buf = malloc(32);
539
    		buf = malloc(32);
516
		errornum=ReadDir(0, buf, #path_);
540
		errornum=ReadDir(0, buf, #path_);
517
		if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè
541
		if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè
518
		{
542
		{
519
			//WriteDebug(#path_);
543
			//WriteDebug(#path_);
520
			Write_Debug_Error(errornum);
544
			Write_Debug_Error(errornum);
521
			HistoryPath(add_new_path);
545
			HistoryPath(add_new_path);
522
			GoBack();
546
			GoBack();
523
			return;
547
			return;
524
		}
548
		}
525
    		count = ESDWORD[buf+8];
549
    		count = ESDWORD[buf+8];
526
    		buf = realloc(count * 304 + 32, buf);
550
    		buf = realloc(count * 304 + 32, buf);
527
		ReadDir(count, buf, #path_);
551
		ReadDir(count, buf, #path_);
528
		IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 íà óäà÷ó ;)
552
		IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 íà óäà÷ó ;)
529
		count=EBX;
553
		count=EBX;
530
	}  
554
	}  
531
	if (count<>-1)
555
	if (count<>-1)
532
	{
556
	{
533
		copystr(temp_,#edit_path);
557
		copystr(temp_,#edit_path);
534
		KEdit();
558
		KEdit();
535
		HistoryPath(add_new_path);
559
		HistoryPath(add_new_path);
536
		IF (!strcmp(".",buf+72)) {memmov(buf,buf+304,count-1*304); count--;} //ôèëüòðóåì ýëåìåíò "."
560
		IF (!strcmp(".",buf+72)) {memmov(buf,buf+304,count-1*304); count--;} //ôèëüòðóåì ýëåìåíò "."
537
		FOR (j=0;j
561
		FOR (j=0;j
538
		but_num=onTop(6,57)/18;                                                                                             
562
		but_num=onTop(6,57)/18;                                                                                             
539
		IF (count
563
		IF (count
540
		FOR (j=0;j
564
		FOR (j=0;j
541
		//ñòðåëî÷êà ñîðòèðîâêè
565
		//ñòðåëî÷êà ñîðòèðîâêè
542
		IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19",0);
566
		IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19",0);
543
		IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19",0);
567
		IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19",0);
544
		IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19",0);
568
		IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19",0);
545
		IF (redraw<>ONLY_SHOW) Sorting(); //äëÿ áîëüøèõ ïàïîê ïðè ðåïåèíòå îêíà
569
		IF (redraw<>ONLY_SHOW) Sorting(); //äëÿ áîëüøèõ ïàïîê ïðè ðåïåèíòå îêíà
546
		IF (redraw<>ONLY_OPEN) List_ReDraw();
570
		IF (redraw<>ONLY_OPEN) List_ReDraw();
547
	}
571
	}
548
	IF (count==-1) && (redraw<>ONLY_OPEN) {but_num=count=0; List_ReDraw();}
572
	IF (count==-1) && (redraw<>ONLY_OPEN) {but_num=count=0; List_ReDraw();}
549
}
573
}
550
 
574
 
551
 
575
 
552
 
576
 
553
inline Sorting()
577
inline Sorting()
554
{
578
{
555
	dword k=0, l=1;
579
	dword k=0, l=1;
556
	IF (!strcmp(#path,"/")) {FOR(k=1;k
580
	IF (!strcmp(#path,"/")) {FOR(k=1;k
557
	FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;)  //ïàïêè ââåðõ, ôàéëû âíèç
581
	FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;)  //ïàïêè ââåðõ, ôàéëû âíèç
558
	{
582
	{
559
		ChangeCase(off+40);
583
		ChangeCase(off+40);
560
		IF (TestBit(ESDWORD[off],4)) {file_mas[k]=j; k++;}
584
		IF (TestBit(ESDWORD[off],4)) {file_mas[k]=j; k++;}
561
			ELSE {file_mas[count-l]=j; l++;}
585
			ELSE {file_mas[count-l]=j; l++;}
562
	}
586
	}
563
	//Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû
587
	//Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû
564
	Sort_by_Name(0,k-1);
588
	Sort_by_Name(0,k-1);
565
	IF (sort_num==1) Sort_by_Name(k,count-1);
589
	IF (sort_num==1) Sort_by_Name(k,count-1);
566
	IF (sort_num==2) Sort_by_Type(k, count-1);
590
	IF (sort_num==2) Sort_by_Type(k, count-1);
567
	IF (sort_num==3) Sort_by_Size(k,count-1);
591
	IF (sort_num==3) Sort_by_Size(k,count-1);
568
	//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
592
	//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
569
	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]>
593
	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]>
570
}
594
}
571
 
595
 
572
 
596
 
573
void Del_Form()
597
void Del_Form()
574
{
598
{
575
	int dform_x=Form.width/2-13;
599
	int dform_x=Form.width/2-13;
576
	//òèïà îêíî
600
	//òèïà îêíî
577
	FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé
601
	FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé
578
	DrawFlatButton(dform_x,160,200,80,0,0xE4DFE1, ""); //ôîðìà
602
	DrawFlatButton(dform_x,160,200,80,0,0xE4DFE1, ""); //ôîðìà
579
	WriteText(dform_x+19,175,0x80,0,"Do you really want to delete",0);
603
	WriteText(dform_x+19,175,0x80,0,"Do you really want to delete",0);
580
	IF (strlen(#file_name)<28) 
604
	IF (strlen(#file_name)<28) 
581
		{
605
		{
582
			WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?",0);
606
			WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?",0);
583
			WriteText(dform_x+20,190,0x80,0,#file_name,0); //ïèøåì èìÿ
607
			WriteText(dform_x+20,190,0x80,0,#file_name,0); //ïèøåì èìÿ
584
		}
608
		}
585
	ELSE
609
	ELSE
586
		{
610
		{
587
			WriteText(164+dform_x,190,0x80,0,"...?",0);
611
			WriteText(164+dform_x,190,0x80,0,"...?",0);
588
			WriteText(dform_x+20,190,0,0,#file_name,24); //ïèøåì èìÿ
612
			WriteText(dform_x+20,190,0,0,#file_name,24); //ïèøåì èìÿ
589
		}
613
		}
590
	//êíîïî÷êè
614
	//êíîïî÷êè
591
	DrawFlatButton(dform_x+20,208,70,20,301,0xFFB6B5,"Yes");
615
	DrawFlatButton(dform_x+20,208,70,20,301,0xFFB6B5,"Yes");
592
	DrawFlatButton(dform_x+111,208,70,20,302,0xC6DFC6,"No");
616
	DrawFlatButton(dform_x+111,208,70,20,302,0xC6DFC6,"No");
593
	del_active=1;
617
	del_active=1;
594
}
618
}
595
 
619
 
596
	
620
	
597
void Del_File(byte dodel)
621
void Del_File(byte dodel)
598
{    
622
{    
599
	int del_file_rez;
623
	int del_file_rez;
600
	IF (dodel==true)
624
	IF (dodel==true)
601
	{
625
	{
602
		del_file_rez=DeleleFile(#file_path);
626
		del_file_rez=DeleleFile(#file_path);
603
		IF (del_file_rez<>0)
627
		IF (del_file_rez<>0)
604
		{
628
		{
605
			Write_Debug_Error(del_file_rez);
629
			Write_Debug_Error(del_file_rez);
606
		IF (isdir==true) ShowMessage("Error. Folder isn't empty.");
630
		IF (isdir==true) ShowMessage("Error. Folder isn't empty.");
607
			IF (isdir==false) ShowMessage("Error. Filesystem read-only.");
631
			IF (isdir==false) ShowMessage("Error. Filesystem read-only.");
608
		}
632
		}
609
 	}
633
 	}
610
	del_active=0;
634
	del_active=0;
611
	DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No
635
	DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No
612
	Open_Dir(#path,1);
636
	Open_Dir(#path,1);
613
}    
637
}    
614
 
638
 
615
 
639
 
616
void Paste()
640
void Paste()
617
{
641
{
618
	IF (!copy_file) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè
642
	IF (!copy_file) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè
619
	copystr(#path,#temp);
643
	copystr(#path,#temp);
620
	copystr(#copy_file+find_symbol(#copy_file,'/'),#temp+strlen(#temp));
644
	copystr(#copy_file+find_symbol(#copy_file,'/'),#temp+strlen(#temp));
621
	if (strcmp(#copy_file,#temp)==0) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå
645
	if (strcmp(#copy_file,#temp)==0) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå
622
		{
646
		{
623
			copystr(#path,#temp);
647
			copystr(#path,#temp);
624
			copystr("new_",#temp+strlen(#temp));
648
			copystr("new_",#temp+strlen(#temp));
625
			copystr(#copy_file+find_symbol(#copy_file,'/'),#temp+strlen(#temp));
649
			copystr(#copy_file+find_symbol(#copy_file,'/'),#temp+strlen(#temp));
626
		}
650
		}
627
	CopyFile(#copy_file,#temp);
651
	CopyFile(#copy_file,#temp);
628
	IF (EAX<>0) //îøèáêà
652
	IF (EAX<>0) //îøèáêà
629
	{
653
	{
630
		Write_Debug_Error(EAX);
654
		Write_Debug_Error(EAX);
631
		DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. You can't paste here.");
655
		DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. You can't paste here.");
632
		Pause(150);
656
		Pause(150);
633
	}
657
	}
634
	IF (cut_active==1) //åñëè ìû âûáðàëè âûðåçàòü
658
	IF (cut_active==1) //åñëè ìû âûáðàëè âûðåçàòü
635
		{
659
		{
636
			copystr(#copy_file,#file_path);
660
			copystr(#copy_file,#file_path);
637
			Del_File(true);
661
			Del_File(true);
638
			copy_file='';
662
			copy_file='';
639
			cut_active=0;
663
			cut_active=0;
640
		}
664
		}
641
	SelectFile(#copy_file+find_symbol(#copy_file,'/'));
665
	SelectFile(#copy_file+find_symbol(#copy_file,'/'));
642
}
666
}
643
 
667
 
644
 
668
 
645
void Tip(int y, dword caption, id, arrow)
669
void Tip(int y, dword caption, id, arrow)
646
{
670
{
647
	DrawBar(17,y,160,17,0xE4DFE1); //ñåðîå ñâåðõó
671
	DrawBar(17,y,160,17,0xE4DFE1); //ñåðîå ñâåðõó
648
	WriteText(25,y+5,0x80,0,caption,0);		//text Goto:
672
	WriteText(25,y+5,0x80,0,caption,0);		//text Goto:
649
	IF (id<>0) DefineButton(159,y+1,16,16,id+BT_HIDE+BT_NOFRAME,0xE4DFE1); //êíîïà äëÿ ñòðåëêè
673
	IF (id<>0) DefineButton(159,y+1,16,16,id+BT_HIDE+BT_NOFRAME,0xE4DFE1); //êíîïà äëÿ ñòðåëêè
650
	WriteText(165,y+5,0x80,0,arrow,0); //ñòðåëêà âíèç
674
	WriteText(165,y+5,0x80,0,arrow,0); //ñòðåëêà âíèç
651
	DrawBar(17,y+17,160,1,0x94AECE);		//ïîä÷¸ðêèâàíèå
675
	DrawBar(17,y+17,160,1,0x94AECE);		//ïîä÷¸ðêèâàíèå
652
}
676
}
653
 
677
 
654
 
678
 
655
void ReName(byte rename)
679
void ReName(byte rename)
656
{
680
{
657
	rename_active=0;
681
	rename_active=0;
658
	edit2.flags=64;
682
	edit2.flags=64;
659
	DefineButton(192,curbtn*18+57,onLeft(27,192),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
683
	DefineButton(192,curbtn*18+57,onLeft(27,192),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
660
	if (rename==true)
684
	if (rename==true)
661
	{
685
	{
662
		copystr(#path,#temp);
686
		copystr(#path,#temp);
663
		copystr(#file_name,#temp+strlen(#temp));
687
		copystr(#file_name,#temp+strlen(#temp));
664
		if (strcmp(#file_path,#temp)<>0) && (file_name)
688
		if (strcmp(#file_path,#temp)<>0) && (file_name)
665
		IF (isdir)
689
		IF (isdir)
666
		{
690
		{
667
			IF (DeleleFile(#file_path)<>0) ShowMessage("Error. Folder isn't empty.");
691
			IF (DeleleFile(#file_path)<>0) ShowMessage("Error. Folder isn't empty.");
668
			ELSE CreateFolder(#temp);
692
			ELSE CreateFolder(#temp);
669
			Open_Dir(#path,1);
693
			Open_Dir(#path,1);
670
		}
694
		}
671
		ELSE
695
		ELSE
672
		{
696
		{
673
			CopyFile(#file_path,#temp);
697
			CopyFile(#file_path,#temp);
674
			Del_File(true);
698
			Del_File(true);
675
		}
699
		}
676
		SelectFile(#temp+find_symbol(#path,'/'));
700
		SelectFile(#temp+find_symbol(#path,'/'));
677
	}
701
	}
678
	Line_ReDraw(videlenie,curbtn);
702
	Line_ReDraw(videlenie,curbtn);
679
}
703
}
680
 
704
 
681
 
705
 
682
void Actions()
706
void Actions()
683
{
707
{
684
	int actions_y=dev_num*16;
708
	int actions_y=dev_num*16;
685
	DrawBar(17,actions_y+75,160,15,0x00699C); //ñèíèé ïðÿìîóãîëüíèê - ïîä äåâàéñàìè
709
	DrawBar(17,actions_y+75,160,15,0x00699C); //ñèíèé ïðÿìîóãîëüíèê - ïîä äåâàéñàìè
686
	if (show_actions==1)
710
	if (show_actions==1)
687
	{
711
	{
688
		Tip(actions_y+90, "Actions", 77, "\x19");
712
		Tip(actions_y+90, "Actions", 77, "\x19");
689
		DrawBar(17,actions_y+108,160,51,0xFFFFFF); //áåëîå
713
		DrawBar(17,actions_y+108,160,51,0xFFFFFF); //áåëîå
690
		PutImage(#factions,16,44,21,actions_y+113); //ïèêòîãðàìêè
714
		PutImage(#factions,16,44,21,actions_y+113); //ïèêòîãðàìêè
691
		//rename file 
715
		//rename file 
692
		DefineButton(22,actions_y+108,159,16,80+BT_HIDE,0xE4DFE1);
716
		DefineButton(22,actions_y+108,159,16,80+BT_HIDE,0xE4DFE1);
693
		WriteText(42,actions_y+113,0x80,0,"Rename file ",0);
717
		WriteText(42,actions_y+113,0x80,0,"Rename file ",0);
694
		//delete file
718
		//delete file
695
		DefineButton(17,actions_y+125,159,16,81+BT_HIDE,0xE4DFE1);
719
		DefineButton(17,actions_y+125,159,16,81+BT_HIDE,0xE4DFE1);
696
		WriteText(42,actions_y+130,0x80,0,"Delete file ",0);
720
		WriteText(42,actions_y+130,0x80,0,"Delete file ",0);
697
		//create folder
721
		//create folder
698
		DefineButton(17,actions_y+142,159,16,82+BT_HIDE,0xE4DFE1);
722
		DefineButton(17,actions_y+142,159,16,82+BT_HIDE,0xE4DFE1);
699
		WriteText(42,actions_y+147,0x80,0,"Create folder ",0);
723
		WriteText(42,actions_y+147,0x80,0,"Create folder ",0);
700
	}
724
	}
701
	ELSE
725
	ELSE
702
	{
726
	{
703
		DeleteButton(80);	DeleteButton(81);	DeleteButton(82);
727
		DeleteButton(80);	DeleteButton(81);	DeleteButton(82);
704
		Tip(actions_y+90, "Actions", 77, "\x18");
728
		Tip(actions_y+90, "Actions", 77, "\x18");
705
	}
729
	}
706
	DrawBar(17,show_actions*51+actions_y+108,160,onTop(show_actions*51+actions_y+108,6),0x00699C); //ñèíåå â êîíöå
730
	DrawBar(17,show_actions*51+actions_y+108,160,onTop(show_actions*51+actions_y+108,6),0x00699C); //ñèíåå â êîíöå
707
}
731
}
708
 
732
 
709
 
733
 
710
 
734
 
711
void Goto_edit_path()
735
void Goto_edit_path()
712
{
736
{
713
	IF (strcmp(#path,#edit_path)==0) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå
737
	IF (strcmp(#path,#edit_path)==0) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå
714
 	IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/"
738
 	IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/"
715
	Open_Dir(#edit_path,2); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà
739
	Open_Dir(#edit_path,2); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà
716
	IF (count<1) KEdit(); ELSE //ïðîñòî î÷èùàåì ïîëîñó àäðåñà
740
	IF (count<1) KEdit(); ELSE //ïðîñòî î÷èùàåì ïîëîñó àäðåñà
717
		{za_kadrom=curbtn=0; copystr(#edit_path,#path);}//íàâåðõ ñïèñêà
741
		{za_kadrom=curbtn=0; copystr(#edit_path,#path);}//íàâåðõ ñïèñêà
718
	Open_Dir(#path,1);
742
	Open_Dir(#path,1);
719
}
743
}
720
 
744
 
721
void SelectFile(dword that_file)
745
void SelectFile(dword that_file)
722
{
746
{
723
	za_kadrom=curbtn=0; //ââåðõ ñïèñêà
747
	za_kadrom=curbtn=0; //ââåðõ ñïèñêà
724
   	Open_Dir(#path,2);
748
   	Open_Dir(#path,2);
725
	ChangeCase(that_file);
749
	ChangeCase(that_file);
726
	FOR (i=count-1; i>=0; i--;) IF(strcmp(file_mas[i]*304+buf+72,that_file)==0) BREAK;
750
	FOR (i=count-1; i>=0; i--;) IF(strcmp(file_mas[i]*304+buf+72,that_file)==0) BREAK;
727
	IF (i>but_num-1) && (i>count-but_num)
751
	IF (i>but_num-1) && (i>count-but_num)
728
	{
752
	{
729
		za_kadrom=count-but_num;
753
		za_kadrom=count-but_num;
730
		curbtn=i-count+but_num;
754
		curbtn=i-count+but_num;
731
	}
755
	}
732
	ELSE FileList_ReDraw(i);
756
	ELSE FileList_ReDraw(i);
733
	List_ReDraw();
757
	List_ReDraw();
734
}
758
}
735
 
759
 
736
 
760
 
737
void Dir_Up()
761
void Dir_Up()
738
{
762
{
739
	byte temp_[256];
763
	byte temp_[256];
740
	i=strlen(#path)-1;
764
	i=strlen(#path)-1;
741
	path[i]=0x00;
765
	path[i]=0x00;
742
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_); 
766
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_); 
743
	path[i+1]=0x00;
767
	path[i+1]=0x00;
744
	SelectFile(#temp_);
768
	SelectFile(#temp_);
745
}
769
}
746
 
770
 
747
 
771
 
748
inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
772
inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
749
{
773
{
750
	i=strlen(#PathHistory)-1;
774
	i=strlen(#PathHistory)-1;
751
	IF (i<7) RETURN;
775
	IF (i<7) RETURN;
752
	PathHistory[i]=0x00;
776
	PathHistory[i]=0x00;
753
	copystr(#PathHistory+find_symbol(#PathHistory,'/'),#temp); //ïàïêà â êîòîðîé áûëè
777
	copystr(#PathHistory+find_symbol(#PathHistory,'/'),#temp); //ïàïêà â êîòîðîé áûëè
754
	HistoryPath(go_back); 
778
	HistoryPath(go_back); 
755
	SelectFile(#temp);
779
	SelectFile(#temp);
756
}
780
}
757
 
781
 
758
 
782
 
759
stop:
783
stop:
760
}
784
}
761
 
785
 
762
 
786
 
763
void>
787
void>
764
>
788
>
765
>
789
>
766
>
790
>
767
>
791
>
768
>
792
>
769
>
793
>