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