HTMLv: some improvements

git-svn-id: svn://kolibrios.org@2803 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2012-06-17 12:03:52 +00:00
parent 3bb023473d
commit b30587c4a1
4 changed files with 66 additions and 50 deletions

View File

@ -63,8 +63,6 @@ void main()
switch(EAX & 0xFF) switch(EAX & 0xFF)
{ {
CASE evMouse: CASE evMouse:
edit_box_mouse stdcall (#edit1);
/*scrollbar_v_mouse (#scroll1); //êîí÷åíûé ñêğîëë ïğèòîğìàæèìàåò, èä¸ì "ñâîèì ïóò¸ì" /*scrollbar_v_mouse (#scroll1); //êîí÷åíûé ñêğîëë ïğèòîğìàæèìàåò, èä¸ì "ñâîèì ïóò¸ì"
if (za_kadrom <> scroll1.position) if (za_kadrom <> scroll1.position)
{ {
@ -72,15 +70,17 @@ void main()
WB1.ParseHTML(buf, filesize); WB1.ParseHTML(buf, filesize);
//break; //break;
};*/ };*/
btn=GetSlot(Form.ID); btn=GetSlot(Form.ID);
IF (btn<>ActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ğåàãèğóåì IF (btn<>ActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ğåàãèğóåì
edit_box_mouse stdcall (#edit1);
m.get(); m.get();
if (m.pkm) && (m.y>WB1.top) && (m.y<Form.height) && (filesize) if (m.pkm) && (m.y>WB1.top) && (m.y<Form.height) && (filesize)
{ {
CreateThread(#menu_rmb,#stak); CreateThread(#menu_rmb,#stak);
break;
} }
IF (m.vert==65535) //ïğîêğóòêà êîë¸ñèêîì IF (m.vert==65535) //ïğîêğóòêà êîë¸ñèêîì
@ -130,7 +130,13 @@ void main()
break; break;
case evKey: case evKey:
key = GetKey(); key = GetKey();
if (edit1.flags == 66) || (edit1.flags == 98) SWITCH(key) //åñëè àêòèâíà ñòðîêà àäðåñà èãíîðèðóåì íåêîòîðûå êíîïêè
{ CASE 52: CASE 53: CASE 54: goto _EDIT_MARK; }
WB1.Scan(key); WB1.Scan(key);
_EDIT_MARK:
IF (key<>0x0d) && (key<>183) && (key<>184) && (key<>173) {EAX=key<<8; edit_box_key stdcall(#edit1);} //àäğåñíàÿ ñòğîêà IF (key<>0x0d) && (key<>183) && (key<>184) && (key<>173) {EAX=key<<8; edit_box_key stdcall(#edit1);} //àäğåñíàÿ ñòğîêà
break; break;
case evReDraw: case evReDraw:

View File

@ -9,10 +9,7 @@ dword j,
char download_path[]="/rd/1/.download"; char download_path[]="/rd/1/.download";
char search_path[]="http://nigma.ru/index.php?s="; char search_path[]="http://nigma.ru/index.php?s=";
char version[]=" Text-based Browser 0.93b"; char version[]=" Text-based Browser 0.93e";
char tinypad_path[]="/sys/tinypad";
char t_edit_path[]="/sys/develop/t_edit";
struct TWebBrowser { struct TWebBrowser {
@ -54,7 +51,8 @@ int anchor_line_num;
#include "include\some_code.h" #include "include\some_code.h"
void TWebBrowser::Scan(int id) { void TWebBrowser::Scan(int id)
{
if (id > 399) if (id > 399)
{ {
GetURLfromPageLinks(id); GetURLfromPageLinks(id);
@ -92,7 +90,6 @@ void TWebBrowser::Scan(int id) {
return; return;
} }
//edit1.flags=64;
IF(count < max_kolvo_strok) SWITCH(id) //åñëè ìàëî ñòðîê èãíîðèðóåì íåêîòîðûå êíîïêè IF(count < max_kolvo_strok) SWITCH(id) //åñëè ìàëî ñòðîê èãíîðèðóåì íåêîòîðûå êíîïêè
{ CASE 183: CASE 184: CASE 180: CASE 181: return; } { CASE 183: CASE 184: CASE 180: CASE 181: return; }
@ -114,6 +111,12 @@ void TWebBrowser::Scan(int id) {
if (!BrowserHistory.GoForward()) return; if (!BrowserHistory.GoForward()) return;
OpenPage(); OpenPage();
return; return;
case 052: //Íàæàòà F3
if (strcmp(get_URL_part(5),"http:")<>0) RunProgram("/rd/1/tinypad", #URL); else RunProgram("/rd/1/tinypad", #download_path);
return;
case 053: //Íàæàòà F4
if (strcmp(get_URL_part(5),"http:")<>0) RunProgram("/rd/1/develop/t_edit", #URL); else RunProgram("/rd/1/develop/t_edit", #download_path);
return;
case 054: //F5 case 054: //F5
IF(edit1.flags == 66) break; IF(edit1.flags == 66) break;
case REFRESH: case REFRESH:
@ -124,7 +127,9 @@ void TWebBrowser::Scan(int id) {
Draw_Window(); Draw_Window();
return; return;
} }
OpenPage(); //îò ñåðäöà îòðûâàþ, çäåñü íóæíî za_kadrom ñòàðîå anchor_line_num=za_kadrom; //âåñ¸ëûé êîñòûëü :Ð
anchor[0]='|';
OpenPage();
return; return;
case 014: //Ctrl+N íîâîå îêíî case 014: //Ctrl+N íîâîå îêíî
case 020: //Ctrl+T íîâàÿ âêëàäêà case 020: //Ctrl+T íîâàÿ âêëàäêà
@ -132,14 +137,6 @@ void TWebBrowser::Scan(int id) {
MoveSize(190,80,OLD,OLD); MoveSize(190,80,OLD,OLD);
RunProgram(#program_path, #URL); RunProgram(#program_path, #URL);
return; return;
case 052: //Íàæàòà F3
IF(edit1.flags <> 66)
IF (!strcmp(get_URL_part(5),"http:")) RunProgram(#tinypad_path, #download_path); ELSE RunProgram(#tinypad_path, #URL);
return;
case 053: //Íàæàòà F4
IF(edit1.flags <> 66)
IF (!strcmp(get_URL_part(5),"http:")) RunProgram(#t_edit_path, #download_path); ELSE RunProgram(#t_edit_path, #URL);
return;
case HOME: case HOME:
copystr("http://kolibri-os.narod.ru", #editURL); copystr("http://kolibri-os.narod.ru", #editURL);
@ -256,7 +253,7 @@ void OpenPage()
Pause(60); Pause(60);
if (GetProcessSlot(downloader_id)<>0) if (GetProcessSlot(downloader_id)<>0)
{ {
WriteDebug("Browser Hack v2.0: Killing downloader and trying to run it one more!"); debug("Browser Hack v2.0: Killing downloader and trying to run it one more!");
KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ
downloader_id = RunProgram("/sys/network/downloader", #URL); downloader_id = RunProgram("/sys/network/downloader", #URL);
} }
@ -536,7 +533,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
IF(!chTag("q")) copystr("\"", #line + strlen(#line)); IF(!chTag("q")) copystr("\"", #line + strlen(#line));
//âûâîä íà ýêðàí //âûâîä íà ýêðàí
if (stroka >= 0) && (stroka - 2 < max_kolvo_strok) && (line) if (stroka >= 0) && (stroka - 2 < max_kolvo_strok) && (line) && (!anchor)
{ {
WriteText(stolbec * 6 + left1, top1, 0x80, text_colors[text_color_index], #line, 0); //ìîæåò òóò ðèñîâàòü áåëóþ ñòðîêó? WriteText(stolbec * 6 + left1, top1, 0x80, text_colors[text_color_index], #line, 0); //ìîæåò òóò ðèñîâàòü áåëóþ ñòðîêó?
IF (b_text) { $add ebx, 1<<16 $int 0x40 } IF (b_text) { $add ebx, 1<<16 $int 0x40 }
@ -803,7 +800,7 @@ void TextGoDown(int left1, top1, width1)
IF(blq_text == 1) stolbec = 8; IF(blq_text == 1) stolbec = 8;
ELSE stolbec = 0; ELSE stolbec = 0;
IF(li_text == 1) stolbec = li_tab * 5; IF(li_text == 1) stolbec = li_tab * 5;
IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, bg_color); IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) && (!anchor) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, bg_color);
} }

View File

@ -6,7 +6,7 @@
char *ITEMS_LIST[]={ char *ITEMS_LIST[]={
"View in Tinypad F3", "View in Tinypad F3",
"View in TextEdit F4", "View in TextEdit F4",
"--------------------", //ñäåëàòü îïðåäåëåíèå òàêèõ ëèíèé è ðèñîâàòü èõ "-",
"KOI-8 Ctrl+K", "KOI-8 Ctrl+K",
"UTF Ctrl+U", "UTF Ctrl+U",
0}; 0};
@ -19,38 +19,31 @@ void menu_rmb()
mouse mm; mouse mm;
int items_num, items_cur; int items_num, items_cur;
byte id, key; int id1, key;
SetEventMask(100111b); SetEventMask(100111b);
loop() switch(WaitEvent()) loop() switch(WaitEvent())
{ {
case evMouse: case evMouse:
mm.get(); mm.get();
if (mm.lkm) || (mm.pkm)
if (mm.x>ITEM_WIDTH) || (mm.y>items_num*ITEM_HEIGHT+1) ExitProcess(); GetProcessInfo(#MenuForm, SelfInfo);
id1=GetSlot(MenuForm.ID);
if (id1<>ActiveProcess()) ExitProcess();
id=mm.y/ITEM_HEIGHT; id1=mm.y/ITEM_HEIGHT;
if (id<0) || (id+1>items_num) break; if (id1<0) || (id1+1>items_num) || (mm.x<0) || (mm.x>ITEM_WIDTH) break;
if (items_cur<>id) if (items_cur<>id1)
{ {
items_cur=id; items_cur=id1;
goto _ITEMS_DRAW; goto _ITEMS_DRAW;
} }
break; break;
case evButton: case evButton:
id=GetButtonID(); ItemProcess(GetButtonID());
if (id==1) ExitProcess();
_BUTTON_MARK:
if (id==10) WB1.Scan(52); //View html code
if (id==11) WB1.Scan(53); //View html code
if (id==12) break;
if (id==13) WB1.Scan(11); //KOI
if (id==14) WB1.Scan(21); //UTF
ExitProcess();
break; break;
case evKey: case evKey:
@ -68,9 +61,7 @@ void menu_rmb()
} }
if (key==13) if (key==13)
{ {
id=items_cur+10; ItemProcess(items_cur+10);
//WriteDebug(IntToStr(id));
goto _BUTTON_MARK;
} }
break; break;
@ -82,10 +73,31 @@ void menu_rmb()
_ITEMS_DRAW: _ITEMS_DRAW:
for (i=0; i<items_num; i++;) for (i=0; i<items_num; i++;)
{ {
if (!strcmp(ITEMS_LIST[i],"-"))
{
DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, 0xFFFFFF);
DrawBar(1, i*ITEM_HEIGHT+1+9, ITEM_WIDTH-1, 1, 0x999999);
continue;
}
DefineButton(0, i*ITEM_HEIGHT, ITEM_WIDTH, ITEM_HEIGHT, i+10+BT_HIDE, 0xFFFFFF); DefineButton(0, i*ITEM_HEIGHT, ITEM_WIDTH, ITEM_HEIGHT, i+10+BT_HIDE, 0xFFFFFF);
if (i<>items_cur) EDX=0xFFFFFF; else EDX=0x94AECE; if (i<>items_cur) EDX=0xFFFFFF; else EDX=0x94AECE;
DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, EDX); DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, EDX);
WriteText(8,i*ITEM_HEIGHT+6,0x80,0x000000,ITEMS_LIST[i],0); WriteText(8,i*ITEM_HEIGHT+6,0x80,0x000000,ITEMS_LIST[i],0);
} }
} }
} }
void ItemProcess(int num_id)
{
if (num_id==10) WB1.Scan(52);
if (num_id==11) WB1.Scan(53);
//-----------------------
if (num_id==13) WB1.Scan(11); //KOI
if (num_id==14) WB1.Scan(21); //UTF
ExitProcess();
}

View File

@ -181,7 +181,7 @@ inline fastcall ExitProcess(){
$int 0x40 $int 0x40
} }
inline fastcall KillProcess(dword ECX){ inline fastcall int KillProcess(dword ECX){
$mov eax,18; $mov eax,18;
$mov ebx,18; $mov ebx,18;
$int 0x40 $int 0x40
@ -206,9 +206,11 @@ inline fastcall void DrawTitle(dword ECX)
inline fastcall dword GetSkinWidth() inline fastcall dword GetSkinWidth()
{ {
EAX = 48; $push ebx
EBX = 4; $mov eax,48
$mov ebx,4
$int 0x40 $int 0x40
$pop ebx
} }
inline fastcall void SetSystemSkin(ECX){ inline fastcall void SetSystemSkin(ECX){
@ -373,7 +375,7 @@ void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaC
} }
inline fastcall dword CreateThread(dword ECX,EDX) inline fastcall int CreateThread(dword ECX,EDX)
{ {
EAX = 51; EAX = 51;
EBX = 1; EBX = 1;
@ -493,13 +495,12 @@ void DrawFlatButton(dword x,y,width,height,id,color,text)
PutPixel(px + x, y - py, 0); PutPixel(px + x, y - py, 0);
px = py / r + px; px = py / r + px;
py = -px / r + py; py = -px / r + py;
//Pause(1);
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
inline fastcall dword WriteDebug(dword EDX) inline fastcall void debug(dword EDX)
{ {
$push ebx $push ebx
$push ecx $push ecx