forked from KolibriOS/kolibrios
HTMLv 0.75: new futures and bags.
git-svn-id: svn://kolibrios.org@2413 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
a6898aa575
commit
823a0a9a8f
@ -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); //âûïóêëîñòü
|
||||
|
@ -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.? Кб
|
||||
- просто починил эти самые интернеты.
|
||||
|
||||
|
||||
|
@ -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 - разработка, дизайн.
|
||||
@ -31,5 +26,3 @@ Barsuk -
|
||||
Lrz - компонент EditBox.
|
||||
Nable - оптимизации.
|
||||
lev - оптимизации, некоторые доработки.
|
||||
|
||||
Спасибо за использование :)
|
@ -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,30 +54,30 @@ 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;
|
||||
}
|
||||
|
||||
GetURLfromPageLinks(id);
|
||||
|
||||
URL[find_symbol(#URL, '#')-1] = 0x00; //çàãëóøêà, ëó÷øå, ÷åì íè÷åãî (õàáð, íàïðèìåð, áóäåò ðàáîòàòü)
|
||||
|
||||
GetNewUrl();
|
||||
|
||||
BrowserHistory.AddUrl();
|
||||
|
||||
|
||||
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad();
|
||||
//Lee 21.02 }
|
||||
|
||||
@ -101,9 +105,17 @@ void TWebBrowser::Scan(dword id) {
|
||||
case 054: //F5
|
||||
IF(edit1.flags == 66) break;
|
||||
case REFRESH:
|
||||
copystr(#URL, #editURL);
|
||||
if (GetProcessSlot(downloader_id)<>0)
|
||||
{
|
||||
KillProcess(downloader_id);
|
||||
Pause(20);
|
||||
Draw_Window();
|
||||
return;
|
||||
}
|
||||
copystr(#URL, #editURL);
|
||||
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad();
|
||||
ShowPage(#URL);
|
||||
return;
|
||||
case 014: //Ctrl+N íîâîå îêíî
|
||||
case 020: //Ctrl+T íîâàÿ âêëàäêà
|
||||
case NEWTAB:
|
||||
@ -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
|
||||
if (!filesize)
|
||||
{
|
||||
DrawBar(left, top, width+2, height, 0xFFFFFF); //çàêðàøèâàåì âñ¸ äîíèçó
|
||||
if (GetProcessSlot(downloader_id)<>0) 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(!strlen(buf)) {
|
||||
IF (strcmp(get_URL_part(5),"http:")==0)
|
||||
{
|
||||
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(#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;
|
||||
}
|
||||
|
@ -2,4 +2,4 @@
|
||||
del HTMLv
|
||||
rename HTMLv.com HTMLv
|
||||
..\C--\kpack HTMLv
|
||||
pause
|
||||
rem pause
|
||||
|
@ -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;
|
||||
}
|
||||
//******************************************************************************
|
@ -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, '|');
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user