# HTML.GUI -- Test HTML widget.
reset-server
appInitialize html HTML {
*objects:\
toplevel Form helloForm\
helloForm Label helloLabel\
helloForm Command prevButton\
helloForm Command nextButton\
helloForm Command quitButton\
helloForm HTML textwin\
helloForm TextBox info
*helloForm.background: bisque
*helloForm.helloLabel.background: bisque
*helloForm.Command.background: bisque
*helloForm.info*background: bisque
*helloForm.textwin*background: gray81
*beNiceToColormap: false
*helloLabel.label: HTML widget demo
*prevButton.fromHoriz: helloLabel
*prevButton.label: Previous File
*nextButton.fromHoriz: prevButton
*nextButton.label: Next File
*quitButton.fromHoriz: nextButton
*quitButton.label: Quit
*textwin.fromVert: helloLabel
*info.fromVert: textwin
*info.width: 500
*info.height: 20
*info.frameWidth: 0
*info.frameType: sunken
*info.borderWidth: 0
*info.outerOffset: 0
*info.innerOffset: 0
*textwin.width: 500
*textwin.height: 800
*textwin.anchorUnderlines: 1
*textwin.visitedAnchorUnderlines: 1
*textwin.dashedVisitedAnchorUnderlines: true
*textwin.plainFont: 6x13
}
createObjects
proc quit args { send client gkey q; deactivate unmap }
send quitButton addCallback quit
activate
# Get list of viewable files in the current directory.
set files [glob *.html *.\[cfhlsxy\] *.notes \[A-Z\]* *.gui]
set fileIndex 0
set html [lindex $files $fileIndex]
proc loadFile {filename} {
set fd [open $filename]; set text [read $fd]; close $fd
if {[file extension $filename] == ".html"} {
send textwin setText $text
} else {
send textwin setText "$text"
}
send textwin retestAnchors
}
# Load initial file.
loadFile [lindex $files $fileIndex]
# Stuff for keeping track of visited anchors.
set url(0) empty
proc anchorSelected {widget cbtype event text href args} {
global url
set url($href) 1
send textwin retestAnchors
}
proc testAnchor {widget cbtype href} {
global url
return [info exists url($href)]
}
proc anchorVisited {widget cbtype href} {
send info set label $href
}
send textwin addCallback anchorVisited pointerMotion
send textwin addCallback testAnchor testAnchor
send textwin addCallback anchorSelected anchor
# Callbacks to position forwards and backwards in file list.
proc next args {
global files fileIndex
incr fileIndex
if {$fileIndex >= [llength $files]} {
set fileIndex 0
}
loadFile [lindex $files $fileIndex]
}
proc prev args {
global files fileIndex
if {$fileIndex <= 0} {
set fileIndex [llength $files]
}
incr fileIndex -1
loadFile [lindex $files $fileIndex]
}
send prevButton addCallback prev
send nextButton addCallback next
# Test submit form callback.
proc submitFormCalled {widget cbtype event attrs href method args} {
print [format "\nSubmit Form to: %s\nMethod: %s\n%s\n" \
$href $method $attrs]
}
send textwin addCallback submitFormCalled submitForm