The QBasic Forum     RULES     Other Subforums, Links and Downloads

  
--

 Return to Index  

QBrowser

February 18 2006 at 11:42 AM
  (Login KristopherWindsor)


Response to Misc

 
I am posting this here to complete this section of my programs. To those who have already seen it, there is nothing new here. :|

If you haven't seen it before, you will need wget to run this program.

'QBrowser, Version 1.1
'(C) 2006 i-TECH and King Kristopher

'Main Directory on Hardrive (With QBASIC and wget)
path$ = "C:/"
CHDIR path$

'Home Page
url$ = "http://www.matthost.be/KristopherWindsor/start.htm"

SCREEN 0: WIDTH 80, 25: GOSUB displaywindows
hcount = 1: key$ = "": mchoice = 1: livepage = 1
DIM menu$(1 TO 6), history$(1 TO 100)
menu$(1) = "Get Link": menu$(2) = "Refresh.": menu$(3) = "Goto....": menu$(4) = "Back....": menu$(5) = "Forward.": menu$(6) = "Quit....": history$(1) = url$

WHILE key$ <> "q" AND mchoice <> 6
COLOR 31, 4: LOCATE 22, 11: PRINT "Loading..."
GOSUB openurl
GOSUB formatpage
GOSUB displaypage
GOSUB menu
WEND: END

displaywindows:
CLS : COLOR 2, 0
LOCATE 2, 2: PRINT "QBrowser": COLOR 6, 0
LOCATE 1, 2: PRINT STRING$(78, CHR$(205))
LOCATE 3, 2: PRINT STRING$(78, CHR$(205))
LOCATE 23, 2: PRINT STRING$(78, CHR$(205))
FOR a = 2 TO 22
LOCATE a, 1: PRINT CHR$(186)
LOCATE a, 10: PRINT CHR$(186)
LOCATE a, 80: PRINT CHR$(186)
NEXT a
LOCATE 1, 1: PRINT CHR$(201)
LOCATE 1, 10: PRINT CHR$(203)
LOCATE 1, 80: PRINT CHR$(187)
LOCATE 3, 1: PRINT CHR$(204)
LOCATE 3, 10: PRINT CHR$(206)
LOCATE 3, 80: PRINT CHR$(185)
LOCATE 23, 1: PRINT CHR$(200)
LOCATE 23, 10: PRINT CHR$(202)
LOCATE 23, 80: PRINT CHR$(188)
RETURN

openurl:
LOCATE 2, 11: PRINT LEFT$(" " + url$ + STRING$(69, " "), 69)
html$ = "": COLOR 0, 4: a = 1
WHILE a < LEN(url$)
SELECT CASE MID$(url$, a, 1)
CASE "<", ">", "|"
url$ = LEFT$(url$, a - 1) + RIGHT$(url$, LEN(url$) - a)
CASE " "
url$ = LEFT$(url$, a - 1) + "%20" + RIGHT$(url$, LEN(url$) - a)
CASE ELSE
a = a + 1
END SELECT
WEND
LOCATE 2, 11: PRINT LEFT$(" " + url$ + STRING$(69, " "), 69)
SHELL "cmd /c start wget -O file.htm -o tmp.tmp " + url$
SLEEP
OPEN "file.htm" FOR INPUT AS #1'"file.htm" FOR INPUT AS #1
WHILE INSTR(html$, "</html>") = 0
LINE INPUT #1, part$: html$ = html$ + part$
WEND
CLOSE #1
KILL "file.htm"
RETURN

formatpage:
l = 1: w = 1: nl = 1: cursor = 1: down = 1: lcount = 0: fc = 7: bc = 0
REDIM page$(1 TO 100), pagedata%(1 TO 100, 1 TO 3), links$(1 TO 80)
FOR a = 1 TO 100: page$(a) = STRING$(69, " "): pagedata%(a, 1) = 7: NEXT a

FOR a = 1 TO LEN(html$)
part$ = MID$(html$, a, 1): COLOR 31, 4: LOCATE 22, 21: PRINT part$
IF part$ = "<" THEN GOSUB whichtag
IF part$ = "&" THEN GOSUB ampersands
IF part$ <> "<" AND part$ <> "&" AND part$ <> CHR$(9) THEN MID$(page$(w), l, 1) = part$: IF part$ <> " " OR l <> nl THEN l = l + 1: IF l >= 70 THEN w = w + 1: l = nl
pagedata%(w, 1) = fc
IF bc <= 7 THEN pagedata%(w, 2) = bc
NEXT a

RETURN

displaypage:
IF key$ = CHR$(0) + CHR$(72) AND cursor > 1 THEN cursor = cursor - 1: IF cursor < down THEN down = down - 5: IF down < 1 THEN down = 1
IF key$ = CHR$(0) + CHR$(80) AND cursor < w THEN cursor = cursor + 1: IF cursor > down + 18 THEN down = down + 5: IF down > 82 THEN down = 82
IF key$ = CHR$(0) + CHR$(73) THEN down = down - 10: IF down < 1 THEN down = 1
IF key$ = CHR$(0) + CHR$(81) THEN down = down + 10: IF down > w THEN down = w
FOR a = 0 TO 18
COLOR pagedata%(down + a, 1), pagedata%(down + a, 2)
IF pagedata%(down + a, 3) > 0 THEN COLOR pagedata%(down + a, 1) + 16
IF down + a = cursor THEN COLOR 0, 6
LOCATE a + 4, 11: PRINT page$(down + a)
NEXT a
RETURN

