9,10 → 9,7 |
|
//libraries |
#define MEMSIZE 0x100000 |
#include "..\lib\strings.h" |
#include "..\lib\gui.h" |
#include "..\lib\file_system.h" |
#include "..\lib\mem.h" |
#include "..\lib\draw_buf.h" |
#include "..\lib\list_box.h" |
#include "..\lib\cursor.h" |
30,7 → 27,7 |
char homepage[] = FROM "html\\homepage.htm"; |
|
#ifdef LANG_RUS |
char version[]=" ¥ªáâ®¢ë© ¡à 㧥à 1.31 UNSTABLE"; |
char version[]=" ¥ªáâ®¢ë© ¡à 㧥à 1.35"; |
?define IMAGES_CACHE_CLEARED "íè ª à⨮ª ®ç¨é¥" |
?define T_LAST_SLIDE "â® ¯®á«¥¤¨© á« ©¤" |
char loading[] = " £à㧪 áâà ¨æë...<br>"; |
37,7 → 34,7 |
char page_not_found[] = FROM "html\page_not_found_ru.htm"; |
char accept_language[]= "Accept-Language: ru\n"; |
#else |
char version[]=" Text-based Browser 1.31 UNSTABLE"; |
char version[]=" Text-based Browser 1.35"; |
?define IMAGES_CACHE_CLEARED "Images cache cleared" |
?define T_LAST_SLIDE "This slide is the last" |
char loading[] = "Loading...<br>"; |
51,7 → 48,7 |
#define WIN_W 799 |
#define WIN_H 559 |
|
char search_path[]="http://nigma.ru/index.php?s="; |
//char search_path[]="http://nigma.ru/index.php?s="; |
char str_location[]="location\0"; |
int redirected = 0; |
|
62,9 → 59,7 |
dword http_transfer = 0; |
dword http_buffer; |
|
dword TAB_H = false; //19; |
dword TAB_W = 150; |
dword TOOLBAR_H = 31; //50; |
dword TOOLBAR_H = 33; |
dword STATUSBAR_H = 15; |
dword col_bg; |
dword panel_color; |
98,44 → 93,20 |
|
char editURL[sizeof(URL)]; |
int mouse_twb; |
edit_box address_box = {250,55,34,0xffffff,0x94AECE,0xffffff,0xffffff,0,sizeof(URL),#editURL,#mouse_twb,2,19,19}; |
edit_box address_box = {250,56,34,0xffffff,0x94AECE,0xffffff,0xffffff,0,sizeof(URL),#editURL,#mouse_twb,2,19,19}; |
|
#define URL_SERVICE_HISTORY "WebView://history" |
#define URL_SERVICE_HOME "WebView://home" |
#define URL_SERVICE_SOURCE "WebView://source:" |
|
|
libimg_image skin; |
|
int SetSkinColors() |
{ |
dword image_data; |
image_data = DSDWORD[skin.image+24]; |
col_bg = DSDWORD[image_data]; |
panel_color = DSDWORD[skin.w*4*4 + image_data]; |
border_color = DSDWORD[skin.w*4*7 + image_data]; |
wv_progress_bar.progress_color = DSDWORD[skin.w*4*10 + image_data]; |
$and col_bg, 0x00ffffff |
$and panel_color, 0x00ffffff |
$and border_color, 0x00ffffff |
$and wv_progress_bar.progress_color, 0x00ffffff |
} |
|
void DrawProgress() |
{ |
unsigned long btn; |
if (http_transfer == 0) return; |
if (wv_progress_bar.max) btn = address_box.width*wv_progress_bar.value/wv_progress_bar.max; else btn = 30; |
DrawBar(address_box.left-1, address_box.top+15, btn, 2, wv_progress_bar.progress_color); |
} |
|
|
void main() |
{ |
dword btn; |
int half_scroll_size; |
int scroll_used=0, show_menu; |
|
CursorPointer.Load(#CursorFile); |
load_dll(boxlib, #box_lib_init,0); |
load_dll(libio, #libio_init,1); |
145,17 → 116,10 |
//load_dll(kmenu, #akmenu_init,0); |
Libimg_LoadImage(#skin, abspath("wv_skin.png")); |
SetSkinColors(); |
|
CreateDir("/tmp0/1/downloads"); |
if (param) strcpy(#URL, #param); else strcpy(#URL, URL_SERVICE_HOME); |
WB1.DrawBuf.zoom = 1; |
WB1.list.SetFont(8, 14, 10111000b); |
Form.width=WIN_W; |
Form.height=WIN_H; |
SetElementSizes(); |
if (param) strcpy(#URL, #param); else strcpy(#URL, URL_SERVICE_HOME); |
OpenPage(); |
|
CreateDir("/tmp0/1/downloads"); |
|
SetEventMask(0xa7); |
BEGIN_LOOP_APPLICATION: |
WaitEventTimeout(2); |
163,34 → 127,26 |
{ |
CASE evMouse: |
if (!CheckActiveProcess(Form.ID)) break; |
//Edit URL |
edit_box_mouse stdcall (#address_box); |
mouse.get(); |
//Links hover |
if (mouse.y>WB1.list.y) PageLinks.Hover(mouse.x, mouse.y, link_color_inactive, link_color_active, bg_color); |
//Menu |
if (mouse.y>WB1.list.y) && (mouse.y<Form.height) && (bufsize) |
if (WB1.list.MouseOver(mouse.x, mouse.y)) |
{ |
if (mouse.pkm) && (mouse.up) |
PageLinks.Hover(mouse.x, WB1.list.first*WB1.list.line_h + mouse.y, link_color_inactive, link_color_active, bg_color); |
if (bufsize) && (mouse.pkm) && (mouse.up) { CreateThread(#menu_rmb,#stak+4092); break; } |
if (WB1.list.MouseScroll(mouse.vert)) WB1.DrawPage(); |
if (mouse.down) && (PageLinks.active>=0) |
{ |
CreateThread(#menu_rmb,#stak+4092); |
break; |
DrawRectangle(PageLinks.links[PageLinks.active].x, PageLinks.links[PageLinks.active].y, |
PageLinks.links[PageLinks.active].w, PageLinks.links[PageLinks.active].h, 0); |
ClickLink(); |
} |
} |
//Mouse scroll |
if (mouse.vert) |
{ |
if (WB1.list.MouseScroll(mouse.vert)) WB1.DrawPage(); |
} |
//Drag scroller |
scroll_wv.all_redraw = 0; |
if (!mouse.lkm) scroll_used=0; |
if (mouse.x>=scroll_wv.start_x) && (mouse.x<=scroll_wv.start_x+scroll_wv.size_x) |
&& (mouse.y>=scroll_wv.start_y+scroll_wv.btn_height) && (-scroll_wv.btn_height+scroll_wv.start_y+scroll_wv.size_y>mouse.y) |
&& (WB1.list.count>WB1.list.visible) && (mouse.lkm) |
{ |
scroll_used=1; |
} |
&& (WB1.list.count>WB1.list.visible) && (mouse.lkm) scroll_used=1; |
if (scroll_used) |
{ |
mouse.y = mouse.y + 5; |
265,7 → 221,9 |
} |
else |
{ |
//TODO: display error (too many redirects) |
notify("Too many redirects"); |
StopLoading(); |
break; |
} |
} |
else |
292,7 → 250,7 |
http_free stdcall (http_transfer); |
http_transfer=0; |
SetPageDefaults(); |
Draw_Window(); // stop button => refresh button |
ShowPage(); |
} |
} |
} |
302,7 → 260,7 |
|
void SetElementSizes() |
{ |
address_box.top = TOOLBAR_H-TAB_H/2-7+TAB_H; |
address_box.top = TOOLBAR_H/2-7; |
address_box.width = Form.cwidth - address_box.left - 25 - 22; |
WB1.list.SetSizes(0, TOOLBAR_H, Form.width - 10 - scroll_wv.size_x / WB1.DrawBuf.zoom, |
Form.cheight - TOOLBAR_H - STATUSBAR_H, WB1.list.font_h + WB1.DrawBuf.zoom + WB1.DrawBuf.zoom * WB1.DrawBuf.zoom); |
309,47 → 267,25 |
WB1.list.wheel_size = 7; |
WB1.list.column_max = WB1.list.w - scroll_wv.size_x / WB1.list.font_w; |
WB1.list.visible = WB1.list.h - 5 / WB1.list.line_h; |
WB1.DrawBuf.Init(WB1.list.x, WB1.list.y, WB1.list.w, WB1.list.h * 20); |
if (WB1.list.w!=WB1.DrawBuf.bufw) WB1.DrawBuf.Init(WB1.list.x, WB1.list.y, WB1.list.w, WB1.list.h * 20); |
} |
|
void Draw_Window() |
{ |
int img_off; |
// tab { |
/* |
if (TAB_H) |
{ |
DrawBar(0, 0, TAB_W, TAB_H+1, panel_color); |
WriteText(5, 7, 0x80, 0xfdfdFd, "Index.htm"); |
WriteText(4, 6, 0x80, 0, "Index.htm"); |
DrawBar(TAB_W,0, Form.cwidth-TAB_W,TAB_H, col_bg); |
DrawBar(TAB_W-1,TAB_H, Form.cwidth-TAB_W+1,1, border_color); |
img_draw stdcall(skin.image, TAB_W-13, 0, 30, skin.h, 101, 0); |
} |
else */ DrawBar(0,0, Form.cwidth,1, col_bg); |
// } |
DrawBar(0,TAB_H+1, Form.cwidth,TOOLBAR_H-TAB_H-3, panel_color); |
DrawBar(0,0, Form.cwidth,TOOLBAR_H-2, panel_color); |
DrawBar(0,TOOLBAR_H-2, Form.cwidth,1, 0xD7D0D3); |
DrawBar(0,TOOLBAR_H-1, Form.cwidth,1, border_color); |
SetElementSizes(); |
DrawRectangle(address_box.left-2, address_box.top-3, address_box.width+4, 20,border_color); |
DrawRectangle(address_box.left-1, address_box.top-2, address_box.width+2, 18,address_box.color); |
DrawRectangle(address_box.left-1, address_box.top-1, address_box.width+2, 16,address_box.color); |
// < / > |
DefineButton(address_box.left-49, address_box.top-2, 23, skin.h-2, BACK_BUTTON+BT_HIDE, 0); |
DefineButton(address_box.left-25, address_box.top-2, 23, skin.h-2, FORWARD_BUTTON+BT_HIDE, 0); |
img_draw stdcall(skin.image, address_box.left-50, address_box.top-3, 48, skin.h, 3, 0); |
// refresh_BUTTON |
DrawRectangle(address_box.left-3, address_box.top-3, address_box.width+5, 20,border_color); |
DefineButton(address_box.left-50, address_box.top-2, 23, skin.h-2, BACK_BUTTON+BT_HIDE, 0); |
DefineButton(address_box.left-26, address_box.top-2, 23, skin.h-2, FORWARD_BUTTON+BT_HIDE, 0); |
img_draw stdcall(skin.image, address_box.left-51, address_box.top-3, 48, skin.h, 3, 0); |
DefineButton(address_box.left+address_box.width+1, address_box.top-3, 16, skin.h-1, REFRESH_BUTTON+BT_HIDE+BT_NOFRAME, 0); |
if (http_transfer > 0) img_off = 131; else img_off = 52; |
img_draw stdcall(skin.image, address_box.left+address_box.width+1, address_box.top-3, 17, skin.h, img_off, 0); |
// config |
DefineButton(Form.cwidth-24, address_box.top-3, 19, skin.h-1, SANDWICH_BUTTON+BT_HIDE, 0); |
img_draw stdcall(skin.image, Form.cwidth-22, address_box.top-3, 16, skin.h, 85, 0); |
//status bar |
DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,STATUSBAR_H, col_bg); |
DrawBar(0,Form.cheight - STATUSBAR_H, Form.cwidth,1, border_color); |
ShowPage(); |
if (!header) OpenPage(); else { WB1.DrawPage(); DrawEditBox(); } |
DrawRectangle(scroll_wv.start_x, scroll_wv.start_y, scroll_wv.size_x, scroll_wv.size_y-1, scroll_wv.bckg_col); |
DrawProgress(); |
} |
358,11 → 294,6 |
void Scan(dword id__) |
{ |
action_buf=0; |
if (id__ >= 400) && (id__ < 1000) |
{ |
ProcessLinks(id__); |
return; |
} |
switch (id__) |
{ |
case SCAN_CODE_BS: |
370,12 → 301,10 |
if (!BrowserHistory.GoBack()) return; |
OpenPage(); |
return; |
|
case FORWARD_BUTTON: |
if (!BrowserHistory.GoForward()) return; |
OpenPage(); |
return; |
|
case SCAN_CODE_HOME: |
case SCAN_CODE_END: |
case SCAN_CODE_PGUP: |
382,29 → 311,29 |
case SCAN_CODE_PGDN: |
if (WB1.list.ProcessKey(key_scancode)) WB1.DrawPage(); |
return; |
|
case SCAN_CODE_UP: |
if (WB1.list.first <= 0) return; |
WB1.list.first--; |
WB1.DrawPage(); |
return; |
|
case SCAN_CODE_DOWN: |
if (WB1.list.visible + WB1.list.first >= WB1.list.count) return; |
WB1.list.first++; |
WB1.DrawPage(); |
return; |
|
case GOTOURL_BUTTON: |
case SCAN_CODE_ENTER: //enter |
if (!editURL[0]) return; |
if (strncmp(#editURL,"http:",5)) && (editURL[0]!='/') && (strncmp(#editURL,"WebView:",9)) strncpy(#URL,"http://",7); |
case SCAN_CODE_ENTER: |
if (!strncmp(#editURL,"http:",5)) || (editURL[0]=='/') || (!strncmp(#editURL,"WebView:",9)) |
{ |
strcpy(#URL, #editURL); |
} |
else |
URL[0] = 0; |
{ |
strncpy(#URL,"http://",7); |
strcat(#URL, #editURL); |
} |
OpenPage(); |
return; |
|
case 063: //F5 |
IF(address_box.flags & 0b10) return; |
case REFRESH_BUTTON: |
415,19 → 344,16 |
} |
else OpenPage(); |
return; |
|
case SANDWICH_BUTTON: |
mouse.y = TOOLBAR_H-6; |
mouse.x = Form.cwidth - 167; |
CreateThread(#menu_rmb,#stak+4092); |
return; |
|
case VIEW_SOURCE: |
WB1.list.first = 0; |
ShowSource(); |
WB1.DrawPage(); |
break; |
|
case EDIT_SOURCE: |
if (!strncmp(#URL,"http:",5)) |
{ |
436,42 → 362,36 |
} |
else RunProgram("/rd/1/tinypad", #URL); |
return; |
|
case FREE_IMG_CACHE: |
ImgCache.Free(); |
notify(IMAGES_CACHE_CLEARED); |
WB1.DrawPage(); |
return; |
|
case VIEW_HISTORY: |
strcpy(#URL, URL_SERVICE_HISTORY); |
OpenPage(); |
return; |
|
case DOWNLOAD_MANAGER: |
if (!downloader_opened) { |
strncpy(#DL_URL, "http://",7); |
CreateThread(#Downloader,#downloader_stak+4092); |
} |
return; |
/* |
return; /* |
case 020: |
case NEWTAB: |
MoveSize(190,80,OLD,OLD); |
RunProgram(#program_path, #URL); |
return; |
|
case SEARCHWEB_BUTTON: |
sprintf(#URL,"%s%s",#search_path,#editURL); |
OpenPage(); |
return; |
*/ |
return; */ |
} |
} |
|
|
|
void ProcessLinks(int id) |
void ClickLink() |
{ |
if (http_transfer > 0) |
{ |
479,7 → 399,7 |
BrowserHistory.current--; |
} |
|
strcpy(#URL, PageLinks.GetURL(id-401)); |
strcpy(#URL, PageLinks.GetURL(PageLinks.active)); |
//#1 |
if (URL[0] == '#') |
{ |
563,6 → 483,7 |
SetPageDefaults(); |
if (!strcmp(#URL, URL_SERVICE_HOME)) WB1.LoadInternalPage(#homepage, sizeof(homepage)); |
else if (!strcmp(#URL, URL_SERVICE_HISTORY)) ShowHistory(); |
DrawEditBox(); |
return; |
} |
if (!strncmp(#URL,"http:",5)) |
596,9 → 517,12 |
|
DrawEditBox() |
{ |
DrawWideRectangle(address_box.left-2, address_box.top-2, address_box.width+3, 19, 2, address_box.color); |
address_box.size = address_box.pos = address_box.shift = address_box.shift_old = strlen(#editURL); |
address_box.offset = 0; |
edit_box_draw stdcall(#address_box); |
if (http_transfer > 0) EAX = 131; else EAX = 52; |
img_draw stdcall(skin.image, address_box.left+address_box.width+1, address_box.top-3, 17, skin.h, EAX, 0); |
} |
|
|
630,7 → 554,28 |
return false; |
} |
|
int SetSkinColors() |
{ |
dword image_data; |
image_data = DSDWORD[skin.image+24]; |
col_bg = DSDWORD[image_data]; |
panel_color = DSDWORD[skin.w*4*4 + image_data]; |
border_color = DSDWORD[skin.w*4*7 + image_data]; |
wv_progress_bar.progress_color = DSDWORD[skin.w*4*10 + image_data]; |
$and col_bg, 0x00ffffff |
$and panel_color, 0x00ffffff |
$and border_color, 0x00ffffff |
$and wv_progress_bar.progress_color, 0x00ffffff |
} |
|
void DrawProgress() |
{ |
unsigned long btn; |
if (http_transfer == 0) return; |
if (wv_progress_bar.max) btn = address_box.width*wv_progress_bar.value/wv_progress_bar.max; else btn = 30; |
DrawBar(address_box.left-2, address_box.top+15, btn, 2, wv_progress_bar.progress_color); |
} |
|
|
char downloader_stak[4096]; |
stop: |