Subversion Repositories Kolibri OS

Rev

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

Rev 2770 Rev 2814
Line 18... Line 18...
18
#define ONLY_SHOW	0
18
#define ONLY_SHOW	0
19
#define WITH_REDRAW	1
19
#define WITH_REDRAW	1
20
#define ONLY_OPEN	2
20
#define ONLY_OPEN	2
Line 21... Line 21...
21
 
21
 
22
//ïåðåìåííûå
22
//ïåðåìåííûå
23
#define title "Eolite File Manager v1.23"
23
#define title "Eolite File Manager v1.25"
24
dword videlenie=0x94AECE; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
24
dword videlenie=0x94AECE; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
25
//
25
//
26
int  but_num,
26
int  but_num,
27
     count,
27
     count,
28
     za_kadrom,
28
     za_kadrom,
29
     curbtn,
-
 
30
	 disc_num,
29
     curbtn,
31
     scroll_size;
30
     scroll_size;
32
byte cut_active,
31
byte cut_active,
33
     rename_active,
32
     rename_active,
34
     del_active;
33
     del_active;
Line 51... Line 50...
51
 
50
 
52
struct path_string {
51
struct path_string {
53
char Item[4096];
52
char Item[4096];
Line 54... Line -...
54
};
-
 
Line 55... Line 53...
55
 
53
};
Line 56... Line 54...
56
path_string disk_list[20];
54
 
57
 
55
 
Line 90... Line 88...
90
		copystr(#param, #path);
88
		copystr(#param, #path);
91
		IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/"
89
		IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/"
92
	}
90
	}
