Subversion Repositories Kolibri OS

Rev

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

Rev 3432 Rev 3434
Line 1... Line 1...
1
//Leency & Veliant 2008-2013
1
//Leency & Veliant 2008-2013
2
//GNU GPL licence.
2
//GNU GPL licence.
Line 3... Line 3...
3
 
3
 
4
//êîïèðîâàòü ÷åðåç ïîòîê
-
 
Line 5... Line 4...
5
//èêîíêà äåéñòâèòåëüíî íóæíà äðóãàÿ äëÿ íåèçâåñíûõ óñòðîéñòâ è ïàïîê â áóäóþùåì.
4
//êîïèðîâàòü ÷åðåç ïîòîê
6
 
5
 
7
//libraries
6
//libraries
8
#define MEMSIZE 0xA0000
7
#define MEMSIZE 0xA0000
Line 12... Line 11...
12
#include "..\lib\dll.h"
11
#include "..\lib\dll.h"
13
#include "..\lib\lib.obj\box_lib.h"
12
#include "..\lib\lib.obj\box_lib.h"
14
#include "..\lib\file_system.h"
13
#include "..\lib\file_system.h"
15
#include "..\lib\figures.h"
14
#include "..\lib\figures.h"
16
#include "..\lib\encoding.h"
15
#include "..\lib\encoding.h"
-
 
16
#include "..\lib\list_box.h"
-
 
17
#include "..\lib\copyf.h"
17
//images
18
//images
18
#include "imgs\toolbar.txt"
19
#include "imgs\toolbar.txt"
19
#include "imgs\left_p.txt"
20
#include "imgs\left_p.txt"
Line 20... Line -...
20
 
-
 
21
int BUTTON_HEIGHT=18;
-
 
22
 
21
 
23
//for OpenDir
22
//for OpenDir
24
#define ONLY_SHOW	0
23
#define ONLY_SHOW	0
25
#define WITH_REDRAW	1
24
#define WITH_REDRAW	1
Line 26... Line -...
26
#define ONLY_OPEN	2
-
 
27
 
25
#define ONLY_OPEN	2
28
//ïåðåìåííûå
26
 
29
#define TITLE "Eolite File Manager v1.65"
27
#define TITLE "Eolite File Manager v1.77"
30
#define ABOUT_TITLE "Eolite v1.65"
28
#define ABOUT_TITLE "Eolite v1.77"
31
dword col_work    = 0xE4DFE1;
29
dword col_work    = 0xE4DFE1;
32
dword col_border  = 0x819FC5;
30
dword col_border  = 0x819FC5;
33
dword col_padding = 0xC8C9C9;
31
dword col_padding = 0xC8C9C9;
Line -... Line 32...
-
 
32
dword col_selec   = 0x94AECE;
-
 
33
dword col_lpanel  = 0x00699C;
-
 
34
 
Line 34... Line 35...
34
dword col_selec   = 0x94AECE;
35
int toolbar_buttons_x[7]={9,46,85,134,167,203};
35
dword col_lpanel  = 0x00699C;
-
 
36
 
-
 
37
 
-
 
38
int  f_visible,
-
 
Line 39... Line 36...
39
     count,
36
char tmp_disk_del_param[3]="d0";
40
     za_kadrom,
-
 
41
     curbtn;
-
 
42
	 
-
 
43
	 
-
 
44
byte cut_active,
-
 
45
     rename_active,
-
 
46
     del_active;
-
 
47
byte show_actions=1,
37
struct path_string { char Item[4096]; };
48
	 show_dev_name=1,
-
 
49
     sort_num=2,
38
 
50
     isdir;
39
llist files;
51
unsigned char
40
 
52
	path[4096],
41
byte
53
	edit_path[4096],
-
 
54
	file_path[4096],
42
	path[4096],
55
	file_name[256],
43
	file_path[4096],
56
	copy_file[4096],
44
	file_name[256],
57
	temp[4096];
-
 
58
int scroll_size;
-
 
59
 
-
 
60
struct path_string {
45
	copy_file[4096],
61
char Item[4096];
46
	temp[4096];	 
62
};
47
byte
63
 
48
	cut_active,
64
int toolbar_buttons_x[7]={9,46,85,134,167,203};
49
	rename_active,
Line 65... Line 50...
65
char tmp_disk_del_param[3]="d0";
50
	del_active;
66
 
51
byte
67
dword file_mas[6898];
52
	show_dev_name=1,
-
 
53
	sort_num=2,
-
 
54
	isdir;
-
 
55
 
Line 68... Line 56...
68
int j, i, mouse_dd;
56
proc_info Form;
69
int scroll_used;
57
mouse m;
70
 
58
int mouse_dd, scroll_used, scroll_size;
Line 71... Line -...
71
proc_info Form;
-
 
72
mouse m;
-
 
73
dword buf, off; //äëÿ òåêñòà è áóôåðà
-
 
74
 
-
 
