diff --git a/programs/network/htmlv/browser/TWB.h-- b/programs/network/htmlv/browser/TWB.h-- index b727377920..4aceee48e8 100644 --- a/programs/network/htmlv/browser/TWB.h-- +++ b/programs/network/htmlv/browser/TWB.h-- @@ -2,9 +2,7 @@ //Web-component, Leency & Veliant 2007-2009 //lev - //идея - левые файлы открывать соответствующими прогами -//wintodos(buf); -> в парсе хтмл как и все кодировки //ol - циферки int downloader_id; @@ -18,7 +16,7 @@ dword j, char download_path[]="/rd/1/.download"; //char search_path[]="http://nova.rambler.ru/search?words="; char search_path[]="http://nigma.ru/index.php?s="; - char version[]=" Text-based Browser 23.70"; + char version[]=" Text-based Browser 23.71"; struct TWebBrowser { @@ -58,7 +56,7 @@ char line[330], #include "include\unicode_tags.h--" void TWebBrowser::Scan(dword id) { - IF (id > 399) + if (id > 399) { j = 0; FOR(i = 0; i <= id - 401; i++) { @@ -67,6 +65,19 @@ void TWebBrowser::Scan(dword id) { } page_links[j] = 0x00; copystr(#page_links[find_symbol(#page_links, '|')], #URL); + + //Lee 21.02 { + IF (URL[0] == '#') { //мы не умеем переходить по ссылке внутри документа. Пока что... + copystr(#editURL, #URL); + return; + } + URL[find_symbol(#URL, '#')-1] = 0x00; //заглушка, лучше, чем ничего (хабр, например, будет работать) + + GetNewUrl(); + + if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); + //Lee 21.02 } + Load(#URL); Draw_Window(); return; @@ -110,6 +121,7 @@ void TWebBrowser::Scan(dword id) { case GOTOURL: case 0x0D: //enter copystr(#editURL, #URL); + if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); Load(#URL); return; case 173: //ctrl+enter @@ -151,29 +163,6 @@ void TWebBrowser::Scan(dword id) { ParseHTML(buf, filesize); } -//скролл -void TWebBrowser::DrawScroller() { - dword on_y; - DrawBar(left + width - 15, top + 17, 1, height - 34, 0x94AECE); //линия слева от прокрутки - DrawFlatButton(left + width - 15, top + height - 17, 16, 16, ID2, 0xE4DFE1, "\x19"); - DrawFlatButton(left + width - 15, top, 16, 16, ID1, 0xE4DFE1, "\x18"); - - IF(count <= max_kolvo_strok) { - DrawBar(left + width - 14, top + 17, 16, height - 34, 0xCED0D0); - return; - } - - scroll_size = height - 16 * max_kolvo_strok / count - 3; - IF(scroll_size < 10) scroll_size = 10; - IF(za_kadrom + max_kolvo_strok >= count) on_y = height - scroll_size + top - 17; - ELSE on_y = height - 32 * za_kadrom / count + top + 16; - DrawFlatButton(left + width - 15, on_y, 16, scroll_size, 0, 0xE4DFE1, ""); //ползунок - IF(on_y > top + 17) DrawBar(left + width - 14, top + 17, 16, on_y - top - 17, 0xCED0D0); //поле до ползунка - IF(height - scroll_size + top - 17 > on_y) - DrawBar(left + width - 14, on_y + scroll_size + 1, 16, height - scroll_size - on_y + top - 18, 0xCED0D0); //поле после ползунка -} - - void GetNewUrl(){ IF (!strcmp(get_URL_part(2),"./")) copystr(#URL+1,#URL); //IF (!strcmp(get_URL_part(3),"../")) @@ -202,20 +191,8 @@ void HttpLoad() IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]=''; downloader_id = RunProgram("/sys/network/downloader", #URL); IF (downloader_id<0) RunProgram("@notify", "Error running Downloader. Internet unavilable."); - RunProgram("/sys/network/downloader", #URL); } -/* if (!strcmp(get_URL_part(5),"http:"))) - { - IF (DO_LOAD) && (!WindowRePaint) - { - HttpLoad(); - //RETURN; - } - file_size stdcall (#download_path); - } - ELSE file_size stdcall (#URL); -*/ void ReadHtml() { @@ -228,21 +205,15 @@ void ReadHtml() if (!filesize) /*{Pause(200); ReadHtml();}*/ return; //Lee 22.09 mem_Free(buf); buf = mem_Alloc(filesize); - ReadFile(0, filesize, buf, #URL); + if (!strcmp(get_URL_part(5),"http:"))) + ReadFile(0, filesize, buf, #download_path); + else + ReadFile(0, filesize, buf, #URL); } void TWebBrowser::Load(dword adress) { - IF (URL[0] == '#') { //мы не умеем переходить по ссылке внутри документа. Пока что... - copystr(#editURL, #URL); - return; - } - - URL[find_symbol(#URL, '#')-1] = 0x00; //заглушка, лучше, чем ничего (хабр, например, будет работать) - - GetNewUrl(); - max_kolvo_stolbcov = width - 30 / 6; max_kolvo_strok = height - 3 / 10 - 2; copystr(#version, #header); @@ -758,4 +729,27 @@ void TextGoDown(int left1, top1, width1) { ELSE stolbec = 0; IF(li_text == 1) stolbec = li_tab * 5; IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, 0xFFFFFF); +} + + +//скролл +void TWebBrowser::DrawScroller() { + dword on_y; + DrawBar(left + width - 15, top + 17, 1, height - 34, 0x94AECE); //линия слева от прокрутки + DrawFlatButton(left + width - 15, top + height - 17, 16, 16, ID2, 0xE4DFE1, "\x19"); + DrawFlatButton(left + width - 15, top, 16, 16, ID1, 0xE4DFE1, "\x18"); + + IF(count <= max_kolvo_strok) { + DrawBar(left + width - 14, top + 17, 16, height - 34, 0xCED0D0); + return; + } + + scroll_size = height - 16 * max_kolvo_strok / count - 3; + IF(scroll_size < 10) scroll_size = 10; + IF(za_kadrom + max_kolvo_strok >= count) on_y = height - scroll_size + top - 17; + ELSE on_y = height - 32 * za_kadrom / count + top + 16; + DrawFlatButton(left + width - 15, on_y, 16, scroll_size, 0, 0xE4DFE1, ""); //ползунок + IF(on_y > top + 17) DrawBar(left + width - 14, top + 17, 16, on_y - top - 17, 0xCED0D0); //поле до ползунка + IF(height - scroll_size + top - 17 > on_y) + DrawBar(left + width - 14, on_y + scroll_size + 1, 16, height - scroll_size - on_y + top - 18, 0xCED0D0); //поле после ползунка } \ No newline at end of file