diff --git a/programs/fs/Eolite/trunk/Eolite.c-- b/programs/fs/Eolite/trunk/Eolite.c-- index 9a9d5b80dc..3197f40ff4 100644 --- a/programs/fs/Eolite/trunk/Eolite.c-- +++ b/programs/fs/Eolite/trunk/Eolite.c-- @@ -20,7 +20,7 @@ int BUTTON_HEIGHT=18; #define ONLY_OPEN 2 //переменные -#define title "Eolite File Manager v1.25" +#define title "Eolite File Manager v1.27" dword videlenie=0x94AECE; //цвет выделенного элемента из списка файлов // int but_num, @@ -494,50 +494,45 @@ void List_ReDraw() } -//puticon+icon_fairing!!! void Line_ReDraw(dword color, filenum){ - dword text_col=0, temp_int, - /* //это я пытался сделать вид крупными значками - dword text_col=0, temp_int, x, - max_x=onLeft(28,192)/BUTTON_HEIGHT, - y=filenum/max_x*BUTTON_HEIGHT+57; //положение текста по Y - temp_int=filenum/max_x; - temp_int=temp_int*max_x; - x=filenum-temp_int*BUTTON_HEIGHT+192; - */ + dword text_col=0, name_len, y=filenum*BUTTON_HEIGHT+57; //положение текста по Y IF (rename_active==1) ReName(false); - //да, я не спорю что изврат, но перерисовка зато маленькая DefineButton(192,y,onLeft(28,192),BUTTON_HEIGHT,201+filenum+BT_HIDE+BT_NOFRAME,color); //кнопа + //да, я не спорю что изврат, но зато перерисовки не видно DrawBar(192,y,3,BUTTON_HEIGHT,color); DrawBar(192+19,y,onLeft(46,192),BUTTON_HEIGHT,color); DrawBar(195,y+17,16,1,color); if (BUTTON_HEIGHT>18) DrawBar(195,y+18,16,BUTTON_HEIGHT-18,color); if (BUTTON_HEIGHT>15) DrawBar(195,y,16,BUTTON_HEIGHT-15,color); - // + off=file_mas[filenum+za_kadrom]*304 + buf+72; - if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7; - if (!TestBit(ESDWORD[off-40],4)) - { - copystr(off,#temp); - temp_int = Put_icon(#temp+find_symbol(#temp,'.'), BUTTON_HEIGHT/2-7+y); - WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size - } - ELSE - IF (!strcmp("..",off)) temp_int=Put_icon("..", BUTTON_HEIGHT/2-7+y); - ELSE - temp_int=Put_icon("", BUTTON_HEIGHT/2-7+y); + + if (!TestBit(ESDWORD[off-40], 4)) + { + copystr(off,#temp); + Put_icon(#temp+find_symbol(#temp,'.'), BUTTON_HEIGHT/2-7+y, color); + WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),BUTTON_HEIGHT-6/2+y,0x80,0,ConvertSize(ESDWORD[off-8]),0); //size + } + else + if (!strcmp("..",off)) + Put_icon("..", BUTTON_HEIGHT/2-7+y, color); + else + Put_icon("", BUTTON_HEIGHT/2-7+y, color); + + if (TestBit(ESDWORD[off-40],1)) || (TestBit(ESDWORD[off-40],2)) text_col=0xA6A6B7; //файл скрытый или системный? + if (color<>0xFFFfff) { isdir=TestBit(ESDWORD[off-40], 4); - IconFairing(temp_int, BUTTON_HEIGHT/2-7+y, color); //закрашиваем иконку + copystr(off,#file_name); copystr(#path,#file_path); copystr(#file_name,#file_path+strlen(#file_path)); //полный путь к файлу IF (text_col==0xA6A6B7) text_col=0xFFFFFF; } - temp_int = onLeft(215,165)/6; - IF (strlen(off)ONLY_SHOW) { copystr(temp_, #path_); - IF (somelen) path_[somelen]=0x00; + if (somelen) path_[somelen]=0x00; - IF (buf) free(buf); + if (buf) free(buf); buf = malloc(32); errornum=ReadDir(0, buf, #path_); if (errornum<>0) //ошибка при чтении папки @@ -562,14 +560,15 @@ void Open_Dir(dword temp_, redraw){ Write_Error(errornum); return; } - count = ESDWORD[buf+8]; - buf = realloc(count * 304 + 32, buf); + 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) { + //debug("successfully \n"); copystr(temp_,#edit_path); KEdit(); HistoryPath(add_new_path); diff --git a/programs/fs/Eolite/trunk/History.txt b/programs/fs/Eolite/trunk/History.txt index 4ced1f9380..eabc3090c5 100644 --- a/programs/fs/Eolite/trunk/History.txt +++ b/programs/fs/Eolite/trunk/History.txt @@ -1,3 +1,7 @@ +23.06.12 -- v1.27 +- более правильная реализация вывода ошибок (+задел на мультиязычность) + и вывода иконки (+задел на перемещение в ini файл). + 21.06.12 -- v1.25 - распознавание виртуального диска; - изменения в прокрутке колёсиком мыши; @@ -53,22 +57,33 @@ 18.08.11 -- v0.98.9b RC2 -- 15.9 Кб -- программа берёт файл настроек из папки, откуда запущена. Если он там не найден, то из папки по-умолчанию /rd/1/File managers/Eolite.ini (for Chaos Constructions-2011, thanks Albom). +- программа берёт файл настроек из папки, откуда запущена. + Если он там не найден, то из папки по-умолчанию /rd/1/File managers/Eolite.ini + (for Chaos Constructions-2011, thanks Albom). 30.07.11 -- v0.98.9 RC2 -- 15.9 Кб -- если файл с настройками (Eolite.ini) не найден, то программа любезно сообщит об этом через @notify; +- если файл с настройками (Eolite.ini) не найден, то программа любезно + сообщит об этом через @notify; - теперь отображает серым не только системные, но и скрытые файлы; - предварительный просмотр удалён за ненадобностью; -- kolibrios.org теперь ссылка в окне "О программе" (хотя htmlv пока что не умеет открывать интернет адреса при запуске); -- F4 - открывает файл для hex просмотра и редактирования (хотя heed пока что не поддерживает работу с параметрами...). +- kolibrios.org теперь ссылка в окне "О программе" (хотя htmlv пока что + не умеет открывать интернет адреса при запуске); +- F4 - открывает файл для hex просмотра и редактирования (хотя heed пока + что не поддерживает работу с параметрами...). 20.07.11 -- v0.98.8 RC2 -- 15.9 Кб -- вывод сообщений об ошибках файловой системы через @notify. Притом не только номер, а ещё и разъяснения что за ошибка; -- теперь нормально определяются расширения файлов, а не тупо обрезается последних 4 символа имени файла. В часности исправлен баг, найденный Gluk'ом, когда иконка программы Zeroconf была как у конфигурационного файла с расширением ".conf"; -- Rock_maniak_forever поправил 9 функцию, связанную с буфером, чтобы Эолайт не показывал мусор вместо списка файлов; -- при создании новой папки на разделе, с фс которое его не поддерживает, выделяло первую папку, исправлено (баг нашёл turbanoff); +- вывод сообщений об ошибках файловой системы через @notify. Притом не + только номер, а ещё и разъяснения что за ошибка; +- теперь нормально определяются расширения файлов, а не тупо обрезается + последних 4 символа имени файла. В часности исправлен баг, + найденный Gluk'ом, когда иконка программы Zeroconf была как + у конфигурационного файла с расширением ".conf"; +- Rock_maniak_forever поправил 9 функцию, связанную с буфером, чтобы Эолайт + не показывал мусор вместо списка файлов; +- при создании новой папки на разделе, с фс которое его не поддерживает, + выделяло первую папку, исправлено (баг нашёл turbanoff); - показывается сообщение что папка не может быть создана, файл удалён; - новые пиктограммы действий (Actions); - много новых и обновлённых иконок файлов. diff --git a/programs/fs/Eolite/trunk/include/about_dialog.h b/programs/fs/Eolite/trunk/include/about_dialog.h index 37b364c0ee..9138e2d22d 100644 --- a/programs/fs/Eolite/trunk/include/about_dialog.h +++ b/programs/fs/Eolite/trunk/include/about_dialog.h @@ -37,7 +37,7 @@ void about_dialog() DefineAndDrawWindow(600,150,181,256,0x34,0x10EFEBEF,0,0,"About Eolite"); DrawBar(0,0,172,50,0x8494C4); //голубое сзади PutPaletteImage(#logo,85,85,43,7,#logo_pal); - WriteText(46,100,0x90,0xBF40BF,"Eolite v1.25",0); + WriteText(46,100,0x90,0xBF40BF,"Eolite v1.27",0); $add ebx, 1<<16 $int 0x40 WriteText(55,120,0x80,0,"Developers:",0); diff --git a/programs/fs/Eolite/trunk/include/icons_f.h b/programs/fs/Eolite/trunk/include/icons_f.h index 3fb0bf033f..bf0bf541f2 100644 --- a/programs/fs/Eolite/trunk/include/icons_f.h +++ b/programs/fs/Eolite/trunk/include/icons_f.h @@ -1,73 +1,111 @@ +char *ext[]={ +"..", 17, +"",16, +"txt", 1, +"doc", 1, +"rtf", 1, +"odt", 1, +"log", 1, +"docx",1, +"htm", 2, +"html",2, +"mht", 2, +"ini", 3, +"conf",3, +"xlt", 4, +"xls", 4, +"ods", 4, +"xlsx",4, +"cmd", 5, +"bat", 5, +"sh", 5, +"com", 5, +"kex", 6, +"exe", 7, +"msi", 7, +"sys", 8, +"ocx", 8, +"drv", 8, +"so", 8, +"inc", 9, +"chr", 10, +"mt", 10, +"ttf", 10, +"fon", 10, +"asm", 11, +"skn", 13, +"djvu",15, +"pdf", 15, +"fb2", 15, +"nes", 18, +"smc", 18, +"img", 21, +"ima", 21, +"dll", 22, +"obj", 22, +"iso", 24, +"cue", 24, +"nrg", 24, +"mdf", 24, +"gif", 19, +"bmp", 19, +"tga", 19, +"pcx", 19, +"png", 19, +"jpg", 19, +"xcf", 19, +"ai", 19, +"jpeg",19, +"raw", 19, +"psd", 19, +"ico", 20, +"cur", 20, +"ani", 20, +"vox", 20, +"rar", 23, +"zip", 23, +"cab", 23, +"tar", 23, +"ajr", 23, +"jar", 23, +"7z", 23, +"gz", 23, +"mp3", 12, +"wav", 12, +"mid", 12, +"midi",12, +"ogg", 12, +"wma", 12, +"flac",12, +"avi", 14, +"flv", 14, +"mpg", 14, +"wmv", 14, +"mov", 14, +"mkv", 14, +"mp4", 14, +"vob", 14, +0}; + #include "imgs\icons.txt" -dword Put_icon(dword extension, yy) -{ - dword ftype="", fnum=0; //еши неизвесный файл - IF (!strcmp(extension,"htm")) || (!strcmp(extension,"html")) || - (!strcmp(extension,"mht")) {fnum = 2; ftype="Web-page";} - IF (!strcmp(extension,"ini")) || (!strcmp(extension,"conf")) {fnum = 3; ftype="Config";} - IF (!strcmp(extension,"xlt")) || (!strcmp(extension,"xls")) || - (!strcmp(extension,"ods")) || (!strcmp(extension,"xlsx")) {fnum = 4; ftype="Table";} - IF (!strcmp(extension,"cmd")) || (!strcmp(extension,"bat")) || (!strcmp(extension,"sh")) {fnum = 5; ftype="Script";} - IF (!strcmp(extension,"com")) {fnum = 5; ftype="DOS Exec";} - IF (!strcmp(extension,"kex")) {fnum = 6; ftype="Program";} - IF (!strcmp(extension,"exe")) || (!strcmp(extension,"msi")) {fnum = 7; ftype="Win32 Exec";} - IF (!strcmp(extension,"sys")) || (!strcmp(extension,"ocx")) || - (!strcmp(extension,"drv")) || (!strcmp(extension,"so")) fnum = 8; - IF (!strcmp(extension,"inc")) fnum = 9; - IF (!strcmp(extension,"chr")) || (!strcmp(extension,"mt")) || - (!strcmp(extension,"ttf")) || (!strcmp(extension,"fon")) {fnum = 10; ftype="Font";} - IF (!strcmp(extension,"asm")) {fnum = 11; ftype="Source";} - IF (!strcmp(extension,"skn")) {fnum = 13; ftype="Skin";} - IF (!strcmp(extension,"djvu")) || (!strcmp(extension,"pdf")) || (!strcmp(extension,"fb2")) {fnum = 15; ftype="Book";} - IF (!strcmp(extension,"nes")) || (!strcmp(extension,"smc")) {fnum = 18; ftype="Cartridge";} - IF (!strcmp(extension,"img")) || (!strcmp(extension,"ima")) {fnum = 21; ftype="Image";} - IF (!strcmp(extension,"dll")) || (!strcmp(extension,"obj")) {fnum = 22; ftype="Library";} - IF (!strcmp(extension,"iso")) || (!strcmp(extension,"cue")) || - (!strcmp(extension,"nrg")) || (!strcmp(extension,"mdf")) {fnum = 24; ftype="Disc image";} - - //text - IF (!strcmp(extension,"txt")) || (!strcmp(extension,"doc")) || - (!strcmp(extension,"rtf")) || (!strcmp(extension,"odt")) || - (!strcmp(extension,"log")) || (!strcmp(extension,"docx")) {fnum = 1; ftype="Text";} - //изображения - IF (!strcmp(extension,"gif")) || (!strcmp(extension,"bmp")) || - (!strcmp(extension,"tga")) || (!strcmp(extension,"pcx")) || - (!strcmp(extension,"png")) || (!strcmp(extension,"jpg")) {fnum = 19; ftype="Image";} - IF (!strcmp(extension,"xcf")) || (!strcmp(extension,"ai")) || - (!strcmp(extension,"jpeg")) || (!strcmp(extension,"raw")) || - (!strcmp(extension,"psd")) {fnum = 19; ftype="Image";} - //пиктограммы - IF (!strcmp(extension,"ico")) {fnum = 20; ftype="Icon";} - IF (!strcmp(extension,"cur")) || (!strcmp(extension,"ani")) {fnum = 20; ftype="Cursor";} - //архивы - IF (!strcmp(extension,"rar")) || (!strcmp(extension,"zip")) || - (!strcmp(extension,"cab")) || (!strcmp(extension,"tar")) || - (!strcmp(extension,"ajr")) || (!strcmp(extension,"jar")) || - (!strcmp(extension,"7z")) ||(!strcmp(extension,"gz")) {fnum = 23; ftype="Archive";} - //audio - IF (!strcmp(extension,"mp3")) {fnum = 12; ftype="Music";} - IF (!strcmp(extension,"wav")) || (!strcmp(extension,"mid")) || - (!strcmp(extension,"midi")) || (!strcmp(extension,"ogg")) || - (!strcmp(extension,"wma")) || (!strcmp(extension,"flac")) {fnum = 12; ftype="Audio";} - //video - IF (!strcmp(extension,"avi")) || (!strcmp(extension,"flv")) || - (!strcmp(extension,"mpg")) || (!strcmp(extension,"wmv")) || - (!strcmp(extension,"mov")) || (!strcmp(extension,"mkv")) || - (!strcmp(extension,"mp4")) || (!strcmp(extension,"vob")) {fnum = 14; ftype="Video";} - //папки - IF (!strcmp(extension,"")) { fnum=16; WriteText(onLeft(145,0),yy+4,0x80,0,extension,0);} - IF (!strcmp(extension,"..")) fnum=17; - // - PutPaletteImage(fnum*16*15+#ficons,16,15,195,yy,#ficons_pal); - WriteText(onLeft(160,0),yy+4,0x80,0,ftype,0); - return fnum; + +void Put_icon(dword extension, yy, fairing_color) +{ + int icon_n=0, i; + + for (i=0; ext[i]<>0; i+=2;) + if (!strcmp(extension, ext[i])) icon_n = ext[i+1]; + + PutPaletteImage(icon_n*16*15+#ficons,16,15,195,yy,#ficons_pal); + if (icon_n<>17) && (strlen(extension)<9) WriteText(-strlen(extension)*3+onLeft(168,0)+36,yy+4,0x80,0,extension,0); + if (fairing_color<>0xFFFfff) IconFairing(icon_n, yy, fairing_color); //закрашиваем иконку } -void IconFairing(int filenum, y, color) +void IconFairing(dword filenum, y, color) { switch(filenum) { diff --git a/programs/fs/Eolite/trunk/include/ini.h b/programs/fs/Eolite/trunk/include/ini.h index b70f37f142..8a85379ec2 100644 --- a/programs/fs/Eolite/trunk/include/ini.h +++ b/programs/fs/Eolite/trunk/include/ini.h @@ -8,6 +8,26 @@ char NOTIFY_PATH[7]="@notify"; +unsigned char *ERROR_TEXT[]={ +"Code #0 - No error", +"Error #1 - Base or partition of a hard disk is not defined", +"Error #2 - Function isn't supported for this file system", +"Error #3 - Unknown file system", +"Error #4 - Reserved, is never returned", +"Error #5 - File or folder not found", +"Error #6 - End of file, EOF", +"Error #7 - Pointer lies outside of application memory", +"Error #8 - FAT table is destroyed", +"Error #9 - FAT table is destroyed", +"Error #10 - Access denied", +"Error #11 - Device error", +"", "", "", "", "", "", "", "", "", +"", "", "", "", "", "", "", "", "", +"Error #30 - Not enough memory", +"Error #31 - File is not executable", +"Error #32 - Too many processes", +0}; + void GetIni(byte onload) { byte section[32]='', parametr[32]='', option[256]='', InfType=0; @@ -84,48 +104,22 @@ void GetIni(byte onload) } -/////////////////////////////////////////// -/// нужно чтобы просто возвращало текст /// -/////////////////////////////////////////// - void Write_Error(int error_number) { char error[256]; + if (error_number<0) error_number=-1*error_number; - switch (error_number) - { - case 2: copystr("Error #2 - Function isn't supported for this file system", #error); - break; - case 3: copystr("Error #3 - Unknown file system", #error); - break; - case 5: copystr("Error #5 - File or folder not found", #error); - break; - case 6: copystr("Error #6 - End of file, EOF", #error); - break; - case 7: copystr("Error #7 - Pointer lies outside of application memory", #error); - break; - case 8: copystr("Error #8 - FAT table is destroyed", #error); - break; - case 9: copystr("Error #9 - FAT table is destroyed", #error); - break; - case 10:copystr("Error #10 - Access denied", #error); - break; - case 11:copystr("Error #11 - Device error", #error); - break; - case 30:copystr("Error #30 - Not enough memory", #error); - break; - case 31:copystr("Error #31 - File is not executable", #error); - break; - case 32:copystr("Error #32 - Too many processes", #error); - break; - default:copystr(IntToStr(error_number), #error); - copystr(" - Unknown error number O_o", #error+strlen(#error)); - } + + if (error_number<33) + copystr(ERROR_TEXT[error_number], #error); + else + { + copystr(IntToStr(error_number), #error); + copystr(" - Unknown error number O_o", #error+strlen(#error)); + } if (curbtn>=0) Line_ReDraw(0xFF0000, curbtn); Pause(5); RunProgram(#NOTIFY_PATH, #error); //DrawBar(192,onTop(0, BUTTON_HEIGHT+7),onLeft(27,192),BUTTON_HEIGHT,0xFF0000); //WriteText(205,onTop(-5, BUTTON_HEIGHT+7),0x80,0xFFFFFF,#error,0); - - -} +} \ No newline at end of file