75
edit_box edit2= {250,213,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,#mouse_dd,64,6,6};
-
 
76
PathShow_data PathShow = {0, 17,250, 6, 250, 0, 0, 0x0, 0xFFFfff, #path, #edit_path, 0};
-
 
77
PathShow_data FileShow = {0, 56,215, 6, 100, 0, 0, 0x0, 0xFFFfff, #file_name, #temp, 0};
-
 
78
 
-
 
79
inline fastcall signed int _strrchr( ESI,BL)
-
 
80
{
-
 
81
	int jj=0, last=strlen(ESI);
-
 
82
	do{
59
dword buf, off;
83
		jj++;
60
dword file_mas[6898];
84
		$lodsb
61
int j, i;
85
		IF(AL==BL) last=jj;
62
 
86
	} while(AL!=0);
63
edit_box edit2= {250,213,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,#mouse_dd,64,6,6};
87
	return last;
64
PathShow_data PathShow = {0, 17,250, 6, 250, 0, 0, 0x0, 0xFFFfff, #path, #temp, 0};
88
}
65
PathShow_data FileShow = {0, 56,215, 6, 100, 0, 0, 0x0, 0xFFFfff, #file_name, #temp, 0};
-
 
66
 
Line 89... Line 67...
89
 
67
#include "include\some_code.h"
90
#include "include\some_code.h"
68
#include "include\about_dialog.h"
91
#include "include\about_dialog.h"
69
#include "include\sorting.h"
92
#include "include\sorting.h"
-
 
Line -... Line 70...
-
 
70
#include "include\icons_f.h"
93
#include "include\icons_f.h"
71
#include "include\ini.h"
94
#include "include\ini.h"
72
#include "include\left_panel.h"
95
#include "include\left_panel.h"
73
#include "include\history.h"
96
#include "include\history.h"
74
#include "include\file_menu.h"
97
 
75
 
98
void main() 
76
void main() 
99
{
77
{
100
	word key, id, can_show; 
78
	word key, id, can_show, can_select;
101
	int min_win_h;
79
 
102
 
80
	files.line_h=18;
103
	mem_Init();
81
	mem_Init();
104
	if (load_dll2(boxlib, #box_lib_init,0)!=0) notify("Error while loading library /rd/1/lib/box_lib.obj");
82
	if (load_dll2(boxlib, #box_lib_init,0)!=0) notify("Error while loading library /rd/1/lib/box_lib.obj");
105
	GetSystemDiscs();
83
	SystemDiscsGet();
106
	GetIni(1);	
84
	GetIni(1);	
107
	if (param)
85
	if (param)
108
	{
86
	{
109
		strcpy(#path, #param);
87
		strcpy(#path, #param);
110
		if (strcmp(#path+strlen(#path)-1,"/")<>0) strcat(#path, "/"); //åñëè íåò, + "/"
-
 
111
	}
88
		if (path[strlen(#path)-1]!='/') chrcat(#path, '/'); //add "/" to the end of the string
112
	else
89
	}
113
		strcpy(#path, "/rd/1/");		
-
 
114
	Open_Dir(#path,ONLY_OPEN);
90
	else
Line 115... Line 91...
115
	SetEventMask(0x27);
91
		strcpy(#path, "/rd/1/");		
Line 116... Line 92...
116
	loop()	switch(WaitEvent())
92
	Open_Dir(#path,ONLY_OPEN);
-
 
93
	SetEventMask(0x27);
117
	{
94
	loop() switch(WaitEvent())
-
 
95
	{
118
		case evMouse:
96
		case evMouse:
-
 
97
			IF (del_active) break;		
-
 
98
			id=GetProcessSlot(Form.ID); 
-
 
99
			IF (id<>GetActiveProcess()) || (Form.status_window>2) break;
-
 
100
			IF (rename_active) { edit_box_mouse stdcall(#edit2); break; }
-
 
101
			
-
 
102
			m.get();
-
 
103
 
-
 
104
			if (m.x > files.x) && (m.x < files.x + files.w) && (m.y > files.y) && (m.y < files.y+files.h)
-
 
105
			{
-
 
106
				if (m.lkm) can_select = 1;
-
 
107
				if (m.pkm)
-
 
108
				{
-
 
109
					can_show = 1;
-
 
110
					if (m.y - 57 / files.line_h != files.current) can_select = 1;
-
 
111
				}
-
 
112
			}
-
 
113
 
-
 
114
			//select/open file {
-
 
115
			if (!m.lkm) && (!m.pkm) && (can_select)
-
 
116
			{
-
 
117
				can_select = 0;
119
			IF (del_active) break;
118
				if (m.y<57) break;
120
			
119
				id = m.y - 57 / files.line_h;
-
 
120
				if (files.current!=id) FileList_ReDraw(id-files.current);
-
 
121
				else Open();
-
 
122
			};
-
 
123
			// } select/open file
-
 
124
 
-
 
125
			//file menu {
-
 
126
			if (!m.pkm) && (!m.lkm) && (can_show)
-
 
127
			{
121
			id=GetProcessSlot(Form.ID); 
128
				can_show = 0;
-
 
129
				if (m.y<57) break;
122
			IF (id<>GetActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì
130
				SwitchToAnotherThread();
Line 123... Line 131...
123
			
131
				CreateThread(#FileMenu,#stak2);
124
			IF (rename_active) edit_box_mouse stdcall(#edit2);
132
				break;
125
			
133
			}
126
			m.get();
134
			// } file menu
127
 
135
 
128
			/*if (m.pkm) && (m.x > 192) && (m.y > 57) can_show = 1;
136
 
129
			if (!m.pkm) && (can_show)
137
			if (m.vert)
130
			{
138
			{
131
				SwitchToAnotherThread();
139
				files.MouseScroll(m.vert);
132
				CreateThread(#FileMenu,#stak2);
140
				List_ReDraw();
133
				can_show = 0;
141
				break;
134
			}*/
142
			}
Line 135... Line 143...
135
 
143
 
136
			if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57)
144
			if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>40) && (m.y<57)
137
			{
145
			{
138
				IF (m.lkm==1) DrawRectangle3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF);
146
				IF (m.lkm==1) DrawRectangle3D(onLeft(26,0),41,14,14,0xC7C7C7,0xFFFFFF);
139
				WHILE (m.lkm==1) && (za_kadrom>0)
147
				WHILE (m.lkm==1) && (files.first>0)
140
				{
148
				{
141
					pause(10);
149
					pause(8);
142
					za_kadrom--;
150
					files.first--;
143
					List_ReDraw();
151
					List_ReDraw();
144
					m.get();
152
					m.get();
145
				}
153
				}
146
				DrawRectangle3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7);
154
				DrawRectangle3D(onLeft(26,0),41,14,14,0xFFFFFF,0xC7C7C7);
Line 147... Line -...
147
			}
-
 
148
 
-
 
149
			if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y
-
 
150
			{
-
 
151
				IF (m.lkm==1) DrawRectangle3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF);
-
 
152
				while (m.lkm==1) && (za_kadrom
-
 
153
				{
-
 
154
					pause(10);
-
 
155
					za_kadrom++;
-
 
156
					List_ReDraw();
-
 
157
					m.get();
-
 
158
				}
-
 
159
				DrawRectangle3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
-
 
160
			}
-
 
161
 
-
 
162
			//êîë¸ñèêî ìûøè
-
 
163
			IF (m.vert==65535) && (za_kadrom>0)
-
 
164
			{
-
 
165
				if (za_kadrom>0) za_kadrom--;
-
 
166
				if (curbtn
155
			}
167
				List_ReDraw();
156
 
168
				if (za_kadrom>0) za_kadrom--;
157
			if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y
Line 169... Line 158...
169
				if (curbtn
158
			{
170
				List_ReDraw();
159
				IF (m.lkm==1) DrawRectangle3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF);
171
			}
160
				while (m.lkm==1) && (files.first
172
			IF (m.vert==1) && (za_kadrom
161
				{
173
			{
162
					pause(8);
174
				if (za_kadrom
163
					files.first++;
175
				if (curbtn>0) curbtn--;
164
					List_ReDraw();
176
				List_ReDraw();
165
					m.get();
177
				if (za_kadrom
166
				}
178
				if (curbtn>0) curbtn--;
167
				DrawRectangle3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
179
				List_ReDraw();
168
			}
180
			}
169
 
181
			//ñêðîëë
170
			//Scrooll
182
			if (!m.lkm) && (scroll_used) { scroll_used=NULL; TVScroll(); }
171
			if (!m.lkm) && (scroll_used) { scroll_used=NULL; Scroll(); }
Line 209... Line 198...
209
						GoBack();
198
						GoBack();
210
						break;
199
						break;
211
				case 22: //Forward
200
				case 22: //Forward
212
						if (HistoryPath(GO_FORWARD))
201
						if (HistoryPath(GO_FORWARD))
213
						{
202
						{
214
							za_kadrom=curbtn=NULL; //ââåðõ ñïèñêà
203
							files.first=files.current=NULL; //aaa?o nienea
215
							Open_Dir(#path,WITH_REDRAW);
204
							Open_Dir(#path,WITH_REDRAW);
216
						}
205
						}
217
						break;
206
						break;
218
				case 23: //up!
207
				case 23: //up!
219
						Dir_Up();
208
						Dir_Up();
Line 228... Line 217...
228
				case 31...33: //sort
217
				case 31...33: //sort
229
						IF(sort_num==1) DrawFilledBar(onLeft(192,168)/2+210,42,6,10);
218
						IF(sort_num==1) DrawFilledBar(onLeft(192,168)/2+210,42,6,10);
230
						IF(sort_num==2) DrawFilledBar(onLeft(115,0),42,6,10);
219
						IF(sort_num==2) DrawFilledBar(onLeft(115,0),42,6,10);
231
						IF(sort_num==3) DrawFilledBar(onLeft(44,0),42,6,10);
220
						IF(sort_num==3) DrawFilledBar(onLeft(44,0),42,6,10);
232
						sort_num=id-30;
221
						sort_num=id-30;
233
						Open_Dir(#path,1);
222
						Open_Dir(#path,WITH_REDRAW);
234
						break; 
-
 
235
				case 30: //about
-
 
236
						SwitchToAnotherThread();
-
 
237
						CreateThread(#about_dialog,#stak1); 
-
 
238
						break;
-
 
239
				case 77:
-
 
240
						IF (show_actions==1) show_actions=0; ELSE show_actions=1;
-
 
241
						DrawLeftPanel();
-
 
242
						break;
223
						break;
243
				case 78: //rescan devices
224
				case 78: //rescan devices
244
						Tip(56, "Devices", 78, "-");
225
						Tip(56, "Devices", 78, "-");
245
						pause(10);
226
						pause(10);
246
						GetIni(1);
227
						GetIni(1);
247
						GetSystemDiscs();
228
						SystemDiscsGet();
248
						Open_Dir(#path,WITH_REDRAW);
229
						Open_Dir(#path,WITH_REDRAW);
249
						DrawLeftPanel();
230
						DrawLeftPanel();
250
						break;
231
						break;
251
				case 80: //rename
232
				case 50...60: //Actions
252
						goto REN_MARK; 
-
 
253
				case 81: //Delete file
-
 
254
						Del_Form();
-
 
255
						break;
-
 
256
				case 82: //create folder
-
 
257
					NEW_FOLDER_MARK:
-
 
258
						strcpy(#temp, #path);
-
 
259
						strcat(#temp, "New folder");
-
 
260
						CreateDir(#temp);
-
 
261
						IF (!EAX){
-
 
262
							SelectFile("New folder");
-
 
263
							goto REN_MARK;
-
 
264
						}
-
 
265
						ELSE
-
 
266
						{
-
 
267
							Write_Error(EAX);
233
						ActionsProcess(id-50);
268
							ShowMessage("Folder can not be created.");
-
 
269
						}
-
 
270
						break;
234
						break;
271
				case 100...120:
235
				case 100...120:
272
					DEVICE_MARK:
236
					DEVICE_MARK:
273
						DrawRectangle3D(17,id-100*16+74,159,16, 0, 0); //âûäåëåíèå
237
						DrawRectangle3D(17,id-100*16+74,159,16, 0, 0); //auaaeaiea
274
						strcpy(#path, #disk_list[id-100].Item);
238
						strcpy(#path, #disk_list[id-100].Item);
275
						za_kadrom=curbtn=0;
239
						files.first=files.current=0;
276
						Open_Dir(#path,1);
240
						Open_Dir(#path,1);
277
						pause(5);
241
						pause(5);
278
						DrawRectangle3D(17,id-100*16+74,159,16, 0xFFFFFF, 0xFFFFFF);
242
						DrawRectangle3D(17,id-100*16+74,159,16, 0xFFFFFF, 0xFFFFFF);
279
						break;
243
						break;
280
				case 130...160:
244
				case 130...160:
281
						tmp_disk_del_param[1]=disk_list[id-130].Item[4];
245
						tmp_disk_del_param[1]=disk_list[id-130].Item[4];
282
						RunProgram("/sys/tmpdisk", #tmp_disk_del_param);
246
						RunProgram("/sys/tmpdisk", #tmp_disk_del_param);
283
						pause(10);
247
						pause(10);
284
						GetSystemDiscs();
248
						SystemDiscsGet();
285
						Open_Dir(#path,WITH_REDRAW);
249
						Open_Dir(#path,WITH_REDRAW);
286
						DrawLeftPanel();
250
						DrawLeftPanel();
287
						break;
251
						break;
288
				default:
-
 
289
						if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
-
 
290
						if (curbtn!=id-201)	{FileList_ReDraw(id-201-curbtn); break;}
-
 
291
						else
-
 
292
						{
-
 
293
							OPEN_MARK:
-
 
294
							if (!isdir)
-
 
295
							{
-
 
296
								GetIni(0);
-
 
297
							} 
-
 
298
							else
-
 
299
							{
-
 
300
								if (!strcmp(#file_name,"..")) { Dir_Up(); break; }
-
 
301
								OPEN_DEV:
-
 
302
								strcpy(#path, #file_path);
-
 
303
								IF (strcmp(#path+strlen(#path)-1,"/")<>0) strcat(#path,"/"); //åñëè íåò, + "/"
-
 
304
								za_kadrom=curbtn=0;
-
 
305
								Open_Dir(#path,1);
-
 
306
							}
-
 
307
						}
-
 
308
			}
252
			}
309
			break;
253
			break;
310
//Key pressed-----------------------------------------------------------------------------
254
//Key pressed-----------------------------------------------------------------------------
311
		case evKey:
255
		case evKey:
312
			key = GetKey();
256
			key = GetKey();
Line 327... Line 271...
327
			{
271
			{
328
					case 209...217:
272
					case 209...217:
329
							id=key-110;
273
							id=key-110;
330
							IF (id-100>=disc_num) break;
274
							IF (id-100>=disc_num) break;
331
							GOTO DEVICE_MARK;
275
							GOTO DEVICE_MARK;
332
					case   8: //Íàçàä
276
					case 008:
333
							//GoBack();
277
							//GoBack();
334
							Dir_Up();
278
							Dir_Up();
335
							break; 
279
							break; 
336
					case 004: //Ctrl+D ðèñ íà ðàá ñòîë ðàñòÿíóòü
280
					case 004: //Ctrl+D set as bg
337
							strcpy(#temp, "\\S__");
281
							strcpy(#temp, "\\S__");
338
							strcat(#temp, #file_path);
282
							strcat(#temp, #file_path);
339
							RunProgram("/sys/media/kiv", #temp);
283
							RunProgram("/sys/media/kiv", #temp);
340
							break;
284
							break;
341
					case 014: //Ctrl+N íîâîå îêíî
285
					case 014: //Ctrl+N new window
342
							IF (Form.left==98) MoveSize(Form.left-20,Form.top-20,OLD,OLD);
286
							IF (Form.left==98) MoveSize(Form.left-20,Form.top-20,OLD,OLD);
343
							RunProgram("/sys/File Managers/Eolite", #path);
287
							RunProgram("/sys/File Managers/Eolite", #path);
344
							break; 
288
							break; 
345
					case 024: //Ctrl+X
289
					case 024: //Ctrl+X
346
					case 003: //Ctrl+C
290
					case 003: //Ctrl+C
347
							CTRLC_MARK:
291
							CTRLC_MARK:
348
							IF (isdir) break; //ïàïêè ïîêà ÷òî êîïèðîâàòü íå óìååì
292
							IF (isdir) break;
349
							strcpy(#copy_file, #file_path); //âû÷èñëÿåì êàêîé ôàéë êîïèðîâàòü
293
							strcpy(#copy_file, #file_path);
350
							IF (key==24) cut_active=1; ELSE cut_active=0; 
294
							IF (key==24) cut_active=1; ELSE cut_active=0; 
351
							break;
295
							break;
352
					case 022: //Ctrl+V
296
					case 022: //Ctrl+V
353
							Paste();
297
							Paste();
354
							break;
298
							break;
355
					case 027: //Esc
299
					case 027: //Esc
356
							IF (rename_active==1) ReName(false);
300
							IF (rename_active==1) ReName(false);
357
							break;
301
							break;
358
					case 013: //Enter
302
					case 013: //Enter
359
							IF (rename_active==1) {ReName(true); break;}
303
							IF (rename_active==1) {ReName(true); break;}
360
							GOTO OPEN_MARK;
304
							Open();
361
							break; 
305
							break; 
362
					case 55: //F6 - new folder
-
 
363
							goto NEW_FOLDER_MARK;
-
 
364
					case 56:  //IF (rename_active==1) break;//up
-
 
365
					case 178: //up
306
					case 178: //up
366
							FileList_ReDraw(-1);
307
							FileList_ReDraw(-1);
367
							break;
308
							break;
368
					case 177: //down
309
					case 177: //down
369
							FileList_ReDraw(1);
310
							FileList_ReDraw(1);
370
							break;
311
							break;
371
					case 180: //home
312
					case 180: //home
372
							za_kadrom=0;
313
							files.first=0;
373
							curbtn=0;
314
							files.current=0;
374
							List_ReDraw();
315
							List_ReDraw();
375
							break;
316
							break;
376
					case 181: //end
317
					case 181: //end
377
							za_kadrom=count-f_visible;
318
							files.first=files.count-files.visible;
378
							curbtn=f_visible-1;
319
							files.current=files.visible-1;
379
							List_ReDraw();
320
							List_ReDraw();
380
							break;
321
							break;
381
					case 183: //Page Down
322
					case 183: //Page Down
382
							FileList_ReDraw(f_visible-1);
323
							FileList_ReDraw(files.visible-1);
383
							break;
324
							break;
384
					case 184: //Page Up
325
					case 184: //Page Up
385
							FileList_ReDraw(-f_visible+1);
326
							FileList_ReDraw(-files.visible+1);
386
							break;
-
 
387
					case 051: //Íàæàòà F2
-
 
388
							REN_MARK:
-
 
389
							if (!count) break;
-
 
390
							DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ
-
 
391
							edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
-
 
392
							edit2.width=onLeft(24,217);
-
 
393
							edit2.top=curbtn*BUTTON_HEIGHT+59;
-
 
394
							edit2.size=edit2.pos=strlen(#file_name);
-
 
395
							edit_box_draw  stdcall (#edit2);
-
 
396
							DrawBar(213,curbtn*BUTTON_HEIGHT+58,edit2.width+1,1,0xFFFFCC); //ïîëîñà æåëòàÿ ñâåðõó äëÿ îäèíàêîâîñòè
-
 
397
							rename_active=1;
-
 
398
							break;
-
 
399
					case 052: //Íàæàòà F3
-
 
400
							IF (!isdir) RunProgram("/sys/tinypad", #file_path);
-
 
401
							break;
-
 
402
					case 053: //Íàæàòà F4
-
 
403
							IF (!isdir) RunProgram("/sys/develop/heed", #file_path);
-
 
404
							break;
-
 
405
					case 054: //F5
-
 
406
							Open_Dir(#path,1);
-
 
407
							break;
327
							break;
408
					case 182: //delete file
328
					case 182: //del
409
							Del_Form();
329
							Del_Form();
410
							break; 
330
							break;
-
 
331
					case 050...059: //F1-F10
-
 
332
							ActionsProcess(key-49);
-
 
333
							break; 
411
					default:    
334
					default:    
412
							for (i=curbtn+za_kadrom+1; i
335
							for (i=files.current+files.first+1; i
413
							{
336
							{
414
								strcpy(#temp, file_mas[i]*304+buf+72);
337
								strcpy(#temp, file_mas[i]*304+buf+72);
415
								IF (temp[0]==key) || (temp[0]==key-32)
338
								IF (temp[0]==key) || (temp[0]==key-32)
416
								{
339
								{
417
									FileList_ReDraw(i-curbtn-za_kadrom);
340
									FileList_ReDraw(i-files.current-files.first);
418
									break;
341
									break;
419
								}
342
								}
420
							}
343
							}
421
			}                         
344
			}                         
422
			break;
345
			break;
423
		case evReDraw:
346
		case evReDraw:
424
			DefineAndDrawWindow(40,20,550,500,0x73,col_work,TITLE);
347
			DefineAndDrawWindow(40,20,550,500,0x73,col_work,TITLE);
425
			GetProcessInfo(#Form, SelfInfo);
348
			GetProcessInfo(#Form, SelfInfo);
426
			if (Form.status_window>2) break;
349
			if (Form.status_window>2) break;
427
			min_win_h = disc_num*16+195;
350
			files.SetSizes(192, 57, onLeft(192,27), onTop(57,6), disc_num*16+195,files.line_h);
428
			if (Form.height < min_win_h) MoveSize(OLD,OLD,OLD,min_win_h);
351
			if (Form.height < files.min_h) MoveSize(OLD,OLD,OLD,files.min_h);
429
			if (Form.width<480) MoveSize(OLD,OLD,480,OLD);
352
			if (Form.width<480) MoveSize(OLD,OLD,480,OLD);
430
			draw_window();
353
			draw_window();
431
	}
354
	}
432
}
355
}
Line 433... Line 356...
433
 
356
 
434
 
357
 
435
inline fastcall void draw_window()
358
inline fastcall void draw_window()
436
{	
359
{	
437
	//toolbar buttons
360
	//toolbar
438
	PutPaletteImage(#toolbar,246,34,0,0,8,#toolbar_pal);
361
	PutPaletteImage(#toolbar,246,34,0,0,8,#toolbar_pal);
439
	for (j=0; j<3; j++) DefineButton(toolbar_buttons_x[j]+2,5+2,31-5,29-5,21+j+BT_HIDE,col_work);
-
 
440
	for (j=3; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,col_work);
362
	for (j=0; j<3; j++) DefineButton(toolbar_buttons_x[j]+2,5+2,31-5,29-5,21+j+BT_HIDE,col_work);
441
	//ïîëîñà àäðåñà
363
	for (j=3; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,col_work);
442
	DrawBar(246,0,onLeft(246,60),12, col_work); //ôîí íàä ïîëîñîé àäðåñà
364
	DrawBar(246,0,onLeft(246,60),12, col_work); //ôîí íàä ïîëîñîé àäðåñà
443
	DrawBar(246,29,onLeft(246,60),5,col_work); //ôîí ïîä ïîëîñîé àäðåñà
365
	DrawBar(246,29,onLeft(246,60),5,col_work);  //ôîí ïîä ïîëîñîé àäðåñà
444
	DrawRectangle3D(246,12,onLeft(66,246),16,col_border,col_border);	//îáîäîê
366
	DrawRectangle3D(246,12,onLeft(66,246),16,col_border,col_border);
445
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,col_work); //about
367
	DefineButton(onLeft(34,0),6,27,28,51+BT_HIDE+BT_NOFRAME,col_work); //about
446
	PutPaletteImage(#goto_about,56,34,Form.width-65,0,8,#goto_about_pal);
368
	PutPaletteImage(#goto_about,56,34,Form.width-65,0,8,#goto_about_pal);
447
	//ïðÿìîóãîëüíèêè âíóòðè
369
	//main rectangles
448
	DrawRectangle3D(1,40,Form.cwidth-3,onTop(46,0),col_border,col_border); //ñèíèé îáîäîê
370
	DrawRectangle3D(1,40,Form.cwidth-3,onTop(46,0),col_border,col_border);
449
	DrawRectangle3D(0,39,Form.cwidth-1,onTop(44,0),col_palette[4],col_palette[4]); //ôîí
371
	DrawRectangle3D(0,39,Form.cwidth-1,onTop(44,0),col_palette[4],col_palette[4]); //bg
450
	for (i=0; i<5; i++) DrawBar(0, 34+i, Form.cwidth, 1, col_palette[8-i]);	
372
	for (i=0; i<5; i++) DrawBar(0, 34+i, Form.cwidth, 1, col_palette[8-i]);	
451
	DrawLeftPanel();
373
	DrawLeftPanel();
452
	//SortButtons
374
	//ListBox
453
	DrawFlatButton(192,40,onLeft(192,168),16,31,col_work,"File");
375
	DrawFlatButton(files.x,40,onLeft(files.x,168),16,31,col_work,"File");
-
 
376
	DrawFlatButton(onLeft(168,0),40,73,16,32,col_work,"Type");
454
	DrawFlatButton(onLeft(168,0),40,73,16,32,col_work,"Type");
377
	DrawFlatButton(onLeft(95,0),40,68,16,33,col_work,"Size");
-
 
378
	DrawBar(onLeft(27,0),57,1,onTop(22,57),col_border); //line to the left from the scroll
455
	DrawFlatButton(onLeft(95,0),40,68,16,33,col_work,"Size");
379
	DrawFlatButton(onLeft(27,0),40,16,16,0,col_work,"\x18");
456
	//Ïåðåðèñîâûâàåì ñïèñîê
-
 
457
	Open_Dir(#path,ONLY_SHOW);
-
 
458
	//ïðîêðóòêà
-
 
459
	DrawBar(onLeft(27,0),57,1,onTop(22,57),col_border); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
-
 
460
	DrawFlatButton(onLeft(27,0),40,16,16,0,col_work,"\x18");		//ïðîêðóòêà ââåðõ
380
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,col_work,"\x19");
461
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,col_work,"\x19");//ïðîêðóòêà âíèç
-
 
462
	if (del_active) Del_Form();
381
	Open_Dir(#path,ONLY_SHOW);
Line 463... Line 382...
463
	DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,col_work); //about
382
	if (del_active) Del_Form();
464
}
383
}
-
 
384
 
465
 
385
 
466
 
386
void KEdit()
467
void KEdit()
387
{
468
{
388
	if (Form.width<480) return;
469
	PathShow.area_size_x = Form.cwidth-306;
389
	PathShow.area_size_x = Form.cwidth-306;
Line 470... Line 390...
470
	DrawBar(PathShow.start_x-3, PathShow.start_y-4, PathShow.area_size_x+2, 15, 0xFFFfff);
390
	DrawBar(PathShow.start_x-3, PathShow.start_y-4, PathShow.area_size_x+2, 15, 0xFFFfff);
471
	PathShow_prepare stdcall(#PathShow);
391
	PathShow_prepare stdcall(#PathShow);
472
	PathShow_draw stdcall(#PathShow);
392
	PathShow_draw stdcall(#PathShow);
473
}
393
}
474
 
394
 
475
 
395
 
476
void FileList_ReDraw(int curbtn_)
396
void FileList_ReDraw(int cur)
477
{
397
{
478
	if (curbtn_<=0) //ââåðõ
398
	if (cur<=0) //up
479
	{
399
	{
480
		IF (za_kadrom==0) && (curbtn<=0) return;
400
		IF (files.first==0) && (files.current<=0) return;
481
		IF (-curbtn_-1
401
		IF (-cur-1
482
		{
402
		{
483
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
403
			Line_ReDraw(0xFFFFFF, files.current);
484
			curbtn+=curbtn_;
404
			files.current+=cur;
485
			Line_ReDraw(col_selec, curbtn); //âûäåëåíèå
405
			Line_ReDraw(col_selec, files.current);
486
			return;
406
			return;
487
		}
407
		}
488
		ELSE
408
		ELSE
489
		{
409
		{
490
			IF (-curbtn_
410
			IF (-cur
491
			curbtn=0;
411
			files.current=0;
492
			List_ReDraw();
412
			List_ReDraw();
493
			return;
413
			return;
494
		}
414
		}
495
	}
415
	}
496
	else  //âíèç
416
	else  //down
497
	{
417
	{
498
		IF (za_kadrom==count-f_visible) && (curbtn==f_visible-1) return;
418
		IF (files.first==files.count-files.visible) && (files.current==files.visible-1) return;
499
		IF (f_visible-curbtn>curbtn_)
419
		IF (files.visible-files.current>cur)
500
		{
420
		{
501
			Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
421
			Line_ReDraw(0xFFFFFF, files.current);
502
			curbtn+=curbtn_;
422
			files.current+=cur;
503
			Line_ReDraw(col_selec, curbtn); //âûäåëåíèå
423
			Line_ReDraw(col_selec, files.current);
504
			return;
424
			return;
505
		}
425
		}
506
		else
426
		else
507
		{
427
		{
508
			IF(za_kadrom+curbtn+curbtn_>=count)
428
			IF(files.first+files.current+cur>=files.count)
509
			{
429
			{
510
				za_kadrom=count-f_visible;
430
				files.first=files.count-files.visible;
511
				curbtn=curbtn_-za_kadrom+curbtn;
431
				files.current=cur-files.first+files.current;
Line 512... Line 432...
512
				}
432
				}
513
			ELSE
433
			ELSE
514
			{
434
			{
515
				za_kadrom+=curbtn_+curbtn-f_visible+1;
435
				files.first+=cur+files.current-files.visible+1;
516
				curbtn=f_visible-1;
436
				files.current=files.visible-1;
517
			}
437
			}
518
			
438
			
519
			IF (curbtn<0) || (curbtn>f_visible)
439
			IF (files.current<0) || (files.current>files.visible)
Line 528... Line 448...
528
 
448
 
529
 
449
 
530
 
450
 
531
void List_ReDraw()
451
void List_ReDraw()
532
{
452
{
-
 
453
	int paint_y;
-
 
454
	//åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
533
	int paint_x=f_visible*BUTTON_HEIGHT+57;
455
	//ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
534
	IF (count-za_kadromf_visible-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
456
	if (files.count-files.firstfiles.visible-1)
-
 
457
	{ files.first=files.count-files.visible; files.current=files.visible-1; }
-
 
458
 
535
	{ za_kadrom=count-f_visible; curbtn=f_visible-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
459
	for (j=0; jj) Line_ReDraw(0xFFFFFF, j); else Line_ReDraw(col_selec, files.current);
536
 
460
	//in the bottom
537
	FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(col_selec, curbtn);
461
	paint_y = j * files.line_h + files.y;
538
		DrawBar(192,paint_x,onLeft(27,192),onTop(paint_x,6),0xFFFFFF); //çàëèâêà áåëûì äîêîíöà
462
	DrawBar(files.x,paint_y,files.w,onTop(paint_y,6),0xFFFFFF);
539
		DrawBar(onLeft(168,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
463
	DrawBar(onLeft(168,0),paint_y,1,onTop(paint_y,6),col_work);
Line 540... Line 464...
540
		DrawBar(onLeft(95,0),paint_x,1,onTop(paint_x,6),col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
464
	DrawBar(onLeft(95,0),paint_y,1,onTop(paint_y,6),col_work);
541
	TVScroll();
465
	Scroll();
542
}
466
}
543
 
-
 
544
void Line_ReDraw(dword color, filenum){
-
 
545
	dword text_col=0, name_len=0, y=filenum*BUTTON_HEIGHT+57; //ïîëîæåíèå òåêñòà ïî Y
467
 
546
	IF (rename_active==1) ReName(false);
468
void Line_ReDraw(dword color, filenum){
547
	DefineButton(192,y,onLeft(28,192),BUTTON_HEIGHT,201+filenum+BT_HIDE+BT_NOFRAME,color); //êíîïà
469
	dword text_col=0, name_len=0, y=filenum*files.line_h+57;
548
	//äà, ÿ íå ñïîðþ ÷òî èçâðàò, íî çàòî ïåðåðèñîâêè íå âèäíî
470
	IF (rename_active==1) ReName(false);
Line 549... Line 471...
549
	DrawBar(192,y,3,BUTTON_HEIGHT,color); 
471
	DrawBar(192,y,3,files.line_h,color); 
Line 550... Line 472...
550
	DrawBar(192+19,y,onLeft(46,192),BUTTON_HEIGHT,color); DrawBar(195,y+17,16,1,color);
472
	DrawBar(192+19,y,onLeft(46,192),files.line_h,color); DrawBar(195,y+17,16,1,color);
551
	if (BUTTON_HEIGHT>18) DrawBar(195,y+18,16,BUTTON_HEIGHT-18,color);
473
	if (files.line_h>18) DrawBar(195,y+18,16,files.line_h-18,color);
552
	if (BUTTON_HEIGHT>15) DrawBar(195,y,16,BUTTON_HEIGHT-15,color); 
474
	if (files.line_h>15) DrawBar(195,y,16,files.line_h-15,color); 
553
 
475
 
554
	off=file_mas[filenum+za_kadrom]*304 + buf+72;
476
	off=file_mas[filenum+files.first]*304 + buf+72;
555
 
477
 
556
	if (!TestBit(ESDWORD[off-40], 4)) //ýòî ÔÀÉË èëè ïàïêà?
478
	if (!TestBit(ESDWORD[off-40], 4)) //file or folder?
557
	{	
479
	{	
558
		strcpy(#temp, off);
480
		strcpy(#temp, off);
559
		Put_icon(#temp+_strrchr(#temp,'.'), BUTTON_HEIGHT/2-7+y, color);
481
		Put_icon(#temp+_strrchr(#temp,'.'), files.line_h/2-7+y, color);
560
		WriteText(7-strlen(ConvertMemSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertMemSize(ESDWORD[off-8])); //size
482
		WriteText(7-strlen(ConvertMemSize(ESDWORD[off-8]))*6+onLeft(75,0),files.line_h-6/2+y,0x80,0,ConvertMemSize(ESDWORD[off-8])); //size
561
	}
-
 
562
	else
483
	}
563
		if (!strcmp("..",off))
484
	else
564
			Put_icon("..", BUTTON_HEIGHT/2-7+y, color);
485
		if (!strcmp("..",off))
565
		else
486
			Put_icon("..", files.line_h/2-7+y, color);
566
			Put_icon("", BUTTON_HEIGHT/2-7+y, color);
487
		else
567
 
488
			Put_icon("", files.line_h/2-7+y, color);
568
	if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7; //ôàéë ñêðûòûé èëè ñèñòåìíûé?
489
	if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7; //system or hiden?
569
	if (color<>0xFFFfff)
490
	if (color<>0xFFFfff)
570
	{
491
	{
-
 
492
		isdir=TestBit(ESDWORD[off-40], 4);		
-
 
493
		strcpy(#file_name, off);
571
		isdir=TestBit(ESDWORD[off-40], 4);		
494
		strcpy(#file_path, #path);
572
		strcpy(#file_name, off);
495
		strcat(#file_path, #file_name);
573
		strcpy(#file_path, #path);
496
		if (text_col==0xA6A6B7) text_col=0xFFFFFF;
574
		strcat(#file_path, #file_name); //ïîëíûé ïóòü ê ôàéëó
497
	}
575
		if (text_col==0xA6A6B7) text_col=0xFFFFFF;
498
	if (Form.width>=480)
576
	}
499
	{
577
	FileShow.font_color = text_col;
500
		FileShow.font_color = text_col;
578
	FileShow.area_size_x = Form.width - 380;
501
		FileShow.area_size_x = Form.width - 380;
579
	FileShow.text_pointer = off;
502
		FileShow.text_pointer = off;
580
	FileShow.start_y = BUTTON_HEIGHT/2-3+y;
503
		FileShow.start_y = files.line_h/2-3+y;
Line 581... Line 504...
581
	PathShow_prepare stdcall(#FileShow);
504
		PathShow_prepare stdcall(#FileShow);
582
	PathShow_draw stdcall(#FileShow);
505
		PathShow_draw stdcall(#FileShow);
583
 
506
	}
584
	DrawBar(onLeft(168,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
507
	DrawBar(onLeft(168,0),y,1,files.line_h,col_work); //gray line 1
Line 585... Line 508...
585
	DrawBar(onLeft(95,0),y,1,BUTTON_HEIGHT,col_work); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
508
	DrawBar(onLeft(95,0),y,1,files.line_h,col_work); //gray line 2
586
}
509
}
Line 597... Line 520...
597
		if (somelen) path_[somelen]=NULL;
520
		if (somelen) path_[somelen]=NULL;
Line 598... Line 521...
598
		
521
		
599
		if (buf) free(buf);
522
		if (buf) free(buf);
600
    	buf = malloc(32);
523
    	buf = malloc(32);
601
		errornum=ReadDir(0, buf, #path_);
524
		errornum=ReadDir(0, buf, #path_);
602
		if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè
525
		if (errornum<>0)
603
		{
526
		{
604
			HistoryPath(ADD_NEW_PATH);
527
			HistoryPath(ADD_NEW_PATH);
605
			GoBack();
528
			GoBack();
606
			Write_Error(errornum);
529
			Write_Error(errornum);
607
			return;
530
			return;
608
		}
531
		}
609
    	count = ESDWORD[buf+8];
532
    	files.count = ESDWORD[buf+8];
610
    	buf = realloc(buf, count * 304 + 32);
533
    	buf = realloc(buf, files.count * 304 + 32);
611
		ReadDir(count, buf, #path_);
534
		ReadDir(files.count, buf, #path_);
612
		count=EBX;
535
		files.count=EBX;
613
		max_count = sizeof(file_mas)/sizeof(dword)-1;
536
		count = sizeof(file_mas)/sizeof(dword)-1;
Line 614... Line 537...
614
		if (count>max_count) count=max_count;
537
		if (files.count>count) files.count=count;
615
		
538
		
616
	}
539
	}
617
	if (count<>-1)
540
	if (files.count<>-1)
618
	{
541
	{
619
		KEdit();
542
		KEdit();
620
		HistoryPath(ADD_NEW_PATH);
-
 
621
		IF (!strcmp(".",buf+72)) {count--; memmov(buf,buf+304,count*304);} //ôèëüòðóåì ýëåìåíò "."
543
		HistoryPath(ADD_NEW_PATH);
622
		FOR (j=0;j
544
		IF (!strcmp(".",buf+72)) {files.count--; memmov(buf,buf+304,files.count*304);} //oeeuo?oai yeaiaio "."
623
		f_visible=onTop(6,57)/BUTTON_HEIGHT;
-
 
624
		IF (count
545
		files.visible=onTop(6,57)/files.line_h;
625
		//ñòðåëî÷êà ñîðòèðîâêè
546
		IF (files.count
626
		IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19");
547
		IF (sort_num==1) WriteText(Form.width+60/2,45,0x80,0x4E78AC,"\x19");
627
		IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19");
548
		IF (sort_num==2) WriteText(Form.width-115,45,0x80,0x4E78AC,"\x19");
628
		IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19");
549
		IF (sort_num==3) WriteText(Form.width-44,45,0x80,0x4E78AC,"\x19");
629
		IF (redraw<>ONLY_SHOW) Sorting(); //äëÿ áîëüøèõ ïàïîê ïðè ðåïåèíòå îêíà
550
		IF (redraw<>ONLY_SHOW) Sorting();
630
		IF (redraw<>ONLY_OPEN) List_ReDraw();
551
		IF (redraw<>ONLY_OPEN) List_ReDraw();
631
	}
552
	}
Line 632... Line 553...
632
	IF (count==-1) && (redraw<>ONLY_OPEN) {f_visible=count=0; List_ReDraw();}
553
	IF (files.count==-1) && (redraw<>ONLY_OPEN) {files.visible=files.count=0; List_ReDraw();}
633
}
554
}
634
 
555
 
635
 
556
 
636
 
557
 
637
inline Sorting()
558
inline Sorting()
638
{
559
{
639
	dword k=0, l=1;
560
	dword k=0, l=1;
640
	int i;
561
	int i;
641
	if (!strcmp(#path,"/")) //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/"
562
	if (!strcmp(#path,"/")) //do not sort
642
	{
563
	{
643
		FOR(k=1;k
564
		FOR(k=1;k
644
		return;
565
		return;
645
	}
566
	}
646
	FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;)  //ïàïêè ââåðõ, ôàéëû âíèç
567
	FOR (j=files.count-1, off=files.count-1*304+buf+32; j>=0; j--, off-=304;)  //files | folders
647
	{
568
	{
648
		strttl(off+40);
569
		strttl(off+40);
649
		if (TestBit(ESDWORD[off],4)) //ïàïêà?
570
		if (TestBit(ESDWORD[off],4)) //isdir?
650
		{
571
		{
651
			file_mas[k]=j;
572
			file_mas[k]=j;
652
			k++;
573
			k++;
653
		}
574
		}
654
		else
575
		else
655
		{
576
		{
656
			file_mas[count-l]=j;
577
			file_mas[files.count-l]=j;
657
			l++;
578
			l++;
658
		}
579
		}
659
	}
580
	}
660
	//Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû
581
	//sorting: files first, then folders
661
	Sort_by_Name(0,k-1);
582
	Sort_by_Name(0,k-1);
662
	IF (sort_num==1) Sort_by_Name(k,count-1);
583
	IF (sort_num==1) Sort_by_Name(k,files.count-1);
Line 663... Line 584...
663
	IF (sort_num==2) Sort_by_Type(k,count-1);
584
	IF (sort_num==2) Sort_by_Type(k,files.count-1);
664
	IF (sort_num==3) Sort_by_Size(k,count-1);
585
	IF (sort_num==3) Sort_by_Size(k,files.count-1);
665
	//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
586
	//".." should be first
666
	IF (k>0) && (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k--; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]>
587
	IF (k>0) && (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k--; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]>
667
}
588
}
668
 
-
 
669
 
589
 
670
void Del_Form()
590
 
671
{
591
void Del_Form()
672
	int dform_x=Form.width/2-13;
592
{
673
	//òèïà îêíî
593
	int dform_x=Form.width/2-13;
674
	if (!count) return;
594
	//oeia ieii
675
	FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé
595
	if (!files.count) return;
676
	DrawFlatButton(dform_x,160,200,80,0,col_work, ""); //ôîðìà
596
	DrawFlatButton(dform_x,160,200,80,0,col_work, ""); //oi?ia
677
	WriteText(dform_x+19,175,0x80,0,"Do you really want to delete");
597
	WriteText(dform_x+19,175,0x80,0,"Do you really want to delete");
678
	IF (strlen(#file_name)<28) 
598
	IF (strlen(#file_name)<28) 
679
		{
599
		{
680
			WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?");
600
			WriteText(strlen(#file_name)*6+dform_x+20,190,0x80,0,"?");
681
			WriteText(dform_x+20,190,0x80,0,#file_name); //ïèøåì èìÿ
601
			WriteText(dform_x+20,190,0x80,0,#file_name); //ieoai eiy
682
		}
602
		}
683
	ELSE
603
	ELSE
684
		{
604
		{
685
			WriteText(164+dform_x,190,0x80,0,"...?");
605
			WriteText(164+dform_x,190,0x80,0,"...?");
686
			ESI = 24;
606
			ESI = 24;
Line 705... Line 625...
705
			IF ( isdir) ShowMessage("Error. Folder isn't empty.");
625
			IF ( isdir) ShowMessage("Error. Folder isn't empty.");
706
			IF (!isdir) ShowMessage("Error. Filesystem read-only.");
626
			IF (!isdir) ShowMessage("Error. Filesystem read-only.");
707
		}
627
		}
708
 	}
628
 	}
709
	del_active=0;
629
	del_active=0;
710
	DeleteButton(301); DeleteButton(302); //óäàëÿåì êíîïî÷êè Yes/No
630
	DeleteButton(301); DeleteButton(302);
711
	Open_Dir(#path,1);
631
	Open_Dir(#path,1);
712
}    
632
}    
Line 713... Line 633...
713
 
633
 
714
void Paste()
634
void Paste()
715
{
635
{
716
	char new_copy_path[4096];
636
	char new_copy_path[4096];
Line 717... Line 637...
717
	int copy_rezult;
637
	int copy_rezult;
718
	
638
	
719
	IF (!copy_file) return; //îòìåíà, åøè åù¸ íè÷¸ íå ñêîïèðîâàëè
639
	IF (!copy_file) return;
720
	strcpy(#new_copy_path, #path);
640
	strcpy(#new_copy_path, #path);
721
	strcat(#new_copy_path, #copy_file+strrchr(#copy_file,'/'));
641
	strcat(#new_copy_path, #copy_file+strrchr(#copy_file,'/'));
722
	if (!strcmp(#copy_file,#new_copy_path)) //åñëè ìû êîïèðóåì è âñòàâëÿåì â îäíîé è òîé æå ïàïêå
642
	if (!strcmp(#copy_file,#new_copy_path))
723
	{
643
	{
724
		strcpy(#new_copy_path, #path);
644
		strcpy(#new_copy_path, #path);
725
		strcat(#new_copy_path, "new_");
645
		strcat(#new_copy_path, "new_");
726
		strcat(#new_copy_path, #copy_file+strrchr(#copy_file,'/'));
646
		strcat(#new_copy_path, #copy_file+strrchr(#copy_file,'/'));
727
	}
647
	}
728
	copy_rezult = CopyFile(#copy_file,#new_copy_path);
648
	copy_rezult = CopyFile(#copy_file,#new_copy_path);
729
	IF (copy_rezult!=0) //îøèáêà
649
	IF (copy_rezult!=0)
730
	{
650
	{
731
		Write_Error(copy_rezult);
651
		Write_Error(copy_rezult);
732
		return;
652
		return;
733
	}
653
	}
734
	IF (cut_active) //åñëè ìû âûáðàëè âûðåçàòü
654
	IF (cut_active)
735
	{
655
	{
736
		strcpy(#file_path, #copy_file);
656
		strcpy(#file_path, #copy_file);
737
		Del_File(true);
657
		Del_File(true);
Line 746... Line 666...
746
{
666
{
747
	int del_rezult, copy_rezult;
667
	int del_rezult, copy_rezult;
748
	char edit_name[256];
668
	char edit_name[256];
749
	rename_active=0;
669
	rename_active=0;
750
	edit2.flags=64;
670
	edit2.flags=64;
751
	DefineButton(192,curbtn*BUTTON_HEIGHT+57,onLeft(27,192),BUTTON_HEIGHT,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF);
-
 
752
	if (rename==true)
671
	if (rename==true)
753
	{
672
	{
754
		strcpy(#temp, #path);
673
		strcpy(#temp, #path);
755
		strcpy(#edit_name, #file_name); //ñîõðàíÿåì íîâîå èìÿ ôàéëà, äëÿ òîãî, ÷òîáû åãî ïîòîì âûäåëèòü
674
		strcpy(#edit_name, #file_name); //save edit name to select it later
756
		strcat(#temp, #file_name);
675
		strcat(#temp, #file_name);
757
		if (strcmp(#file_path,#temp)<>0) && (file_name)
676
		if (strcmp(#file_path,#temp)<>0) && (file_name)
758
		IF (isdir)
677
		IF (isdir)
759
		{
678
		{
760
			del_rezult = DeleteFile(#file_path);
679
			del_rezult = DeleteFile(#file_path);
Line 772... Line 691...
772
			copy_rezult = CopyFile(#file_path,#temp);
691
			copy_rezult = CopyFile(#file_path,#temp);
773
			if (copy_rezult!=0) Write_Error(copy_rezult); else Del_File(true);
692
			if (copy_rezult!=0) Write_Error(copy_rezult); else Del_File(true);
774
		}
693
		}
775
		SelectFile(#edit_name);
694
		SelectFile(#edit_name);
776
	}
695
	}
777
	Line_ReDraw(col_selec,curbtn);
696
	Line_ReDraw(col_selec,files.current);
778
}
697
}
Line 779... Line 698...
779
 
698
 
780
 
699
 
781
void SelectFile(dword that_file)
700
void SelectFile(dword that_file)
782
{
701
{
783
	za_kadrom=curbtn=0; //ââåðõ ñïèñêà
702
	files.first=files.current=0;
784
   	Open_Dir(#path,ONLY_OPEN);
703
   	Open_Dir(#path,ONLY_OPEN);
785
	strttl(that_file);
704
	strttl(that_file);
786
	for (i=count-1; i>=0; i--;)
705
	for (i=files.count-1; i>=0; i--;)
787
		if (!strcmp(file_mas[i]*304+buf+72,that_file)) break;
706
		if (!strcmp(file_mas[i]*304+buf+72,that_file)) break;
788
	FileList_ReDraw(i);
707
	FileList_ReDraw(i);
Line 800... Line 719...
800
	strcpy(#cur_folder, #path+i);
719
	strcpy(#cur_folder, #path+i);
801
	path[i]=0x00;
720
	path[i]=0x00;
802
	SelectFile(#cur_folder);
721
	SelectFile(#cur_folder);
803
}
722
}
Line -... Line 723...
-
 
723
 
-
 
724
void Open()
-
 
725
{
-
 
726
	if (!isdir)
-
 
727
	{
-
 
728
		GetIni(0);
-
 
729
	} 
-
 
730
	else
-
 
731
	{
-
 
732
		if (!strcmp(#file_name,"..")) { Dir_Up(); return; }
-
 
733
		strcpy(#path, #file_path);
-
 
734
		if (path[strlen(#path)-1]!='/') chrcat(#path, '/'); //need "/" in the end
-
 
735
		files.first=files.current=0;
-
 
736
		Open_Dir(#path,1);
-
 
737
	}
-
 
738
}
Line 804... Line 739...
804
 
739
 
805
 
740
 
806
inline fastcall void GoBack()   //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
741
inline fastcall void GoBack()
807
{
742
{
808
	char cur_folder[4096];
743
	char cur_folder[4096];
809
	strcpy(#cur_folder, GetCurrentFolder());
744
	strcpy(#cur_folder, GetCurrentFolder());
Line -... Line 745...
-
 
745
	if (HistoryPath(GO_BACK)) SelectFile(#cur_folder);
-
 
746
}
-
 
747
 
-
 
748
void ActionsProcess(char N)
-
 
749
{
-
 
750
	switch(N)
-
 
751
	{
-
 
752
		case 1:
-
 
753
			SwitchToAnotherThread();
-
 
754
			CreateThread(#about_dialog,#stak1);
-
 
755
			break;
-
 
756
		case 2:
-
 
757
			if (!files.count) break;
-
 
758
			DeleteButton(files.current+201);
-
 
759
			edit2.flags=100000000000010b; //set active
-
 
760
			edit2.width=onLeft(24,217);
-
 
761
			edit2.top=files.current*files.line_h+59;
-
 
762
			edit2.size=edit2.pos=strlen(#file_name);
-
 
763
			edit_box_draw  stdcall (#edit2);
-
 
764
			DrawBar(213,files.current*files.line_h+58,edit2.width+1,1,0xFFFFCC); //bg
-
 
765
			rename_active=1;
-
 
766
			break;
-
 
767
		case 3:
-
 
768
			IF (!isdir) RunProgram("/sys/tinypad", #file_path);
-
 
769
			break;
-
 
770
		case 4:
-
 
771
			IF (!isdir) RunProgram("/sys/develop/heed", #file_path);
-
 
772
			break;
-
 
773
		case 5:
-
 
774
			Open_Dir(#path,1);
-
 
775
			break;
-
 
776
		case 6:
-
 
777
			strcpy(#temp, #path);
-
 
778
			strcat(#temp, "New folder");
-
 
779
			CreateDir(#temp);
-
 
780
			if (!EAX){
-
 
781
				SelectFile("New folder");
-
 
782
				ActionsProcess(2);
-
 
783
			}
-
 
784
			else
-
 
785
			{
-
 
786
				Write_Error(EAX);
-
 
787
				ShowMessage("Folder can not be created.");
-
 
788
			}
-
 
789
			break;
-
 
790
		case 7:
-
 
791
			strcpy(#temp, #path);
-
 
792
			strcat(#temp, "New file");
-
 
793
			WriteFile(0, 0, #temp);
-
 
794
			if (!EAX){
-
 
795
				SelectFile("New file");
-
 
796
				ActionsProcess(2);
-
 
797
			}
-
 
798
			else
-
 
799
			{
-
 
800
				Write_Error(EAX);
-
 
801
				ShowMessage("File can not be created.");
-
 
802
			}
-
 
803
			break;
-
 
804
		case 10: //F10
-
 
805
			RunProgram(EDITOR_PATH, abspath("Eolite.ini"));
-
 
806
			break;
-
 
807
	}
-
 
808
}
-
 
809
 
-
 
810
void copyf_Action() {
810
	if (HistoryPath(GO_BACK)) SelectFile(#cur_folder);
811
	return;
Line 811... Line -...
811
}
-
 
812
 
-
 
813
stop:
812
}
-
 
813
 
-
 
814
stop:
814
 
815