/programs/cmm/TWB/TWB.c |
---|
101,8 → 101,8 |
if (style.s) DrawBuf.DrawBar(start_x, list.line_h / 2 - DrawBuf.zoom + start_y, line_length, DrawBuf.zoom, text_colors[text_color_index]); |
if (style.u) DrawBuf.DrawBar(start_x, list.line_h - DrawBuf.zoom - DrawBuf.zoom + start_y, line_length, DrawBuf.zoom, text_colors[text_color_index]); |
if (link) { |
DrawBuf.DrawBar(start_x, list.line_h - DrawBuf.zoom - DrawBuf.zoom + start_y, line_length, DrawBuf.zoom, text_colors[text_color_index]); |
PageLinks.AddText(#line, line_length, list.line_h, UNDERLINE); |
DrawBuf.DrawBar(start_x, list.line_h*style.h + list.line_h - DrawBuf.zoom - DrawBuf.zoom + start_y, line_length, DrawBuf.zoom, text_colors[text_color_index]); |
PageLinks.AddText(#line, line_length, list.line_h*style.h + list.line_h, UNDERLINE); |
} |
stolbec += stolbec_len; |
} |
118,10 → 118,8 |
word bukva[2]; |
int j; |
byte ignor_param; |
char temp[768]; |
dword bufpos = bufpointer; |
dword bufpos; |
int line_len; |
style.b = style.i = style.u = style.s = style.h = style.blq = t_html = t_body = |
style.li = link = ignor_text = text_color_index = text_colors[0] = style.li_tab = 0; |
style.align = ALIGN_LEFT; |
134,23 → 132,21 |
stroka = -list.first; |
stolbec = 0; |
line = 0; |
//for plaint text use CP866 for other UTF |
if (strstri(bufpointer, "html")) |
{ |
style.pre = 0; |
cur_encoding = CH_CP866; |
cur_encoding = CH_UTF8; |
} |
else |
{ |
style.pre = 1; |
cur_encoding = CH_UTF8; |
cur_encoding = CH_CP866; |
} |
for ( ; (bufpointer+bufsize > bufpos) && (ESBYTE[bufpos]!=0); bufpos++;) |
for (bufpos=bufpointer ; (bufpos < bufpointer+bufsize) && (ESBYTE[bufpos]!=0) ; bufpos++;) |
{ |
if (ignor_text) && (ESBYTE[bufpos]!='<') continue; |
bukva = ESBYTE[bufpos]; |
if (ignor_text) && (bukva!='<') continue; |
switch (bukva) |
{ |
case 0x0a: |
157,7 → 153,6 |
if (style.pre) |
{ |
chrcat(#line, ' '); |
bukva = temp = NULL; |
Perenos(); |
break; |
} |
170,7 → 165,6 |
break; |
} |
goto DEFAULT_MARK; |
case '&': // and so on |
bufpos++; |
tag=0; |
212,7 → 206,7 |
Perenos(); |
DrawStyle(); |
line = NULL; |
if (tag) SetStyle(WB1.DrawBuf.zoom * 5 + list.x, stroka * list.line_h + list.y + 5); //îáðàáîòêà òåãîâ |
if (tag) SetStyle(); //îáðàáîòêà òåãîâ |
strcpy(#oldtag, #tag); |
tag = attr = tagparam = ignor_param = NULL; |
break; |
245,9 → 239,9 |
{ |
int perenos_num; |
char new_line_text[4096]; |
if (stolbec + utf8_strlen(#line) < list.column_max) return; |
if (utf8_strlen(#line)*DrawBuf.zoom + stolbec < list.column_max) return; |
perenos_num = strrchr(#line, ' '); |
if (!perenos_num) && (utf8_strlen(#line)>list.column_max) perenos_num=list.column_max; |
if (!perenos_num) && (utf8_strlen(#line)*DrawBuf.zoom>list.column_max) perenos_num=list.column_max/DrawBuf.zoom; |
strcpy(#new_line_text, #line + perenos_num); |
line[perenos_num] = 0x00; |
DrawStyle(); |
255,8 → 249,9 |
NewLine(); |
} |
//============================================================================================ |
void TWebBrowser::SetStyle(int left1, top1) { |
dword hr_color; |
void TWebBrowser::SetStyle() { |
int left1 = 5 + list.x; |
int top1 = stroka * list.line_h + list.y + 5; |
byte opened; |
byte meta_encoding; |
//ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ |
266,7 → 261,6 |
strcpy(#tag, #tag+1); |
} |
else opened = 1; |
if (istag("html")) { |
t_html = opened; |
return; |
394,15 → 388,14 |
if (opened) NewLine(); |
return; |
} |
if (istag("li")) || (istag("dt")) //íàäî ñäåëàòü âëîæåííûå ñïèñêè |
if (istag("li")) || (istag("dt")) |
{ |
style.li = opened; |
if (opened) |
{ |
NewLine(); |
if (stroka > -1) && (stroka - 2 < list.visible) |
DrawBuf.DrawBar(style.li_tab * 5 * list.font_w * DrawBuf.zoom + list.x, list.line_h |
/ 2 - DrawBuf.zoom - DrawBuf.zoom, DrawBuf.zoom*2, DrawBuf.zoom*2, 0x555555); |
DrawBuf.DrawBar(style.li_tab * 5 * list.font_w * DrawBuf.zoom + list.x, stroka +1 * list.line_h - 3 |
- DrawBuf.zoom - DrawBuf.zoom, DrawBuf.zoom*2, DrawBuf.zoom*2, 0x454545); |
} |
return; |
} |
416,15 → 409,13 |
else style.li_tab++; |
} |
if (istag("hr")) { |
if (anchor) || (stroka < -1) |
{ |
stroka+=2; |
return; |
} |
if (strcmp(#attr, "color=") == 0) hr_color = GetColor(#val); else hr_color = 0x999999; |
if (isattr("color=")) EDI = GetColor(#val); else EDI = 0x999999; |
$push edi; |
NewLine(); |
DrawBuf.DrawBar(5, list.line_h/2, list.w-10, 1, hr_color); |
$pop edi; |
DrawBuf.DrawBar(5, list.line_h*stroka+4, list.w-10, 1, EDI); |
NewLine(); |
return; |
} |
if (istag("meta")) || (istag("?xml")) { |
do{ |
/programs/cmm/TWB/links.h |
---|
18,6 → 18,7 |
void Hover(); |
void AddLink(); |
void AddText(); |
void ClickLink(); |
dword GetURL(); |
void Clear(); |
void GetAbsoluteURL(); |
68,15 → 69,17 |
void LinksArray::Hover(dword mx, my, link_col_in, link_col_a, bg_col) |
{ |
int i; |
signed int WBY = -WB1.list.first*WB1.list.line_h + WB1.list.line_h - WB1.DrawBuf.zoom; |
signed int WBY = -WB1.list.first*WB1.list.line_h - WB1.DrawBuf.zoom; |
for (i=0; i<count; i++) |
{ |
if (mx>links[i].x) && (my>links[i].y) && (mx<links[i].x+links[i].w) && (my<links[i].y+links[i].h) |
{ |
if (mouse.down) DrawRectangle(links[active].x, links[active].y, links[active].w, links[active].h, 0); |
if (mouse.up) ClickLink(); |
if (active==i) return; |
CursorPointer.Set(); |
if (links[active].underline) DrawBar(links[active].x, WBY + links[active].y,links[active].w, WB1.DrawBuf.zoom, link_col_in); |
if (links[i].underline) DrawBar(links[i].x, WBY + links[i].y,links[i].w, WB1.DrawBuf.zoom, bg_col); |
if (links[active].underline) DrawBar(links[active].x, WBY + links[active].y + links[active].h,links[active].w, WB1.DrawBuf.zoom, link_col_in); |
if (links[i].underline) DrawBar(links[i].x, WBY + links[i].y + links[i].h,links[i].w, WB1.DrawBuf.zoom, bg_col); |
active = i; |
status_text.start_x = wv_progress_bar.left + wv_progress_bar.width + 10; |
status_text.start_y = Form.cheight - STATUSBAR_H + 3; |
91,7 → 94,7 |
if (active!=-1) |
{ |
CursorPointer.Restore(); |
if (links[active].underline) DrawBar(links[active].x, WBY + links[active].y,links[active].w, WB1.DrawBuf.zoom, link_col_in); |
if (links[active].underline) DrawBar(links[active].x, WBY + links[active].y + links[active].h,links[active].w, WB1.DrawBuf.zoom, link_col_in); |
DrawBar(status_text.start_x, status_text.start_y, status_text.area_size_x, 9, col_bg); |
active = -1; |
} |
161,3 → 164,54 |
strcpy(orig_URL, #newurl); |
} |
void LinksArray::ClickLink() |
{ |
if (http_transfer > 0) |
{ |
StopLoading(); |
BrowserHistory.current--; |
} |
strcpy(#URL, PageLinks.GetURL(PageLinks.active)); |
//#1 |
if (URL[0] == '#') |
{ |
strcpy(#anchor, #URL+strrchr(#URL, '#')); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
WB1.list.first=WB1.list.count-WB1.list.visible; |
ShowPage(); |
return; |
} |
//liner.ru#1 |
if (strrchr(#URL, '#')!=-1) |
{ |
strcpy(#anchor, #URL+strrchr(#URL, '#')); |
URL[strrchr(#URL, '#')-1] = 0x00; |
} |
PageLinks.GetAbsoluteURL(#URL); |
if (UrlExtIs(".png")==1) || (UrlExtIs(".gif")==1) || (UrlExtIs(".jpg")==1) || (UrlExtIs(".zip")==1) || (UrlExtIs(".kex")==1) |
|| (UrlExtIs(".7z")==1) || (UrlExtIs("netcfg")==1) |
{ |
//notify(#URL); |
if (!strncmp(#URL,"http://", 7)) |
{ |
strcpy(#DL_URL, #URL); |
CreateThread(#Downloader,#downloader_stak+4092); |
} |
else RunProgram("@open", #URL); |
strcpy(#editURL, BrowserHistory.CurrentUrl()); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
return; |
} |
if (!strncmp(#URL,"mailto:", 7)) |
{ |
notify(#URL); |
strcpy(#editURL, BrowserHistory.CurrentUrl()); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
return; |
} |
OpenPage(); |
return; |
} |
/programs/cmm/browser/WebView.c |
---|
13,7 → 13,6 |
#include "..\lib\draw_buf.h" |
#include "..\lib\list_box.h" |
#include "..\lib\cursor.h" |
//*.obj libraries |
#include "..\lib\obj\box_lib.h" |
#include "..\lib\obj\libio_lib.h" |
20,7 → 19,6 |
#include "..\lib\obj\libimg_lib.h" |
#include "..\lib\obj\http.h" |
#include "..\lib\obj\iconv.h" |
//useful patterns |
#include "..\lib\patterns\libimg_load_skin.h" |
27,7 → 25,7 |
char homepage[] = FROM "html\\homepage.htm"; |
#ifdef LANG_RUS |
char version[]=" ¥ªáâ®¢ë© ¡à 㧥à 1.35"; |
char version[]=" ¥ªáâ®¢ë© ¡à 㧥à 1.38"; |
?define IMAGES_CACHE_CLEARED "íè ª à⨮ª ®ç¨é¥" |
?define T_LAST_SLIDE "â® ¯®á«¥¤¨© á« ©¤" |
char loading[] = " £à㧪 áâà ¨æë...<br>"; |
34,7 → 32,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.35"; |
char version[]=" Text-based Browser 1.38"; |
?define IMAGES_CACHE_CLEARED "Images cache cleared" |
?define T_LAST_SLIDE "This slide is the last" |
char loading[] = "Loading...<br>"; |
42,14 → 40,14 |
char accept_language[]= "Accept-Language: en\n"; |
#endif |
#define URL_SERVICE_HISTORY "WebView://history" |
#define URL_SERVICE_HOME "WebView://home" |
#define URL_SERVICE_SOURCE "WebView://source:" |
proc_info Form; |
#define WIN_W 799 |
#define WIN_H 559 |
//char search_path[]="http://nigma.ru/index.php?s="; |
char str_location[]="location\0"; |
int redirected = 0; |
char stak[4096]; |
95,13 → 93,7 |
int mouse_twb; |
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; |
void main() |
{ |
dword btn; |
134,13 → 126,7 |
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) |
{ |
DrawRectangle(PageLinks.links[PageLinks.active].x, PageLinks.links[PageLinks.active].y, |
PageLinks.links[PageLinks.active].w, PageLinks.links[PageLinks.active].h, 0); |
ClickLink(); |
} |
} |
//Drag scroller |
scroll_wv.all_redraw = 0; |
if (!mouse.lkm) scroll_used=0; |
180,7 → 166,7 |
case evReDraw: |
if (action_buf) Scan(action_buf); |
DefineAndDrawWindow(GetScreenWidth()-WIN_W/2,GetScreenHeight()-WIN_H/2,WIN_W,WIN_H,0x73,col_bg,0,0); |
DefineAndDrawWindow(GetScreenWidth()-800/2,GetScreenHeight()-600/2,800,600,0x73,col_bg,0,0); |
GetProcessInfo(#Form, SelfInfo); |
if (Form.status_window>2) { DrawTitle(#header); break; } |
if (Form.height<120) MoveSize(OLD,OLD,OLD,120); |
208,7 → 194,7 |
redirected++; |
if (redirected<=5) |
{ |
http_find_header_field stdcall (http_transfer, #str_location); |
http_find_header_field stdcall (http_transfer, "location\0"); |
if (EAX!=0) { |
ESI = EAX; |
EDI = #URL; |
267,7 → 253,7 |
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; |
if (WB1.list.w!=WB1.DrawBuf.bufw) 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 * 30); |
} |
void Draw_Window() |
352,7 → 338,7 |
case VIEW_SOURCE: |
WB1.list.first = 0; |
ShowSource(); |
WB1.DrawPage(); |
WB1.LoadInternalPage(bufpointer, bufsize); |
break; |
case EDIT_SOURCE: |
if (!strncmp(#URL,"http:",5)) |
390,59 → 376,6 |
} |
void ClickLink() |
{ |
if (http_transfer > 0) |
{ |
StopLoading(); |
BrowserHistory.current--; |
} |
strcpy(#URL, PageLinks.GetURL(PageLinks.active)); |
//#1 |
if (URL[0] == '#') |
{ |
strcpy(#anchor, #URL+strrchr(#URL, '#')); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
WB1.list.first=WB1.list.count-WB1.list.visible; |
ShowPage(); |
return; |
} |
//liner.ru#1 |
if (strrchr(#URL, '#')!=-1) |
{ |
strcpy(#anchor, #URL+strrchr(#URL, '#')); |
URL[strrchr(#URL, '#')-1] = 0x00; |
} |
PageLinks.GetAbsoluteURL(#URL); |
if (UrlExtIs(".png")==1) || (UrlExtIs(".gif")==1) || (UrlExtIs(".jpg")==1) || (UrlExtIs(".zip")==1) || (UrlExtIs(".kex")==1) |
|| (UrlExtIs(".7z")==1) || (UrlExtIs("netcfg")==1) |
{ |
//notify(#URL); |
if (!strncmp(#URL,"http://", 7)) |
{ |
strcpy(#DL_URL, #URL); |
CreateThread(#Downloader,#downloader_stak+4092); |
} |
else RunProgram("@open", #URL); |
strcpy(#editURL, BrowserHistory.CurrentUrl()); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
return; |
} |
if (!strncmp(#URL,"mailto:", 7)) |
{ |
notify(#URL); |
strcpy(#editURL, BrowserHistory.CurrentUrl()); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
return; |
} |
OpenPage(); |
return; |
} |
void StopLoading() |
{ |
if (http_transfer) |
531,20 → 464,15 |
DrawEditBox(); |
if (!bufsize) |
{ |
PageLinks.Clear(); |
if (http_transfer) |
{ |
WB1.LoadInternalPage(#loading, sizeof(loading)); |
if (http_transfer) WB1.LoadInternalPage(#loading, sizeof(loading)); |
else WB1.LoadInternalPage(#page_not_found, sizeof(page_not_found)); |
} |
else |
WB1.LoadInternalPage(#page_not_found, sizeof(page_not_found)); |
} |
else |
{ |
WB1.Prepare(); |
} |
if (!header) strcpy(#header, #version); |
//if (!header) strcpy(#header, #version); |
if (!strcmp(#version, #header)) DrawTitle(#header); |
} |
/programs/cmm/browser/show_src.h |
---|
10,8 → 10,8 |
souce_mode = true; |
new_buf = malloc(bufsize*5); |
new_buf_start = new_buf; |
if (strlen(#header)-strlen(#version)>0) header[strlen(#header)-strlen(#version)-2] = 0; else strcpy(#header, "Source"); |
new_buf += sprintf(new_buf,"<html><head><title>%s</title><body><pre>",#header); |
header[strrchr(#header, '-')-2]=0; |
new_buf += sprintf(new_buf,"<html><head><title>Source: %s</title><body><pre>",#header); |
for (i=bufpointer; i<bufpointer+bufsize; i++) |
{ |
ww = ESBYTE[i]; |
/programs/cmm/browser/wv_skin.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/cmm/lib/patterns/libimg_load_skin.h |
---|
5,9 → 5,9 |
#include "../lib/obj/libimg_lib.h" |
#endif |
struct libimg_image { |
:struct libimg_image { |
dword image, w, h; |
}; |
} skin; |
:void Libimg_LoadImage(dword struct_pointer, file_path) |
{ |