home *** CD-ROM | disk | FTP | other *** search
- /*
- *
- * A good RxMUI programming example.
- * A good RxMUI HTML documentation browser.
- *
- */
-
- signal on halt
- signal on break_c
-
- call StartInit()
- call StartCreateApp()
- call ReadNav("PROGDIR:navigator.html")
- call FinishInit()
- call FinishCreateApp()
- call AdvanceIntro("Loading docs...")
- call set("mwin","Open",1)
- if ~xget("mwin","Open") then do
- call EasyRequest("Can't open window")
- exit
- end
- call AdvanceIntro("Done.")
- call Dispose("iwin")
- call HandleApp
-
- /* never reached */
-
- /***********************************************************************/
- StartInit: procedure expose global.
- l="rmh.library";if ~show("L",l) then;if ~AddLib(l,0,-30) then exit
- if AddLibrary("rxmui.library")~=0 then exit
- call RxMUIOpt("DebugMode ShowErr")
- call pragma(w,n)
- call ProgDir()
- return
- /***********************************************************************/
- FinishInit: procedure expose global.
- call AdvanceIntro("Initializing...")
-
- global.history.0.target="right"
- global.history.0.pred=-1
- global.history.0.succ=-1
- global.history.current=0
- global.history.max=1
-
- global.Gadgets.0="imdir"; global.Gadgets.0.Attr="Contents"
- global.Gadgets.1="vm"; global.Gadgets.1.Attr="active"
- global.Gadgets.2="spc"; global.Gadgets.2.Attr="value"
- global.Gadgets.3="bl"; global.Gadgets.3.Attr="Selected"
- global.Gadgets.4="rf"; global.Gadgets.4.Attr="Selected"
- global.Gadgets.5="si"; global.Gadgets.5.Attr="Selected"
- global.Gadgets.6="sn"; global.Gadgets.6.Attr="Selected"
-
- global.Configwin=0
-
- call ReadConfig()
-
- global.file=AddPart("file://PROGDIR:","introduction.html")
- global.history.0.url="introduction.html"
-
- global.DummySpace=HSpace()
-
- return
- /**************************************************************************/
- ReadConfig: procedure expose global.
-
- call AdvanceIntro("Reading configuration...")
- global.BorderLess=1
- if GetToolType("DocsBrowser","BORDERLESS","BR",global.BorderLess) then
- if DataType(br,"N") then
- if br=0 | br=1 then global.BorderLess=br
-
- global.RaisingFrame=1
- if GetToolType("DocsBrowser","RAISINGFRAME","rf",global.RaisingFrame) then
- if DataType(rf,"N") then
- if rf=0 | rf=1 then global.RaisingFrame=rf
-
- global.SmallImages=0
- if GetToolType("DocsBrowser","SMALLIMAGES","si",global.SmallImages) then
- if DataType(si,"N") then
- if si=0 | si=1 then global.SmallImages=si
-
- global.Sunny=0
- if GetToolType("DocsBrowser","SUNNY","sn",global.Sunny) then
- if DataType(sn,"N") then
- if su=0 | su=1 then global.Sunny=sn
-
- global.ViewMode="GFX"
- if GetToolType("DocsBrowser","VIEWMODE","VM",global.ViewMode) then do
- vm=find("TEXTGFX GFX TEXT",vm)
- if vm>0 then global.ViewMode=vm-1
- end
- else global.ViewMode=1
-
- call GetToolType("DocsBrowser","IMAGESDIR","GLOBAL.IMAGESDIR","Images")
-
- global.Spacing=0
- if GetToolType("DocsBrowser","SPACING","SP",global.Spacing) then
- if DataType(su,"N") then
- if su>-1 & su<16 then global.Spacing=sp
-
- return
- /**************************************************************************/
- UseConfig: procedure expose global.
-
- call set("mwin","Sleep",1)
-
- call DoMethod("DummyBarG","InitChanges")
- call Dispose("sb")
-
- call MultiGetAttr("global.Gadgets")
-
- global.ImagesDir=global.Gadgets.0.Value
- global.ViewMode=global.Gadgets.1.Value
- global.Spacing=global.Gadgets.2.Value
- global.BorderLess=global.Gadgets.3.Value
- global.RaisingFrame=global.Gadgets.4.Value
- global.SmallImages=global.Gadgets.5.Value
- global.Sunny=global.Gadgets.6.Value
-
- bar=CreateBar("sb",global.ImagesDir,global.Spacing,global.ViewMode,global.BorderLess,global.RaisingFrame,global.SmallImages,global.Sunny,0)
-
- call SetBarNotifies()
- call SetBarGadgets()
-
- call Add("DummyBarG",bar)
- call DoMethod("DummyBarG","ExitChanges")
-
- call set("mwin","Sleep",0)
-
- return
- /**************************************************************************/
- SaveConfig: procedure expose global.
- call set("app","Sleep",1)
- call info("Saving preferences...")
- call UseConfig()
- call PutToolType("DocsBrowser","IMAGESDIR",global.ImagesDir)
- call PutToolType("DocsBrowser","VIEWMODE",word("TEXTGFX GFX TEXT",global.ViewMode+1))
- call PutToolType("DocsBrowser","SPACING",global.Spacing)
- call PutToolType("DocsBrowser","BORDERLESS",global.BorderLess)
- call PutToolType("DocsBrowser","RAISINGFRAME",global.RaisingFrame)
- call PutToolType("DocsBrowser","SMALLIMAGES",global.SmallImages)
- call PutToolType("DocsBrowser","SUNNY",global.Sunny)
- call info("")
- call set("app","Sleep",0)
- return
- /**************************************************************************/
- StartCreateApp: procedure expose global.
-
- strip.0="mproject"
- mproject.Title="Project"
- mproject.class="menu"
- mproject.0=MenuItem("mabout","About...","?")
- mproject.1=MenuItem("maboutrxmui","About RxMUI...")
- mproject.2=MenuItem("maboutmui","About MUI...")
- mproject.3=MenuItem("","BAR")
- mproject.4=MenuItem("mhide","Hide","H")
- mproject.5=MenuItem("","BAR")
- mproject.6=MenuItem("mquit","Quit","Q")
- strip.1="meditor"
- meditor.Title="Preferences"
- meditor.class="menu"
- meditor.0=MenuItem("mfull","Full screen","F","CHEKIT TOGGLE")
- meditor.1=MenuItem("","BAR")
- meditor.2=MenuItem("mdocs","DocsBrowser...","D")
- meditor.3=MenuItem("mmui","MUI...","M")
- res=NewObj("menustrip","strip")
- if res~=0 then call err(res)
-
- app.Title="RxMUI docs browser"
- app.Version="$" || "VER: DocsBrowser 6.7 (24.5.2001)"
- app.Copyright="Copyright 1999-2001 Alfonso Ranieri"
- app.Author="Alfonso Ranieri"
- app.Description="RxMUI documentation browser."
- app.Base="DOCSBROWSER"
- app.DiskObject="docs"
- app.MenuStrip="strip"
- app.SubWindow="iwin"
-
- iwin.BorderLess=1
- iwin.CloseGadget=0
- iwin.DepthGadget=0
- iwin.DragBar=0
- iwin.NoMenus=1
- iwin.SizeGadget=0
- iwin.Width=-200-25
- iwin.Activate=0
- iwin.Contents="igroup"
-
- igroup.Frame="inputlist"
- igroup.0="ititle"
- ititle.Class="text"
- ititle.Font="Big"
- ititle.Contents=ParseText("%c%bRxMUI documentation")
- igroup.1=hbar()
- igroup.2=vspace(2)
- igroup.3="intro"
- intro.Class="gauge"
- intro.Horiz=1
- intro.Max=5
- intro.Current=0
-
- res=NewObj("application","app")
- if res~=0 then do
- call EasyRequest("Can't create Application")
- exit
- end
- return
- /**************************************************************************/
- FinishCreateApp: procedure expose global.
-
- call AdvanceIntro("Creating main window...")
- call set("iwin","Open",1)
-
- mHContext.0="mhc"
- mhc.Title=""
- mhc.class="menu"
- do i=0 to global.href.num-1
- mhc.i=MenuItem("mhc."i,global.href.i.name)
- end
- res=NewObj("menustrip","mHContext")
- if res~=0 then call err(res)
-
- mwin.ID="MWIN"
- mwin.Title="RxMUI DocsBrowser"
- mwin.UseBottomBorderScroller=1
- mwin.UseRightBorderScroller=1
- mwin.Contents="mgroup"
-
- mgroup.0="hg"
- hg.Class="group"
- hg.Spacing=2
- hg.Horiz=1
-
- hg.0="navg"
- navg.class="group"
- navg.weight=0
- navg.0="BarGroup"
- BarGroup.Class="group"
- BarGroup.horiz=1
- BarGroup.0="bg"
- bg.Class="group"
- bg.Horiz=1
- bg.0=HSpace()
- bg.1="DummyBarG"
- DummyBarG.Class="group"
- DummyBarG.Spacing=0
- DummyBarG.0=CreateBar("sb",global.ImagesDir,global.Spacing,global.ViewMode,global.BorderLess,global.RaisingFrame,global.SmallImages,global.Sunny,0)
- bg.2=HSpace()
-
- navg.1="index"
- index.class="register"
- index.frame="readlist"
- index.background="groupback"
- index.titles="Index|Search"
- index.0="htmlNav"
- htmlNav.Class="htmlview"
- htmlNav.NoContextMenu=1
- htmlNav.NTAutoLoad=1
- index.1="sg"
- sg.class="group"
- sg.frame="group"
- sg.background="groupback"
- sg.0="sg1"
- sg1.Class="group"
- sg1.Horiz=1
- sg1.0=Label("Searc_h")
- sg1.1=String("search","h")
- sg.1="sg2"
- sg2.Class="group"
- sg2.Horiz=1
- sg2.0=Button("pred","_Pred")
- sg2.1=Button("succ","_Succ")
-
- hg.1="doc"
- doc.class="scrollgroup"
- doc.UseWinBorder=1
- doc.virtgroupcontents="html"
- html.Class="htmlview"
- html.NoContextMenu=1
- html.NTAutoLoad=1
- html.frame="string"
-
- mgroup.1=text("info")
-
- res=NewObj("window","mwin")
- if res~=0 then do
- call EasyRequest("Can't create main window")
- exit
- end
- call Add("app","mwin")
-
- call AdvanceIntro("Setting up ...")
-
- call Notify("mwin","closerequest",1,"app","ReturnID","quit")
-
- call Notify("mwin","InputEvent","ramiga b","app","Return","call GoURL('BACK')")
- call Notify("mwin","InputEvent","ramiga n","app","Return","call GoURL('FORWARD')")
- call Notify("mwin","InputEvent","ramiga r","html","Reload")
-
- call Notify("mabout","MenuTrigger","EveryTime","app","About","mwin")
- call Notify("maboutrxmui","MenuTrigger","EveryTime","app","AboutRXMUI","mwin")
- call Notify("maboutmui","MenuTrigger","EveryTime","app","AboutMUI","mwin")
- call Notify("mhide","MenuTrigger","EveryTime","app","Set","Iconified",1)
- call Notify("mquit","MenuTrigger","EveryTime","app","ReturnID","QUIT")
- call notify("mfull","Checked","everytime",hg.0,"set","ShowMe","nottriggervalue")
- call notify("mfull","Checked","everytime",mgroup.1,"set","ShowMe","nottriggervalue")
- call Notify("mdocs","MenuTrigger","EveryTime","app","Return","call OpenConfigWindow()")
- call Notify("mmui","MenuTrigger","EveryTime","app","OpenConfigWindow")
-
- call SetBarNotifies()
-
- call Notify("html","Title","EveryTime","mwin","Set","title","TriggerValue")
- call Notify("html","ClickedURL","EveryTime","app","Return","call NewURLFun(h.clickedurl)","triggerattr")
- call Notify("html","CurrentURL","EveryTime","info","Set","Contents","TriggerValue")
-
- call set("mwin","DefaultObject","html")
-
- call DoMethod("html","GoURL",global.file)
-
- call SetBarGadgets()
-
- call Notify("search","NewContents","EveryTime","app","Return","call SearchFun('SEARCHTOP ')")
- call Notify("pred","Pressed",0,"app","Return","call SearchFun('SEARCHBACK')")
- call Notify("succ","Pressed",0,"app","Return","call SearchFun('SEARCHNEXT')")
-
- call Notify("htmlNav","ClickedURL","EveryTime","app","Return","call NewURLFun(filepart(h.clickedurl))","triggerattr")
-
- call DoMethod("htmlNav","GoURL","navigator.html")
-
- do i=0 to global.href.num-1
- call Notify("mhc."i,"menutrigger","everytime","app","Return","call NewURLFun("global.href.i")")
- end
-
- call set("mgroup","ContextMenu","mHContext")
-
- return
- /***********************************************************************/
- CreateBar: procedure expose global.
- parse arg name,dir,sp,vm,bl,rf,si,su,rec
-
- bar.Spacing=sp
- bar.Spread=(sp>0)
- bar.Horiz=1
- bar.SameHeight=1
- bar.SameWidth=1
-
- if rec then bar.ViewMode=2
- else bar.ViewMode=vm
- bar.Borderless=bl
- bar.RaisingFrame=rf
- bar.SmallImages=si
- bar.Sunny=su
-
- im=(~rec & vm~=2)
-
- if im then bar.0.Img=AddPart(dir,"Back")
- bar.0.Text="Back"
-
- if im then bar.1.Img=AddPart(dir,"Forward")
- bar.1.Text="Forward"
-
- if im then bar.2.Img=AddPart(dir,"Reload")
- bar.2.Text="Reload"
-
- if im then bar.3.Img=AddPart(dir,"Stop")
- bar.3.Text="Stop"
-
- call RxMUIOpt("")
- res=NewObj("speedbar",name,"bar")
- call RxMUIOpt("DebugMode ShowErr")
-
- global.textforced=rec
-
- if res~=0 then
- if im & ~rec then do
- return CreateBar(name,dir,sp,2,bl,rf,si,su,1)
- end
- else do
- call EasyRequest("Can't create Speedbar")
- exit
- end
-
- return name
- /**************************************************************************/
- SetBarNotifies: procedure expose global.
- call Notify("sb.0","Pressed",0,"app","Return","call GoURL('BACK')")
- call Notify("sb.1","Pressed",0,"app","Return","call GoURL('FORWARD')")
- call Notify("sb.2","Pressed",0,"html","Reload")
- call Notify("sb.3","Pressed",0,"html","Abort")
- return
- /**************************************************************************/
- info: procedure expose global.
- parse arg msg
- call set("info","Contents",msg)
- return
- /**************************************************************************/
- SetBarGadgets: procedure expose global.
- c=global.history.current
- call DoMethod("sb","sbset",0,"Disabled",global.history.c.pred==-1)
- call DoMethod("sb","sbset",1,"Disabled",global.history.c.succ==-1)
- return
- /**************************************************************************/
- halt:
- break_c:
- exit
- /**************************************************************************/
- HandleApp: procedure expose global.
- ctrl_c=2**12
- do forever
- call NewHandle("app","h",ctrl_c)
- if and(h.signals,ctrl_c)>0 then exit
- select
- when h.event="QUIT" then exit
- otherwise interpret h.event
- end
- end
- /* never reached */
- /***********************************************************************/
- GoURL: procedure expose global.
- parse arg method,nurl,ntarget
-
- select
- when upper(left(nurl,12))="AREXXSCRIPT:" then do
- parse var nurl +12 cmd
- INTERPRET cmd
- return
- end
-
- when (upper(left(nurl,7))="HTTP://") |,
- (upper(left(nurl,6))="FTP://") |,
- (upper(left(nurl,7))="MAILTO:") then do
- call OpenURL(nurl)
- return
- end
-
- otherwise
- select
-
- when method="NEWURL" then do
- i=global.history.current
- m=global.history.max
-
- global.history.m.url=nurl
- global.history.m.target=ntarget
- global.history.m.pred=i
- global.history.m.succ=-1
-
- global.history.i.succ=m
- global.history.current=m
- global.history.max=m+1
-
- call DoMethod("html","GoURL",nurl,ntarget)
- end
-
- when method="BACK" then do
- i=global.history.current
- if global.history.i.pred>-1 then do
- i=global.history.i.pred
- call DoMethod("html","GoURL",global.history.i.url,global.history.i.target)
- global.history.current=i
- end
- end
-
- when method="FORWARD" then do
- i=global.history.current
- if global.history.i.succ>-1 then do
- i=global.history.i.succ
- call DoMethod("html","GoURL",global.history.i.url,global.history.i.target)
- global.history.current=i
- end
- end
- end
- end
-
- call SetBarGadgets()
-
- return
- /***********************************************************************/
- SearchFun: procedure expose global.
- parse arg mode
- call GetAttr("search","Contents","string")
- if string~="" then call DoMethod("html","search",string,right(mode,4))
- return
- /**************************************************************************/
- NewURLFun: procedure expose global.
- parse arg clicked
- i=global.history.current
- if upper(global.history.i.url)=upper(clicked) then return
- call GetAttr("html","target","ntarget")
- call GoURL("NEWURL",clicked,ntarget)
- return
- /**************************************************************************/
- OpenConfigWindow: procedure expose global.
-
- if ~global.ConfigWin then do
-
- call set("app","Sleep",1)
- call info("Creating preferences window...")
-
- cwin.ID="CWIN"
- cwin.Title="DocsBrowser Preferences"
- cwin.Contents="cmgroup"
-
- cmgroup.0="chg"
- chg.Class="group"
- chg.Horiz=1
-
- chg.0="lister"
- lister.Class="listview"
- lister.Weight=0
- lister.List="list"
- list.Class="listtree"
- list.Frame="inputlist"
- list.0="Bar"
-
- chg.1="pager"
- pager.Class="group"
- pager.PageMode=1
- pager.Frame="readlist"
-
- BarPage.Class="group"
- BarPage.0="cbg"
- cbg.Class="group"
- cbg.Horiz=1
- cbg.0=hspace()
- cbg.1="CDummyBarG"
- CDummyBarG.Class="group"
- CDummyBarG.Spacing=0
- CDummyBarG.0="csb"
- csb.class="rectangle"
- cbg.2=HSpace()
- BarPage.1=HBar()
- BarPage.2="cidg"
- cidg.Class="group"
- cidg.Horiz=1
- cidg.0=Label("_Images")
- cidg.1="popd"
- popd.Class="popasl"
- popd.String=string("imdir",'i')
- popd.DrawersOnly=1
- BarPage.3="cscg"
- cscg.Class="group"
- cscg.Columns=4
- cscg.0=Label("_BorderLess")
- cscg.1=CheckMark("bl",,'b')
- cscg.2=Label("_RaisingFrame")
- cscg.3=CheckMark("rf",,'r')
- cscg.4=Label("S_mallImages")
- cscg.5=CheckMark("si",,'m')
- cscg.6=Label("Sunn_y")
- cscg.7=CheckMark("sn",,'y')
- cscg.8=Label("Spacing")
- cscg.9="spc"
- spc.Class="numericbutton"
- spc.Min=0
- spc.Max=15
- cscg.10=HSpace()
- cscg.11=HSpace()
- BarPage.4="vm"
- vm.Class="cycle"
- vm.Entries="TextGfx|Gfx|Text"
- pager.0=MakeObj(,"VCenter","BarPage")
-
- cmgroup.1="cbug"
- cbug.Class="group"
- cbug.Horiz=1
- cbug.0=Button("csave","_Save")
- cbug.1=Button("cuse","_Use")
- cbug.2=Button("ccancel","_Cancel")
-
- res=NewObj("window","cwin")
- if res~=0 then exit
-
- call Add("app","cwin")
-
- call Notify("cwin","CloseRequest",1,"cwin","Set","Open",0)
-
- call Notify("imdir","NewContents","EveryTime","app","Return","call CBarChanged()")
- call Notify("spc","Value","EveryTime","app","Return","call CBarChanged()")
- call Notify("vm","Active","everytime","app","Return","call CBarChanged()")
-
- call Notify("cuse","Pressed",0,"app","Return","call UseConfig()")
- call Notify("cuse","Pressed",0,"cwin","Set","Open",0)
- call Notify("csave","Pressed",0,"app","Return","call SaveConfig()")
- call Notify("csave","Pressed",0,"cwin","Set","Open",0)
- call Notify("ccancel","Pressed",0,"cwin","Set","Open",0)
-
- call info("")
- call set("app","Sleep",0)
-
- call set("list","ActiveID",1)
-
- global.Configwin=1
- end
-
- global.Gadgets.0.value=global.ImagesDir
- global.Gadgets.1.value=global.viewmode
- global.Gadgets.2.value=global.Spacing
- global.Gadgets.3.value=global.BorderLess
- global.Gadgets.4.value=global.RaisingFrame
- global.Gadgets.5.value=global.SmallImages
- global.Gadgets.6.value=global.Sunny
- call MultiSetAttr("global.Gadgets",1)
-
- call CBarChanged()
-
- call set("cwin","Open",1)
- call GetAttr("cwin","Open","O")
- if ~o then exit
-
- return
- /**************************************************************************/
- ViewModeChanged: procedure expose global.
- parse arg vm
- call CBarChanged()
- return
- call DoMethod("CDummyBarG","InitChanges")
- call set("csb","viewmode",vm)
- call DoMethod("CDummyBarG","ExitChanges")
- return
- /**************************************************************************/
- SetCBarNotifies: procedure expose global.
- call Notify("bl","Selected","EveryTime","csb","Set","BorderLess","TriggerValue")
- call Notify("rf","Selected","EveryTime","csb","Set","RaisingFrame","TriggerValue")
- call Notify("si","Selected","EveryTime","csb","Set","SmallImages","TriggerValue")
- call Notify("sn","Selected","EveryTime","csb","Set","Sunny","TriggerValue")
- return
- /**************************************************************************/
- CBarChanged: procedure expose global.
-
- call set("cwin","Sleep",1)
-
- call DoMethod("CDummyBarG","InitChanges")
- call Dispose("csb")
-
- call MultiGetAttr("global.Gadgets")
-
- bar=CreateBar("csb",global.Gadgets.0.Value,global.Gadgets.2.Value,global.Gadgets.1.Value,global.Gadgets.3.Value,global.Gadgets.4.Value,global.Gadgets.5.Value,global.Gadgets.6.Value,0)
-
- call set("vm","disabled",global.textforced)
-
- call SetCBarNotifies()
-
- call Add("CDummyBarG",bar)
- call DoMethod("CDummyBarG","ExitChanges")
-
- call set("cwin","Sleep",0)
-
- return
- /**************************************************************************/
- AdvanceIntro: procedure
- parse arg msg
- call getattr("intro","current","c")
- set.Current=c+1
- set.InfoText=msg
- call SetAttrs("intro","set")
- return
- /**************************************************************************/
- MakeHRef: procedure expose global.
- parse arg name,con
- t.Contents=con
- t.InputMode="immediate"
- t.preparse=parsetext("%r")
- t.showselstate=0
- t.font="button"
- return xnewobj("text",name,"t")
- /**************************************************************************/
- ReadNav: procedure expose global.
- parse arg file
- call open(in,file,r)
- i=0
- do while ~eof(in)
- l=readln(in)
- if l="" then iterate
- parse var l "<a href=" h ">" n "</a>"
- if h~="" then do
- global.href.i=h
- global.href.i.name=n
- i=i+1
- end
- end
- global.href.num=i
- return
- /**************************************************************************/
- HrefButton: procedure expose global.
- parse arg n,i
- t.Contents="1B721B331B75"x || n
- t.InputMode="immediate"
- t.ShowSelState=0
- t.Font="button"
- return xnewobj("text",n,"t")
- /**************************************************************************/
- /*