Eolite 1.55: sorting bug fixed, fixed rename/delete file in folder, where are no files exists.

git-svn-id: svn://kolibrios.org@3157 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2013-01-10 19:36:51 +00:00
parent 8e9d5576fd
commit 61664a951d
4 changed files with 34 additions and 26 deletions

View File

@ -20,7 +20,7 @@ int BUTTON_HEIGHT=18;
#define ONLY_OPEN 2
//ïåðåìåííûå
#define title "Eolite File Manager v1.5"
#define title "Eolite File Manager v1.55"
dword col_work = 0xE4DFE1;
dword col_border = 0x819FC5;
dword col_padding = 0xC8C9C9;
@ -376,6 +376,7 @@ void main()
break;
case 051: //Íàæàòà F2
REN_MARK:
if (!count) break;
DeleteButton(curbtn+201); //ýòî ÷òîá ìîæíî áûëî âûäåëÿòü ìûøüþ
edit2.flags=66; //äåëàåì êîìïîíåíò àêòèâíûì
edit2.width=onLeft(24,217);
@ -633,7 +634,8 @@ void Open_Dir(dword temp_, redraw){
inline Sorting()
{
dword k=0, l=1;
if (!strcmp(#path,"/")) || (count>3000) //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/"
int i;
if (!strcmp(#path,"/")) //íå ñîðòèðîâàòü ïàïêè è íå ìåíÿòü ðåãèñòð â "/"
{
FOR(k=1;k<count;k++;) file_mas[k]=k;
return;
@ -655,7 +657,7 @@ inline Sorting()
//Ñîáñòâåííî ñîðòèðîâêà: âíà÷àëå ïàïêè, ïîòîì ôàéëû
Sort_by_Name(0,k-1);
IF (sort_num==1) Sort_by_Name(k,count-1);
IF (sort_num==2) if (count<2000) Sort_by_Type(k,count-1); else Sort_by_Name(k,count-1); //êîñòûëè...
IF (sort_num==2) Sort_by_Type(k,count-1);
IF (sort_num==3) Sort_by_Size(k,count-1);
//åñëè ïàïêà ".." íå ïåðâàÿ, ñòàâèì å¸ òóäà
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]><file_mas[0];
@ -666,6 +668,7 @@ void Del_Form()
{
int dform_x=Form.width/2-13;
//òèïà îêíî
if (!count) return;
FOR (i=5;i<11;i++) DeleteButton(201+i); //óäàëÿåì êíîïêè ïîä ôîðìîé
DrawFlatButton(dform_x,160,200,80,0,col_work, ""); //ôîðìà
WriteText(dform_x+19,175,0x80,0,"Do you really want to delete",0);

View File

@ -36,7 +36,7 @@ void about_dialog()
DefineAndDrawWindow(600,150,181,232+GetSkinHeight(),0x34,col_work,"About Eolite");
DrawBar(0,0,172,50,0x8494C4); //ãîëóáîå ñçàäè
PutPaletteImage(#logo,85,85,43,7,#logo_pal);
WriteText(46,100,0x90,0xBF40BF,"Eolite v1.51",0);
WriteText(46,100,0x90,0xBF40BF,"Eolite v1.55",0);
$add ebx, 1<<16
$int 0x40
WriteText(55,120,0x80,0,"Developers:",0);

View File

@ -21,33 +21,30 @@ void Sort_by_Name(int a, b) //
Sort_by_Name(isn, b);
}
void Sort_by_Type(int a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
{
int jst, ist=a;
int n;
unsigned char filename1[256], filename2[256];
unsigned char ext1[256], ext2[256];
void Sort_by_Type(int a, b) // äëÿ ïåğâîãî âûçîâà: a = 0, b = <ıëåìåíòîâ â ìàññèâå> - 1
{
dword filename1, filename2, ext1, ext2;
int n, isn = a;
IF (a >= b) return;
for (jst = a; jst <= b; jst++)
for (j = a; j <= b; j++)
{
ext1[0]=ext2[0]=filename1[0]=filename2[0]=NULL;
copystr(file_mas[jst]*304 + buf+72, #filename1);
copystr(file_mas[b]*304 + buf+72, #filename2);
n=strlen(#filename1)-1;
WHILE (filename1[n]<>'.') && (n>0) n--;
IF (n) copystr(#filename1+n+1, #ext1);
n=strlen(#filename2)-1;
WHILE (filename2[n]<>'.') && (n>0) n--;
IF (n) copystr(#filename2+n+1, #ext2);
filename1 = file_mas[j]*304 + buf+72;
filename2 = file_mas[b]*304 + buf+72;
n=strcmp(#ext1, #ext2);
IF (n<0) { file_mas[ist] >< file_mas[jst]; ist++;}
IF (n==0) && (strcmp(#filename1, #filename2)<=0) { file_mas[ist] >< file_mas[jst]; ist++;}
n=strlen(filename1)-1;
WHILE (n>0) && (ESBYTE[filename1+n]<>'.') n--;
IF (n) ext1 = filename1+n+1; else ext1=0;
n=strlen(filename2)-1;
WHILE (n>0) && (ESBYTE[filename2+n]<>'.') n--;
IF (n) ext2 = filename2+n+1; else ext2=0;
n=strcmp(ext1, ext2);
IF (n<0) { file_mas[isn] >< file_mas[j]; isn++;}
IF (n==0) && (strcmp(filename1, filename2)<=0) { file_mas[isn] >< file_mas[j]; isn++;}
}
Sort_by_Type(a, ist-2);
Sort_by_Type(ist, b);
Sort_by_Type(a, isn-2);
Sort_by_Type(isn, b);
}

View File

@ -1,3 +1,11 @@
10.01.13 -- v1.55
- исправлен эпичный баг с сортировкой;
- испрвлены баги при попытке переименования или удаления файла в папке,
где их нет.
17.12.12 -- v1.5
Обновлён GUI: кнопки на тулбаре стали чище, остальные обзавелись градиентами.
16.11.12 -- v1.43
- при минимальном размере окна учитывается количество дисков в системе;
- добавлен фон на левую панель;