Code archives/Networking/[maxgui] Max Browser

This code has been declared by its author to be Public Domain code.

Download source code

[maxgui] Max Browser by Beaker
(Posted 21 years ago)
This web browser code was originally written in B+ and was converted to Bmax to see how quickly it could be done. I was impressed with how easy it was. I think overall it works slightly better than the B+ version.

I haven't tested it on Mac/Linux, and would appreciate feedback from anyone who can test it on these platforms. I'm particularly interested to know how a links menu works, and if you ever get problems with other windows opening.
'MAX BROWSE by Beaker 2005

SuperStrict 

Global window:TGadget
Global html:TGadget


'SETUP WINDOW
window=CreateWindow( "Max Browse",0,0,800,600)
SetMinWindowSize window,200,0


'SETUP MENUS
Local filemenu:Tgadget = CreateMenu ("  &File  ",0,WindowMenu(window))
	Local openmenuitem:Tgadget = CreateMenu ("&Open...",1,filemenu)

CreateMenu ("",999,filemenu)
	Local exitmenuitem:Tgadget = CreateMenu ("E&xit",9,filemenu)

Local bookmenu:Tgadget = CreateMenu ("  &Bookmarks  ",0,WindowMenu(window))
	Local addbookmenuitem:Tgadget = CreateMenu ("&Add bookmark",21,bookmenu)
	Local organisebookmenuitem:Tgadget = CreateMenu ("&Organise bookmarks",22,bookmenu)
	DisableMenu organisebookmenuitem
	Local defaultmenuitem:Tgadget = CreateMenu ("Set as &default homepage",23,bookmenu)
	CreateMenu ("",999,bookmenu)

	
Local bookname$, bookURL$, bookfile:TStream
If FileType("bookmark.txt") <> 1	'Then create a bookmark file with Default bookmarks
	bookfile = WriteFile("bookmark.txt")
	RestoreData bookdata
	ReadData bookname$
	ReadData bookURL$
	While bookname$ <> "END"
		WriteLine bookfile,bookname$
		WriteLine bookfile,bookURL$
		ReadData bookname$
		ReadData bookURL
	Wend
	CloseFile bookfile
EndIf

'read the bookmarks into the bookmark menu
Global bookf:Int=500
bookfile = ReadFile("bookmark.txt")
While Not Eof(bookfile)
	bookname$ = ReadLine(bookfile)
	bookURL$ = ReadLine(bookfile)
	If bookURL<>""
		CreateMenu (bookname,bookf,bookmenu)
		bookf = bookf +1
	EndIf
Wend
CloseFile bookfile
CreateMenu ("",999,bookmenu)

Local helpmenu:Tgadget = CreateMenu("  &Help  ",0,WindowMenu(window))
Local aboutmenu:Tgadget = CreateMenu("&About",1000,helpmenu)

UpdateWindowMenu window


If FileType("default.txt") <> 1	'Then create the default.txt file with the Default homepage
	Local deffile:TStream = WriteFile("default.txt")
		WriteLine deffile,"http://www.blitzbasic.com"
	CloseFile deffile
EndIf

Local deffile:TStream = ReadFile("default.txt")
	Global defURL$ = ReadLine (deffile)
CloseFile deffile




'SETUP BUTTONS
Local panel:Tgadget = CreatePanel (0,0,800,40,window,0)
	SetGadgetLayout panel,1,0,1,0
	Local backbutt:TGadget = CreateButton ("Back",5,5,60,30,panel)
	Local forebutt:TGadget = CreateButton ("Forward",70,5,60,30,panel)
	Local refreshbutt:TGadget = CreateButton ("Refresh",135,5,60,30,panel)
	Local homebutt:TGadget = CreateButton ("Home",200,5,60,30,panel)
	Global URLfield:TGadget = CreateTextField (265,10,350,20,panel)
	Local URLgo:TGadget = CreateButton ("GO!",620,10,60,20,panel,BUTTON_OK)

	

'SETUP HTML VIEW
html:Tgadget=CreateHTMLView( 0,45,ClientWidth(window),ClientHeight(window)-50,window, HTMLVIEW_NONAVIGATE )
SetGadgetLayout html,1,1,1,1


Global current$
GoURL(defURL)

Local localURL$,found:Int,url$

'MAIN LOOP
While WaitEvent()
	Print EventData()
	Select EventID()
		Case EVENT_GADGETDONE	'page loaded
			If EventSource() = html
				SetGadgetText URLfield,HtmlViewCurrentURL(html)			
			EndIf
		Case EVENT_MENUACTION	'MENU EVENTS
			Select EventData()
				Case 1	'Open Local File
					DebugLog "OPEN LOCAL"
					localURL$ = RequestFile("Open local file","Web files - *.htm,html,jpg,gif,png:htm,html,jpg,gif,png;All files:*")
					If FileType (localURL) = 1
						GoURL(localURL)
					EndIf
				Case 9	'Close program
					End
				Case 21	'Add bookmark
					bookfile = OpenFile("bookmark.txt")
					found = False
					While Not Eof(bookfile)
						bookname = ReadLine(bookfile)
						bookURL = ReadLine(bookfile)
						If bookURL = current
							Notify "URL already in bookmarks"
							found = True
							Exit
						EndIf
					Wend
					If found = False
						WriteLine bookfile,current
						WriteLine bookfile,current
						CreateMenu (current,bookf,bookmenu)
						bookf = bookf +1
						UpdateWindowMenu window
					EndIf
					CloseFile bookfile
				Case 23	'Set as Default homepage
					deffile = WriteFile("default.txt")
						WriteLine deffile,current$
					CloseFile deffile
				Case 1000	'About
					Notify "Max Browse by Beaker 2005"+Chr(13)+"(bookmarks are in the bookmark.txt file)"
			End Select
			If EventData() >= 500	'Jump To a specific bookmark
				Local f:Int = 0
				bookfile = ReadFile("bookmark.txt")
				While Not Eof(bookfile)
					bookname$ = ReadLine (bookfile)
					bookURL = ReadLine (bookfile)
					If f = EventData()-500 Then
						GoURL(bookURL)
						Exit
					EndIf
					f = f +1
				Wend
			EndIf	
		Case EVENT_GADGETACTION	'BUTTON EVENTS
			Select EventSource()
				Case html	' Catch clicking on URL links
					goURL String(EventExtra())
				Case backbutt
						HtmlViewBack html
				Case forebutt
						HtmlViewForward html
				Case refreshbutt
						GoURL(HtmlViewCurrentURL(html))
				Case homebutt
					deffile = ReadFile("default.txt")
						GoURL(ReadLine (deffile))
					CloseFile deffile
				Case URLgo
					GoURL(TextFieldText(URLfield))					
			End Select
					
		Case EVENT_WINDOWCLOSE	'WINDOW CLOSED EVENT
			Select EventSource()
				Case window
					End
			End Select
				
	End Select
	

Wend
End



Function GoURL(URL$)
	current = URL$
	SetGadgetText URLfield,current
	DebugLog current
	HtmlViewGo html,current
	SetGadgetText window,"Max Browse - "+current
End Function




#bookdata
DefData "Blitz Basic"
	DefData "http://www.blitzbasic.com"
DefData "gile[s] lightmapper"
	DefData "http://www.frecle.net/giles/"
DefData "GUIde GUI editor"
	DefData "http://members.home.nl/wdw/guide/"
DefData "Game Making Tools forum"
	DefData "http://playerfactory.proboards25.com"
DefData "END"
	DefData "END"