Welcome, guest | Sign In | My Account | Store | Cart
# PROGRAM-NAME: VW.TCL              VERSION NO.: 1.01
# AUTHOR: Tony Dycks                REVISED-BY: Tony Dycks
# DATE-WRITTEN: August 7, 2001      DATE-REVISED: September 10, 2001
# LANGUAGE: Active State Tcl/Tk     VERSION. NO.: 8.3
# PLATFORMS TESTED: MS Windows 98/NT 4.0
#                   Red Hat Linux 7.1 / SuSE Linux 7.0
#
# DESCRIPTION:
#   Tcl/Tk Wish Script For Viewing A Text File Using A TK Window.
#   File Contents Are Displayed On Text Widget Using TK As A GUI.
#   A Scrollbar Widget Is Added To Allow The Viewing Of File Contents.
#   Program Uses A File Menu Options To Select Files For Viewing 
#   And To Exit The Program. Clicking The "Exit Program" Button Closes
#   The TK Window And Ends The Program. Bind To <F3> Function Key
#   To Exit The Program.
#
# USAGE:
#   WISH VW.TCL <Enter>
#     {Where WISH is a shell or bat file invoking the WISH executable}
#
# USAGE EXAMPLE:
#   WISH VW.TCL <Enter>  
#
# REFERENCES: 
#   Personal Derivation Of TCL/TK Code Using The Grid Layout Manager. 
#
# LICENSING: 
#   Released Under The GPL As Open Source. 
#
# +---------------------------------------------------+
# + Set Initial Directory To Current Logged Directory +
# +---------------------------------------------------+
set initialdir [pwd]
global initialdir
global flname
# +------------------------------------------------------+
# + Select Open Input Text File & Populate Entry Widgets +
# +------------------------------------------------------+
proc openfl {} {
  global initialdir
  global flname
  set file_types {
    {"Tcl Files" { .tcl .TCL } }
    {"Text Files" { .txt .TXT } }
    {"All Files"  * }
    }
# +-------------------------------------------------+
# + Cleanup Filename And Text File Contents Widgets +
# +-------------------------------------------------+
  .txtarea delete 1.0 end
  set flname [tk_getOpenFile -initialdir $initialdir     -filetypes $file_types -title "Open Input Text File" -parent .]
  if {$flname != ""} {
    set initialdir [file dirname $flname]
    set retcd [ catch { set infile [open $flname "r"] } ]
# +------------------------------------------------+
# + Display Error Message Box If File Open Failure +
# +------------------------------------------------+
    if {$retcd == 1} {
      wm title . "VW.TCL -- File Open Error Message"
      set result [tk_messageBox -parent .         -title "VW.TCL -- File Open Error Message" -type ok -icon error         -message         "Error Opening File: $flname.\n"]
      }
# +----------------------------------------------+
# + Open File Successful Load Text File Contents +
# + Line By Line Until End Of File               +
# +----------------------------------------------+
    if {$retcd == 0} {
      set inEOF -1
      set txln ""
      .txtarea delete 1.0 end
      while {[gets $infile inln] != $inEOF} {
        set txln "$inln\n"
        .txtarea insert end $txln
        }
      close $infile
      }
    }
  return $flname
  }
# +------------------+
# + Exit The Program +
# +------------------+
proc exitpgm {} {
  exit 0
  }

# +-------------------------------------------------+
# + Initial TK Widget Definitions For Viewer Window +
# +-------------------------------------------------+
wm title . "VW.TCL Version 1.01 -- Text File Viewer Tcl/Tk Progam"
# +--------------+
# + Menu Widgets +
# +--------------+
menubutton .fl -text "File" -menu .fl.menu -anchor nw
menu .fl.menu
.fl.menu add command -label "Open" -command openfl
.fl.menu add separator
.fl.menu add command -label "Exit" -command exitpgm
set font {Verdana 14}
# +------------------------+
# + Filename Label Widgets +
# +------------------------+
label .fllabel -text "Input Filename:" -relief sunken -bg NavajoWhite2   -fg Navy -anchor nw
label .flname -width 80 -relief sunken -bg NavajoWhite2   -fg Navy -textvariable flname -anchor nw
pack .fl .fllabel .flname -side top -padx 1m -pady 1m -anchor nw
# +----------------------------------------+
# + Text File Contents & Scrollbar Widgets +
# +----------------------------------------+
label .fltext -width 80 -relief sunken -bg White -textvariable fltext
text .txtarea -bg LightYellow2 -font FixedSys -bd 2   -yscrollcommand ".vscroller set"
scrollbar .vscroller -command ".txtarea yview"
pack .txtarea .vscroller -side left -fill y
# +-----------------------------------------------------+
# + Command Button Widgets For Open File & Program Exit +
# +-----------------------------------------------------+
button .openfl -text "<< Open File >>" -fg Navy -bg NavajoWhite2   -font bold -command openfl
button .exitpgm -text "< Exit Program >" -fg Navy -bg NavajoWhite2   -font bold -command exitpgm
pack .exitpgm .openfl -side bottom -padx 1m -pady 1m 

bind .txtarea <Key-F3> {exitpgm}
bind .fllabel <Key-F3> {exitpgm}
bind .flname <Key-F3> {exitpgm}

History