HTMLv 0.75: new futures and bags.

git-svn-id: svn://kolibrios.org@2413 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2012-02-27 13:48:04 +00:00
parent a6898aa575
commit 823a0a9a8f
11 changed files with 105 additions and 122 deletions

View File

@ -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); //âûïóêëîñòü

View File

@ -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.? Кб
- просто починил эти самые интернеты.

View File

@ -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 - оптимизации, некоторые доработки.
Спасибо за использование :)

View File

@ -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,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;
}

View File

@ -2,4 +2,4 @@
del HTMLv
rename HTMLv.com HTMLv
..\C--\kpack HTMLv
pause
rem pause

View File

@ -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;
}
//******************************************************************************

View File

@ -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, '|');
}

View File

@ -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);
}