Eolite 1.25: code improvements

git-svn-id: svn://kolibrios.org@2820 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2012-06-23 12:42:40 +00:00
parent 089bbf2a0a
commit e1d8081805
5 changed files with 187 additions and 141 deletions

View File

@ -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("<DIR>", 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("<DIR>", 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)<temp_int) temp_int = strlen(off); //äëèííà íàçâàíèÿ ôàéëà
WriteText(215,BUTTON_HEIGHT-6/2+y,0,text_col,off,temp_int); //èìÿ ôàéëà
name_len = onLeft(215,165)/6;
IF (strlen(off)<name_len) name_len = strlen(off); //äëèííà íàçâàíèÿ ôàéëà
WriteText(215,BUTTON_HEIGHT-6/2+y,0,text_col,off,name_len); //èìÿ ôàéëà
DrawBar(onLeft(168,0),y,1,BUTTON_HEIGHT,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 1
DrawBar(onLeft(95,0),y,1,BUTTON_HEIGHT,0xE4DFE1); //ïîëîñà ñåðàÿ âåðòèêàëüíàÿ 2
}
@ -545,14 +540,17 @@ void Line_ReDraw(dword color, filenum){
void Open_Dir(dword temp_, redraw){
int errornum;
byte path_[4096],
char path_[4096],
somelen=strlen(temp_)-1;
//debug("reading directory");
//debug(temp_);
if (redraw<>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);

View File

@ -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);
- много новых и обновлённых иконок файлов.

View File

@ -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);

View File

@ -1,73 +1,111 @@
char *ext[]={
"..", 17,
"<DIR>",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)
void Put_icon(dword extension, yy, fairing_color)
{
dword ftype="", fnum=0; //åøè íåèçâåñíûé ôàéë
int icon_n=0, i;
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";}
for (i=0; ext[i]<>0; i+=2;)
if (!strcmp(extension, ext[i])) icon_n = ext[i+1];
//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,"<DIR>")) { 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;
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)
{

View File

@ -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);
}