Subversion Repositories Kolibri OS

Rev

Rev 2558 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1971 lev 1
//HTML Viewer in C--
2433 leency 2
//Copyright 2007-2012 by Veliant & Leency
1971 lev 3
//Asper, Lrz, Nable, lev.
4
 
2413 leency 5
#include "..\lib\kolibri.h--"
2660 leency 6
#include "..\lib\encoding.h--"
2413 leency 7
#include "..\lib\file_system.h--"
8
#include "img\toolbar_icons.c"
9
#include "img\URLgoto.txt";
1971 lev 10
//Asper
2413 leency 11
#include "..\lib\mem.h--"
12
#include "..\lib\libio_lib.h--"
13
#include "..\lib\libimg_lib.h--"
14
#include "..\lib\edit_box_lib.h--"
15
#include "..\lib\dll.h--"
1971 lev 16
 
17
//переменные
2558 leency 18
char URL[4096],
1971 lev 19
	editURL[4096],
20
	page_links[12000],
21
	header[512];
22
 
2238 leency 23
int max_kolvo_strok,
1971 lev 24
	 max_kolvo_stolbcov,
2238 leency 25
	 count;
1971 lev 26
 
2228 leency 27
int za_kadrom,
2238 leency 28
	scroll_size,
1971 lev 29
	mouse_dd;
30
 
