From 823a0a9a8fb23647a2523e47e504e023c8c7bbe7 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Mon, 27 Feb 2012 13:48:04 +0000 Subject: [PATCH] HTMLv 0.75: new futures and bags. git-svn-id: svn://kolibrios.org@2413 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/network/htmlv/browser/HTMLv.c-- | 37 ++++---- programs/network/htmlv/browser/History.txt | 9 +- programs/network/htmlv/browser/ReadMe.txt | 21 ++--- .../network/htmlv/browser/{TWB.h-- => TWB.h} | 88 ++++++++++++------- programs/network/htmlv/browser/compile.bat | 2 +- .../{toolbar_icons.c-- => toolbar_icons.c} | 0 .../browser/include/{colors.h-- => colors.h} | 0 .../network/htmlv/browser/include/fps.h-- | 51 ----------- .../include/{history.h-- => history.h} | 7 +- .../include/{some_code.h-- => some_code.h} | 12 +++ .../{unicode_tags.h-- => unicode_tags.h} | 0 11 files changed, 105 insertions(+), 122 deletions(-) rename programs/network/htmlv/browser/{TWB.h-- => TWB.h} (90%) rename programs/network/htmlv/browser/img/{toolbar_icons.c-- => toolbar_icons.c} (100%) rename programs/network/htmlv/browser/include/{colors.h-- => colors.h} (100%) delete mode 100644 programs/network/htmlv/browser/include/fps.h-- rename programs/network/htmlv/browser/include/{history.h-- => history.h} (90%) rename programs/network/htmlv/browser/include/{some_code.h-- => some_code.h} (79%) rename programs/network/htmlv/browser/include/{unicode_tags.h-- => unicode_tags.h} (100%) diff --git a/programs/network/htmlv/browser/HTMLv.c-- b/programs/network/htmlv/browser/HTMLv.c-- index a7f5bb3c84..5eb223cf3a 100644 --- a/programs/network/htmlv/browser/HTMLv.c-- +++ b/programs/network/htmlv/browser/HTMLv.c-- @@ -2,17 +2,16 @@ //Copyright 2007-2009 by Veliant & Leency //Asper, Lrz, Nable, lev. -#include "../lib/kolibri.h--" -#include "../lib/file_system.h--" -#include "include/some_code.h--" -#include "img/toolbar_icons.c--" -#include "img/URLgoto.txt"; +#include "..\lib\kolibri.h--" +#include "..\lib\file_system.h--" +#include "img\toolbar_icons.c" +#include "img\URLgoto.txt"; //Asper -#include "../lib/mem.h--" -#include "../lib/libio_lib.h--" -#include "../lib/libimg_lib.h--" -#include "../lib/edit_box_lib.h--" -#include "../lib/dll.h--" +#include "..\lib\mem.h--" +#include "..\lib\libio_lib.h--" +#include "..\lib\libimg_lib.h--" +#include "..\lib\edit_box_lib.h--" +#include "..\lib\dll.h--" //переменные char URL[4096]="/sys/index.htm", @@ -30,12 +29,12 @@ int za_kadrom, edit_box edit1= {250,207,16,0xffffff,0x94AECE,0xffffff,0xffffff,0,248,#editURL,#mouse_dd,2,19,19}; - -#include "TWB.h--" - proc_info Form; +#include "TWB.h" + + void main() { mouse m; @@ -91,10 +90,14 @@ void main() IF (btn<>za_kadrom) WB1.ParseHTML(buf, filesize); //чтоб лишний раз не перерисовывать m.get(); } - BREAK; + break; case evButton: btn=GetButtonID(); - IF (btn==1) ExitProcess(); + IF (btn==1) + { + KillProcess(downloader_id); + ExitProcess(); + } ELSE { WB1.Scan(btn); @@ -117,9 +120,7 @@ void main() void Draw_Window() { - WindowRedrawStatus(1); DefineAndDrawWindow(215,100,640,480,0x73,0x00E4DFE1,0,0,0); - WindowRedrawStatus(2); GetProcessInfo(#Form, SelfInfo); IF (Form.height==GetSkinWidth()+3) //если свернуто в заголовок, ничего не рисуем @@ -131,6 +132,8 @@ void Draw_Window() IF (Form.width<280) MoveSize(OLD,OLD,280,OLD); PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal); + if (GetProcessSlot(downloader_id)<>0) PutImage(#stop_btn,24,24,88,10); + DrawBar(200,0,onLeft(200,9),43,0xE4DFE1); //закрашиваем фон под тулбаром DrawBar(0,42,onLeft(5,4),1,0xE2DBDC); //выпуклость DrawBar(0,43,onLeft(5,4),1,0xD2CED0); //выпуклость diff --git a/programs/network/htmlv/browser/History.txt b/programs/network/htmlv/browser/History.txt index 10843f5178..b5481248af 100644 --- a/programs/network/htmlv/browser/History.txt +++ b/programs/network/htmlv/browser/History.txt @@ -1,4 +1,11 @@ -24.02.12 -- v0.72 -- 11.? Кб +27.02.12 -- v0.75 -- 11.? Кб +- при закрытии HTMLv, downloader тоже завершается; +- невозможно запустить больше одного downloader'a; +- отображение процесса загрузки страницы из Интернета через кнопочку "остановить", надпись "Loading...", возможность прервать процесс; +- обновление страницы из Интернета приводит к её повторной загрузке. + + +24.02.12 -- v0.71 -- 11.? Кб - просто починил эти самые интернеты. diff --git a/programs/network/htmlv/browser/ReadMe.txt b/programs/network/htmlv/browser/ReadMe.txt index 3f7850fe9e..f1d20ae1e2 100644 --- a/programs/network/htmlv/browser/ReadMe.txt +++ b/programs/network/htmlv/browser/ReadMe.txt @@ -1,27 +1,22 @@ ==О программе HTMLv== HTMLv - это текстовый браузер, а так же просмотровщик веб-страниц. Пока что поддерживает только форматирование текста с некоторыми вложеными параметрами. -Программа написана на языке... среднего уровня C--. Обсуждение программы здесь: +Программа написана на языке C--. В нём можно писать программы, как на Си, так и на асме, притом их там удобно совмещать. +Обсуждение программы здесь: http://board.kolibrios.org/viewtopic.php?f=9&t=1075 -Для поиска нужно в адресную строку ввести запрос, нажать Ctrl+Enter (или кнопку). ==Установка== -Сама программа может быть запущена откуда угодно. +Сама программа может быть запущена откуда угодно. Для работы с Интернетом необходим downloader. ==Интернет== -Если ваша сетевая карта не поддерживается Колибри нативно - не беда. -Она поддерживается в Qemu и VirtualBox :) +Если ваша сетевая карта не поддерживается Колибри нативно - не беда: +она поддерживается в Qemu и VirtualBox. ==Проблемы== -1. Связаны со строкой адреса. -box_lib.obj следует положить в /sys/lib/ -2. Страницы из Интернета не хотят загружаться. -ZEROCONF.INI [настройки сети для Qemu и VBox] положить в /sys/network/ -downloader положить в /sys/ - +Отписывайтесь в теме, если что-то не так. Ссылка выше. ==Авторы== Leency - разработка, дизайн. @@ -30,6 +25,4 @@ Veliant - Barsuk - программа downloader, код работы с ней. Lrz - компонент EditBox. Nable - оптимизации. -lev - оптимизации, некоторые доработки. - -Спасибо за использование :) \ No newline at end of file +lev - оптимизации, некоторые доработки. \ No newline at end of file diff --git a/programs/network/htmlv/browser/TWB.h-- b/programs/network/htmlv/browser/TWB.h similarity index 90% rename from programs/network/htmlv/browser/TWB.h-- rename to programs/network/htmlv/browser/TWB.h index a216319b94..229d30fae7 100644 --- a/programs/network/htmlv/browser/TWB.h-- +++ b/programs/network/htmlv/browser/TWB.h @@ -4,6 +4,10 @@ //идея - левые файлы открывать соответствующими прогами //ol - циферки +//из хттп-лоад в реадхтмл + +//BrowserHistory.AddUrl(); -> проверка не = ли новый адрес старому и добавить поумолчанию везде + int downloader_id; dword j, @@ -15,7 +19,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 0.71"; + char version[]=" Text-based Browser 0.75"; struct TWebBrowser { @@ -50,29 +54,29 @@ char line[330], options[1000]; -#include "include\history.h--" -#include "include\colors.h--" -#include "include\unicode_tags.h--" +#include "include\history.h" +#include "include\colors.h" +#include "include\unicode_tags.h" +#include "include\some_code.h" + void TWebBrowser::Scan(dword id) { if (id > 399) { - j = 0; - FOR(i = 0; i <= id - 401; i++) { - do j++; - while (page_links[j] <>'|'); - } - 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; //заглушка, лучше, чем ничего (хабр, например, будет работать) + GetURLfromPageLinks(id); + + URL[find_symbol(#URL, '#')-1] = 0x00; //заглушка, лучше, чем ничего (хабр, например, будет работать) + GetNewUrl(); + + BrowserHistory.AddUrl(); + if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); //Lee 21.02 } @@ -101,8 +105,16 @@ void TWebBrowser::Scan(dword id) { case 054: //F5 IF(edit1.flags == 66) break; case REFRESH: + if (GetProcessSlot(downloader_id)<>0) + { + KillProcess(downloader_id); + Pause(20); + Draw_Window(); + return; + } copystr(#URL, #editURL); - Draw_Window(); + if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); + ShowPage(#URL); return; case 014: //Ctrl+N новое окно case 020: //Ctrl+T новая вкладка @@ -165,6 +177,7 @@ void TWebBrowser::Scan(dword id) { void GetNewUrl(){ IF (!strcmp(get_URL_part(2),"./")) copystr(#URL+1,#URL); + //IF (!strcmp(get_URL_part(3),"../")) //{ // //DrawTitle(#URL+7); @@ -185,12 +198,19 @@ void GetNewUrl(){ } } + void HttpLoad() { + za_kadrom = 0; + copystr(#URL, #editURL); + + + KillProcess(downloader_id); //убиваем старый процесс DeleteFile(#download_path); 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."); + Draw_Window(); } @@ -202,7 +222,7 @@ void ReadHtml() file_size stdcall (#URL); filesize = EBX; - if (!filesize) /*{Pause(200); ReadHtml();}*/ return; //Lee 22.09 + if (!filesize) /*{Pause(200); ReadHtml();}*/ return; mem_Free(buf); buf = mem_Alloc(filesize); if (!strcmp(get_URL_part(5),"http:"))) @@ -217,31 +237,28 @@ void TWebBrowser::ShowPage(dword adress) { max_kolvo_stolbcov = width - 30 / 6; max_kolvo_strok = height - 3 / 10 - 2; copystr(#version, #header); - IF (!WindowRePaint) { - za_kadrom = 0; - copystr(#URL, #editURL); - BrowserHistory.AddUrl(); - } edit1.size = edit1.pos = strlen(#editURL); edit_box_draw stdcall(#edit1); //рисуем строку адреса - + //LETS_LOAD ReadHtml(); - - IF (!filesize) return; //Lee 22.09 - - wintodos(buf); - ParseHTML(buf, filesize); - IF(!strlen(buf)) { - IF (strcmp(get_URL_part(5),"http:")==0) + + if (!filesize) + { + DrawBar(left, top, width+2, height, 0xFFFFFF); //закрашиваем всё донизу + if (GetProcessSlot(downloader_id)<>0) WriteText(left + 10, top + 18, 0x80, 0, "Loading...", 0); + else { - PutImage(#stop_btn, 24, 24, 88, 10); - WriteText(left + 10, top + 18, 0x80, 0, "Loading...", 0); - } - ELSE WriteText(left + 10, top + 18, 0x80, 0, "Page not found. May be, URL contains some errors.", 0); + if (!strcmp(get_URL_part(5),"http:"))) WriteText(left + 10, top + 32, 0x80, 0, "Or Internet unavilable for your configuration.", 0); + } + DrawTitle(#version); //? + return; } + DrawBar(left, top, width-15, 15, 0xFFFFFF); //закрашиваем первую строку + wintodos(buf); + ParseHTML(buf, filesize); IF (!strcmp(#version, #header)) DrawTitle(#header); } @@ -263,7 +280,6 @@ void TWebBrowser::ParseHTML(dword bword, fsize){ IF(!strcmp(#URL + strlen(#URL) - 4, ".txt")) pre_text = 1; //зачётное отображение текста //IF(!strcmp(#URL + strlen(#URL) - 4, ".rtf")) pre_text = 1; IF(!strcmp(#URL + strlen(#URL) - 4, ".mht")) ignor_text = 1; - IF(za_kadrom == 0) || (WindowRePaint) DrawBar(left, top, width - 15, 15, 0xFFFFFF); //закрашиваем первую строку for (; buf + fsize > bword; bword++;) { bukva = ESBYTE[bword]; switch (bukva) { @@ -688,6 +704,10 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) { img_draw stdcall (image,left1-5,top1+10,w, h,0,img_za_kadrom); DrawBar(left1+w - 5, top1 + 10, width1-w + 5, h, 0xFFFFFF); } + /*else + { + IF (strcmp(#parametr,"alt=")==0) copystr(#options,#line+strlen(#line)); + }*/ return; } @@ -740,7 +760,7 @@ void TWebBrowser::DrawScroller() { 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); + DrawBar(left + width - 14, top, 16, height - 17, 0xCED0D0); return; } diff --git a/programs/network/htmlv/browser/compile.bat b/programs/network/htmlv/browser/compile.bat index 4ddfd1ea92..b5dd2ac0b6 100644 --- a/programs/network/htmlv/browser/compile.bat +++ b/programs/network/htmlv/browser/compile.bat @@ -2,4 +2,4 @@ del HTMLv rename HTMLv.com HTMLv ..\C--\kpack HTMLv -pause +rem pause diff --git a/programs/network/htmlv/browser/img/toolbar_icons.c-- b/programs/network/htmlv/browser/img/toolbar_icons.c similarity index 100% rename from programs/network/htmlv/browser/img/toolbar_icons.c-- rename to programs/network/htmlv/browser/img/toolbar_icons.c diff --git a/programs/network/htmlv/browser/include/colors.h-- b/programs/network/htmlv/browser/include/colors.h similarity index 100% rename from programs/network/htmlv/browser/include/colors.h-- rename to programs/network/htmlv/browser/include/colors.h diff --git a/programs/network/htmlv/browser/include/fps.h-- b/programs/network/htmlv/browser/include/fps.h-- deleted file mode 100644 index 7a13a4176f..0000000000 --- a/programs/network/htmlv/browser/include/fps.h-- +++ /dev/null @@ -1,51 +0,0 @@ -int GetTime() -{ - $mov eax, 26; - $mov ebx, 9; - $int 0x40; - return EAX; -} - - -/******************************************************************************* -ФУНКЦИЯ ОПРЕДЕЛЕНИЯ FPS -x,y - координаты вывода FPS на окно -возвращает время в сотых долях секунды затрачиваемое на 1 цикл -*/ - -int time1=0; -int time2=0; -int fps1=0; -int timerend=0; - -int FPS() -{ - int tr; - - time1=GetTime(); - - if (timerend==0) - { - time2=time1; - timerend=time1; - } - - tr = time1 - timerend; - - if (time1 - time2 < 100) //если прошло менее 1 секунды - { //увеличиваем счетчик fps - fps1++; - } - else - { - //выводим число fps - DrawTitle(IntToStr(fps1)); - fps1=0; - time2=time1; - } - - timerend=time1; - -return tr; -} -//****************************************************************************** diff --git a/programs/network/htmlv/browser/include/history.h-- b/programs/network/htmlv/browser/include/history.h similarity index 90% rename from programs/network/htmlv/browser/include/history.h-- rename to programs/network/htmlv/browser/include/history.h index 2b9533412b..70264fa194 100644 --- a/programs/network/htmlv/browser/include/history.h-- +++ b/programs/network/htmlv/browser/include/history.h @@ -1,4 +1,3 @@ - struct UrlsHistory { byte UrlHistory[6000]; void AddUrl(); @@ -10,6 +9,9 @@ UrlsHistory BrowserHistory; void UrlsHistory::GoBack() { + //WriteDebug(#UrlHistory); + + j = strlen(#UrlHistory); WHILE(UrlHistory[j] <>'|') && (j > 0) j--; IF (j > 0) UrlHistory[j] = 0x00; @@ -28,10 +30,7 @@ void UrlsHistory::AddUrl() copystr(#URL, #UrlHistory + strlen(#UrlHistory)); } - dword UrlsHistory::CurrentUrl() { EAX=#UrlHistory + find_symbol(#UrlHistory, '|'); } - - diff --git a/programs/network/htmlv/browser/include/some_code.h-- b/programs/network/htmlv/browser/include/some_code.h similarity index 79% rename from programs/network/htmlv/browser/include/some_code.h-- rename to programs/network/htmlv/browser/include/some_code.h index 4bbcca832a..515a6a745d 100644 --- a/programs/network/htmlv/browser/include/some_code.h-- +++ b/programs/network/htmlv/browser/include/some_code.h @@ -56,3 +56,15 @@ shift=-2; } mem_Free(italic_buf); } + +void GetURLfromPageLinks(int id) //столько бреда, потому что нельзя создать массив стрингов +{ + j = 0; + for (i = 0; i <= id - 401; i++) + { + do j++; + while (page_links[j] <>'|'); + } + page_links[j] = 0x00; + copystr(#page_links[find_symbol(#page_links, '|')], #URL); +} \ No newline at end of file diff --git a/programs/network/htmlv/browser/include/unicode_tags.h-- b/programs/network/htmlv/browser/include/unicode_tags.h similarity index 100% rename from programs/network/htmlv/browser/include/unicode_tags.h-- rename to programs/network/htmlv/browser/include/unicode_tags.h