From ee45105438fe647c75e94d63851c840af14272d6 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Sat, 20 Dec 2008 03:38:10 +0000 Subject: [PATCH] Eolite 0.98.3 git-svn-id: svn://kolibrios.org@976 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/fs/Eolite/trunk/Eolite.c-- | 225 +++++------ programs/fs/Eolite/trunk/imgs/History.txt | 400 +++++++++++++++++++ programs/fs/Eolite/trunk/include/LVabout.h-- | 23 +- programs/fs/Eolite/trunk/include/sorting.h-- | 25 +- programs/fs/Eolite/trunk/lib/file_system.h-- | 9 +- programs/fs/Eolite/trunk/lib/kolibri.h-- | 9 +- 6 files changed, 568 insertions(+), 123 deletions(-) create mode 100644 programs/fs/Eolite/trunk/imgs/History.txt diff --git a/programs/fs/Eolite/trunk/Eolite.c-- b/programs/fs/Eolite/trunk/Eolite.c-- index b0529c4307..45773aa6b6 100644 --- a/programs/fs/Eolite/trunk/Eolite.c-- +++ b/programs/fs/Eolite/trunk/Eolite.c-- @@ -3,11 +3,10 @@ //строка 258, кейап! //возможно, баг в KEdit //find_symbol надо читать с конца -//335 строка -//PathHistory бля надо API для работы с историей, в т.ч. проверять не равна ли новая папка предыдущей //DrawBar(sort_num[1],45,6,9,0xE4DFE1); +//Open_Dir нахрен испаганен ифами, сделать дефайлы или ещё что-то, потому что пока это выглядит некрасиво -#codesize +#codesize #include "lib\kolibri.h--" #include "lib\memory.h--" #include "lib\edit_box_lib.h--" @@ -16,15 +15,15 @@ #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}; //цвет выделенного элемента из списка файлов byte toolbar_buttons_x[6]={9,46,85,134,167,203}; // dword but_num, - kolichestvo, + count, za_kadrom, curbtn, - razm_scrl; + scroll_size; byte cut_active, rename_active, del_active; @@ -32,13 +31,13 @@ byte show_actions=1, show_preview=0, sort_num=2, isdir; -char path[256]="/rd/1/", +byte path[256]="/rd/1/", edit_path[256], file_path[256], file_name[256], copy_file[256], temp[256]; -char PathHistory[2560]; +byte PathHistory[2560]; dword file_mas[6898]; 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=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; //сохраняем старое количество - j= razm_scrl/2; - za_kadrom = m.y -j -57 * kolichestvo / onTop(22,57); - IF (but_num+za_kadrom>kolichestvo) za_kadrom=kolichestvo-but_num; + j= scroll_size/2; + za_kadrom = m.y -j -57 * count / onTop(22,57); + IF (but_num+za_kadrom>count) za_kadrom=count-but_num; IF (temp_int<>za_kadrom) List_ReDraw(); //чтоб лишний раз не перерисовывать m.get(); } @@ -146,7 +145,7 @@ int pressed_y; break; case 77: //actions IF (show_actions==1) show_actions=0; ELSE show_actions=1; - Actions(); Preview(); + Actions(); break; case 80: //rename goto REN_MARK; @@ -158,10 +157,7 @@ int pressed_y; copystr(#path, #temp); copystr("New folder", #temp+strlen(#temp)); CreateFolder(#temp); - za_kadrom=curbtn=0; - Open_Dir(#path,1); - FOR (i=0; ionTop(22,57)-on_y+56) || (za_kadrom+but_num>=kolichestvo) on_y=onTop(23+razm_scrl,0); //для большого списка - DrawFlatButton(onLeft(27,0),on_y,16,razm_scrl,0,0xE4DFE1,"");//ползунок + IF (count<=0) {DrawFlatButton(onLeft(27,0),57,16,onTop(22,58),0,0xE4DFE1,""); return;} + on_y = za_kadrom * onTop(22,57) / count +57; + scroll_size=onTop(22,57) * but_num - but_num / count; + IF (scroll_size<20) scroll_size = 20; //устанавливаем минимальный размер скролла + 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,scroll_size,0,0xE4DFE1,"");//ползунок 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 //вниз { - 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_) { Line_ReDraw(0xFFFFFF, curbtn); //белая полоса @@ -370,7 +375,7 @@ void FileList_ReDraw(int curbtn_) } 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; List_ReDraw(); } @@ -380,8 +385,8 @@ void FileList_ReDraw(int curbtn_) void List_ReDraw() { - IF (kolichestvo-za_kadrombut_num-1) //если мы в конце списка файлов развернём окно появяться пустяе белые кнопки - { za_kadrom=kolichestvo-but_num; curbtn=but_num-1; } //это если выделение после схлопывания окна за кадром + IF (count-za_kadrombut_num-1) //если мы в конце списка файлов развернём окно появяться пустяе белые кнопки + { za_kadrom=count-but_num; curbtn=but_num-1; } //это если выделение после схлопывания окна за кадром // FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn); temp_int=but_num*18+57; @@ -394,7 +399,7 @@ void List_ReDraw() void Line_ReDraw(dword color, filenum){ dword y;//положение текста по Y; - if (rename_active==1) + if (rename_active==1) //всё это полный пипец, и надо вынести в отдельную процедуру { rename_active=0; edit2.flags=64; @@ -428,7 +433,7 @@ void Line_ReDraw(dword color, filenum){ if (!EAX) { 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("", y+2); if (color==videlenie) { @@ -449,6 +454,7 @@ void Line_ReDraw(dword color, filenum){ WriteText(215,y+6,0,0,off,temp_int); //имя файла DrawBar(onLeft(168,0),y,1,18,0xE4DFE1); //полоса серая вертикальная 1 DrawBar(onLeft(95,0),y,1,18,0xE4DFE1); //полоса серая вертикальная 2 + //Preview(); } @@ -462,32 +468,31 @@ void Open_Dir(dword temp_, redraw){ IF (buf) free(buf); buf = malloc(32); ReadDir(0, buf, #path_); - kolichestvo = ESDWORD[buf+8]; - buf = realloc(kolichestvo * 304 + 32, buf); - ReadDir(kolichestvo, buf, #path_); - IF (EBX>6898) && (EBX<>-1) EBX=6898; - kolichestvo=EBX; - } - if (kolichestvo<>-1) && (redraw>0) + count = ESDWORD[buf+8]; + buf = realloc(count * 304 + 32, buf); + ReadDir(count, buf, #path_); + IF (EBX>6897) && (EBX<>-1) EBX=6897; //1 на удачу ;) + count=EBX; + } + 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;j100) but_num=1; ELSE //эта странная строчка для того если размеры окна слишком маленькие - IF (kolichestvo3) Sorting(); IF (redraw==1) || (redraw==3) List_ReDraw(); copystr(temp_,#edit_path); KEdit(); - copystr("|",#PathHistory+strlen(#PathHistory)); - copystr(#path,#PathHistory+strlen(#PathHistory)); + HistoryPath(add_new_path); //стрелочка сортировки 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==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() { dword k=0, l=1; - IF (!strcmp(#path,"/")) {FOR(k=1;k=0; j--, off-=304;) //папки вверх, файлы вниз + IF (!strcmp(#path,"/")) {FOR(k=1;k=0; j--, off-=304;) //папки вверх, файлы вниз { ChangeCase(off+40); EAX=ESDWORD[off]; $shr eax,4 $and eax,1 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); - IF (sort_num==1) Sort_by_Name(k,kolichestvo-1); - IF (sort_num==2) Sort_by_Type(k, kolichestvo-1); - IF (sort_num==3) Sort_by_Size(k,kolichestvo-1); + Sort_by_Name(0,k-1); //сортируем папки, ниже - файлы + IF (sort_num==1) 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 (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]>0) copystr(#dev_name,#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); - PutImage(dev_icon*14*13*3+#devices,14,13,21,i*16+76); + // + WriteText(45,i*16+79,0x80,0,#drive_name,0); + PutImage(dev_icon*14*13*3+#devices,14,13,21,i*16+76); } Actions(); //функции файлов и папок - Preview(); } @@ -636,32 +642,11 @@ void Actions() } ELSE { - DeleteButton(80); DeleteButton(81); DeleteButton(82); - Tip(dev_num*16+90, "Actions", 77, "\x18"); - DrawBar(17,dev_num*16+108,160,51,0x00699C); //синее + DeleteButton(80); DeleteButton(81); DeleteButton(82); + Tip(dev_num*16+90, "Actions", 77, "\x18"); + DrawBar(17,dev_num*16+108,160,51,0x00699C); //синее } -} - - -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(); + Preview(); } @@ -674,15 +659,14 @@ void Preview() { Tip(top_pr,"Preview",78,"\x19"); 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); - /*WriteText(30,top_pr+40,0x80,0,"but_num:",0); WriteText(105,top_pr+40,0x80,0,IntToStr(but_num),0); + DrawBar(17,top_pr+118,160,onTop(top_pr+118,6),0x00699C); //синее + // + 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+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+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); //синее + WriteText(30,top_pr+80,0x80,0,#file_name,0); } ELSE { @@ -697,28 +681,45 @@ void Goto_edit_path() IF (strcmp(#path,#edit_path)==0) return; //проверка не в этой ли мы папке IF (strcmp(#edit_path+strlen(#edit_path)-1,"/")<>0) copystr("/",#edit_path+strlen(#edit_path)); //если нет, + "/" Open_Dir(#edit_path,0); //проверяем если файлы в папке, так мы узнаём существует ли она - IF (kolichestvo==-1) KEdit(); ELSE //просто очищаем полосу адреса + IF (count<1) KEdit(); ELSE //просто очищаем полосу адреса {za_kadrom=curbtn=0; copystr(#edit_path,#path);}//наверх списка 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() //вначале удаляем текущий путь, а потом копируем то, что осталось { - //char old_dir[256]=''; - i=strlen(#PathHistory)-2; - // - //WHILE (PathHistory[i]<>'/') { copystr(#PathHistory[i],#old_dir); i--; }; - //old_dir[strlen(#old_dir)-1]=0x00; - //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; +- в 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 Кб +Начало. diff --git a/programs/fs/Eolite/trunk/include/LVabout.h-- b/programs/fs/Eolite/trunk/include/LVabout.h-- index bcabd9c387..4b569b23e2 100644 --- a/programs/fs/Eolite/trunk/include/LVabout.h-- +++ b/programs/fs/Eolite/trunk/include/LVabout.h-- @@ -1,5 +1,8 @@ #include "imgs\logo.txt" +?define add_new_path 1 +?define go_back 2 + /* //IPC #include "lib\Nable_lib.h--" @@ -38,7 +41,7 @@ void authors() DefineAndDrawWindow(500,200,181,256,0x34,0x10EFEBEF,0,0,"About Eolite"); DrawBar(0,0,172,50,0x8494C4); //голубое сзади 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(39,130,0x80,0,"Leency & Veliant",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) { diff --git a/programs/fs/Eolite/trunk/include/sorting.h-- b/programs/fs/Eolite/trunk/include/sorting.h-- index 04f0a9e262..f892bee9bf 100644 --- a/programs/fs/Eolite/trunk/include/sorting.h-- +++ b/programs/fs/Eolite/trunk/include/sorting.h-- @@ -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; 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++;} } 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 diff --git a/programs/fs/Eolite/trunk/lib/file_system.h-- b/programs/fs/Eolite/trunk/lib/file_system.h-- index 0cf3ddb6ab..74ac3c59d3 100644 --- a/programs/fs/Eolite/trunk/lib/file_system.h-- +++ b/programs/fs/Eolite/trunk/lib/file_system.h-- @@ -3,12 +3,13 @@ #define fce "/sys/games/fce" #define graph "graph" #define htmlv "/sys/network/HTMLv" -#define jpegview "JpegView" +#define jpegview "jpegview" #define kvid "/sys/kvid" #define life2 "/sys/demos/life2" -#define midamp "MIDAMP" -#define mv "MV" -#define pngview "pngview" +#define midamp "/sys/multimedia/midamp" +//#define mv "MV" +#define mv "/sys/multimedia/imgview" +#define pngview "/sys/multimedia/pngview" #define rtfread "RtfRead" #define tinypad "TinyPad" #define view3ds "/sys/demos/3d/view3ds" diff --git a/programs/fs/Eolite/trunk/lib/kolibri.h-- b/programs/fs/Eolite/trunk/lib/kolibri.h-- index b805fb2a11..96117dfd3a 100644 --- a/programs/fs/Eolite/trunk/lib/kolibri.h-- +++ b/programs/fs/Eolite/trunk/lib/kolibri.h-- @@ -3,7 +3,7 @@ #startaddress 0 #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 start_addr = #main; dword final_addr = #stop+32; @@ -31,9 +31,8 @@ char param[256]=""; -int vert; struct mouse{ - int x,y,lkm,pkm; + int x,y,lkm,pkm,hor,vert; void get(); }; @@ -166,8 +165,8 @@ inline fastcall dword MoveSize(dword EBX,ECX,EDX,ESI){ //------------------------------------------------------------------------------ inline fastcall dword strlen(dword EDI){ - ECX=EAX=0; - ECX--; + EAX=0; + ECX=-1; $REPNE $SCASB EAX-=2+ECX; }