Subversion Repositories Kolibri OS

Rev

Rev 3028 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3028 Rev 3058
Line 6... Line 6...
6
	blink;
6
	blink;
7
 
7
 
Line 8... Line 8...
8
char download_path[]="/rd/1/.download";
8
char download_path[]="/rd/1/.download";
9
char search_path[]="http://nigma.ru/index.php?s=";
9
char search_path[]="http://nigma.ru/index.php?s=";
10
char version[]=" Text-based Browser 0.97.6";
10
char version[]=" Text-based Browser 0.97.7";
Line 11... Line 11...
11
 
11
 
12
 
12
 
13
struct TWebBrowser {
13
struct TWebBrowser {
Line 25... Line 25...
25
 
25
 
Line 26... Line 26...
26
TWebBrowser WB1;
26
TWebBrowser WB1;
Line 27... Line 27...
27
 
27
 
28
byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text,
28
byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text,
Line 29... Line 29...
29
	link, ignor_text, li_tab, first_line_drawed;
29
	link, ignor_text, li_tab, first_line_drawed, cur_encoding;
30
 
30
 
31
 
31
 
Line 260... Line 260...
260
		ReadFile(0, filesize, buf, #download_path);
260
		ReadFile(0, filesize, buf, #download_path);
261
	else
261
	else
262
		ReadFile(0, filesize, buf, #URL);
262
		ReadFile(0, filesize, buf, #URL);
263
		
263
		
Line -... Line 264...
-
 
264
	cur_encoding = encoding;
264
	if (encoding==_WIN) wintodos(buf);
265
	if (encoding==_WIN) wintodos(buf);
265
	if (encoding==_UTF) utf8rutodos(buf);
266
	if (encoding==_UTF) utf8rutodos(buf);
266
	if (encoding==_KOI) koitodos(buf);
267
	if (encoding==_KOI) koitodos(buf);
267
}
268
}
Line 280... Line 281...
280
		KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ
281
		KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ
281
		DeleteFile(#download_path);
282
		DeleteFile(#download_path);
282
		IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]='';
283
		IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]='';
283
		downloader_id = RunProgram("/sys/network/downloader", #URL);
284
		downloader_id = RunProgram("/sys/network/downloader", #URL);
284
		//ýòî ãåíèàëüíî è ýòî ïèçäåö!!!
285
		//Browser Hack v2.0
285
		Pause(60);
286
		Pause(60);
286
		if (GetProcessSlot(downloader_id)<>0)
287
		if (GetProcessSlot(downloader_id)<>0)
287
		{
288
		{
288
			debug("Browser Hack v2.0: Killing downloader and trying to run it one more!");
289
			debug("Browser Hack v2.0: Killing downloader and trying to run it one more!");
289
			KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ
290
			KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ
290
			downloader_id = RunProgram("/sys/network/downloader", #URL);
291
			downloader_id = RunProgram("/sys/network/downloader", #URL);
Line 374... Line 375...
374
				for (j=0; j
375
				for (j=0; j
375
				break;
376
				break;
376
			}		
377
			}		
377
		case 0x0d:
378
		case 0x0d:
378
			bukva = ' ';
379
			debug("0x0d");
-
 
380
			bukva = ' ';
379
			goto DEFAULT_MARK;
381
			goto DEFAULT_MARK;
380
		case '<':
382
		case '=': //ïîääåðæêà øàéòàíñêîé êîäèðîâêè ñòðàíèö, ñîõðàí¸ííûõ ÷åðåç ÈÅ7
-
 
383
			if (strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK;
-
 
384
 
-
 
385
			bword++;
-
 
386
			bukva=ESBYTE[bword];
-
 
387
			strcpy(#temp,#bukva);
-
 
388
			bword++;
-
 
389
			bukva=ESBYTE[bword];
-
 
390
			strcat(#temp,#bukva);
-
 
391
			
-
 
392
			bukva=Hex2Symb(#temp);
-
 
393
			if (bukva) goto DEFAULT_MARK;
-
 
394
			break;
-
 
395
			
-
 
396
		case '&': //  and so on
-
 
397
			bword++;
-
 
398
			tag=0;
-
 
399
			for (j=0; (ESBYTE[bword]<>';') && (j<7);   j++, bword++;)
-
 
400
			{
-
 
401
				bukva = ESBYTE[bword];
-
 
402
				strcat(#tag, #bukva);
-
 
403
			}
-
 
404
			
-
 
405
			for (j=0; unicode_tags[j]!=0; j+=2;) 
-
 
406
			{
-
 
407
				if (!strcmp(#tag, unicode_tags[j]))
-
 
408
				{
-
 
409
					strcat(#line, unicode_tags[j+1]);
-
 
410
					break 1;
-
 
411
				}
-
 
412
			}
-
 
413
			
-
 
414
			rez = atoi(#tag + 1) - 1040;
-
 
415
			if (tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5)
-
 
416
			{
-
 
417
				bukva = unicode_chars[rez];
-
 
418
				//GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó ëó÷øå íàâåðíî strcat(#line, unicode_tags[j+1]); è break 1; 
-
 
419
				strcat(#line, #bukva);
-
 
420
				break; 
-
 
421
			}
-
 
422
			
-
 
423
			strcat(#line,#tag); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò
-
 
424
			break;
-
 
425
		case '<':
381
			bword++; //ïðîìîòàåì ñèìâîë <
426
			bword++; //ïðîìîòàåì ñèìâîë <
382
			tag = parametr = tagparam = ignor_param = 0;
427
			tag = parametr = tagparam = ignor_param = NULL;
383
			if (ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè , äåðçêî
428
			if (ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè , äåðçêî
384
			{
429
			{
385
				bword++;
430
				bword++;
386
				if (ESBYTE[bword] == '-')
431
				if (ESBYTE[bword] == '-')
387
				{
432
				{
388
				HH_:
433
				HH_:
Line 414... Line 459...
414
			}
459
			}
415
			strlwr(#tag);
460
			strlwr(#tag);
416
			strlwr(#tagparam);
461
			strlwr(#tagparam);
417
 
462
 
Line 418... Line 463...
418
			if (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=''; //for br/
463
			if (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=NULL; //for br/
419
			if (tagparam) && (strlen(#tagparam) < 4000) GetNextParam();
464
			if (tagparam) && (strlen(#tagparam) < 4000) GetNextParam();
Line 420... Line 465...
420
 
465
 
421
			DrawPage();
466
			DrawPage();
Line 422... Line 467...
422
			line=0;
467
			line=NULL;
Line 423... Line 468...
423
 
468
 
424
			if (tag) WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //îáðàáîòêà òåãîâ
-
 
425
 
-
 
426
			tag = parametr = tagparam = ignor_param = '\0';
-
 
427
			break;
-
 
428
		case '=': //ïîääåðæêà øàéòàíñêîé êîäèðîâêè ñòðàíèö, ñîõðàí¸ííûõ ÷åðåç ÈÅ7
-
 
429
			if (strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK;
-
 
430
 
-
 
431
			bword++;
-
 
432
			bukva=ESBYTE[bword];
-
 
433
			strcpy(#temp,#bukva);
-
 
434
			bword++;
-
 
435
			bukva=ESBYTE[bword];
-
 
436
			strcat(#temp,#bukva);
-
 
437
			
-
 
438
			bukva=Hex2Symb(#temp);
-
 
439
			if (bukva) goto DEFAULT_MARK;
-
 
440
			break;
-
 
441
			
-
 
442
		case '&': //  and so on
-
 
443
			bword++;
-
 
444
			tag=0;
-
 
445
			for (j=0; (ESBYTE[bword]<>';') && (j<7);   j++, bword++;)
-
 
446
			{
-
 
447
				bukva = ESBYTE[bword];
-
 
448
				strcat(#tag, #bukva);
-
 
449
			}
-
 
450
			
-
 
451
			for (j=0; unicode_tags[j]!=0; j+=2;) 
-
 
452
			{
-
 
453
				if (!strcmp(#tag, unicode_tags[j]))
-
 
454
				{
-
 
455
					strcat(#line, unicode_tags[j+1]);
-
 
456
					break 1;
-
 
457
				}
-
 
458
			}
-
 
459
			
-
 
460
			rez = atoi(#tag + 1) - 1040;
-
 
461
			if (tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5)
-
 
462
			{
-
 
463
				bukva = unicode_chars[rez];
-
 
464
				//GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó ëó÷øå íàâåðíî strcat(#line, unicode_tags[j+1]); è break 1; 
-
 
465
				strcat(#line, #bukva);
-
 
466
				break; 
-
 
467
			}
469
			if (tag) WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //îáðàáîòêà òåãîâ
468
			
470
 
469
			strcat(#line,#tag); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò
471
			tag = parametr = tagparam = ignor_param = NULL;
470
			break;
472
			break;
471
		default:
473
		default:
472
			DEFAULT_MARK:
474
			DEFAULT_MARK:
473
			if (!pre_text) && (bukva == ' ') && (line[strlen(#line)-1]==' ') break;
475
			if (!pre_text) && (bukva == ' ') && (line[strlen(#line)-1]==' ') break; //óáðàòü 2 ïðîáåëà ïîäðÿä
474
			//
476
			//
475
			if (stolbec + strlen(#line) > lines.column_max)
477
			if (stolbec + strlen(#line) > lines.column_max)
Line 512... Line 514...
512
	if (!header) //&& (tag) 
514
	if (!header) //&& (tag) 
513
	{
515
	{
514
		if (strlen(#version)+strlen(#line)+2>sizeof(header))
516
		if (strlen(#version)+strlen(#line)+2>sizeof(header))
515
		{
517
		{
516
			//line = 123456789
-
 
517
			//header = 1234
-
 
518
			//line = 56789
-
 
519
			strcpy(#temp, #line);
518
			strcpy(#temp, #line);
520
			temp[sizeof(header)-strlen(#version)-2]=0;
519
			temp[sizeof(header)-strlen(#version)-2]=0;
521
			strcpy(#header, #temp);
520
			strcpy(#header, #temp);
522
			strcpy(#line, #line+strlen(#temp));
521
			strcpy(#line, #line+strlen(#temp));
523
		}
522
		}
Line 570... Line 569...
570
void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
569
void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
571
	dword hr_color;
570
	dword hr_color;
572
 
571
 
Line 573... Line 572...
573
    dword image;
572
    dword image;
574
    char temp[4096];
573
    char temp[4096], alt[4096];
575
    int w=0, h=0, img_lines_first=0;
574
    int w=0, h=0, img_lines_first=0;
Line 576... Line 575...
576
 
575
 
577
	//ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ
576
	//ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ
578
	if (tag[0] == '/') 
577
	if (tag[0] == '/') 
Line 780... Line 779...
780
		if (GetFileInfo(libimg)<>0) return;  //åñëè áèáëèîòåêè íåò
779
		if (GetFileInfo(libimg)<>0) return;  //åñëè áèáëèîòåêè íåò
781
		IMG_TAG:
780
		IMG_TAG:
782
			if (!strcmp(#parametr,"src="))   //íàäî îáúåäèíèòü ñ GetNewUrl()
781
			if (!strcmp(#parametr,"src="))   //íàäî îáúåäèíèòü ñ GetNewUrl()
783
			{
782
			{
784
				if (downloader_id!=0) strcpy(#temp, #history_list[history_current-1].Item);
783
				if (downloader_id) strcpy(#temp, #history_list[history_current-1].Item);
785
					else strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû
784
					else strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû
786
				if (!strcmpn(#temp, "http:", 5)) || (!strcmpn(#options, "http:", 5)) return;
785
				if (strcmpn(#temp, "http:", 5)!=0) || (strcmpn(#options, "http:", 5)!=0)
787
				temp[strrchr(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
786
				{
-
 
787
					temp[strrchr(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
788
				strcat(#temp, #options);
788
					strcat(#temp, #options);
789
				image=load_image(#temp);
789
					image=load_image(#temp);
790
				w=DSWORD[image+4];
790
					w=DSWORD[image+4];
791
				h=DSWORD[image+8];
791
					h=DSWORD[image+8];
792
			}
792
				}
793
  			/*if (!strcmp(#parametr,"alt="))
793
			}
-
 
794
  			if (!strcmp(#parametr,"alt="))
794
			{
795
			{
795
				strcpy(#tag, "[Image: ");
796
				strcpy(#alt, "[");
796
				strcat(#tag, #options);
797
				strcat(#alt, #options);
797
				strcat(#tag, "]");
798
				strcat(#alt, "]");
798
			}*/
799
			}
799
 
800
 
Line 800... Line 801...
800
		IF(tagparam)
801
		IF(tagparam)
801
		{
802
		{
802
			GetNextParam();
803
			GetNextParam();
803
			GOTO IMG_TAG;
804
			GOTO IMG_TAG;
804
		}
805
		}
Line 805... Line 806...
805
		
806
		
-
 
807
		if (!image) 
-
 
808
		{
-
 
809
			if (alt) && (link) strcat(#line, #alt);
-
 
810
			return;
Line 806... Line 811...
806
		if (!image) return;
811
		}
Line 807... Line 812...
807
		
812
		
808
		if (w>width1) w=width1;
813
		if (w>width1) w=width1;