From e80aaced2b6aa92eb864b4a5ee710ab8b6a8e452 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Mon, 24 Nov 2008 00:49:58 +0000 Subject: [PATCH] Eolite 0.97 git-svn-id: svn://kolibrios.org@935 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/fs/Eolite/trunk/Eolite.c-- | 196 ++++++------ programs/fs/Eolite/trunk/imgs/imgs.zip | Bin 29107 -> 16641 bytes programs/fs/Eolite/trunk/include/LVabout.c-- | 43 +-- programs/fs/Eolite/trunk/include/icons_f.h-- | 137 +++++--- programs/fs/Eolite/trunk/include/run_file.h-- | 86 +++-- programs/fs/Eolite/trunk/lib/kolibri.h-- | 302 +++++++++--------- 6 files changed, 379 insertions(+), 385 deletions(-) diff --git a/programs/fs/Eolite/trunk/Eolite.c-- b/programs/fs/Eolite/trunk/Eolite.c-- index 15a8fcd12e..85879bdcfe 100644 --- a/programs/fs/Eolite/trunk/Eolite.c-- +++ b/programs/fs/Eolite/trunk/Eolite.c-- @@ -5,14 +5,13 @@ #include "lib\memory.h--" #include "lib\edit_box_lib.h--" #include "include\run_file.h--" -#include "include\icons_f.h--" -#include "imgs\toolbar_new.cpp" +#include "imgs\toolbar.txt" #include "imgs\left_p.cpp" //локализация и настройки -byte header[27] = "Eolite File Manager v0.96.7"; +byte header[27] = "Eolite File Manager v0.97"; #define videlenie 0x94AECE; //цвет выделенного элемента из списка файлов -int toolbar_buttons_x[6]={14,51,90,139,172,208}; +byte toolbar_buttons_x[6]={14,51,90,139,172,208}; // dword but_num=0, kolichestvo=0, curbtn=0, za_kadrom=0; byte cut_active, rename_active, del_active; @@ -23,48 +22,39 @@ byte file_path[256], file_name[256]; // byte copyfile[256],copy_name[256]; //копирование dword i; //для циклов dword file_mas[6898]; //список файлов -dword temp_int; +int temp_int, j; dword stak[100]=0; //окно About edit_box edit1= {250,252,17,0xffffff,0x94AECE,0xD3DDEB,0xffffff,0,248,#edit_path,64,6,6}; edit_box edit2= {250,218,80,0xFFFFCC,0x94AECE,0xFFFFCC,0xffffff,0,248,#file_name,64,6,6}; proc_info Form; - -struct { - int func; - int pos; - int rezerv; - int sizefile; - int buffer; - char rezerv2; - int stroka; -}open_file_70; +f70 open_dir_70; dword buf=0, off; //для текста и буфера dword devbuf=0, dev_num; #include "include\LVabout.c--" - +#include "include\icons_f.h--" void main() byte pressed, key, id; mouse m; { devbuf= malloc(3112); //буфер где-то на 10 девайсов в левой панели - open_file_70.func = 1; - open_file_70.pos = 0; - open_file_70.rezerv = 0; - open_file_70.sizefile = 10; - open_file_70.buffer = devbuf; - open_file_70.rezerv2 = 0; - open_file_70.stroka = "/"; + open_dir_70.func = 1; + open_dir_70.param1 = 0; + open_dir_70.param2 = 0; + open_dir_70.param3 = 10; + open_dir_70.param4 = devbuf; + open_dir_70.rezerv = 0; + open_dir_70.name = "/"; $mov eax,70 - $mov ebx,#open_file_70.func + $mov ebx,#open_dir_70.func $int 0x40 dev_num=EBX; load_dll(); //подгружает либу с едит_боксом IF (param[0]<>'') {copystr(#param,#edit_path); Goto_edit_path();} Open_Dir(#path,2); - SetEventMask(); + //SetEventMask(100111b); loop() { switch(WaitEvent()) @@ -95,7 +85,7 @@ mouse m; case evButton: IF (edit1.flags<>64) {edit1.flags=64; edit_box_draw stdcall(#edit1);} //сбрасываем выделение при нажатии на батон id=GetButtonID(); - IF (id==1) ExitProcess(); + IF (id==1) {IF(buf)free(buf); ExitProcess();} IF (del_active==1) {IF (id==301) || (id==302) Del_File(302-id); break;} switch(id) { @@ -170,7 +160,8 @@ mouse m; IF (key==027) Del_File(false); break; } - IF (edit1.flags<>64) || (edit2.flags<>64) SWITCH (key) { CASE 8: CASE 180...182: CASE 051...056: goto EDIT_KEY_MARK; } //1..10 и ноум/енд в едитбоксах + IF (edit1.flags<>64) && (key<>13) {EAX=key<<8; edit_box_key stdcall (#edit1); break;} + IF (edit2.flags<>64) && (key<>13) && (key<>27) {EAX=key<<8; edit_box_key stdcall (#edit2); break;} switch (key) { case 209...217: id=key-109; IF(dev_num>id-100)GOTO DEVICE_MARK; break; @@ -224,14 +215,20 @@ mouse m; edit_box_draw stdcall (#edit2); DrawBar(218,curbtn*18+58,edit2.width+1,1,0xFFFFCC); //полоса желтая сверху для одинаковости rename_active=1; - BREAK; + break; case 052: //Нажата F3 - IF (isdir==false) Run_Program("/sys/tinypad", #file_path); BREAK; - case 054: Open_Dir(#path,1); BREAK; //перерисовать окно F5 - case 182: Del_Form(); BREAK; //delete file - default: EDIT_KEY_MARK: - EAX=key <<8; - IF (rename_active==0) edit_box_key stdcall (#edit1); ELSE edit_box_key stdcall (#edit2); + IF (isdir==false) Run_Program("/sys/tinypad", #file_path); break; + case 054: Open_Dir(#path,1); break; //перерисовать окно F5 + case 182: Del_Form(); break; //delete file + default: + IF (strcmp("..",buf+72+304)<>0) temp_int=0; ELSE temp_int=1; + for (i=curbtn+za_kadrom+1; i='A')&&(AL<='Z')DSBYTE[#temp]=AL|0x20; + IF (temp[0]==key) {FileList_ReDraw(i-curbtn-za_kadrom); break;} + } } break; case evReDraw: draw_window(); BREAK; @@ -247,13 +244,13 @@ inline fastcall void draw_window() { WindowRedrawStatus(1); skin_width = GetSkinWidth(); - DefineAndDrawWindow(100,100,600,410,0x43,0x10E4DFE1,0,0,#header); //DrawTitle(#header); + DefineAndDrawWindow(100,100,600,410,0x43,0x10E4DFE1,0,0,#header); Form.getme(); IF (Form.height==skin_width+3) {WindowRedrawStatus(2); return;} //это зачёт! IF (Form.height<280) MoveSize(OLD,OLD,OLD,280); IF (Form.width<480) MoveSize(OLD,OLD,480,OLD); //toolbar buttons - PutImage(#toolbar,246,39,5,0); + PutPaletteImage(#toolbar,246,39,5,0,#toolbar_pal); FOR (j=0; j<6; j++) DefineButton(toolbar_buttons_x[j],5,31,29,21+j+BT_HIDE,0xE4DFE1); //полоса адреса DrawBar(251,0,onLeft(251,60),12,0xE4DFE1); //фон над полосой адреса @@ -279,10 +276,13 @@ inline fastcall void draw_window() //прокрутка DrawFlatButton(onLeft(22,0),40,16,16,50,0xE4DFE1,"\x18"); //прокрутка вверх DrawFlatButton(onLeft(22,0),onTop(22,0),16,16,51,0xE4DFE1,"\x19");//прокрутка вниз + // + //DrawBar(197,57,onLeft(22,197),onTop(57,6),0xFFFFFF); //заливка белым + // DrawBar(onLeft(22,0),57,1,onTop(22,57),0x94AECE); //линия слева от прокрутки but_num=onTop(6,57)/18; IF (but_num>100) but_num=1; ELSE IF (kolichestvobut_num-1) curbtn=but_num-1; //это если выделение после схлопывания окна за кадром // FOR (j=0; jj) Line_ReDraw(0xFFFFFF, j); ELSE Line_ReDraw(videlenie, curbtn); - temp_int=but_num-1*18+75; + temp_int=but_num*18+57; DrawBar(197,temp_int,onLeft(22,197),onTop(temp_int,6),0xFFFFFF); //заливка белым доконца DrawBar(onLeft(163,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //полоса серая вертикальная 1 DrawBar(onLeft(90,0),temp_int,1,onTop(temp_int,6),0xE4DFE1); //полоса серая вертикальная 2 TVScroll(); } +/*void List_ReDraw() +{ + int i; + for (j=0; j<5; j++;) for (i=0; i<6; i++;) + { + PutImage(#def_file,48,48,i*64+197,j*64+57); + off=file_mas[i+j+za_kadrom]*304 + buf+72; + DrawBar(i*64+197,j*64+57+50,10*6,9,0xFFFFFF); //заливка белым + WriteText(i*64+197,j*64+57+50,0,0,off,10); + } + TVScroll(); +}*/ + void Line_ReDraw(dword color, filenum){ - dword y, size; + dword y=filenum*18+57; //положение текста по Y; if (rename_active==1) { rename_active=0; edit2.flags=64; - DefineButton(197,curbtn+1*18+39,onLeft(22,197),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF); + DefineButton(197,curbtn*18+57,onLeft(22,197),18,curbtn+201+BT_HIDE+BT_NOFRAME,0xFFFFFF); IF (filenum==100) filenum=curbtn; ELSE { copystr(#path,#temp); @@ -377,48 +390,46 @@ void Line_ReDraw(dword color, filenum){ { CopyFile(#file_path,#temp); Del_File(true); } } } - DrawBar(197,filenum*18+57,onLeft(22,197),18,color); //полоса белая или выделения + //да, я не спорю что изврат, но перерисовка зато маленькая + DrawBar(197,y,3,18,color); + DrawBar(200,y,16,2,color); + DrawBar(197+19,y,onLeft(22+19,197),18,color); + DrawBar(200,y+17,16,1,color); // - y= filenum*18+85; //положение текста по Y IF (strcmp(".",buf+72)<>0) off=file_mas[filenum+za_kadrom]*304 + buf+72; ELSE off=file_mas[filenum+za_kadrom+1]*304 + buf+72; - temp_int = onLeft(220,160)/6; - IF (strlen(off)", y); + temp_int = Put_icon(off+strlen(off)-4, y+2); + 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)==0) temp_int=Put_icon("..", y+2); ELSE temp_int=Put_icon("", y+2); IF (color==videlenie) { - IconFairing(temp_int, y, videlenie); //закрашиваем иконку + IconFairing(temp_int, y+2, videlenie); //закрашиваем иконку copystr(#path,#file_path); copystr(off,#file_name); copystr(off,#file_path+strlen(#file_path)); //итак, file_path=файлу, т.к. по-умолчанию это прога } - DrawBar(onLeft(163,0),filenum*18+57,1,18,0xE4DFE1); //полоса серая вертикальная 1 - DrawBar(onLeft(90,0),filenum*18+57,1,18,0xE4DFE1); //полоса серая вертикальная 2 + temp_int = onLeft(220,160)/6; + IF (strlen(off)0) && (strlen(#path)>6) kolichestvo--; //фак! это бред! хз как оно работает - FOR (i=0;i<=kolichestvo;i++) //а папки всё выше и выше... + FOR (j=0;j<=kolichestvo;j++) //а папки вверх, файлы вниз { EAX=ESDWORD[off-40]; $shr eax,4 $and eax,1 - IF (EAX) {file_mas[k]=i; k++;} - ELSE {file_mas[kolichestvo-l]=i; l++;} + IF (EAX) {file_mas[k]=j; k++;} + ELSE {file_mas[kolichestvo-l]=j; l++;} off += 304; } //k=0; l=kolichestvo; @@ -506,19 +517,20 @@ void Del_Form() DrawFlatButton(temp_int+111,208,70,20,302,0xC6DFC6,"No"); del_active=1; } - + +f70 del_file_70; void Del_File(byte dodel) -{ +{ IF (dodel==true){ - run_file_70.func = 8; - run_file_70.flag = 0; - run_file_70.param= 0; - run_file_70.rez1 = 0; - run_file_70.rez2 = 0; - run_file_70.rezerv2 = 0; - run_file_70.stroka = #file_path; + del_file_70.func = 8; + del_file_70.param1 = 0; + del_file_70.param2 = 0; + del_file_70.param3 = 0; + del_file_70.param4 = 0; + del_file_70.rezerv = 0; + del_file_70.name = #file_path; $mov eax,70 - $mov ebx,#run_file_70.func + $mov ebx,#del_file_70.func $int 0x40} del_active=0; DeleteButton(301); DeleteButton(302); //удаляем кнопочки Yes/No @@ -583,11 +595,12 @@ void Devices() 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,26,i*16+76); - } + } Actions(); //функции файлов и папок Preview(); } + void Actions() { DrawBar(22,dev_num*16+75,160,15,0x00699C); //синий прямоугольник - под девайсами @@ -616,33 +629,6 @@ void Actions() } -/*void Dir_Up() -{ - byte 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; i>0; i--;) IF(strcmp(file_mas[i]*304+buf+72,#temp_)==0) BREAK; - // - IF (i0) za_kadrom=i; ELSE za_kadrom=i-1;} - ELSE {za_kadrom=kolichestvo-but_num; curbtn=i-kolichestvo+but_num;} - List_ReDraw(); -}*/ - -/*void Dir_Up() -{ - i=strlen(#path)-1; - do i--; while (path[i]<>'/'); - path[i+1]=0x00; - za_kadrom=0; curbtn=0; //вверх списка - Open_Dir(#path,1); -}*/ - -//баг - если сверху, то сверху,а не снизу void Dir_Up() { byte temp_[256]; @@ -668,7 +654,7 @@ void Dir_Up() void Preview() { dword top_pr=dev_num*16+123; - top_pr+=show_actions*51; //ничинаем ниже, если Акшнс видимы + top_pr+=show_actions*51; //начинаем ниже, если Экшнс видимы DeleteButton(78); if (show_preview==1) { @@ -680,8 +666,8 @@ void Preview() //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... Yet.",0); - //WriteText(30,top_pr+70,0x80,0,"Nable, I'm waiting (:",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(22,top_pr+118,160,onTop(top_pr+118,6),0x00699C); //синее } ELSE { diff --git a/programs/fs/Eolite/trunk/imgs/imgs.zip b/programs/fs/Eolite/trunk/imgs/imgs.zip index f34d2a116920224b602d0bc6dad0a37b5337664c..eb2b59e14f97904d9ea30c10533d105d46c339fd 100644 GIT binary patch literal 16641 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 literal 29107 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�t)KlbW5pYk6+%`m z2u%%Imr+vgR@XMbQR!eI{9I%HlO(S%=vH1QqLn)uI_8OEybXjwb4;hiR%B92q#1I7 ztSY$?$vTOzUh^xtG&7E7$vqlDY?Ob~MzwU_=f8#s(6{yTY|OV%eX=yxDi&Y^!lg0b z^!-ugd&yy{1j|%Q67sOLwilyb{5 z1ZBE%nTF&xT>7>y#TZ2t%-dehhwvwI+N4^ZLGGP+^|5Uy50;11of<%u4yK+VwyBZK z?u&>(P%x3K5DbHI;PCyFmUq-v9zeqHFaw%%LrZCFXc?g8;hCfT^qahnwZ~IfS{rXk zj-ugnqp{f|j*8h5TH_8i3bIZR^NLmz9dDjsIVzlDU!)4)~_LiGFEwbQYtQ0)+m&>HSkhtR(z+9rDZj>au4vd z9Q(uODe=;?(onEVp|25a`o3n?4 z$fU^Dv?yzcG>~(#?3DG5Ee^ls5dnHX9FULN=s5p@IbY}IubE%!PTot4s_KmY*6+UG zt7)qwfPp-PWdcArW2@_KS`Ka)HLuzi-&c@2RqFW(N{l=lQ#R-uNGAwgzC+#av+0gc1*@=+lyd^c0 z+{st!_hA*Q96mHLCZWqmt2`?%_#I~K6P6K4noOltvMEcT3Gk>R5nro}VuY~UP_9aqET)*?~OcwG%PbgXQqeAIHN*1xY#A8`8q z%^evkp``wk>_Q}RW4FtI5l{`OY;@5-d-`k#_v|SJn~3Gac~*UQC~zj44P}qtCnXn{ z@Mq$(*CUNDfiPi*eiO&_CNg1Io)b^so5|Xs1$M>^&X=#Q3>4_co?%Bll+J>_F5bTI zGTn~lCYh=DT;dFG98L=5f<^gGHa~s0k=<&U>l0sl=joRYOd%lm_P$sYZdR6z^!5=v zlbpEkOxjjWWEhc)F=RGj_`-gSSt%klIClRuQ>F`T4Ab)UB&*?f%rVS#oZj(3mR_2? zmp_VOW_~mz77YKS5HH81v<3@Q`f|sZh54E!s~^3lV8+<(DaynN)d>~L#3AjiM^!AI z?sK^FTrI$GZuJLeHiq%CbEdBg8(hk0YpFmD>F0N5lF;n}KFjZgz4Jx8T(8*;&Ys7+ zSgbe(PN90_KFyZwxb~*PKKZsd_w$2yYX$++*cZaFQ2r{*Eu%UD%(Hbt`{e9f zlH>*4GqhdwLx%ig^aWH4q5S`*?&!3C0|3lO@*$`q6F=!civLs1^_0qA?Ydq9KQO8* zp<_^>{olVqh=w}Q(VqT2p$^-BeUb1#$^N@s{eK_+Cm9Lpe`fCgPrCmu5$(U}>}da; zmi9lX{=04L|E4nI{XaIf|0m&p7jE)z!ZX$XP57_i6Llpl?7t6Sp?-AeXlNlWe@p)h D)@hh| diff --git a/programs/fs/Eolite/trunk/include/LVabout.c-- b/programs/fs/Eolite/trunk/include/LVabout.c-- index af5b1b9ec3..a901b3757c 100644 --- a/programs/fs/Eolite/trunk/include/LVabout.c-- +++ b/programs/fs/Eolite/trunk/include/LVabout.c-- @@ -1,34 +1,4 @@ -#include "imgs\logo.cpp" - -/*void authors() -{ - _HH: - WindowRedrawStatus(1); - DefineAndDrawWindow(500,200,181,256,0x04,0x10EFEBEF,0,0,"About Eolite"); - //DrawTitle("About Eolite"); - DrawBar(5,0,172,50,0x8494C4); //голубое сзади - PutImage(#logo,85,85,48,7); - WriteText(32,100,0x80,0xBF40BF,"Eolite v0.96.4 beta7",0); - WriteText(68,120,0x80,0,"Authors:",0); - WriteText(44,130,0x80,0,"Leency & Veliant",0); - WriteText(50,140,0x80,0,"KolibriOS Team",0); - WriteText(26,160,0x80,0,"Made using C-- in 2008",0); - WriteText(23,170,0x80,0,"Visit www.kolibrios.org",0); - DrawFlatButton(90,190,70,22,2,0x00D7D7D7, "Close"); - WindowRedrawStatus(2); - loop() - { - SWITCH(WaitEvent()) - { - CASE evButton: ExitProcess(); - CASE evKey: IF (GetKey()==27) ExitProcess(); break; - CASE evReDraw: GOTO _HH; - BREAK; - } - } - ExitProcess(); -}*/ - +#include "imgs\logo.txt" void authors() { @@ -41,20 +11,19 @@ void authors() CASE evReDraw: WindowRedrawStatus(1); DefineAndDrawWindow(500,200,181,256,0x04,0x10EFEBEF,0,0,"About Eolite"); - //DrawTitle("About Eolite"); DrawBar(5,0,172,50,0x8494C4); //голубое сзади - PutImage(#logo,85,85,48,7); - WriteText(32,100,0x80,0xBF40BF,"Eolite v0.96.7 beta7",0); + //PutImage(#logo,85,85,48,7); + PutPaletteImage(#logo,85,85,48,7,#logo_pal); + WriteText(38,100,0x80,0xBF40BF,"Eolite v0.97 beta7",0); WriteText(68,120,0x80,0,"Authors:",0); WriteText(44,130,0x80,0,"Leency & Veliant",0); WriteText(50,140,0x80,0,"KolibriOS Team",0); WriteText(26,160,0x80,0,"Made using C-- in 2008",0); WriteText(23,170,0x80,0,"Visit www.kolibrios.org",0); - DrawFlatButton(90,190,70,22,2,0x00D7D7D7, "Close"); + DrawFlatButton(90,190,70,22,2,0xE4DFE1, "Close"); WindowRedrawStatus(2); } } - //ExitProcess(); } @@ -127,3 +96,5 @@ void Sort_by_Type(dword a, b) // Sort_by_Type(a, c-1); Sort_by_Type(c+1, b); } + + diff --git a/programs/fs/Eolite/trunk/include/icons_f.h-- b/programs/fs/Eolite/trunk/include/icons_f.h-- index edbeeadc84..7338fbe57d 100644 --- a/programs/fs/Eolite/trunk/include/icons_f.h-- +++ b/programs/fs/Eolite/trunk/include/icons_f.h-- @@ -2,67 +2,110 @@ void IconFairing(dword filenum, y, videlenie) { if (filenum<5) //файлик { - DrawBar(200,y-26,2,15,videlenie); - DrawBar(214,y-26,2,15,videlenie); - DrawBar(210,y-26,4,1,videlenie);//ле - DrawBar(211,y-25,3,1,videlenie);//сен - DrawBar(212,y-24,2,1,videlenie);//ка - DrawBar(213,y-23,1,1,videlenie);// + DrawBar(200,y,2,15,videlenie); + DrawBar(214,y,2,15,videlenie); + DrawBar(210,y,4,1,videlenie);//ле + DrawBar(211,y+1,3,1,videlenie);//сен + DrawBar(212,y+2,2,1,videlenie);//ка + DrawBar(213,y+3,1,1,videlenie);// } if (filenum==16) || (filenum==17) //папка { - DrawBar(201,y-13,15,2,videlenie); //снизу линия - DrawBar(200,y-26,1,15,videlenie); //слева линия - DrawBar(208,y-26,8,2,videlenie); //сверху справа линия - IF (filenum==17) DrawBar(211,y-25,1,1,0x1A7B17); //зелёная точка стрелки + DrawBar(200,y,1,15,videlenie); //слева линия + DrawBar(208,y,8,2,videlenie); //сверху справа линия + IF (filenum==17) DrawBar(211,y+1,1,1,0x1A7B17); //зелёная точка стрелки + DrawBar(201,y+13,15,2,videlenie); //снизу линия //.точки - PutPixel(201,y-26+skin_width,videlenie); //сверху слева точка - PutPixel(207,y-26+skin_width,videlenie); //сверху справа точка - PutPixel(201,y-14+skin_width,videlenie); //слева снизу точка - PutPixel(215,y-14+skin_width,videlenie); //справа снизу точка - PutPixel(215,y-24+skin_width,videlenie); //какая разница где + PutPixel(201,y,videlenie); //сверху слева точка + PutPixel(207,y,videlenie); //сверху справа точка + PutPixel(215,y+2,videlenie); //какая разница где + PutPixel(201,y+12,videlenie); //слева снизу точка + PutPixel(215,y+12,videlenie); //справа снизу точка + } + IF (filenum==13) PutPixel(215,y,videlenie); //skin + IF (filenum==20) //картридж + { + DrawBar(200,y,16,2,videlenie); + DrawBar(200,y+11,1,2,videlenie); + DrawBar(215,y+11,1,2,videlenie); + DrawBar(200,y+13,16,2,videlenie); + } + IF (filenum==14) //video + {DrawBar(200,y,1,15,videlenie); DrawBar(215,y,1,15,videlenie);} + IF (filenum==21) //дискета + { PutPixel(200,y,videlenie); PutPixel(215,y,videlenie); } + IF (filenum==19) //изображение + DrawBar(200,y+14,16,1,videlenie); + if (filenum==22) //библиотека + { + DrawBar(200,y,16,1,videlenie); //сверху слева + DrawBar(200,y+1,3,1,videlenie); + DrawBar(200,y+2,2,1,videlenie); + PutPixel(200,y+3,videlenie); + // + PutPixel(215,y+11,videlenie); //справа справа + DrawBar(214,y+12,2,1,videlenie); + DrawBar(213,y+13,3,1,videlenie); + DrawBar(212,y+14,4,1,videlenie); + } + if (filenum==15) //архив + { + PutPixel(200,y,videlenie); //справа справа + DrawBar(213,y,3,1,videlenie); + DrawBar(214,y+1,2,1,videlenie); + PutPixel(215,y+2,videlenie); + PutPixel(200,y+11,videlenie); + DrawBar(200,y+12,2,1,videlenie); + DrawBar(200,y+13,3,1,videlenie); + DrawBar(200,y+14,4,1,videlenie); } - IF (filenum==13) PutPixel(215,y-26+skin_width,videlenie); //skin - IF (filenum==14) {DrawBar(200,y-26,1,15,videlenie); DrawBar(215,y-26,1,15,videlenie);} //video } +#include "imgs\icons.txt" dword Put_icon(dword extension, yy) { dword ftype="", fnum=0; //еши неизвесный файл - IF (strcmp(extension,".kex")==0) {fnum = 6; ftype="Program";} - IF (strcmp(extension,".cvs")==0) {fnum = 18; ftype="Graph";} - IF (strcmp(extension,".cmd")==0) {fnum = 5; ftype="CMD skript";} - IF (strcmp(extension,".skn")==0) {fnum = 13; ftype="Skin";} - IF (strcmp(extension,".chr")==0) {fnum = 10; ftype="Font";} - IF (strcmp(extension,".avi")==0) {fnum = 14; ftype="Video";} - IF (strcmp(extension,".asm")==0) {fnum = 11; ftype="Source";} - IF (strcmp(extension,".inc")==0) fnum = 9; - IF (strcmp(extension,".exe")==0) {fnum = 7; ftype="Win32 Exec";} - IF (strcmp(extension,".dll")==0) || (strcmp(extension,".obj")==0) {fnum = 8; ftype="Library";} - IF (strcmp(extension,".ini")==0) || (strcmp(extension,"conf")==0) {fnum = 8; ftype="Config";} - IF (strcmp(extension,".htm")==0) || (strcmp(extension,"html")==0) {fnum = 2; ftype="Web-page";} + IF (!strcmp(extension,".kex")) {fnum = 6; ftype="Program";} + IF (!strcmp(extension,".cvs")) {fnum = 18; ftype="Graph";} + IF (!strcmp(extension,".cmd")) || (!strcmp(extension,".bat")) {fnum = 5; ftype="CMD skript";} + IF (!strcmp(extension,".skn")) {fnum = 13; ftype="Skin";} + IF (!strcmp(extension,".chr"))|| (!strcmp(extension+1,".mt")) || (!strcmp(extension,".ttf")) || (!strcmp(extension,".fon")) {fnum = 10; ftype="Font";} + IF (!strcmp(extension,".asm")) {fnum = 11; ftype="Source";} + IF (!strcmp(extension,".inc")) fnum = 9; + IF (!strcmp(extension,".exe")) || (!strcmp(extension,".msi")) {fnum = 7; ftype="Win32 Exec";} + IF (!strcmp(extension,".com")) fnum = 5; + IF (!strcmp(extension,".cpp")) {fnum = 3; ftype="C++ code";} + IF (!strcmp(extension,".nes")) {fnum = 20; 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,".sys")) || (!strcmp(extension,".ocx")) fnum = 8; + IF (!strcmp(extension,".ini")) || (!strcmp(extension,"conf")) {fnum = 4; ftype="Config";} + IF (!strcmp(extension,".htm")) || (!strcmp(extension,"html")) {fnum = 2; ftype="Web-page";} //text - IF (strcmp(extension,".txt")==0) {fnum = 1; ftype="Text";} - IF (strcmp(extension,".doc")==0) {fnum = 1; ftype="Text";} - IF (strcmp(extension,".rtf")==0) {fnum = 1; ftype="Text";} + IF (!strcmp(extension,".txt")) || (!strcmp(extension,".doc")) || + (!strcmp(extension,".rtf")) {fnum = 1; ftype="Text";} //изображения - IF (strcmp(extension,".gif")==0) || (strcmp(extension,".bmp")==0) || - (strcmp(extension,".tga")==0) || (strcmp(extension,".pcx")==0) || - (strcmp(extension,".png")==0) || (strcmp(extension,".jpg")==0) || - (strcmp(extension,"jpeg")==0) || (strcmp(extension,".raw")==0) {fnum = 3; ftype="Image";} + IF (!strcmp(extension,".gif")) || (!strcmp(extension,".bmp")) || + (!strcmp(extension,".tga")) || (!strcmp(extension,".pcx")) || + (!strcmp(extension,".png")) || (!strcmp(extension,".jpg")) || + (!strcmp(extension,"jpeg")) || (!strcmp(extension,".raw")) {fnum = 19; ftype="Image";} //архивы - IF (strcmp(extension,".rar")==0) || (strcmp(extension,".zip")==0) || - (strcmp(extension,".cab")==0) || (strcmp(extension,".tar")==0) || - (strcmp(extension,".ajr")==0) {fnum = 15; ftype="Archive";} + IF (!strcmp(extension,".rar")) || (!strcmp(extension,".zip")) || + (!strcmp(extension,".cab")) || (!strcmp(extension,".tar")) || + (!strcmp(extension,".ajr")) || (!strcmp(extension,".jar")) || + (!strcmp(extension+1,".7z")){fnum = 15; ftype="Archive";} //audio - IF (strcmp(extension,".mp3")==0) {fnum = 12; ftype="Music";} - IF (strcmp(extension,".wav")==0) || (strcmp(extension,".mid")==0) || - (strcmp(extension,"midi")==0) || (strcmp(extension,".ogg")==0) {fnum = 12; ftype="Audio";} - //папка - IF (strcmp(extension,"")==0) || (strcmp(extension," ")==0) - { fnum=21-strlen(extension); WriteText(onLeft(140,0),yy-22,0x80,0,extension,0);} + IF (!strcmp(extension,".mp3")) {fnum = 12; ftype="Music";} + IF (!strcmp(extension,".wav")) || (strcmp(extension,".mid")==0) || + (!strcmp(extension,"midi")) || (strcmp(extension,".ogg")==0) {fnum = 12; ftype="Audio";} + //video + IF (!strcmp(extension,".avi")) || (!strcmp(extension,".flv")) || (!strcmp(extension,".mpg")) || + (!strcmp(extension,".wmv")) {fnum = 14; ftype="Video";} + //папки + IF (!strcmp(extension,"")) { fnum=16; WriteText(onLeft(140,0),yy+4,0x80,0,extension,0);} + IF (!strcmp(extension,"..")) fnum=17; // - PutImage(fnum*16*15*3+#ficons,16,15,200,yy-26); - WriteText(onLeft(155,0),yy-22,0x80,0,ftype,0); + PutPaletteImage(fnum*16*15+#ficons,16,15,200,yy,#ficons_pal); + WriteText(onLeft(155,0),yy+4,0x80,0,ftype,0); return fnum; } diff --git a/programs/fs/Eolite/trunk/include/run_file.h-- b/programs/fs/Eolite/trunk/include/run_file.h-- index f9cb423eba..954bb9f6f6 100644 --- a/programs/fs/Eolite/trunk/include/run_file.h-- +++ b/programs/fs/Eolite/trunk/include/run_file.h-- @@ -1,28 +1,17 @@ -#include "imgs\icons.cpp" - -struct { - int func; - int flag; - int param; - int rez1; - int rez2; - char rezerv2; - int stroka; -}run_file_70; - +f70 run_file_70; /////////////////////////// // Запуск программы // /////////////////////////// void Run_Program(dword run_path, run_param) -{ +{ run_file_70.func = 7; - run_file_70.flag = 0; - run_file_70.param= run_param; - run_file_70.rez1 = 0; - run_file_70.rez2 = 0; - run_file_70.rezerv2 = 0; - run_file_70.stroka = run_path; + run_file_70.param1 = 0; + run_file_70.param2 = run_param; + run_file_70.param3 = 0; + run_file_70.param4 = 0; + run_file_70.rezerv = 0; + run_file_70.name = run_path; $mov eax,70 $mov ebx,#run_file_70.func $int 0x40 @@ -50,43 +39,46 @@ void Run_File(dword fpath) Run_Program(fpath, ""); }*/ -/////////////////////////// -// Запуск файла // -/////////////////////////// + void Run_File(dword fpath) { dword extension[4], fparam[256]; copystr(fpath,#fparam); //по-умолчанию прога и параметр равны, если окажется что это файл, парам - сбросим copystr(fpath+strlen(fpath)-4,#extension); //узнаём расширение файла с каким работаем //тут мы это расширение сравнимаем, и, если оно асоциируется с прогой, прога - это fpath - IF (strcmp(#extension,".skn")==0) copystr("desktop",fpath); - IF (strcmp(#extension,".avi")==0) copystr("/sys/kvid",fpath); - IF (strcmp(#extension,".htm")==0) copystr("/sys/network/HTMLv",fpath); - IF (strcmp(#extension,"html")==0) copystr("/sys/network/HTMLv",fpath); + IF (!strcmp(#extension,".skn")) copystr("desktop",fpath); + IF (!strcmp(#extension,".avi")) copystr("/sys/kvid",fpath); + IF (!strcmp(#extension,".mpg")) copystr("/sys/kvid",fpath); + IF (!strcmp(#extension,".htm")) copystr("/sys/network/HTMLv",fpath); + IF (!strcmp(#extension,"html")) copystr("/sys/network/HTMLv",fpath); //IF (strcmp(#extension,".htm")==0) || (strcmp(#extension,"html")==0) copystr("/hd0/2/Programs/QIP/Users/419114984/RcvdFiles/313257308_Veliant/browser/HTMLv",fpath); - IF (strcmp(#extension,".3ds")==0) copystr("/sys/demos/3d/view3ds",fpath); - IF (strcmp(#extension,".lif")==0) copystr("/sys/demos/life2",fpath); - IF (strcmp(#extension,".cvs")==0) copystr("graph",fpath); + IF (!strcmp(#extension,".3ds")) copystr("/sys/demos/3d/view3ds",fpath); + IF (!strcmp(#extension,".lif")) copystr("/sys/demos/life2",fpath); + IF (!strcmp(#extension,".cvs")) copystr("graph",fpath); + IF (!strcmp(#extension,".nes")) copystr("/sys/games/fce",fpath); //audio - IF (strcmp(#extension,".mp3")==0) copystr("AC97SND",fpath); - IF (strcmp(#extension,".wav")==0) copystr("AC97SND",fpath); - IF (strcmp(#extension,".mid")==0) copystr("MIDAMP",fpath); - IF (strcmp(#extension,"midi")==0) copystr("MIDAMP",fpath); + IF (!strcmp(#extension,".mp3")) copystr("AC97SND",fpath); + IF (!strcmp(#extension,".wav")) copystr("AC97SND",fpath); + IF (!strcmp(#extension,".mid")) copystr("MIDAMP",fpath); + IF (!strcmp(#extension,"midi")) copystr("MIDAMP",fpath); //text - IF (strcmp(#extension,".rtf")==0) copystr("RtfRead",fpath); - IF (strcmp(#extension,".txt")==0) copystr("TinyPad",fpath); - IF (strcmp(#extension,".inc")==0) copystr("TinyPad",fpath); - IF (strcmp(#extension,".ini")==0) copystr("TinyPad",fpath); - IF (strcmp(#extension,".dat")==0) copystr("TinyPad",fpath); - IF (strcmp(#extension,".asm")==0) copystr("TinyPad",fpath); //AsmMenu1,AsmMenu2 + IF (!strcmp(#extension,".rtf")) copystr("RtfRead",fpath); + IF (!strcmp(#extension,".txt")) copystr("TinyPad",fpath); + IF (!strcmp(#extension,".inc")) copystr("TinyPad",fpath); + IF (!strcmp(#extension,".ini")) copystr("TinyPad",fpath); + IF (!strcmp(#extension,".dat")) copystr("TinyPad",fpath); + IF (!strcmp(#extension,".asm")) copystr("TinyPad",fpath); + IF (!strcmp(#extension,".cpp")) copystr("TinyPad",fpath); //изображения - IF (strcmp(#extension,".gif")==0) copystr("MV",fpath); //GifView,MenuAnimage - IF (strcmp(#extension,".bmp")==0) copystr("MV",fpath); //BmpMenu1,MenuAnimage - IF (strcmp(#extension,".tga")==0) copystr("MV",fpath); - IF (strcmp(#extension,".pcx")==0) copystr("MV",fpath); - IF (strcmp(#extension,".png")==0) copystr("@rcher",fpath); - IF (strcmp(#extension,".jpg")==0) copystr("JpegView",fpath); - IF (strcmp(#extension,"jpeg")==0) copystr("JpegView",fpath); - IF (strcmp(fpath,#fparam)==0) copystr("",#fparam); //если fpath не изменился, то это таки, наверное, прога, параметров нет. + IF (!strcmp(#extension,".gif")) copystr("MV",fpath); //GifView,MenuAnimage + IF (!strcmp(#extension,".bmp")) copystr("MV",fpath); //BmpMenu1,MenuAnimage + IF (!strcmp(#extension,".tga")) copystr("MV",fpath); + IF (!strcmp(#extension,".pcx")) copystr("MV",fpath); + IF (!strcmp(#extension,".cur")) copystr("MV",fpath); + IF (!strcmp(#extension,".ico")) copystr("MV",fpath); + IF (!strcmp(#extension,".png")) copystr("@rcher",fpath); + IF (!strcmp(#extension,".jpg")) copystr("JpegView",fpath); + IF (!strcmp(#extension,"jpeg")) copystr("JpegView",fpath); + IF (!strcmp(fpath,#fparam)) fparam=''; //если fpath не изменился, то это таки, наверное, прога, параметров нет. Run_Program(fpath, #fparam); //запуск! } diff --git a/programs/fs/Eolite/trunk/lib/kolibri.h-- b/programs/fs/Eolite/trunk/lib/kolibri.h-- index 898cbf3e2f..5df4293a02 100644 --- a/programs/fs/Eolite/trunk/lib/kolibri.h-- +++ b/programs/fs/Eolite/trunk/lib/kolibri.h-- @@ -11,12 +11,11 @@ dword alloc_mem = 0x00100000; dword x86esp_reg = 0x00100000; // 0x0007fff0; dword I_Param = #param; dword I_Icon = 0x0; -dword skin_width; - +dword skin_width; char param[256]=""; //Events -#define evMouse 6 +#define evMouse 6 #define evButton 3 #define evKey 2 #define evReDraw 1 @@ -121,10 +120,11 @@ inline fastcall dword WaitEvent(){ $int 0x40 } -inline fastcall void ExitProcess(){ - EAX = -1; // close this program - $int 0x40 -} +/*inline fastcall void SetEventMask(dword EBX){ + $mov eax,40 + //$mov ebx,100111b + $int 0x40 +}*/ inline fastcall word GetKey(){ EAX = 2; // just read this key from buffer @@ -138,166 +138,64 @@ inline fastcall word GetButtonID(){ EAX = EAX >> 8; } +inline fastcall void ExitProcess(){ + EAX = -1; // close this program + $int 0x40 +} -inline fastcall void DrawTitle(dword ECX) +/*void Pause(dword EBX) +{ //Џ г§ , ў б®вле ¤®«пе ᥪ㭤л EBX = value + $mov eax, 5 + $int 0x40 +}*/ + +//------------------------------------------------------------------------------ +void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword + mainAreaColor,byte headerType,dword headerColor,EDI) { + EBX = x << 16 + sizeX; + ECX = y << 16 + sizeY; + EDX = mainAreaType << 24 | mainAreaColor; + ESI = headerType << 24 | headerColor; + $xor eax,eax + $int 0x40 +} + +inline fastcall void DrawTitle(dword ECX){ EAX = 71; EBX = 1; $int 0x40; } -inline fastcall dword GetSkinWidth() -{ + +inline fastcall void WindowRedrawStatus(dword EBX){ + EAX = 12; //tell os about windowdraw + $int 0x40 +} + +inline fastcall dword GetSkinWidth(){ EAX = 48; EBX = 4; $int 0x40 } - -inline fastcall void DeleteButton(dword EDX) -{ - EAX = 8; - EDX = EDX + BT_DEL; - $int 0x40; +inline fastcall dword MoveSize(dword EBX,ECX,EDX,ESI){ + EAX = 67; + $int 0x40 } +//------------------------------------------------------------------------------ -inline fastcall dword strlen(dword EDI) -{ -#speed +inline fastcall dword strlen(dword EDI){ ECX=EAX=0; ECX--; $REPNE $SCASB - EAX=EAX-2-ECX; -#codesize + EAX-=2+ECX; } -inline fastcall int strcmp(dword EAX,EBX) +inline fastcall copystr(dword ESI,EDI) { -#speed - ESI=EAX; - EBX--; -TOP: - EBX++; - $LODSB - $CMP AL,0 - $JE HERE - $CMP DSBYTE[EBX],AL - $JE TOP -HERE: - AL-=DSBYTE[EBX]; - return AL; -#codesize -} - - -inline fastcall dword ChangeCase(dword EDX) -{ -#speed - AL=DSBYTE[EDX]; - IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; - EDX++; - do{ - AL=DSBYTE[EDX]; - IF(AL>='A')&&(AL<='Z')DSBYTE[EDX]=AL|0x20; - EDX++; - }while(AL!=0); -#codesize -} - - -inline fastcall void WindowRedrawStatus(dword EBX) -{ - EAX = 12; // function 12:tell os about windowdraw - $int 0x40 -} - - -void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,EDI) -{ - EBX = x << 16 + sizeX; - ECX = y << 16 + sizeY; - EDX = mainAreaType << 24 | mainAreaColour; - ESI = headerType << 24 | headerColour; - $xor eax,eax - $int 0x40 -} - - -inline fastcall void SetEventMask(dword EBX,ECX,EDX) //Coded by Leency :D -{ - $mov eax,40 - $mov ebx,100111b - $int 0x40 -} - -void DefineButton(dword x,y,w,h,EDX,ESI) -{ - EAX = 8; - EBX = x<<16+w; - ECX = skin_width+y<<16+h; - $int 0x40 -} - -void WriteText(dword x,y,byte fontType, dword color, EDX, ESI) -{ - EAX = 4; - EBX = x<<16+skin_width+y; - ECX = fontType<<24+color; - $int 0x40; -} - -inline fastcall void PutPixel(dword EBX,ECX,EDX) -{ - EAX=1; - $int 0x40 -} - -void DrawBar(dword x,y,w,h,EDX) -{ -#speed - EAX = 13; - EBX = x<<16+w; - ECX = skin_width+y<<16+h; - $int 0x40 -#codesize -} - -void DrawRegion(dword x,y,width,height,color1) -{ - DrawBar(x,y,width,1,color1); //Ї®«®б  Ј®а ᢥаег - DrawBar(x,y+height,width,1,color1); //Ї®«®б  Ј®а б­Ё§г - DrawBar(x,y,1,height,color1); //Ї®«®б  ўҐаег б«Ґў  - DrawBar(x+width,y,1,height+1,color1); //Ї®«®б  ўҐаег бЇа ў  -} - -void DrawFlatButton(dword x,y,width,height,id,color,text) -{ - DrawRegion(x,y,width,height,0x94AECE); - DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //Ї®«®б  Ј®а ЎҐ« п - DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //ўҐ­¬ ўҐаў - DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //Ї®«®б  ўҐаў ЎҐ« Ї - DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //ўҐ­¬ ўҐаў - DrawBar(x+2,y+2,width-3,height-3,color); //§ «ЁўЄ  - IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //®ЇаҐ¤Ґ«ЇҐ¬ Є­®ЇЄЈ - WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0); -} - - -void PutImage(dword EBX,w,h,x,y) -{ - EAX = 7; - ECX = w<<16+h; - EDX = x<<16+y+skin_width; - $int 0x40 -} - - -void copystr(dword s,d) -{ - $mov esi,s - $mov edi,d $cld l1: $lodsb @@ -307,7 +205,6 @@ l1: } -int j=0; char buffer[11]=""; inline fastcall dword IntToStr(dword ESI) { @@ -337,12 +234,117 @@ f3: } -inline fastcall dword MoveSize(dword EBX,ECX,EDX,ESI) +inline fastcall int strcmp(dword EAX,EBX) { - EAX = 67; + #speed + ESI=EAX; + EBX--; +TOP: + EBX++; + $LODSB + $CMP AL,0 + $JE HERE + $CMP DSBYTE[EBX],AL + $JE TOP +HERE: + AL-=DSBYTE[EBX]; + return AL; + #codesize +} + + +inline fastcall dword ChangeCase(dword EDX) +{ + #speed + AL=DSBYTE[EDX]; + IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; + EDX++; + do{ + AL=DSBYTE[EDX]; + IF(AL>='A')&&(AL<='Z')DSBYTE[EDX]=AL|0x20; + EDX++; + }while(AL!=0); + #codesize +} + +//------------------------------------------------------------------------------ +inline fastcall void PutPixel(dword EBX,ECX,EDX){ + EAX=1; + ECX+=skin_width; + $int 0x40 +} + +void DefineButton(dword x,y,w,h,EDX,ESI){ + EAX = 8; + EBX = x<<16+w; + ECX = skin_width+y<<16+h; $int 0x40 } +inline fastcall void DeleteButton(dword EDX) +{ + EAX = 8; + EDX += BT_DEL; + $int 0x40; +} + +void WriteText(dword x,y,byte fontType, dword color, EDX, ESI) +{ + EAX = 4; + EBX = x<<16+skin_width+y; + ECX = fontType<<24+color; + $int 0x40; +} + +void DrawBar(dword x,y,w,h,EDX) +{ + #speed + EAX = 13; + EBX = x<<16+w; + ECX = skin_width+y<<16+h; + $int 0x40 + #codesize +} + +void DrawRegion(dword x,y,width,height,color1) +{ + DrawBar(x,y,width,1,color1); //Ї®«®б  Ј®а ᢥаег + DrawBar(x,y+height,width,1,color1); //Ї®«®б  Ј®а б­Ё§г + DrawBar(x,y,1,height,color1); //Ї®«®б  ўҐаег б«Ґў  + DrawBar(x+width,y,1,height+1,color1); //Ї®«®б  ўҐаег бЇа ў  +} + +void DrawFlatButton(dword x,y,width,height,id,color,text) +{ + DrawRegion(x,y,width,height,0x94AECE); + DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //Ї®«®б  Ј®а ЎҐ« п + DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //ўҐ­¬ ўҐаў + DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //Ї®«®б  ўҐаў ЎҐ« Ї + DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //ўҐ­¬ ўҐаў + DrawBar(x+2,y+2,width-3,height-3,color); //§ «ЁўЄ  + IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //Є­®ЇЄ  + WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0); +} + +void PutImage(dword EBX,w,h,x,y) +{ + EAX = 7; + ECX = w<<16+h; + EDX = x<<16+y+skin_width; + $int 0x40 +} + +void PutPaletteImage(dword EBX,w,h,x,y, EDI) +{ + EAX = 65; + ECX = w<<16+h; + EDX = x<<16+y+skin_width; + ESI = 8; + EBP = 0; + $int 0x40 +} + +//------------------------------------------------------------------------------ f70 CopyFile_f; BDVK CopyFile_atr; @@ -360,7 +362,7 @@ inline fastcall dword CopyFile(dword EBX,ECX) $mov ebx, #CopyFile_f $int 0x40 - if (EAX == 0) + if (!EAX) { cBufer = malloc(CopyFile_atr.sizelo); CopyFile_f.func = 0; @@ -374,7 +376,7 @@ inline fastcall dword CopyFile(dword EBX,ECX) $mov ebx, #CopyFile_f $int 0x40 - IF (EAX == 0) + IF (!EAX) { CopyFile_f.func = 2; CopyFile_f.param1 = 0;