menu:
key$ = ""
WHILE key$ <> CHR$(13) AND key$ <> "q"
IF key$ = CHR$(0) + CHR$(72) OR key$ = CHR$(0) + CHR$(80) OR key$ = CHR$(0) + CHR$(73) OR key$ = CHR$(0) + CHR$(81) THEN GOSUB displaypage
IF key$ = CHR$(0) + CHR$(75) THEN mchoice = mchoice - 1: IF mchoice = 0 THEN mchoice = 6
IF key$ = CHR$(0) + CHR$(77) THEN mchoice = mchoice + 1: IF mchoice = 7 THEN mchoice = 1
FOR a = 1 TO 6
IF (a = 1 AND pagedata%(cursor, 3) = 0) OR (a = 4 AND livepage = 1) OR (a = 5 AND livepage = hcount) THEN COLOR 8 ELSE COLOR 4
IF a = mchoice THEN COLOR , 2 ELSE COLOR , 0
LOCATE 3 + a * 2, 2: PRINT menu$(a)
NEXT a
key$ = INKEY$
WEND: IF key$ = "q" THEN END
SELECT CASE mchoice
CASE 1: IF pagedata%(cursor, 3) > 0 THEN url$ = links$(pagedata%(cursor, 3)): livepage = livepage + 1: hcount = hcount + 1: history$(hcount) = url$
CASE 3: GOSUB gotourl
CASE 4: IF livepage > 1 THEN livepage = livepage - 1: hcount = hcount + 1: history$(hcount) = url$: url$ = history$(livepage)
CASE 5: IF livepage < hcount THEN livepage = livepage + 1: url$ = history$(livepage)
END SELECT
RETURN

gotourl:
COLOR 7, 4: LOCATE 2, 11: PRINT STRING$(69, " ")
LOCATE 2, 11: INPUT " Goto:"; url$
IF url$ = "" THEN url$ = history$(1)
livepage = livepage + 1: hcount = hcount + 1: history$(hcount) = url$
RETURN

whichtag:
v1 = INSTR(a, html$, ">"): rawtag$ = MID$(html$, a + 1, v1 - a - 1): a = INSTR(a, html$, ">")
formatted = INSTR(rawtag$, " ")
IF formatted = 0 THEN minitag$ = rawtag$ ELSE minitag$ = LEFT$(rawtag$, INSTR(rawtag$, " ") - 1)
IF LEFT$(rawtag$, 1) = "/" THEN
SELECT CASE minitag$
CASE "/h1", "/h2", "/h3", "/h4", "/h5", "/h6", "/title": w = w + 1
END SELECT
ELSE
SELECT CASE minitag$
CASE "p", "center", "caption", "cite": w = w + 1: l = 6: nl = 1
CASE "a": lcount = lcount + 1: pagedata%(w, 3) = lcount
CASE "br": w = w + 1: l = nl
CASE "h1", "h2", "h3", "h4", "h5", "h6": w = w + 1: l = 10: nl = 10
CASE "li": w = w + 1: l = 7: nl = 7: MID$(page$(w), 5, 1) = "*"
CASE "hr": page$(w + 1) = STRING$(69, CHR$(196)): w = w + 1
CASE "i", "em", "b", "strong", "u", "blink"
CASE "tr": w = w + 1: l = 1: nl = 1
CASE "td", "th": MID$(page$(w), l, 1) = "|": l = l + 1: IF l > 69 THEN l = nl
CASE "pre": v3 = INSTR(a, html$, "</pre>"): FOR a = a + 1 TO v3 - 1
MID$(page$(w), l, 1) = MID$(html$, a, 1)
l = l + 1: IF l > 69 THEN w = w + 1: l = 1
NEXT a: a = a + 5
CASE ELSE
END SELECT
IF formatted > 0 THEN GOSUB formattag
END IF
RETURN


formattag: 'reads formatting in tags, like <h1 align=center>
format$ = RIGHT$(rawtag$, LEN(rawtag$) - INSTR(rawtag$, " "))
v2 = INSTR(format$, "=")
fp1$ = LEFT$(format$, v2 - 1): fp2$ = RIGHT$(format$, LEN(format$) - v2)
SELECT CASE fp1$
CASE "href": links$(lcount) = fp2$
CASE "color": color$ = fp2$: GOSUB colorizer: fc = c
CASE "bgcolor": color$ = fp2$: GOSUB colorizer: bc = c
CASE "center":
END SELECT 'PRINT format$: SLEEP
RETURN

ampersands:
v4 = INSTR(a, html$, ";"): v5$ = " "
SELECT CASE MID$(html$, a + 1, v4 - a - 1)
CASE "quot": v5$ = CHR$(34)
CASE "amp": v5$ = "&"
CASE "lt": v5$ = "<"
CASE "gt": v5$ = ">"
END SELECT
MID$(page$(w), l, 1) = v5$: a = v4
l = l + 1: IF l > 69 THEN w = w + 1: l = nl
RETURN

colorizer:
c = 0: IF LCASE$(LEFT$(color$, 8)) = "blinking" THEN color$ = RIGHT$(color$, LEN(color$) - 8): blinking = 1 ELSE blinking = 0
SELECT CASE LCASE$(color$)
CASE "black": c = 0
CASE "blue": c = 1
CASE "green": c = 2
CASE "cyan": c = 3
CASE "red": c = 4
CASE "magenta": c = 5
CASE "brown", "orange": c = 6
CASE "white": c = 7
CASE "grey", "gray": c = 8
CASE "lightblue": c = 9
CASE "lightgreen": c = 10
CASE "lightcyan": c = 11
CASE "lightred", "pink": c = 12
CASE "lightmagenta": c = 13
CASE "yellow": c = 14
CASE "brightwhite": c = 15
END SELECT
IF blinking = 1 THEN c = c + 16
RETURN

 
 Respond to this message   
 Copyright © 1999-2008 Network54. All rights reserved.   Terms of Use   Privacy Statement