New PIE Browser

Share your advanced PureBasic knowledge/code with the community.
BackupUser
PureBasic Guru
PureBasic Guru
Posts: 16777133
Joined: Tue Apr 22, 2003 7:42 pm

New PIE Browser

Post by BackupUser »

Code updated for 5.20+

Restored from previous forum. Originally posted by naw.
Hi Naw, nice work.
This is so cool that it normally must be under Tips&Tricks instead of Beginners...
BTW your line:
WID=OpenWindow(1, 0, 0, GetSystemMetrics_(#SM_CXSCREEN), GetSystemMetrics_(#SM_CYSCREEN), #PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget, "pIE - Panelled Internet Explorer")
has a bad result, because the Window is BIGGER (X and Y) than my Desktop.
You probably overlooked that the SIZE in OpenWindow is the Client Area not the overall Window dimension.

Franco
Hi, This is an update + repost of my PIE Browser. Fixed a couple of minor things. made the buttons less cryptic. Put in some nice & simple Window & Gadget Resizing stuff that I
think takes into account Franco's comments. Still using Mr Skunks INI stuff - 'cos Preferences Lib dont work the way I need them to / I'm too thick to understand how to use them properly :wink:

Cant think of anything else useful to do with this now - any ideas, anyone?

------

Code: Select all

Declare GoToUrl(pid)

Procedure Alert(text.s)
  MessageRequester("Alert",text.s,0)
EndProcedure


PIE = 100
URL = 200
NAME = 300
GO = 400
BACK =500
FWD = 600
FAV = 700
STOP = 800
REF = 900
WID = 1000


Procedure BuildGui()
  
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF, WID
  
  WID=OpenWindow(1, 0, 0, GetSystemMetrics_(#SM_CXSCREEN)/2, GetSystemMetrics_(#SM_CYSCREEN)/2, "pIE - Panelled Internet Explorer", #PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
  
  goImageId=LoadImage(1,".\go.bmp")
  backImageId=LoadImage(2,".\back.bmp")
  fwdImageId=LoadImage(3,".\fwd.bmp")
  
  TrackBarGadget(1,112,2,WindowWidth(1)-120,16,0,100,#PB_TrackBar_Ticks)
  ButtonGadget(2,8,2,32,18,"Pref")
  ButtonGadget(3,40,2,32,18,"Next")
  ButtonGadget(4,78,2,32,18,"Help")
  PanelGadget(0,0,24,WindowWidth(1)+2,WindowHeight(1)-20)
  BtnX=360 : BtnW=32
  ;INIFilename(".\pie.ini")
  For x = 1 To 10
    defaultUrl$="javascript:document.write('-unused-'); document.close()"
    defaultUrl$="about:blank"
    ;inisection$="Panel"+Str(x) : INISection(inisection$)
    ;If (ReadINIString("HOME","")="")
    ;  WriteINIString("HOME",defaultUrl$)
    ;  WriteINIString("NAME",inisection$)
    ;  If (x=99) : Alert("Initial Startup - Created Blank "+INI$+"Config File"+Chr(13)+Chr(13)+"Please Restart") :
    ; If (URLDownloadToFile_(0,"http://w3.nottingham.uk.ibm.com/PIEreg/newuser.html","C:\pieReg.html",0,0))
    ; Alert("Registered!")
    ; Else : alert("Failed To register")
    ; EndIf
    ;  EndIf
    ;Else
    ;  homeUrl$=ReadINIString("HOME","")
    ;  pieName$=ReadINIString("NAME","Panel"+Str(x))
    ;EndIf
    AddGadgetItem(0,-1,pieName$)
    TextGadget(98,BtnW*4+5,7,BtnW*2,18,"URL")
    StringGadget(URL+x, BtnW*5, 5, 300, 18, homeUrl$)
    defaultUrl$=GetGadgetText(URL+x)
    WebGadget(PIE+x,2,30,WindowWidth(1),WindowHeight(1)-20,defaultUrl$)
    ; TrackBarGadget(300+x,360,5,400,20,0,100,PB_TrackBar_Ticks)
    ; ButtonImageGadget(500+x,800,5,20,18,goImageId) : ButtonImageGadget(500+x,822,5,20,18,backImageId) : ButtonImageGadget(500+x,844,5,20,18,fwdImageId)
    ButtonGadget(GO+x,BtnX+(BtnW*3),5,30,18,"Save")
    ButtonGadget(BACK+x,BtnX+(BtnW*5),5,BtnW,18,"Back")
    ButtonGadget(FWD+x,BtnX+(BtnW*6),5,BtnW,18,"Next")
    ; ButtonGadget(FAV+x,BtnX+(BtnW*5),5,20,18,":-)")
    ButtonGadget(STOP+x,BtnX+(BtnW*9),5,BtnW,18,"Stop")
    ButtonGadget(REF+x,BtnX+(BtnW*7),5,BtnW+10,18,"Refresh")
    StringGadget(NAME+x,30,5,BtnW*3+5,18,pieName$)
    TextGadget(99,6,7,20,18,"Title")
    ; ButtonGadget(5,BtnW*14),5,20,18,"?")
  Next
EndProcedure

Procedure ListFavourites(pid)
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF
  ; SetGadgetText(URL+pid,"file://C:\Documents and Settings\gb071577\Favourites")
  SetGadgetText(URL+pid,"file://C:")
  GoToUrl(pid)
EndProcedure

;Procedure GoToNAME(pid)
;Shared PIE, URL, GO, BACK, FWD, FAV, STOP, REF, NAME
;Alert("NAMEor For"+Str(pid))
;EndProcedure

Procedure GoToUrl(pid)
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF
  SetGadgetText(PIE+pid,GetGadgetText(URL+pid))
  inisection$="Panel"+Str(pid)
  SetWindowText_(WID,"PIE: "+inisection$+" - "+GetGadgetText(URL+pid))
  ;INISection(inisection$)
  ;INIFilename(".\pie.ini")
  ;WriteINIString("HOME",GetGadgetText(URL+pid))
  ;WriteINIString("NAME",GetGadgetText(NAME+pid))
EndProcedure

Procedure BackHistory(pid)
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF
  SetGadgetState(PIE+pid,#PB_Web_Back)
EndProcedure

Procedure FwdHistory(pid)
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF
  SetGadgetState(PIE+pid,#PB_Web_Forward)
EndProcedure

Procedure StopUrl(pid)
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF
  SetGadgetState(PIE+pid,#PB_Web_Stop)
EndProcedure

Procedure RefUrl(pid)
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF
  SetGadgetState(PIE+pid,#PB_Web_Refresh)
EndProcedure

Procedure HelpMsg()
  Alert("PIE browser (Panelled Internet Explorer :wink: v1.01 June 12 2002 "+Chr(13)+Chr(13)+"Nigel Wale ([url]mailto:walen@hursley.ibm.com[/url]) - Use at your own risk!"+Chr(13)+Chr(13)+"creates a pie.ini file on startup that stores default HOME URL and TITLE for each Panel & updated each time you hit the 'GO' Button"+Chr(13)+Chr(13)+"Use the Slider & '' Buttons at the top to navigate quickly between Panels (99 max) which auto load on startup..."+Chr(13)+Chr(13)+" - have fun using it...")
EndProcedure

Procedure ResizeGadgets()
  Shared PIE, URL, NAME, GO, BACK, FWD, FAV, STOP, REF, WINW, WINH
  WINW=WindowWidth(1) : WINH=WindowHeight(1)
  REPCTR=REPCTR+1
  If (REPCTR <> WindowHeight(1) Or WINW <> WindowWidth(1)) : ResizeGadgets() : EndIf
EndProcedure  


BuildGui()

Repeat
  eventId=WaitWindowEvent()
  Select eventId
      ; Case #PB_EventSizeWindow : Alert("Resizing")
      ; Case #PB_EventRepaint : If (WINH WindowHeight() Or WINW WindowWidth()) : ResizeGadgets() : EndIf
    Case #PB_Event_CloseWindow : QUIT=MessageRequester("Confirm","Really, Really Quit",1)
    Case #PB_Event_Menu 
      If MainDebug <> 0 : Alert("FYI: Menu Item "+Str(EventMenu())+" Not Implemented") : EndIf
    Case #PB_Event_Gadget
      ; If (EventGadgetID()>NAME And EventGadgetID()GO And EventGadgetID()BACK And EventGadgetID()FWD And EventGadgetID()FAV And EventGadgetID()STOP And EventGadgetID()REF And EventGadgetID() RefUrl(EventGadgetID()-REF)
      ; EndIf
      Select EventGadget()
        Case 1 : SetGadgetState(0,(GetGadgetState(1)))
        Case 2 : SetGadgetState(1,GetGadgetState(1)-1) : SetGadgetState(0,(GetGadgetState(1)))
        Case 3 : SetGadgetState(1,GetGadgetState(1)+1) : SetGadgetState(0,(GetGadgetState(1)))
        Case 4 : HelpMsg()
          ;Default : Alert("FYI: Gadget "+Str(EventGadgetID())+" Not Implemented")
      EndSelect
  EndSelect
  
Until QUIT=1