# 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