diff --git a/programs/network/htmlv/browser/HTMLv.c-- b/programs/network/htmlv/browser/HTMLv.c--
index 5be162ec61..9eb189af22 100644
--- a/programs/network/htmlv/browser/HTMLv.c--
+++ b/programs/network/htmlv/browser/HTMLv.c--
@@ -24,21 +24,22 @@ char URL[4096],
int max_kolvo_strok, //lines_visible
max_kolvo_stolbcov,
count, //lines_all
- za_kadrom,
+ za_kadrom, //lines_first
mouse_dd;
edit_box edit1= {250,207,16,0xffffff,0x94AECE,0xffffff,0xffffff,0,248,#editURL,#mouse_dd,2,19,19};
scroll_bar scroll1 = { 18,200,398, 44,18,0,115,15,0,0xeeeeee,0xD2CED0,0x555555,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}; //details in scroll_lib.h--
proc_info Form;
-
+dword stak[100]; //меню ПКМ
+mouse m;
#include "TWB.h"
+#include "include\menu_rmb.h"
void main()
{
- mouse m;
int btn;
byte key;
int scroll_size;
@@ -51,17 +52,14 @@ void main()
if (param) copystr(#param,#URL);
else copystr("/sys/index.htm",#URL);
-
copystr(#URL,#editURL);
- if (!strcmp(get_URL_part(5),"http:"))) HttpLoad();
- //Draw_Window(); //shis is right
- //WB1.ShowPage(#URL); //shis is right
+ OpenPage();
SetEventMask(0x27);
loop()
{
- WaitEventTimeout(1);
+ WaitEventTimeout(2);
switch(EAX & 0xFF)
{
CASE evMouse:
@@ -74,7 +72,16 @@ void main()
WB1.ParseHTML(buf, filesize);
//break;
};*/
+ btn=GetSlot(Form.ID);
+ IF (btn<>ActiveProcess()) break; //если окно не активно на события мыши не реагируем
+
m.get();
+
+ if (m.pkm) && (m.y>WB1.top) && (m.y
0x0d) && (key<>183) && (key<>184) && (key<>173) {EAX=key<<8; edit_box_key stdcall(#edit1);} //адресная строка
- BREAK;
+ break;
case evReDraw:
Draw_Window();
break;
@@ -134,7 +141,10 @@ void main()
{
if (GetProcessSlot(downloader_id)<>0) break;
downloader_id=0;
+ ReadHtml();
+ if (filesize) wintodos(buf);
Draw_Window();
+ //WB1.ShowPage(#URL);
}
}
}
@@ -144,7 +154,7 @@ void main()
void Draw_Window()
{
DefineAndDrawWindow(215,100,640,480,0x73,0x00E4DFE1,0,0,0);
-
+
GetProcessInfo(#Form, SelfInfo);
IF (Form.status_window>2) //если свернуто в заголовок, ничего не рисуем
{
@@ -166,16 +176,15 @@ void Draw_Window()
DefineButton(onLeft(56,0),15, 17, 16, SEARCHWEB+BT_HIDE, 0xE4DFE1);
DrawRegion(205,14,onLeft(58,205),18,0x94AECE); //ободок полосы адреса
DrawRegion(206,15,onLeft(59,205),16,0xE4ECF3);
-
+
edit1.width=Form.width-266;
- //edit_box_draw stdcall(#edit1); //рисуем строку адреса //shis is right
-
WB1.top=44;
WB1.width=Form.width-13;
WB1.height=onTop(43,5);
+ max_kolvo_stolbcov = WB1.width - 30 / 6;
+ max_kolvo_strok = WB1.height - 3 / 10 - 2;
+
WB1.ShowPage(#URL);
-
- //WB1.ParseHTML(buf, filesize); //shis is right
}
int onLeft(dword right,left) {return Form.width-right-left;}
diff --git a/programs/network/htmlv/browser/History.txt b/programs/network/htmlv/browser/History.txt
index 3f075442b3..aa62675259 100644
--- a/programs/network/htmlv/browser/History.txt
+++ b/programs/network/htmlv/browser/History.txt
@@ -1,3 +1,9 @@
+13.06.12 -- v0.92
+- базовое меню ПКМ;
+- убрана постоянная загрузка страницы при перерисовке окна;
+- костыли версии 2.0 для работы с downloader'ом;
+- разделение кода загрузки и отображения страницы: часть 1.
+
04.06.12 -- v0.90
- новый скроллбар из box_lib (спасибо lev);
- нормальная загрузка страниц без скидывания фокуса с окна;
diff --git a/programs/network/htmlv/browser/ReadMe.txt b/programs/network/htmlv/browser/ReadMe.txt
deleted file mode 100644
index f1d20ae1e2..0000000000
--- a/programs/network/htmlv/browser/ReadMe.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-==О программе HTMLv==
-HTMLv - это текстовый браузер, а так же просмотровщик веб-страниц. Пока что
-поддерживает только форматирование текста с некоторыми вложеными параметрами.
-Программа написана на языке C--. В нём можно писать программы, как на Си, так и на асме, притом их там удобно совмещать.
-Обсуждение программы здесь:
-http://board.kolibrios.org/viewtopic.php?f=9&t=1075
-
-
-==Установка==
-Сама программа может быть запущена откуда угодно. Для работы с Интернетом необходим downloader.
-
-
-==Интернет==
-Если ваша сетевая карта не поддерживается Колибри нативно - не беда:
-она поддерживается в Qemu и VirtualBox.
-
-
-==Проблемы==
-Отписывайтесь в теме, если что-то не так. Ссылка выше.
-
-==Авторы==
-Leency - разработка, дизайн.
-Asper - код работы с библиотеками Колибри, поддержка изображений, UTF-8.
-Veliant - автор программы-предшественника, помощь, советы.
-Barsuk - программа downloader, код работы с ней.
-Lrz - компонент EditBox.
-Nable - оптимизации.
-lev - оптимизации, некоторые доработки.
\ No newline at end of file
diff --git a/programs/network/htmlv/browser/TWB.h b/programs/network/htmlv/browser/TWB.h
index 4b4a080aee..3c801cd625 100644
--- a/programs/network/htmlv/browser/TWB.h
+++ b/programs/network/htmlv/browser/TWB.h
@@ -1,6 +1,3 @@
-//идея - левые файлы открывать соответствующими прогами
-//ol - циферки
-
int downloader_id;
@@ -11,9 +8,8 @@ dword j,
int i;
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.9b";
+char version[]=" Text-based Browser 0.92";
struct TWebBrowser {
@@ -56,23 +52,18 @@ void TWebBrowser::Scan(dword id) {
if (id > 399)
{
GetURLfromPageLinks(id);
-
//эту всю хрень нужно в GetNewUrl() переместить
- IF (URL[0] == '#') { //мы не умеем переходить по ссылке внутри документа. Пока что...
+ if (URL[0] == '#') { //мы не умеем переходить по ссылке внутри документа. Пока что...
copystr(BrowserHistory.CurrentUrl(), #editURL);
copystr(#URL, #editURL + strlen(#editURL));
-
- //edit1.size = edit1.pos = strlen(#editURL);
- //edit_box_draw stdcall(#edit1); //рисуем строку адреса
-
copystr(BrowserHistory.CurrentUrl(), #URL);
ShowPage(#URL);
return;
}
- URL[find_symbol(#URL, '#')-1] = 0x00; //заглушка, лучше, чем ничего (хабр, например, будет работать) //это не совсем правильно - в едитурл должно оставаться
+ URL[find_symbol(#URL, '#')-1] = 0x00; //заглушка, но это не совсем правильно - в едитурл должно оставаться
GetNewUrl();
-
+
if (!strcmp(#URL + strlen(#URL) - 4, ".gif")) || (!strcmp(#URL + strlen(#URL) - 4, ".png")) || (!strcmp(#URL + strlen(#URL) - 4, ".jpg"))
{
RunProgram("/sys/media/kiv", #URL);
@@ -116,9 +107,7 @@ void TWebBrowser::Scan(dword id) {
Draw_Window();
return;
}
- copystr(#URL, #editURL);
- if (!strcmp(get_URL_part(5),"http:"))) HttpLoad();
- ShowPage(#URL);
+ OpenPage(); //от сердца отрываю, здесь нужно za_kadrom старое
return;
case 014: //Ctrl+N новое окно
case 020: //Ctrl+T новая вкладка
@@ -177,15 +166,7 @@ void TWebBrowser::Scan(dword id) {
ParseHTML(buf, filesize);
}
-void OpenPage()
-{
- if (GetProcessSlot(downloader_id)<>0) PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal);
- KillProcess(downloader_id);
- copystr(#URL, #editURL);
- za_kadrom = count = 0;
- if (!strcmp(get_URL_part(5),"http:"))) HttpLoad();
- WB1.ShowPage(#URL);
-}
+
void GetNewUrl(){
IF (!strcmp(get_URL_part(2),"./")) copystr(#URL+2,#URL); //игнорим :)
@@ -216,23 +197,6 @@ void GetNewUrl(){
}
-void HttpLoad()
-{
- //count = 0; я думаю ему место здесь
- copystr(#version, #header);
- KillProcess(downloader_id); //убиваем старый процесс
- DeleteFile(#download_path);
- IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]='';
- downloader_id = RunProgram("/sys/network/downloader", #URL);
- //это гениально и это пиздец!!!
- Pause(60);
- KillProcess(downloader_id); //убиваем старый процесс
- downloader_id = RunProgram("/sys/network/downloader", #URL);
- //
- IF (downloader_id<0) RunProgram("@notify", "Error running Downloader. Internet unavilable.");
- Draw_Window();
-}
-
void ReadHtml()
{
@@ -242,7 +206,8 @@ void ReadHtml()
file_size stdcall (#URL);
filesize = EBX;
- if (!filesize) /*{Pause(200); ReadHtml();}*/ return;
+ if (!filesize) return;
+
mem_Free(buf);
buf = mem_Alloc(filesize);
if (!strcmp(get_URL_part(5),"http:")))
@@ -252,18 +217,44 @@ void ReadHtml()
}
+void OpenPage()
+{
+ if (GetProcessSlot(downloader_id)<>0) PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal);
+ KillProcess(downloader_id);
+ copystr(#URL, #editURL);
+ BrowserHistory.AddUrl();
+ za_kadrom = count = 0;
+ if (!strcmp(get_URL_part(5),"http:")))
+ {
+ copystr(#version, #header);
+ KillProcess(downloader_id); //убиваем старый процесс
+ DeleteFile(#download_path);
+ IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]='';
+ downloader_id = RunProgram("/sys/network/downloader", #URL);
+ //это гениально и это пиздец!!!
+ Pause(60);
+ if (GetProcessSlot(downloader_id)<>0)
+ {
+ WriteDebug("Browser Hack v2.0: Killing downloader and trying to run it one more!");
+ KillProcess(downloader_id); //убиваем старый процесс
+ downloader_id = RunProgram("/sys/network/downloader", #URL);
+ }
+ //
+ IF (downloader_id<0) RunProgram("@notify", "Error running Downloader. Internet unavilable.");
+ Draw_Window();
+ return;
+ }
+ ReadHtml();
+ if (filesize) wintodos(buf);
+ WB1.ShowPage(#URL);
+}
-void TWebBrowser::ShowPage(dword adress) {
- max_kolvo_stolbcov = width - 30 / 6;
- max_kolvo_strok = height - 3 / 10 - 2;
+
+void TWebBrowser::ShowPage(dword adress)
+{
edit1.size = edit1.pos = strlen(#editURL);
edit_box_draw stdcall(#edit1); //рисуем строку адреса
- BrowserHistory.AddUrl();
-
- //LETS_LOAD
- ReadHtml();
-
if (!filesize)
{
DrawBar(left, top, width+4, height, 0xFFFFFF); //закрашиваем всё донизу
@@ -276,8 +267,7 @@ void TWebBrowser::ShowPage(dword adress) {
DrawTitle(#version); //?
return;
}
-
- wintodos(buf);
+
ParseHTML(buf, filesize);
IF (!strcmp(#version, #header)) DrawTitle(#header);
}
diff --git a/programs/network/htmlv/browser/compile.bat b/programs/network/htmlv/browser/compile.bat
index 85dca47b8e..1352438f29 100644
--- a/programs/network/htmlv/browser/compile.bat
+++ b/programs/network/htmlv/browser/compile.bat
@@ -2,4 +2,5 @@
del HTMLv
rename HTMLv.com HTMLv
rem ..\C--\kpack HTMLv
+del warning.txt
pause
diff --git a/programs/network/htmlv/browser/include/acid_0.1.htm b/programs/network/htmlv/browser/include/acid_0.1.htm
index b6414108d0..79dccbc2da 100644
--- a/programs/network/htmlv/browser/include/acid_0.1.htm
+++ b/programs/network/htmlv/browser/include/acid_0.1.htm
@@ -58,6 +58,7 @@
На главную страницу index.htm
index.htm#home
+#home
Фоновая картинка