escargo 3 Aug 2003 - I used the wish-reaper to reap this page, but running the application I found a couple of things that might be considered flaws:
- There is no way to save the page that is retrieved. I can see where that might be really useful in some cases.
- There are no horizontal scroll bars. When I had long lines, I could not resize the application, nor would the long lines wrap.
Download Web Site Status [1], or the source code appears below.Screenshot:Source Code:
#!/bin/sh # # status.tcl -- # # GUI-based tool to check the status of a web site # # $Author: jcw $ # $Date: 2003-08-04 08:00:43 $ # $Revision: 1.10 $ # # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclkit "$0" ${1+"$@"} package require Tk package require http proc get_status {this_site} { global site global status global code global size set code {Connecting...} update idletasks # If user prepended site with http://, get rid of it regsub http:// $this_site "" this_site set result [catch {set token [http::geturl http://$this_site]} msg] # Delete any information in the text widget .html.html_out configure -state normal .html.html_out delete 0.0 end if {$result == 0} { set status [http::status $token] set code [http::code $token] set size [http::size $token] set html [http::data $token] .html.html_out insert end $html } else { set status "" set code "" set size "" tk_messageBox -icon error -message $msg \ -parent . -title Error -type ok } .html.html_out configure -state disabled } proc about {} { .html.html_out configure -state normal .html.html_out delete 0.0 end set about { Web Site Status ($Revision: 1.10 $, $Date: 2003-08-04 08:00:43 $): A simple tool to determine the status of a web site. Type a URL in the "Web Site:" text field, then press return or click the "Get Status" button. The HTTP status, code, filesize (in bytes) and raw HTML output will be displayed for the requested resource. Bookmarks can be stored in a file called 'status-bookmarks.txt'. The file should reside in the same directory as this application. Bug reports and requests for enhancements can be sent to jrankin@oneil.com. } .html.html_out insert end $about .html.html_out configure -state disabled } proc go_bookmark {this_bookmark} { global site set site $this_bookmark get_status $this_bookmark } # Clear all the form fields proc clear_form {} { global site global status global code global size set site "" set status "" set code "" set size "" .html.html_out configure -state normal .html.html_out delete 0.0 end .html.html_out configure -state disabled } # Set a title for the window wm title . "Web Site Status" wm minsize . 80 20 wm maxsize . 80 20 # Configure the menubar frame .mbar pack .mbar -side top -fill x menubutton .mbar.file -text File -menu .mbar.file.menu -underline 0 menubutton .mbar.help -text Help -menu .mbar.help.menu -underline 0 menubutton .mbar.bookmarks -text Bookmarks -menu \ .mbar.bookmarks.menu -underline 0 pack .mbar.file .mbar.bookmarks .mbar.help -side left menu .mbar.file.menu -tearoff 0 menu .mbar.bookmarks.menu -tearoff 0 menu .mbar.help.menu -tearoff 0 .mbar.file.menu add command -label Quit -underline 0 -accelerator "Ctrl+Q" \ -command exit .mbar.help.menu add command -label About -underline 0 -command about # Populate the Bookmarks menu if {[file exists "./status-bookmarks.txt"]} { set bookmarks [open "./status-bookmarks.txt" r] while { [gets $bookmarks bookmark] >= 0 } { .mbar.bookmarks.menu add command -label $bookmark -command \ "go_bookmark $bookmark" } close $bookmarks } #frame .sep -height 2 -borderwidth 2 -relief sunken #pack .sep -side top -fill x -padx 1m -pady 1m # Widgets to display the controls frame .controls label .controls.site_label -text "Web Site:" entry .controls.site_entry -relief sunken -textvariable site -width 40 button .controls.site_get -text "Get Status" \ -command {get_status $site} pack .controls.site_label -side left pack .controls.site_entry -side left -padx 1m pack .controls.site_get -side left #pack .controls.site_clear -side left pack .controls -side top -padx 1m -pady 1m -fill x # Widgets to display the code and status frame .output label .output.status_label -text "Status:" entry .output.status_entry -textvariable status -state readonly -width 10 label .output.code_label -text "Code:" entry .output.code_entry -textvariable code -state readonly -width 40 label .output.size_label -text "Size:" entry .output.size_entry -textvariable size -state readonly -width 10 pack .output.code_label -side left pack .output.code_entry -side left pack .output.status_label -side left pack .output.status_entry -side left pack .output.size_label -side left pack .output.size_entry -side left pack .output -side top -padx 1m -pady 1m -fill x # Text widget to display the raw HTML output frame .html text .html.html_out -relief sunken -bd 1 -yscrollcommand \ ".html.html_scroll set" -width 80 -height 20 -state disabled \ -wrap none .html.html_out configure -setgrid 1 scrollbar .html.html_scroll -command ".html.html_out yview" pack .html.html_out -side left pack .html.html_scroll -side right -fill y pack .html -side top -padx 1m -pady 1m # Buttons for various functions frame .buttons button .buttons.clear -text "Clear Results" -command clear_form button .buttons.quit -text "Quit" -command {exit} pack .buttons.clear -side left -padx 1m pack .buttons.quit -side left -padx 1m pack .buttons -side bottom -padx 1m -pady 2m # Bindings bind .controls.site_entry <Return> { get_status $site } bind all <Control-q> {exit}