93
	else copystr("/rd/1/", #path);
91
	else copystr("/rd/1/", #path);
94
	Open_Dir(#path,ONLY_OPEN);
92
	Open_Dir(#path,ONLY_OPEN);
95
	loop()
-
 
96
	{
-
 
97
		switch(WaitEvent())
93
	loop()	switch(WaitEvent())
98
		{
94
	{
99
			case evMouse:
95
		case evMouse:
100
					IF (del_active==1) break;
96
				IF (del_active==1) break;
Line 101... Line 97...
101
					
97
				
102
					id=GetSlot(Form.ID); 
98
				id=GetSlot(Form.ID); 
Line -... Line 99...
-
 
99
				IF (id<>ActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì
-
 
100
				
103
					IF (id<>ActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì
101
				IF (rename_active==0) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2);
Line 104... Line 102...
104
					
102
				
105
					m.get();
103
				m.get();
106
 
104
 
Line 129... Line 127...
129
						}
127
					}
130
						DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
128
					DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xFFFFFF,0xC7C7C7);
131
					}
129
				}
Line 132... Line 130...
132
 
130
 
133
					//êîë¸ñèêî ìûøè
131
				//êîë¸ñèêî ìûøè
134
					IF (m.vert==65535) IF (curbtn>0) FileList_ReDraw(-1); ELSE
132
				IF (m.vert==65535) && (za_kadrom>0)
-
 
133
				{
-
 
134
					if (za_kadrom>0) za_kadrom--;
135
					{
135
					if (curbtn
-
 
136
					List_ReDraw();
136
						FileList_ReDraw(-1);
137
					if (za_kadrom>0) za_kadrom--;
137
						FileList_ReDraw(-1);
138
					if (curbtn
138
						FileList_ReDraw(-1);					
139
					List_ReDraw();
139
					}
140
				}
140
					IF (m.vert==1) IF (curbtn
141
				IF (m.vert==1) && (za_kadrom
-
 
142
				{
-
 
143
					if (za_kadrom
141
					{
144
					if (curbtn>0) curbtn--;
-
 
145
					List_ReDraw();
142
						FileList_ReDraw(1);
146
					if (za_kadrom
143
						FileList_ReDraw(1);
147
					if (curbtn>0) curbtn--;
144
						FileList_ReDraw(1);
148
					List_ReDraw();
145
					}
149
				}
146
					//ñêðîëë
150
				//ñêðîëë
147
					if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>56) && && (m.y<65000) while (m.lkm)
151
				if (m.x>=Form.width-26) && (m.x<=Form.width-6) && (m.y>56) && && (m.y<65000) while (m.lkm)
148
					{
152
				{
Line 169... Line 173...
169
							break;
173
						break;
170
					case 22: //Forward
174
				case 22: //Forward
171
							HistoryPath(go_forward);
175
						HistoryPath(go_forward);
172
							break;
176
						break;
173
					case 23: //up!
177
				case 23: //up!
174
							IF (strcmp(#path,"/")<>0) Dir_Up();
178
						Dir_Up();
175
							break;
179
						break;
176
					case 24: //cut
180
				case 24: //cut
177
							key=24; 
181
						key=24; 
178
					case 25: //copy
182
				case 25: //copy
179
							goto CTRLC_MARK;
183
						goto CTRLC_MARK;
Line 197... Line 201...
197
							IF (show_actions==1) show_actions=0; ELSE show_actions=1;
201
						IF (show_actions==1) show_actions=0; ELSE show_actions=1;
198
							Actions();
202
						Actions();
199
							break;
203
						break;
200
					case 78:
204
				case 78:
201
							IF (show_dev_name==1) show_dev_name=0; ELSE show_dev_name=1;
205
						IF (show_dev_name==1) show_dev_name=0; ELSE show_dev_name=1;
-
 
206
						GetSystemDiscs();
-
 
207
						Open_Dir(#path,WITH_REDRAW);
202
							DrawSystemDiscs();
208
						DrawSystemDiscs();
-
 
209
						Actions();
203
							break;
210
						break;
204
					case 80: //rename
211
				case 80: //rename
205
							goto REN_MARK; 
212
						goto REN_MARK; 
206
					case 81: //Delete file
213
				case 81: //Delete file
207
							Del_Form();
214
						Del_Form();
Line 213... Line 220...
213
							CreateFolder(#temp);
220
						CreateFolder(#temp);
214
							IF (EAX==0){
221
						IF (EAX==0){
215
								SelectFile("New folder");
222
							SelectFile("New folder");
216
								goto REN_MARK;
223
							goto REN_MARK;
217
							}
224
						}
-
 
225
						ELSE
-
 
226
						{
-
 
227
							Write_Error(EAX);
218
							ELSE  ShowMessage("Folder can not be created.");
228
							ShowMessage("Folder can not be created.");
-
 
229
						}
219
							break;
230
						break;
220
					case 100...120:
231
				case 100...120:
221
							DEVICE_MARK:
232
						DEVICE_MARK:
222
							DrawRegion_3D(17,id-100*16+74,159,16, 0, 0); //âûäåëåíèå
233
						DrawRegion_3D(17,id-100*16+74,159,16, 0, 0); //âûäåëåíèå
223
							copystr(#disk_list[id-100].Item, #path);
234
						copystr(#disk_list[id-100].Item, #path);
224
							za_kadrom=curbtn=0;
235
						za_kadrom=curbtn=0;
225
							Open_Dir(#path,1);
236
						Open_Dir(#path,1);
-
 
237
						Pause(5);
226
							DrawRegion_3D(17,id-100*16+74,159,16, 0xFFFFFF, 0xFFFFFF);
238
						DrawRegion_3D(17,id-100*16+74,159,16, 0xFFFFFF, 0xFFFFFF);
227
							break;
239
						break;
228
					default:
240
				default:
229
							if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
241
						if (id<200) break; //êíîïêè èç ñïèñêà ôàéëîâ
230
							IF (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
242
						if (curbtn!=id-201) {FileList_ReDraw(id-201-curbtn); break;}
231
							else OPEN_MARK:
243
						else OPEN_MARK:
232
							if (!isdir) GetIni(0); else
244
						if (!isdir) GetIni(0); else
233
							if (strcmp(#file_name,"..")==0) Dir_Up(); else
245
						if (strcmp(#file_name,"..")==0) Dir_Up();
-
 
246
						else
-
 
247
						{
234
							{	OPEN_DEV:
248
						OPEN_DEV:
235
									copystr(#file_path, #path);
249
								copystr(#file_path, #path);
236
									IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/"
250
								IF (strcmp(#path+strlen(#path)-1,"/")<>0) copystr("/",#path+strlen(#path)); //åñëè íåò, + "/"
237
									za_kadrom=curbtn=0;
251
								za_kadrom=curbtn=0;
238
									Open_Dir(#path,1);
252
								Open_Dir(#path,1);
239
							}
253
						}
Line 265... Line 279...
265
						case 209...217:
279
					case 209...217:
266
								id=key-110;
280
							id=key-110;
267
								IF (id-100>=disc_num) break;
281
							IF (id-100>=disc_num) break;
268
								GOTO DEVICE_MARK;
282
							GOTO DEVICE_MARK;
269
						case   8: //Íàçàä
283
					case   8: //Íàçàä
270
								GoBack();
284
							//GoBack();
-
 
285
							Dir_Up();
271
								break; 
286
							break; 
272
						case 004: //Ctrl+D ðèñ íà ðàá ñòîë ðàñòÿíóòü
287
					case 004: //Ctrl+D ðèñ íà ðàá ñòîë ðàñòÿíóòü
273
								copystr("\\S__", #temp);
288
							copystr("\\S__", #temp);
274
								copystr(#file_path, #temp+strlen(#temp));
289
							copystr(#file_path, #temp+strlen(#temp));
275
								RunProgram("/sys/media/kiv", #temp);
290
							RunProgram("/sys/media/kiv", #temp);
Line 354... Line 369...
354
										break;
369
									break;
355
									}
370
								}
356
								}
371
							}
357
				}                         
372
			}                         
358
				BREAK;
373
			BREAK;
359
				case evReDraw:	draw_window();
374
		case evReDraw:
360
		}
375
			draw_window();
361
		IF (rename_active==0) edit_box_mouse stdcall(#edit1); ELSE edit_box_mouse stdcall(#edit2);
-
 
362
	}
376
	}
363
}
377
}
Line 364... Line 378...
364
 
378
 
Line 392... Line 406...
392
	DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
406
	DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
393
	DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
407
	DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
394
	DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
408
	DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
395
	//Ïåðåðèñîâûâàåì ñïèñîê
409
	//Ïåðåðèñîâûâàåì ñïèñîê
396
	Open_Dir(#path,ONLY_SHOW);
410
	Open_Dir(#path,ONLY_SHOW);
397
	//List_ReDraw();
-
 
398
	//KEdit();
-
 
399
	//ïðîêðóòêà
411
	//ïðîêðóòêà
400
	DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
412
	DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè 
401
	DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
413
	DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18");		//ïðîêðóòêà ââåðõ
402
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
414
	DrawFlatButton(onLeft(27,0),onTop(22,0),16,16,0,0xE4DFE1,"\x19");//ïðîêðóòêà âíèç
403
	if (del_active==1) Del_Form();
415
	if (del_active==1) Del_Form();
Line 512... Line 524...
512
		}
524
		}
513
		ELSE
525
		ELSE
514
			IF (!strcmp("..",off)) temp_int=Put_icon("..", BUTTON_HEIGHT/2-7+y);
526
			IF (!strcmp("..",off)) temp_int=Put_icon("..", BUTTON_HEIGHT/2-7+y);
515
	ELSE
527
	ELSE
516
		temp_int=Put_icon("", BUTTON_HEIGHT/2-7+y);
528
		temp_int=Put_icon("", BUTTON_HEIGHT/2-7+y);
517
	if (color==videlenie)
529
	if (color<>0xFFFfff)
518
	{
530
	{
519
		isdir=TestBit(ESDWORD[off-40], 4);
531
		isdir=TestBit(ESDWORD[off-40], 4);
520
		IconFairing(temp_int, BUTTON_HEIGHT/2-7+y); //çàêðàøèâàåì èêîíêó
532
		IconFairing(temp_int, BUTTON_HEIGHT/2-7+y, color); //çàêðàøèâàåì èêîíêó
521
		copystr(off,#file_name);
533
		copystr(off,#file_name);
522
		copystr(#path,#file_path);
534
		copystr(#path,#file_path);
523
		copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó
535
		copystr(#file_name,#file_path+strlen(#file_path)); //ïîëíûé ïóòü ê ôàéëó
524
		IF (text_col==0xA6A6B7) text_col=0xFFFFFF;
536
		IF (text_col==0xA6A6B7) text_col=0xFFFFFF;
525
	}
537
	}
Line 543... Line 555...
543
		IF (buf) free(buf);
555
		IF (buf) free(buf);
544
    	buf = malloc(32);
556
    	buf = malloc(32);
545
		errornum=ReadDir(0, buf, #path_);
557
		errornum=ReadDir(0, buf, #path_);
546
		if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè
558
		if (errornum<>0) //îøèáêà ïðè ÷òåíèè ïàïêè
547
		{
559
		{
548
			Write_Debug_Error(errornum);
-
 
549
			HistoryPath(add_new_path);
560
			HistoryPath(add_new_path);
550
			GoBack();
561
			GoBack();
-
 
562
			Write_Error(errornum);
551
			return;
563
			return;
552
		}
564
		}
553
    		count = ESDWORD[buf+8];
565
    		count = ESDWORD[buf+8];
554
    		buf = realloc(count * 304 + 32, buf);
566
    		buf = realloc(count * 304 + 32, buf);
555
		ReadDir(count, buf, #path_);
567
		ReadDir(count, buf, #path_);
Line 639... Line 651...
639
	IF (dodel==true)
651
	IF (dodel==true)
640
	{
652
	{
641
		del_file_rez=DeleleFile(#file_path);
653
		del_file_rez=DeleleFile(#file_path);
642
		IF (del_file_rez<>0)
654
		IF (del_file_rez<>0)
643
		{
655
		{
644
			Write_Debug_Error(del_file_rez);
656
			Write_Error(del_file_rez);
645
			IF (isdir==true) ShowMessage("Error. Folder isn't empty.");
657
			IF (isdir==true) ShowMessage("Error. Folder isn't empty.");
646
			IF (isdir==false) ShowMessage("Error. Filesystem read-only.");
658
			IF (isdir==false) ShowMessage("Error. Filesystem read-only.");
647
		}
659
		}
648
 	}
660
 	}
649
	del_active=0;
661
	del_active=0;
Line 666... Line 678...
666
			copystr(#copy_file+find_symbol(#copy_file,'/'),#new_copy_path+strlen(#new_copy_path));
678
			copystr(#copy_file+find_symbol(#copy_file,'/'),#new_copy_path+strlen(#new_copy_path));
667
		}
679
		}
668
	copy_rezult=CopyFile(#copy_file,#new_copy_path);
680
	copy_rezult=CopyFile(#copy_file,#new_copy_path);
669
	IF (copy_rezult<>0) //îøèáêà
681
	IF (copy_rezult<>0) //îøèáêà
670
	{
682
	{
671
		Write_Debug_Error(copy_rezult);
683
		Write_Error(copy_rezult);
672
		DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. You can't paste here.");
684
		DrawFlatButton(Form.width/2-13,160,200,80,0,0xFFB6B5, "Error. You can't paste here.");
673
		Pause(150);
685
		Pause(150);
674
	}
686
	}
675
	IF (cut_active==1) //åñëè ìû âûáðàëè âûðåçàòü
687
	IF (cut_active==1) //åñëè ìû âûáðàëè âûðåçàòü
676
		{
688
		{
Line 710... Line 722...
710
		IF (isdir)
722
		IF (isdir)
711
		{
723
		{
712
			del_file_rez=DeleleFile(#file_path);
724
			del_file_rez=DeleleFile(#file_path);
713
			IF (del_file_rez<>0)
725
			IF (del_file_rez<>0)
714
			{
726
			{
715
				Write_Debug_Error(del_file_rez);
727
				Write_Error(del_file_rez);
716
				ShowMessage("Error. Folder isn't empty.");
728
				ShowMessage("Error. Folder isn't empty.");
717
				return;
729
				return;
718
			}
730
			}
719
			ELSE CreateFolder(#temp);
731
			ELSE CreateFolder(#temp);
720
			Open_Dir(#path,1);
732
			Open_Dir(#path,1);
Line 784... Line 796...
784
 
796
 
785
 
797
 
786
void Dir_Up()
798
void Dir_Up()
-
 
799
{
787
{
800
	char cur_folder[4096];
788
	char cur_folder[4096];
801
	if (!strcmp(#path,"/")) return;
789
	i=strlen(#path)-1;
802
	i=strlen(#path)-1;
790
	path[i]=0x00;
803
	path[i]=0x00;
791
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#cur_folder); 
804
	do i--; while (path[i]<>'/'); copystr(#path+i+1,#cur_folder);