31
edit_box edit1= {250,207,16,0xffffff,0x94AECE,0xffffff,0xffffff,0,248,#editURL,#mouse_dd,2,19,19};
32
 
2413 leency 33
proc_info Form;
1971 lev 34
 
35
 
2413 leency 36
#include "TWB.h"
1971 lev 37
 
38
 
39
void main()
40
{
2153 leency 41
	mouse m;
42
	int btn;
43
	byte key;
44
 
1971 lev 45
    //Asper [
46
        mem_Init();
47
        $or      eax, eax
48
        $jnz      loc00
49
        return;
50
      @loc00:
51
      load_dll2(libio, #libio_init,1);
52
      load_dll2(libimg, #libimg_init,1);
53
      load_dll2(boxlib, #edit_box_draw,0);
54
    //] Asper
2248 leency 55
 
56
	IF (param) copystr(#param,#URL);
2558 leency 57
	ELSE copystr("/sys/index.htm",#URL);
58
 
2248 leency 59
	copystr(#URL,#editURL);
60
 
2420 leency 61
	if (!strcmp(get_URL_part(5),"http:"))) HttpLoad();
2433 leency 62
	//Draw_Window();  //shis is right
63
	//WB1.ShowPage(#URL);  //shis is right
2420 leency 64
 
1971 lev 65
	SetEventMask(0x27);
66
	loop()
67
	{
68
		switch(WaitEvent())
69
		{
70
			CASE evMouse:
71
				m.get();
72
				IF (m.vert==65535) //прокрутка колёсиком
73
				{
74
					IF (za_kadrom==0) break;
75
					IF (za_kadrom>3) za_kadrom-=2; ELSE za_kadrom=1;
76
					WB1.Scan(ID1);
77
				}
78
				IF (m.vert==1)
79
				{
2238 leency 80
					IF(max_kolvo_strok+za_kadrom+3>=count) WB1.Scan(181);
1971 lev 81
					ELSE	{
82
						za_kadrom+=2;
83
						WB1.Scan(ID2);
84
					}
85
				}
2238 leency 86
				//IF (count
2085 leency 87
				if (m.x>=WB1.width-14) && (m.x<=WB1.width+6)
88
				&& (m.y>WB1.top+16) && (m.y
2238 leency 89
				&& (count>max_kolvo_strok) while (m.lkm)
1971 lev 90
				{
2238 leency 91
					IF (scroll_size/2+WB1.top>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+WB1.top; //если курсор над окном
1971 lev 92
					btn=za_kadrom; //сохраняем старое количество
2238 leency 93
					j= scroll_size/2;
94
					za_kadrom = m.y -j -WB1.top * count / WB1.height;
95
					IF (max_kolvo_strok+za_kadrom>count) za_kadrom=count-max_kolvo_strok;
1971 lev 96
					IF (btn<>za_kadrom) WB1.ParseHTML(buf, filesize); //чтоб лишний раз не перерисовывать
97
					m.get();
98
				}
2413 leency 99
				break;
1971 lev 100
			case evButton:
101
				btn=GetButtonID();
2413 leency 102
				IF (btn==1)
103
				{
104
					KillProcess(downloader_id);
105
					ExitProcess();
106
				}
1971 lev 107
				ELSE
108
				{
109
					WB1.Scan(btn);
110
				}
1974 yogev_ezra 111
				BREAK;
1971 lev 112
			case evKey:
113
				key = GetKey();
114
				WB1.Scan(key);
1974 yogev_ezra 115
				IF (key<>0x0d) && (key<>183) && (key<>184) && (key<>173) {EAX=key<<8; edit_box_key stdcall(#edit1);} //адресная строка
116
				BREAK;
1971 lev 117
			case evReDraw:
118
				Draw_Window();
119
				break;
120
		}
121
		edit_box_mouse stdcall (#edit1);
122
	}
123
}
124
 
125
 
126
void Draw_Window()
127
{
128
	DefineAndDrawWindow(215,100,640,480,0x73,0x00E4DFE1,0,0,0);
2248 leency 129
 
2250 leency 130
	GetProcessInfo(#Form, SelfInfo);
2495 leency 131
	IF (Form.status_window==4) //если свернуто в заголовок, ничего не рисуем
1971 lev 132
	{
133
		DrawTitle(#header);
134
		return;
135
	}
136
	IF (Form.height<120) MoveSize(OLD,OLD,OLD,120);
137
	IF (Form.width<280) MoveSize(OLD,OLD,280,OLD);
2155 leency 138
 
139
	PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal);
2413 leency 140
	if (GetProcessSlot(downloader_id)<>0) PutImage(#stop_btn,24,24,88,10);
141
 
2155 leency 142
	DrawBar(200,0,onLeft(200,9),43,0xE4DFE1); //закрашиваем фон под тулбаром
1971 lev 143
	DrawBar(0,42,onLeft(5,4),1,0xE2DBDC); //выпуклость
144
	DrawBar(0,43,onLeft(5,4),1,0xD2CED0); //выпуклость
145
	FOR (j=0; j<5; j++) DefineButton(j*37+11, 7, 29, 29, 300+j+BT_HIDE, 0x00E4DFE1);
146
	PutImage(#URLgoto,40,19,onLeft(57,0),14);
2152 leency 147
	DefineButton(onLeft(37,0),15, 18, 16, GOTOURL+BT_HIDE, 0xE4DFE1);
148
	DefineButton(onLeft(56,0),15, 17, 16, SEARCHWEB+BT_HIDE, 0xE4DFE1);
1971 lev 149
	DrawRegion_3D(205,14,onLeft(58,205),18,0x94AECE,0x94AECE); //ободок полосы адреса
150
	DrawRegion_3D(206,15,onLeft(59,205),16,0xE4ECF3,0xE4ECF3);
151
	edit1.width=Form.width-266;
2433 leency 152
	//edit_box_draw stdcall(#edit1); //рисуем строку адреса  //shis is right
153
 
1971 lev 154
	WB1.top=44;
155
	WB1.width=Form.width-11;
156
	WB1.height=onTop(43,5);
2399 leency 157
	WB1.ShowPage(#URL);
2433 leency 158
	//WB1.ParseHTML(buf, filesize); //shis is right
1971 lev 159
}
160
 
2238 leency 161
int onLeft(dword right,left) {return Form.width-right-left;}
162
int onTop(dword down,up) {return Form.height-GetSkinWidth()-down-up;}
1971 lev 163
 
164
 
165
stop: