Eolite 0.98.3

git-svn-id: svn://kolibrios.org@976 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2008-12-20 03:38:10 +00:00
parent 104d540920
commit ee45105438
6 changed files with 568 additions and 123 deletions

View File

@ -3,11 +3,10 @@
//ñòðîêà 258, êåéàï! //ñòðîêà 258, êåéàï!
//âîçìîæíî, áàã â KEdit //âîçìîæíî, áàã â KEdit
//find_symbol íàäî ÷èòàòü ñ êîíöà //find_symbol íàäî ÷èòàòü ñ êîíöà
//335 ñòðîêà
//PathHistory áëÿ íàäî API äëÿ ðàáîòû ñ èñòîðèåé, â ò.÷. ïðîâåðÿòü íå ðàâíà ëè íîâàÿ ïàïêà ïðåäûäóùåé
//DrawBar(sort_num[1],45,6,9,0xE4DFE1); //DrawBar(sort_num[1],45,6,9,0xE4DFE1);
//Open_Dir íàõðåí èñïàãàíåí èôàìè, ñäåëàòü äåôàéëû èëè åù¸ ÷òî-òî, ïîòîìó ÷òî ïîêà ýòî âûãëÿäèò íåêðàñèâî
#codesize #codesize
#include "lib\kolibri.h--" #include "lib\kolibri.h--"
#include "lib\memory.h--" #include "lib\memory.h--"
#include "lib\edit_box_lib.h--" #include "lib\edit_box_lib.h--"
@ -16,15 +15,15 @@
#include "imgs\left_p.txt" #include "imgs\left_p.txt"
//ëîêàëèçàöèÿ è íàñòðîéêè //ëîêàëèçàöèÿ è íàñòðîéêè
#define header "Eolite File Manager v0.98.2" #define title "Eolite File Manager v0.98.3"
#define videlenie 0x94AECE //0x94AECE,0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ #define videlenie 0x94AECE //0x94AECE,0xFEA4B7,0x8BCDFF,0xB8C9B8}; //öâåò âûäåëåííîãî ýëåìåíòà èç ñïèñêà ôàéëîâ
byte toolbar_buttons_x[6]={9,46,85,134,167,203}; byte toolbar_buttons_x[6]={9,46,85,134,167,203};
// //
dword but_num, dword but_num,
kolichestvo, count,
za_kadrom, za_kadrom,
curbtn, curbtn,
razm_scrl; scroll_size;
byte cut_active, byte cut_active,
rename_active, rename_active,
del_active; del_active;
@ -32,13 +31,13 @@ byte show_actions=1,
show_preview=0, show_preview=0,
sort_num=2, sort_num=2,
isdir; isdir;
char path[256]="/rd/1/", byte path[256]="/rd/1/",
edit_path[256], edit_path[256],
file_path[256], file_path[256],
file_name[256], file_name[256],
copy_file[256], copy_file[256],
temp[256]; temp[256];
char PathHistory[2560]; byte PathHistory[2560];
dword file_mas[6898]; dword file_mas[6898];
int temp_int, j, i; int temp_int, j, i;
@ -90,7 +89,7 @@ int pressed_y;
if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y<onTop(22,0)+16) if (m.x>=Form.width-21) && (m.x<=Form.width-6) && (m.y>onTop(22,0)+1) && (m.y<onTop(22,0)+16)
{ {
IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF); IF (m.lkm==1) DrawRegion_3D(onLeft(26,0),onTop(21,0),14,14,0xC7C7C7,0xFFFFFF);
while (m.lkm==1) && (za_kadrom<kolichestvo-but_num) while (m.lkm==1) && (za_kadrom<count-but_num)
{ {
Pause(10); Pause(10);
za_kadrom++; za_kadrom++;
@ -101,16 +100,16 @@ int pressed_y;
} }
//êîë¸ñèêî ìûøè //êîë¸ñèêî ìûøè
IF (vert==65535) IF (curbtn==0) FileList_ReDraw(-3); ELSE FileList_ReDraw(-1); IF (m.vert==65535) IF (curbtn==0) FileList_ReDraw(-3); ELSE FileList_ReDraw(-1);
IF (vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1); IF (m.vert==1) IF (curbtn==but_num-1) FileList_ReDraw(3); ELSE FileList_ReDraw(1);
//ñêðîëë //ñêðîëë
if (m.x>=Form.width-21) && (m.x<=Form.width-6) while (m.lkm) if (m.x>=Form.width-21) && (m.x<=Form.width-6) while (m.lkm)
{ {
IF (razm_scrl/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=razm_scrl/2+57; //åñëè êóðñîð íàä îêíîì IF (scroll_size/2+57>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+57; //åñëè êóðñîð íàä îêíîì
temp_int=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî temp_int=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
j= razm_scrl/2; j= scroll_size/2;
za_kadrom = m.y -j -57 * kolichestvo / onTop(22,57); za_kadrom = m.y -j -57 * count / onTop(22,57);
IF (but_num+za_kadrom>kolichestvo) za_kadrom=kolichestvo-but_num; IF (but_num+za_kadrom>count) za_kadrom=count-but_num;
IF (temp_int<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü IF (temp_int<>za_kadrom) List_ReDraw(); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
m.get(); m.get();
} }
@ -146,7 +145,7 @@ int pressed_y;
break; break;
case 77: //actions case 77: //actions
IF (show_actions==1) show_actions=0; ELSE show_actions=1; IF (show_actions==1) show_actions=0; ELSE show_actions=1;
Actions(); Preview(); Actions();
break; break;
case 80: //rename case 80: //rename
goto REN_MARK; goto REN_MARK;
@ -158,10 +157,7 @@ int pressed_y;
copystr(#path, #temp); copystr(#path, #temp);
copystr("New folder", #temp+strlen(#temp)); copystr("New folder", #temp+strlen(#temp));
CreateFolder(#temp); CreateFolder(#temp);
za_kadrom=curbtn=0; SelectFile("New folder");
Open_Dir(#path,1);
FOR (i=0; i<kolichestvo; i++)
IF (strcmp("New folder",file_mas[i]*304+buf+72)==0) {FileList_ReDraw(i); break;}
goto REN_MARK; goto REN_MARK;
case 100...120: case 100...120:
DEVICE_MARK: DEVICE_MARK:
@ -232,7 +228,7 @@ int pressed_y;
FileList_ReDraw(-za_kadrom-curbtn); FileList_ReDraw(-za_kadrom-curbtn);
break; break;
case 181: //end case 181: //end
FileList_ReDraw(kolichestvo-za_kadrom-curbtn+but_num-1); FileList_ReDraw(count-za_kadrom-curbtn+but_num-1);
break; break;
case 183: //Page Down case 183: //Page Down
FileList_ReDraw(but_num-1); FileList_ReDraw(but_num-1);
@ -261,7 +257,7 @@ int pressed_y;
Del_Form(); Del_Form();
break; break;
default: default:
FOR (i=curbtn+za_kadrom+1; i<kolichestvo; i++) FOR (i=curbtn+za_kadrom+1; i<count; i++)
{ {
copystr(file_mas[i]*304+buf+72,#temp); copystr(file_mas[i]*304+buf+72,#temp);
AL=DSBYTE[#temp]; AL=DSBYTE[#temp];
@ -281,7 +277,7 @@ inline fastcall void draw_window()
{ {
WindowRedrawStatus(1); WindowRedrawStatus(1);
skin_width = GetSkinWidth(); skin_width = GetSkinWidth();
DefineAndDrawWindow(100,100,600,410,0x73,0x10E4DFE1,0,0,header); DefineAndDrawWindow(100,100,600,410,0x73,0x10E4DFE1,0,0,title);
Form.GetInfo(SelfInfo); Form.GetInfo(SelfInfo);
IF (Form.height==skin_width+3) {WindowRedrawStatus(2); return;} //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê IF (Form.height==skin_width+3) {WindowRedrawStatus(2); return;} //íè÷åãî íå äåëàòü åñëè îêíî ñõëîïíóòî â çàãîëîâîê
IF (Form.height<280) MoveSize(OLD,OLD,OLD,280); IF (Form.height<280) MoveSize(OLD,OLD,OLD,280);
@ -297,7 +293,7 @@ inline fastcall void draw_window()
DrawRegion_3D(246,12,onLeft(66,246),16,0x94AECE,0x94AECE); //îáîäîê DrawRegion_3D(246,12,onLeft(66,246),16,0x94AECE,0x94AECE); //îáîäîê
DrawBar(246,29,onLeft(246,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà DrawBar(246,29,onLeft(246,60),10,0xE4DFE1); //ôîí ïîä ïîëîñîé àäðåñà
DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about DefineButton(onLeft(34,0),6,27,28,30+BT_HIDE+BT_NOFRAME,0xE4DFE1); //about
DefineButton(onLeft(61,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà DefineButton(onLeft(66,0),12,18,16,27+BT_HIDE,0xE4DFE1); //êíîïêà ïåðåõîäà
PutPaletteImage(#goto_about,56,40,Form.width-65,0,#goto_about_pal); PutPaletteImage(#goto_about,56,40,Form.width-65,0,#goto_about_pal);
//ïðÿìîóãîëüíèêè âíóòðè //ïðÿìîóãîëüíèêè âíóòðè
DrawRegion_3D(1,40,Form.width-12,Form.height-skin_width-46,0x94AECE,0x94AECE); //ñèíèé îáîäîê DrawRegion_3D(1,40,Form.width-12,Form.height-skin_width-46,0x94AECE,0x94AECE); //ñèíèé îáîäîê
@ -307,6 +303,10 @@ inline fastcall void draw_window()
DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File"); DrawFlatButton(192,40,onLeft(192,168),16,31,0xE4DFE1,"File");
DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type"); DrawFlatButton(onLeft(168,0),40,73,16,32,0xE4DFE1,"Type");
DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size"); DrawFlatButton(onLeft(95,0),40,68,16,33,0xE4DFE1,"Size");
//
//sort_type[1]=onLeft(192,168)/2+210;
//sort_type[2]=onLeft(115,0);
//sort_type[3]=onLeft(44,0);
//ïðîêðóòêà //ïðîêðóòêà
DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè DrawBar(onLeft(27,0),57,1,onTop(22,57),0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè
DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18"); //ïðîêðóòêà ââåðõ DrawFlatButton(onLeft(27,0),40,16,16,0,0xE4DFE1,"\x18"); //ïðîêðóòêà ââåðõ
@ -320,21 +320,26 @@ inline fastcall void draw_window()
void KEdit() void KEdit()
{ {
edit1.size=strlen(#edit_path); edit1.pos=strlen(#edit_path); edit1.size=edit1.pos=strlen(#edit_path);
edit_box_draw stdcall (#edit1); edit_box_draw stdcall (#edit1);
/*edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
edit2.width=onLeft(24,217);
edit2.top=curbtn*18+59;
edit2.size=edit2.pos=strlen(#file_name);
edit_box_draw stdcall (#edit2);*/
} }
inline fastcall void TVScroll() { //Ïðîêðóòêà inline fastcall void TVScroll() { //Ïðîêðóòêà
dword on_y; dword on_y;
IF (kolichestvo<=0) {DrawFlatButton(onLeft(27,0),57,16,onTop(22,58),0,0xE4DFE1,""); return;} IF (count<=0) {DrawFlatButton(onLeft(27,0),57,16,onTop(22,58),0,0xE4DFE1,""); return;}
on_y = za_kadrom * onTop(22,57) / kolichestvo +57; on_y = za_kadrom * onTop(22,57) / count +57;
razm_scrl=onTop(22,57) * but_num - but_num / kolichestvo; scroll_size=onTop(22,57) * but_num - but_num / count;
IF (razm_scrl<20) razm_scrl = 20; //óñòàíàâëèâàåì ìèíèìàëüíûé ðàçìåð ñêðîëëà IF (scroll_size<20) scroll_size = 20; //óñòàíàâëèâàåì ìèíèìàëüíûé ðàçìåð ñêðîëëà
IF (razm_scrl>onTop(22,57)-on_y+56) || (za_kadrom+but_num>=kolichestvo) on_y=onTop(23+razm_scrl,0); //äëÿ áîëüøîãî ñïèñêà IF (scroll_size>onTop(22,57)-on_y+56) || (za_kadrom+but_num>=count) on_y=onTop(23+scroll_size,0); //äëÿ áîëüøîãî ñïèñêà
DrawFlatButton(onLeft(27,0),on_y,16,razm_scrl,0,0xE4DFE1,"");//ïîëçóíîê DrawFlatButton(onLeft(27,0),on_y,16,scroll_size,0,0xE4DFE1,"");//ïîëçóíîê
DrawBar(onLeft(26,0),57,15,on_y-57,0xCED0D0);//ïîëå äî ïîëçóíêà DrawBar(onLeft(26,0),57,15,on_y-57,0xCED0D0);//ïîëå äî ïîëçóíêà
DrawBar(onLeft(26,0),on_y+razm_scrl+1,15,onTop(22,57)-razm_scrl-on_y+56,0xCED0D0); //ïîëå ïîñëå ïîëçóíêà DrawBar(onLeft(26,0),on_y+scroll_size+1,15,onTop(22,57)-scroll_size-on_y+56,0xCED0D0); //ïîëå ïîñëå ïîëçóíêà
} }
@ -360,7 +365,7 @@ void FileList_ReDraw(int curbtn_)
} }
else //âíèç else //âíèç
{ {
IF (za_kadrom==kolichestvo-but_num) && (curbtn==but_num-1) return; IF (za_kadrom==count-but_num) && (curbtn==but_num-1) return;
IF (but_num-curbtn>curbtn_) IF (but_num-curbtn>curbtn_)
{ {
Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà Line_ReDraw(0xFFFFFF, curbtn); //áåëàÿ ïîëîñà
@ -370,7 +375,7 @@ void FileList_ReDraw(int curbtn_)
} }
ELSE ELSE
{ {
IF(but_num+za_kadrom+curbtn_>=kolichestvo) za_kadrom=kolichestvo-but_num; ELSE za_kadrom+=curbtn_+curbtn-but_num+1; IF(but_num+za_kadrom+curbtn_>=count) za_kadrom=count-but_num; ELSE za_kadrom+=curbtn_+curbtn-but_num+1;
curbtn=but_num-1; curbtn=but_num-1;
List_ReDraw(); List_ReDraw();
} }
@ -380,8 +385,8 @@ void FileList_ReDraw(int curbtn_)
void List_ReDraw() void List_ReDraw()
{ {
IF (kolichestvo-za_kadrom<but_num) || (curbtn>but_num-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè IF (count-za_kadrom<but_num) || (curbtn>but_num-1) //åñëè ìû â êîíöå ñïèñêà ôàéëîâ ðàçâåðí¸ì îêíî ïîÿâÿòüñÿ ïóñòÿå áåëûå êíîïêè
{ za_kadrom=kolichestvo-but_num; curbtn=but_num-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì { za_kadrom=count-but_num; curbtn=but_num-1; } //ýòî åñëè âûäåëåíèå ïîñëå ñõëîïûâàíèÿ îêíà çà êàäðîì
// //
FOR (j=0; j<but_num; j++) IF (curbtn<>j) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn); FOR (j=0; j<but_num; j++) IF (curbtn<>j) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn);
temp_int=but_num*18+57; temp_int=but_num*18+57;
@ -394,7 +399,7 @@ void List_ReDraw()
void Line_ReDraw(dword color, filenum){ void Line_ReDraw(dword color, filenum){
dword y;//ïîëîæåíèå òåêñòà ïî Y; dword y;//ïîëîæåíèå òåêñòà ïî Y;
if (rename_active==1) if (rename_active==1) //âñ¸ ýòî ïîëíûé ïèïåö, è íàäî âûíåñòè â îòäåëüíóþ ïðîöåäóðó
{ {
rename_active=0; rename_active=0;
edit2.flags=64; edit2.flags=64;
@ -428,7 +433,7 @@ void Line_ReDraw(dword color, filenum){
if (!EAX) if (!EAX)
{ {
temp_int = Put_icon(off+strlen(off)-4, y+2); temp_int = Put_icon(off+strlen(off)-4, y+2);
WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(70,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),y+6,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size
} ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("<DIR>", y+2); } ELSE IF (!strcmp("..",off)) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("<DIR>", y+2);
if (color==videlenie) if (color==videlenie)
{ {
@ -449,6 +454,7 @@ void Line_ReDraw(dword color, filenum){
WriteText(215,y+6,0,0,off,temp_int); //èìÿ ôàéëà WriteText(215,y+6,0,0,off,temp_int); //èìÿ ôàéëà
DrawBar(onLeft(168,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1 DrawBar(onLeft(168,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
DrawBar(onLeft(95,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2 DrawBar(onLeft(95,0),y,1,18,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
//Preview();
} }
@ -462,32 +468,31 @@ void Open_Dir(dword temp_, redraw){
IF (buf) free(buf); IF (buf) free(buf);
buf = malloc(32); buf = malloc(32);
ReadDir(0, buf, #path_); ReadDir(0, buf, #path_);
kolichestvo = ESDWORD[buf+8]; count = ESDWORD[buf+8];
buf = realloc(kolichestvo * 304 + 32, buf); buf = realloc(count * 304 + 32, buf);
ReadDir(kolichestvo, buf, #path_); ReadDir(count, buf, #path_);
IF (EBX>6898) && (EBX<>-1) EBX=6898; IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 íà óäà÷ó ;)
kolichestvo=EBX; count=EBX;
} }
if (kolichestvo<>-1) && (redraw>0) if (count<>-1) && (redraw>0)
{ {
IF (!strcmp(".",buf+72)) {memmov(buf,buf+304,kolichestvo-1*304); kolichestvo--; } //ôèëüòðóåì ýëåìåíò "." IF (!strcmp(".",buf+72)) {memmov(buf,buf+304,count-1*304); count--; } //ôèëüòðóåì ýëåìåíò "."
FOR (j=0;j<but_num;j++) DeleteButton(201+j); //óäàëÿåì ñòàðûå FOR (j=0;j<but_num;j++) DeleteButton(201+j); //óäàëÿåì ñòàðûå
but_num=onTop(6,57)/18; but_num=onTop(6,57)/18;
IF (but_num>100) but_num=1; ELSE //ýòà ñòðàííàÿ ñòðî÷êà äëÿ òîãî åñëè ðàçìåðû îêíà ñëèøêîì ìàëåíüêèå IF (but_num>100) but_num=1; ELSE //ýòà ñòðàííàÿ ñòðî÷êà äëÿ òîãî åñëè ðàçìåðû îêíà ñëèøêîì ìàëåíüêèå
IF (kolichestvo<but_num) but_num=kolichestvo; IF (count<but_num) but_num=count;
FOR (j=0;j<but_num;j++) DefineButton(192,j*18+57,onLeft(27,192),18,201+j+BT_HIDE+BT_NOFRAME,0xFFFFFF); //íîâûå êíîïû FOR (j=0;j<but_num;j++) DefineButton(192,j*18+57,onLeft(27,192),18,201+j+BT_HIDE+BT_NOFRAME,0xFFFFFF); //íîâûå êíîïû
IF (redraw<>3) Sorting(); IF (redraw<>3) Sorting();
IF (redraw==1) || (redraw==3) List_ReDraw(); IF (redraw==1) || (redraw==3) List_ReDraw();
copystr(temp_,#edit_path); copystr(temp_,#edit_path);
KEdit(); KEdit();
copystr("|",#PathHistory+strlen(#PathHistory)); HistoryPath(add_new_path);
copystr(#path,#PathHistory+strlen(#PathHistory));
//ñòðåëî÷êà ñîðòèðîâêè //ñòðåëî÷êà ñîðòèðîâêè
IF (sort_num==1) WriteText(onLeft(192,168)/2+210,45,0x80,0x4E78AC,"\x19",0); IF (sort_num==1) WriteText(onLeft(192,168)/2+210,45,0x80,0x4E78AC,"\x19",0);
IF (sort_num==2) WriteText(onLeft(115,0),45,0x80,0x4E78AC,"\x19",0); IF (sort_num==2) WriteText(onLeft(115,0),45,0x80,0x4E78AC,"\x19",0);
IF (sort_num==3) WriteText(onLeft(44,0),45,0x80,0x4E78AC,"\x19",0); IF (sort_num==3) WriteText(onLeft(44,0),45,0x80,0x4E78AC,"\x19",0);
} }
IF (kolichestvo==-1) {but_num=kolichestvo=0; List_ReDraw();} IF (count==-1) {but_num=count=0; List_ReDraw();}
} }
@ -495,21 +500,21 @@ void Open_Dir(dword temp_, redraw){
inline Sorting() inline Sorting()
{ {
dword k=0, l=1; dword k=0, l=1;
IF (!strcmp(#path,"/")) {FOR(k=1;k<kolichestvo;k++;)file_mas[k]=k; return;} //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/" IF (!strcmp(#path,"/")) {FOR(k=1;k<count;k++;)file_mas[k]=k; return;} //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/"
FOR (j=kolichestvo-1, off=kolichestvo-1*304+buf+32; j>=0; j--, off-=304;) //ïàïêè ââåðõ, ôàéëû âíèç FOR (j=count-1, off=count-1*304+buf+32; j>=0; j--, off-=304;) //ïàïêè ââåðõ, ôàéëû âíèç
{ {
ChangeCase(off+40); ChangeCase(off+40);
EAX=ESDWORD[off]; EAX=ESDWORD[off];
$shr eax,4 $shr eax,4
$and eax,1 $and eax,1
IF (EAX) {file_mas[k]=j; k++;} ELSE IF (EAX) {file_mas[k]=j; k++;} ELSE
{file_mas[kolichestvo-l]=j; l++;} {file_mas[count-l]=j; l++;}
} }
//Ñîáñòâåííî ñîðòèðîâêà //Ñîáñòâåííî ñîðòèðîâêà
Sort_by_Name(0,k-1); Sort_by_Name(0,k-1); //ñîðòèðóåì ïàïêè, íèæå - ôàéëû
IF (sort_num==1) Sort_by_Name(k,kolichestvo-1); IF (sort_num==1) Sort_by_Name(k,count-1);
IF (sort_num==2) Sort_by_Type(k, kolichestvo-1); IF (sort_num==2) Sort_by_Type(k, count-1);
IF (sort_num==3) Sort_by_Size(k,kolichestvo-1); IF (sort_num==3) Sort_by_Size(k,count-1);
//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà //åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
IF (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k=k-1; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]><file_mas[0]; IF (strcmp(file_mas[0]*304+buf+72,"..")<>0) FOR(k=k-1; k>0; k--;) IF (!strcmp(file_mas[k]*304+buf+72,"..")) file_mas[k]><file_mas[0];
} }
@ -571,7 +576,7 @@ void Paste()
copy_file=''; copy_file='';
cut_active=0; cut_active=0;
} }
Open_Dir(#path,1); SelectFile(#copy_file+find_symbol(#copy_file,'/'));
} }
@ -600,18 +605,19 @@ void Devices()
copystr("Unknown drive",#drive_name); //èçíà÷àëüíî íåèçâåñíûé íîñèòåëü copystr("Unknown drive",#drive_name); //èçíà÷àëüíî íåèçâåñíûé íîñèòåëü
dev_icon=3; //ïî-óìîë÷àíèþ óñòðîéñòâî âûãëÿäèò êàê æåñòÿê dev_icon=3; //ïî-óìîë÷àíèþ óñòðîéñòâî âûãëÿäèò êàê æåñòÿê
copystr(i*304+ devbuf+72, #dev_name); copystr(i*304+ devbuf+72, #dev_name);
IF (dev_name[0]=='f') { copystr("Floppy disk /",#drive_name); dev_icon=2; } IF (dev_name[0]=='r') { dev_icon=0; copystr("RAM-disk /rd/1",#drive_name); }
IF (dev_name[0]=='h') copystr("Hard disk drive /",#drive_name); IF (dev_name[0]=='c') { dev_icon=1; copystr("CD-drive /",#drive_name); }
IF (dev_name[0]=='b') copystr("SATA disk drive /",#drive_name); IF (dev_name[0]=='f') { dev_icon=2; copystr("Floppy disk /",#drive_name); }
IF (dev_name[0]=='c') {copystr("CD-drive /",#drive_name); dev_icon=1;} IF (dev_name[0]=='h') copystr("Hard disk drive /",#drive_name);
copystr(#dev_name,#drive_name+strlen(#drive_name)); IF (dev_name[0]=='b') copystr("SATA disk drive /",#drive_name);
//
IF (dev_icon<>0) copystr(#dev_name,#drive_name+strlen(#drive_name));
copystr("/",#drive_name+strlen(#drive_name)); copystr("/",#drive_name+strlen(#drive_name));
IF (dev_name[0]=='r') { copystr("RAM-disk /rd/1/",#drive_name); dev_icon=0; } //
WriteText(45,i*16+79,0x80,0,#drive_name,0); WriteText(45,i*16+79,0x80,0,#drive_name,0);
PutImage(dev_icon*14*13*3+#devices,14,13,21,i*16+76); PutImage(dev_icon*14*13*3+#devices,14,13,21,i*16+76);
} }
Actions(); //ôóíêöèè ôàéëîâ è ïàïîê Actions(); //ôóíêöèè ôàéëîâ è ïàïîê
Preview();
} }
@ -636,32 +642,11 @@ void Actions()
} }
ELSE ELSE
{ {
DeleteButton(80); DeleteButton(81); DeleteButton(82); DeleteButton(80); DeleteButton(81); DeleteButton(82);
Tip(dev_num*16+90, "Actions", 77, "\x18"); Tip(dev_num*16+90, "Actions", 77, "\x18");
DrawBar(17,dev_num*16+108,160,51,0x00699C); //ñèíåå DrawBar(17,dev_num*16+108,160,51,0x00699C); //ñèíåå
} }
} Preview();
void Dir_Up()
{
char temp_[256];
i=strlen(#path)-1;
path[i]=0x00;
do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_);
path[i+1]=0x00;
ChangeCase(#temp_);
za_kadrom=curbtn=0; //ââåðõ ñïèñêà
Open_Dir(#path,2);
FOR (i=kolichestvo-1; i>0; i--;) IF(strcmp(file_mas[i]*304+buf+72,#temp_)==0) BREAK;
//
if (i>kolichestvo-but_num)
{
za_kadrom=kolichestvo-but_num;
curbtn=i-kolichestvo+but_num;
}
ELSE FileList_ReDraw(i);
List_ReDraw();
} }
@ -674,15 +659,14 @@ void Preview()
{ {
Tip(top_pr,"Preview",78,"\x19"); Tip(top_pr,"Preview",78,"\x19");
DrawBar(17,top_pr+18,160,100,0xFFFFFF); //áåëîå DrawBar(17,top_pr+18,160,100,0xFFFFFF); //áåëîå
WriteText(25,top_pr+30,0x80,0,"Number of files:",0); WriteText(135,top_pr+30,0x80,0,IntToStr(kolichestvo),0); DrawBar(17,top_pr+118,160,onTop(top_pr+118,6),0x00699C); //ñèíåå
/*WriteText(30,top_pr+40,0x80,0,"but_num:",0); WriteText(105,top_pr+40,0x80,0,IntToStr(but_num),0); //
WriteText(25,top_pr+30,0x80,0,"Number of files:",0); WriteText(135,top_pr+30,0x80,0,IntToStr(count),0);
WriteText(30,top_pr+40,0x80,0,"but_num:",0); WriteText(105,top_pr+40,0x80,0,IntToStr(but_num),0);
WriteText(30,top_pr+50,0x80,0,"curbtn",0); WriteText(105,top_pr+50,0x80,0,IntToStr(curbtn),0); WriteText(30,top_pr+50,0x80,0,"curbtn",0); WriteText(105,top_pr+50,0x80,0,IntToStr(curbtn),0);
WriteText(30,top_pr+60,0x80,0,"ra_kadrom:",0); WriteText(105,top_pr+60,0x80,0,IntToStr(za_kadrom),0); WriteText(30,top_pr+60,0x80,0,"ra_kadrom:",0); WriteText(105,top_pr+60,0x80,0,IntToStr(za_kadrom),0);
WriteText(30,top_pr+70,0x80,0,#file_path,0); WriteText(30,top_pr+70,0x80,0,#file_path,0);
WriteText(30,top_pr+80,0x80,0,#file_name,0);*/ WriteText(30,top_pr+80,0x80,0,#file_name,0);
//WriteText(30,top_pr+60,0x80,0,"Not realized... I think",0);
//WriteText(30,top_pr+70,0x80,0,"it will be realired soon.",0);
DrawBar(17,top_pr+118,160,onTop(top_pr+118,6),0x00699C); //ñèíåå
} }
ELSE ELSE
{ {
@ -697,28 +681,45 @@ void Goto_edit_path()
IF (strcmp(#path,#edit_path)==0) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå IF (strcmp(#path,#edit_path)==0) return; //ïðîâåðêà íå â ýòîé ëè ìû ïàïêå
IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/" IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //åñëè íåò, + "/"
Open_Dir(#edit_path,0); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà Open_Dir(#edit_path,0); //ïðîâåðÿåì åñëè ôàéëû â ïàïêå, òàê ìû óçíà¸ì ñóùåñòâóåò ëè îíà
IF (kolichestvo==-1) KEdit(); ELSE //ïðîñòî î÷èùàåì ïîëîñó àäðåñà IF (count<1) KEdit(); ELSE //ïðîñòî î÷èùàåì ïîëîñó àäðåñà
{za_kadrom=curbtn=0; copystr(#edit_path,#path);}//íàâåðõ ñïèñêà {za_kadrom=curbtn=0; copystr(#edit_path,#path);}//íàâåðõ ñïèñêà
Open_Dir(#path,1); Open_Dir(#path,1);
} }
void SelectFile(dword that_file)
{
za_kadrom=curbtn=0; //ââåðõ ñïèñêà
Open_Dir(#path,2);
ChangeCase(that_file);
FOR (i=count-1; i>=0; i--;) IF(strcmp(file_mas[i]*304+buf+72,that_file)==0) BREAK;
IF (i>but_num-1) && (i>count-but_num)
{
za_kadrom=count-but_num;
curbtn=i-count+but_num;
}
ELSE FileList_ReDraw(i);
List_ReDraw();
}
void Dir_Up()
{
char temp_[256];
i=strlen(#path)-1;
path[i]=0x00;
do i--; while (path[i]<>'/'); copystr(#path+i+1,#temp_);
path[i+1]=0x00;
SelectFile(#temp_);
}
inline fastcall void GoBack() //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü inline fastcall void GoBack() //âíà÷àëå óäàëÿåì òåêóùèé ïóòü, à ïîòîì êîïèðóåì òî, ÷òî îñòàëîñü
{ {
//char old_dir[256]=''; i=strlen(#PathHistory)-1;
i=strlen(#PathHistory)-2; PathHistory[i]=0x00;
// copystr(#PathHistory+find_symbol(#PathHistory,'/'),#temp); //ïàïêà â êîòîðîé áûëè
//WHILE (PathHistory[i]<>'/') { copystr(#PathHistory[i],#old_dir); i--; }; HistoryPath(go_back);
//old_dir[strlen(#old_dir)-1]=0x00; SelectFile(#temp);
//DrawTitle(#old_dir);
//
WHILE (PathHistory[i]<>'|') { i--; };
IF (i>0) PathHistory[i]=0x00;
WHILE (PathHistory[i]<>'|') { copystr(#PathHistory[i],#path); i--; }
IF (i>0) PathHistory[i]=0x00;
za_kadrom=curbtn=0; Open_Dir(#path,1);
//FOR (i=0; i<kolichestvo; i++;) IF (strcmp(file_mas[i]*304+buf+72,#old_dir)==0) {curbtn=3; za_kadrom=i-3; Open_Dir(#path,1); return;}
} }

View File

@ -0,0 +1,400 @@
20.12.08 -- v0.98.3 RC1 -- 14.6 Кб
- теперь координаты отсчитываются от конца скина;
- устранён вылет программы в случае, если в папке 0 или больше чем 6898 файлов;
- исправлен баг: если в конце списка развернуть окно, выделение "прыгало" вверх;
- исправлена перерисовка при переходе в другую папку или устройство;
- немного оптимизировано изменение регистра букв в названиях файлов;
- теперь выделяется папка, в которой мы были и после кнопки "Назад";
- исправлены недочёты при переходе в верхнюю папку;
- в историю посещённых папок теперь не может два раза подряд записаться одна и
та же папка;
- удалён неиспользуемый код;
16.12.08 -- v0.98.1 RC1 -- 14.7 Кб
- папка ".." теперь всегда первая в списке;
- кнопки вверх/вниз скролл бара теперь реагируют на нажатие и удержание;
- файлы с некоторыми расширениями теперь нельзя запускать (реализовал s1n).
15.12.08 -- v0.98 RC1 -- 14.5 Кб
- программа научилась работать с bd-дисками и NTFS;
- исправлен баг из-за которого прога вылетала при переходе на уровень вверх;
- исправлено отображение регистра букв для кириллицы;
- удаление папки "." из листинга директории (спасибо diamond'у за помощь).
30.11.08 -- v0.97.2 beta7 -- 14.4 Кб
- на /bd/ разделах прога больше не вылетает (хоть ничего на них и не видит);
- некоторые исправления в работе полосы прокрутки;
- динамическое выделение памяти (в режиме тестирования).
26.11.08 -- v0.97.1 beta7 -- 14.3 Кб
- удаление, создание и переименование пустых папок;
- все процедуры работы с файловой системой вынесены в отдельный файл;
- благодаря помощи Veliant'а большая часть изображений конвертирована в
256-цветные с палитрой. В результате чего уменьшился размер сжатой программы
и в 2 раза уменьшился обьём несжатой kpack'ом;
- улучшено перетягивание ползунка;
- исправлен один баг.
20.11.08 -- v0.97 beta7 -- 14.9 Кб
- уменьшена перерисовка: во время перерисовки списка
фон под иконками не рисуется;
- новая иконка изображений, обтекаемость архивов.
17.11.08 -- v0.96.9 beta7 -- 14.9 Кб
- некоторые новые ассоциации и иконки файлов .dll (.obj) и .img.
14.11.08 -- v0.96.8 beta7 -- 14.6 Кб
- при нажатии на букву, выделяется соответствующий файл;
- некоторые новые ассоциации и иконки файлов .cpp и .nes.
31.10.08 -- v0.96.7 beta7 -- 14.4 Кб
- теперь, при переходе на уровень вверх, выделяется папка в которой мы были;
- отловил баг из-за которого, если попытаться войти в верхнюю папку\файл в
списке, не смотря что там выделено, вы перейдёте на уровень вверх;
- исправлен баг из-за которого не все элементы сортировались по типу;
- теперь выделеный элемент в списке рисуется "в порядке очереди", а не самым
последним; это было заметно при перемотке;
- оптимизации.
24.10.08 -- v0.96.3 beta7 -- 14.4 Кб
- скролл колёсиком как в Symbian;
- уменьшена перерисовка окна в ущерб размеру программы;
- исправлен баг, когда папки, названия которых имели симполы типа !,& прыгали
вверх, выше папки "..";
- исправление других багов, улучшение кода.
23.10.08 -- v0.96 beta6 -- 14.1 Кб
- вместо сортировки пузырьком теперь используется алгоритм быстрой сортировки
(да здравствует Википедия!)). Как результат скорость сортировки по размеру
увеличилась в 8 раз, по типу более чем в 5 раз, по имени возросла на 30%;
- и более того: теперь, конечно же, сортировка проходит не по первой букве имени
файла, а по названию вообще. Так же, при сортировке по типу есть одинаковые
расширения, то эти файлы упорядывачиваются по имени;
- оптимизирована процедура сравнения строк;
- перемотка по 3 елемента;
- оптимизация и доработка панели устройств;
17.10.08 -- v0.95.7 beta6 -- 14.3 Кб
- перемотка по 2 елемента;
- упорядочивание файлов по типу.
15.10.08 -- v0.95.4 beta6 -- 14.0 Кб
- исправлен баг: первая буква названия файл\папки не делалась большой (строчной).
03.10.08 -- v0.95.3 beta6 -- 14.1 Кб
- устранён серьёзный баг с кнопкой "Назад";
- при сортировке файлов по размеру, папки не перемешиваются в хаотичном порядке,
а продолжают быть отсортированными по имени.
- устранён баг в сортировке файлов;
- новая иконка папки.
17.09.08 -- v0.95.2 beta6 -- 14.1 Кб
- исправлена ошибка, связанная с количеством файлов в папке, замечена Serge'м.
Теперь Эолайт без проблем заходит даже в самые большие папки (было проверено
на папке объёмом 91000 файлов), но отображает максимум только 6898 файлов;
- по нажатию Ctrl+N создаётся новое окно программы с текущей папкой;
- небольшие оптимизации.
14.09.08 -- v0.95 beta6 -- 14.0 Кб
- новая полоса адреса и переименования файла, основанные на компоненте от <Lrz>;
- в EditBox'ax теперь можно использовать все цифры от 1 до 9 (мечта Атаульпы:);
- если не выделена строка адреса клавиша BackSpace возвращает в предыдущую папку;
- оптимизирована функция IntToStr() за что огромное спасибо diamond'y, она стала
меньше на 158 байт;
- много интересного почерпнуто из либы Nable'а относительно оптимизации функций;
- по совету Albom'a динамическое выделение памяти было заменено статическим, как
последствие - исчезло два известных бага, связанных с копированием файлов и
их переименованием;
- некоторые переменные стали локальными, ещё оптимизации и небольшие багфиксы;
02.08.08 -- v0.94.4 beta5 -- 14.0 Кб
- правка трёх небольших багов, оптимизации;
28.07.08 -- v0.94.3 beta5 -- 14.1 Кб
- переход по девайсам Ctrl+<цифра>;
- установлен минимальный размер высоты окна;
- иконка папки "вверх";
- почищен и оптимизирован код.
04.07.08 -- v0.94 beta5 -- 13.9 Кб
- исправлен довольно старый баг, если ползунок прокрутки в папке с очень большим
количеством файлов перетянуть вверх до начала списка, программа вылетала
04.07.08 -- v0.93.9 beta5 -- 13.9 Кб
- работает клавиша "Назад" :)
- устранён баг из-за которого папки "." и ".." подвергались сортировке
29.06.08 -- v0.93.8 beta5 -- 13.8 Кб
- сортировка файлов по первой букве имени
22.06.08 -- v0.93.6 beta5 -- 13.7 Кб
- новый алгоритм сортировки файлов по размеру, более быстрый (вычитал о нём на
Википедии:), в списке появилось 2 досели потеряных файла
18.06.08 -- v0.93.5 beta5 -- 13.7 Кб
- запуск программы с параметрами - например "Eolite /hd1/1/" откроет программу
с папкой /hd1/1/ в ней. Несуществующий путь открыт не будет
- устранён глюк окна "О программе", когда нажатие на любую клавишу приводило к
его зависанию (уходу в бесконечный цикл)
- иконка и поддержка файлов ".cvs"
- оптимизации кода
15.06.08 -- v0.93.4 beta5 -- 13.4 Кб
- исправлен баг с тем появления несуществующего файла в /rd/1/
- теперь rd, fd, hd1 и т.д. всегда в нижнем регистре
- устранён вылет проги после нажатия кнопки "Up" (спасибо сеса за найденый баг)
14.06.08 -- v0.93.3 beta5 -- 13.4 Кб
- теперь заливается белым не весь список, а потом выводится текст, а рисуются
белые полосы с текстом - так немного медленнее, но перерисовка значительно
меньше (спасибо Марио79 за подсказку)
- оптимизирована и исправлена процедура удаления файла
- F3 - просмотр любого файла в Тайнипаде
- исправлены баги интерфейса
14.06.08 -- v0.93 beta5 -- 13.6 Кб
- реализована прокрутка скроллом мыши (спасибо diamond'у за отловленный баг)
- немного уменьшена перерисовка окна
- уменьшен и оптимизирован код программы
- частично исправлен баг разворачивания окна, если мы были в конце списка
- теперь при переименовании файла можно использовать все цифры, кроме восьмёрки
- у программы изменился компилятор на более новый и ключи компиляции
- оптимизирован kolibri.h--
08.06.08 -- v0.92.1 beta5 -- 14.0 Кб
- исправлен баг, когда ползунок не всегда доезжал не до конца полосы прокрутки
- оптимизации в прокрутке
08.06.08 -- v0.92 beta5 -- 14.0 Кб
- устранён баг, появившейся в версии 0.88. Если вы в конце списка и начнёте
понемногу увеличивать размеры окна, оттягивая его нижний конец вниз, то со
временем программа вылетит
- реализован алгоритм плавной прокрутки, есть 1 серьёзный и 1 несерьёзный баг
07.06.08 -- v0.91.5 beta4 -- 14.0 Кб
- удалён неиспользуемый с 03.03.08 (v0.83) кусок кода
- интерфейс полосы прокрутки стал более объёмным, это было сделано не с целью
улучшения дизайна, а с целью уменьшения кода в исходнике :)
- устранён баг открытия первого файла, который проявлялся только в эмуляторе
- cпасибо diamond'у за исправление ошибки в процедуре складывания двух строк
copystr() и её оптимизацию
- установлено ограничение на размер имени файла, отображаемого при его удалении
- если отменили удаление файла, то опять создаются кнопочки под формой
- устранён старый баг (замеченный недавно) - если в полосе адреса прописали
несуществующий адрес, программу выкидывало
- уменьшена перерисовка при переходе в другую папку, где файлов меньше, чем
было в текущей
- исправлена ошибка в функциях lowcase() и upcase()
- теперь названия файлов и папок начинаются с большой буквы, далее - прописные
- с папками на NTFS-разделе программа всё ещё работать не умеет, но, по крайней
мере, при попытке войти в какую-то из них она уже не вылетает
- немного оптимизирована процедура перехода на девайс
- исправлен баг из-за которого имена файлов иногда оказывались чуть выше чем
надо, относительно иконок
- уменьшена перерисовка окна
- другие оптимизации и багфиксы
02.06.08 -- v0.90.4 beta4 -- 14.1 Кб
- оптимизации и багфиксы (в т.ч. спасибо Maxis за найденный баг)
01.06.08 -- v0.90 beta4 -- 14.1 Кб
- критически уменьшена перерисовка, в несколько раз! Огромное спасибо diamond
за подсказку
01.06.08 -- v0.88.5 beta3 -- 14.1 Кб
- раньше при переходе из одной папки в другую вся область с файлами
закрашивалась белым цветом, а поверх выводились новые. Вопрос: зачем
закрашивать ВСЮ область, если файлов ней может быть всего 2? Я тоже не
знаю почему я понял это только сейчас. Закрашиваем только эти файлы.
- раньше рисовалась левая синяя панель, а поверх неё окошечки с девайсами
и т.д. Сейчас не так: синяя панель рисуется ВОКРУГ окошечек, что уменьшает
перерисовку.
30.05.08 -- v0.88.2 beta3 -- 14.1 Кб
- устранён баг, связанный с клавишами F2 и Home
27.04.08 -- v0.88 beta3 -- 14.1 Кб
- обьединены процедуры открытия файла
- устранён баг, связанный с переходом из некорневой папки на другой девайс
- динамическое выделение памяти под папки
08.04.08 -- v0.87 beta3 -- 14.0 Кб
- оптимизировано удаление файла
- удалён продублированный код переименования файла
- теперь для списка девайсов в левой панели (RАM-диск, жестяки и т.д.)
существует определённый буфер, а не открывается папка "/" каждый раз при
выводе этого списка или же перехода в какой-то из его элементов
- при перерисовке окна больше не считывается содержимое папки, просто
выводятся данные, что хранятся в буфере
- посла деактивации окна то, что было напечатано в строке адреса не исчезает
- упорядочивание файлов по размеру
27.03.08 -- v0.86 beta3 -- 14.4 Кб
- оптимизирован вывод размера файлов
- убрана лишняя перерисовка при открытии программы
- оптимизирован переход в начало и в конец списка файлов
- исправлен баг с потелей одного файла в корневых разделах жестких дисков
- обьединены процедуры Ctrl+С и Ctrl+X
- теперь для каждого изображения не своя переменная, а все они собраны по типам
в один файл: toolbar icons, file icons, device icons
- уменьшено потребление программой ресурсов при выводе иконок файлов
- и ещё много-много всего отимизировано!
09.03.08 -- v0.84 beta2 -- 16.1 Кб
- cделано окно "О программе" (размер за kpack-ованого изображения 2.5 Кб)
- теперь при переименовании файла можно использовать все цифры
- оптимизировано процедуры открытия папки, копирования, перерисовка полосы
адреса и полосы переименования файла
- запрос на удаление
07.03.08 -- v0.83.3 beta2 -- 13.0 Кб
- решён глюк, связанный с корневыми папками жёстких дисков
07.03.08 -- v0.83.2 beta2 -- 13.0 Кб
- решён крайне серьёзный баг с пожиранием программой дополнительного количества
памяти каждый раз после перерисовки окна или открытия папки
07.03.08 -- v0.83.1 beta2 -- 13.0 Кб
- решен баг с прокруткой и папками
- опитимизации
03.03.08 -- v0.83 beta2 -- 13.0 Кб
- цвет окна более тёмный
- распределение: вначале папки, затем файлы
- теперь перетягивание ползунка прокрутки работает и в Колибри!
- реализованы быстрые клавиши Ctrl+C (Ctrl+Ins), Ctrl+X, Ctrl+V. Как сделать с
Shift-ом я не знаю
- новое лого
- устранён баг с серой линией, отделяющей названия файлов и их тип
- устранён древний баг, связанный с невозможностью открыть любой файл с первого
раза, только со второго
- устранён баг, связаный с длинной имени файла
- новая иконка текстовых документов
27.02.08 -- v0.81 beta -- 12.8 Кб
- оптимизирование перерисовки при переходе в другую папку
- некоторые иконки теперь обтекаемы
- багфиксы прокрутки списка
25.02.08 -- v0.80 beta -- 12.6 Кб
- критически уменьшена перерисовка!
- багфиксы интерфейса
25.02.08 -- v0.77 beta -- 12.5 Кб
- переименовывание файлов
23.02.08 -- v0.75 beta -- 12.1 Кб
- опять заработали горячие клавиши
- библиотека eolite_copy.obj больше не нужна
- теперь работает и вырезание файлов (размером не больше чем ОЗУ)
- улучшение алгоритма прокрутки
- багфиксы
23.02.08 -- v0.71 beta -- 12.1 Кб
- устранён баг ограничения размера строки для имён файлов
- ReadMe
23.02.08 -- v0.7 beta -- 12.1 Кб
- ограничение размера строки для имён файлов
- удалена "." в начале списка файлов
22.02.08 -- v0.65 beta -- 12.3 Кб
- размер файлов теперь выводится в Кб, Мб и Гб
- оптимизация отрисовки в левой синей панели
- удобно стало пользоваться полосой адреса. Если она была изменена, нажав Enter
мы переходим по новому адресу, если же нет - открывается выделенная папка,
файл или программа
- в Колибри не работает, в отличии от эмулятора, реализованное перетягивание
ползунка :(
- выделение по Insert, пока что нигде не используется
18.02.08 -- v0.6 beta -- 11.7 Кб
- совместными усилиями устранён серьёзный баг с нажатием ПКМ на заголовке окна
- если мы пропишем адрес папки, которой не существует и попытаемся в неё перейти
ничего у нас УЖЕ не получится
- улучшения в скролле
- F5 перерисовать окно
- иконки у устройств
- панель действий
- одиночное копирование и вырезание файлов размером не больше чем ОЗУ
- удаление файлов, пока что без запроса
09.02.08 -- v0.5 beta -- 10 Кб
- оптимизировано Preview
- до деактивации окна уже нельзя кляцать по белой области и видеть кнопки
- уменьшен размер иконок - теперь они 16х15
- нельзя удалить весь путь в строке адреса, "/" по-любому остаётся
- при деактивации окна выделение не перепрыгивает на первый элемент
- реализовано открытие програм и ассоциированных файлов
- расширения больше не в верхнем регистре
- переходит по носителям, теперь если неизвестный носитель - оно так и напишет
- добавлены новые типы файлов
04.02.08 -- v0.35 beta -- 9.17 Кб
- для строки адреса отдельный "путь" (не #path, а #edit_path).
- красивая кнопка перехода
- входит в первую папку
- вывод типов файлов
- оптимизация в коде
03.02.08 -- v0.33 beta -- 8.91 Кб (англ.версия)
Первая версия. Краткое хистори:
1. Leency делает дизайн программы и ищет пути решения некоторых проблем.
2. Veliant делает отображение списка файлов из /rd/1/, а Leency реализует
перемотку списка и горячие клавиши.
3. Veliant осуществляет вывод размера файлов. Leency мучается с прокруткой.
4. Veliant выводит иконки, Leency эти иконки рисует и переделывает дизайн окна.
5. Veliant с Leency сделали переход по папкам.
6. Устранение багов.
22.02.08 -- v0.0 -- 0 Кб
Начало.

View File

@ -1,5 +1,8 @@
#include "imgs\logo.txt" #include "imgs\logo.txt"
?define add_new_path 1
?define go_back 2
/* /*
//IPC //IPC
#include "lib\Nable_lib.h--" #include "lib\Nable_lib.h--"
@ -38,7 +41,7 @@ void authors()
DefineAndDrawWindow(500,200,181,256,0x34,0x10EFEBEF,0,0,"About Eolite"); DefineAndDrawWindow(500,200,181,256,0x34,0x10EFEBEF,0,0,"About Eolite");
DrawBar(0,0,172,50,0x8494C4); //ãîëóáîå ñçàäè DrawBar(0,0,172,50,0x8494C4); //ãîëóáîå ñçàäè
PutPaletteImage(#logo,85,85,48,7,#logo_pal); PutPaletteImage(#logo,85,85,48,7,#logo_pal);
WriteText(33,100,0x80,0xBF40BF,"Eolite v0.98.2 RC1",0); WriteText(33,100,0x80,0xBF40BF,"Eolite v0.98.3 RC1",0);
WriteText(55,120,0x80,0,"Developers:",0); WriteText(55,120,0x80,0,"Developers:",0);
WriteText(39,130,0x80,0,"Leency & Veliant",0); WriteText(39,130,0x80,0,"Leency & Veliant",0);
WriteText(30,140,0x80,0,"Diamond, Lrz, Nable",0); WriteText(30,140,0x80,0,"Diamond, Lrz, Nable",0);
@ -50,6 +53,24 @@ void authors()
} }
void HistoryPath(byte action)
{
IF (action==add_new_path)
{
IF (strcmp(#PathHistory+find_symbol(#PathHistory,'|'),#path)==0) return;
copystr("|",#PathHistory+strlen(#PathHistory));
copystr(#path,#PathHistory+strlen(#PathHistory));
}
IF (action==go_back)
{
WHILE (PathHistory[i]<>'|') { i--; };
IF (i>0) PathHistory[i]=0x00;
WHILE (PathHistory[i]<>'|') { copystr(#PathHistory[i],#path); i--; }
IF (i>0) PathHistory[i]=0x00;
}
}
/*òèïà àíèìàöèÿ /*òèïà àíèìàöèÿ
WHILE (m.lkm==1) WHILE (m.lkm==1)
{ {

View File

@ -25,7 +25,7 @@ void Sort_by_Name(int a, b) //
} }
int partition1(dword a, b) /*int partition1(dword a, b)
{ {
dword i = a; byte filename1[256], filename2[256]; int n; dword i = a; byte filename1[256], filename2[256]; int n;
for (j = a; j <= b; j++) for (j = a; j <= b; j++)
@ -45,6 +45,29 @@ int partition1(dword a, b)
IF (n==0) && (strcmp(file_mas[j]*304 + buf+72, file_mas[b]*304 + buf+72)<=0) { file_mas[i] >< file_mas[j]; i++;} IF (n==0) && (strcmp(file_mas[j]*304 + buf+72, file_mas[b]*304 + buf+72)<=0) { file_mas[i] >< file_mas[j]; i++;}
} }
EAX = i-1; EAX = i-1;
}*/
int partition1(dword a, b)
{
dword i = a; byte filename1[256], filename2[256]; int n;
dword offset=buf+72;
for (j = a; j <= b; j++)
{
//
copystr(file_mas[j]*304 + offset, #filename1);
copystr(file_mas[b]*304 + offset, #filename2);
n=strlen(#filename1)-1;
WHILE (filename1[n]<>'.') && (n>0) n--;
IF (n) copystr(#filename1+n+1, #filename1);
n=strlen(#filename2)-1;
WHILE (filename2[n]<>'.') && (n>0) n--;
IF (n) copystr(#filename2+n+1, #filename2);
//
n=strcmp(#filename1, #filename2);
IF (n<0) { file_mas[i] >< file_mas[j]; i++;}
IF (n==0) && (strcmp(file_mas[j]*304 + offset, file_mas[b]*304 + offset)<=0) { file_mas[i] >< file_mas[j]; i++;}
}
EAX = i-1;
} }
void Sort_by_Type(dword a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1 void Sort_by_Type(dword a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1

View File

@ -3,12 +3,13 @@
#define fce "/sys/games/fce" #define fce "/sys/games/fce"
#define graph "graph" #define graph "graph"
#define htmlv "/sys/network/HTMLv" #define htmlv "/sys/network/HTMLv"
#define jpegview "JpegView" #define jpegview "jpegview"
#define kvid "/sys/kvid" #define kvid "/sys/kvid"
#define life2 "/sys/demos/life2" #define life2 "/sys/demos/life2"
#define midamp "MIDAMP" #define midamp "/sys/multimedia/midamp"
#define mv "MV" //#define mv "MV"
#define pngview "pngview" #define mv "/sys/multimedia/imgview"
#define pngview "/sys/multimedia/pngview"
#define rtfread "RtfRead" #define rtfread "RtfRead"
#define tinypad "TinyPad" #define tinypad "TinyPad"
#define view3ds "/sys/demos/3d/view3ds" #define view3ds "/sys/demos/3d/view3ds"

View File

@ -3,7 +3,7 @@
#startaddress 0 #startaddress 0
#code32 TRUE #code32 TRUE
char os_name[8] = {'M','E','N','U','E','T','0','1'}; byte os_name[8] = {'M','E','N','U','E','T','0','1'};
dword os_version = 0x00000001; dword os_version = 0x00000001;
dword start_addr = #main; dword start_addr = #main;
dword final_addr = #stop+32; dword final_addr = #stop+32;
@ -31,9 +31,8 @@ char param[256]="";
int vert;
struct mouse{ struct mouse{
int x,y,lkm,pkm; int x,y,lkm,pkm,hor,vert;
void get(); void get();
}; };
@ -166,8 +165,8 @@ inline fastcall dword MoveSize(dword EBX,ECX,EDX,ESI){
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
inline fastcall dword strlen(dword EDI){ inline fastcall dword strlen(dword EDI){
ECX=EAX=0; EAX=0;
ECX--; ECX=-1;
$REPNE $SCASB $REPNE $SCASB
EAX-=2+ECX; EAX-=2+ECX;
} }