home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / mail / elm / 3688 / tkelm
Encoding:
Tcl/Tk script  |  1992-12-12  |  1.7 KB  |  57 lines

  1. #!/usr/local/bin/wish -f
  2. #
  3. # This script generates a directory browser, which lists the working
  4. # directory and allows you to open files or subdirectories by
  5. # double-clicking.
  6.  
  7. # Create a scrollbar on the right side of the main window and a listbox
  8. # on the left side.
  9.  
  10. # These are the switches needed to generate a ls listing that prints
  11. # all files except . and .., and appends a "/" to directory names.  Your
  12. # mileage may vary.
  13.  
  14. set dirswitch "-AF"
  15.  
  16. # The default location of your mail folder.  Elm's default is "Mail",
  17. # but many folks override this.
  18.  
  19. set dir ".mailbox"
  20.  
  21. scrollbar .scroll -command ".list yview"
  22. listbox .list -borderwidth 2 -yscroll ".scroll set" -relief raised -geometry 20x20
  23. pack append . .scroll {right filly} .list {left expand fill}
  24.  
  25. # The procedure below is invoked to open a browser on a given file;  if the
  26. # file is a directory then another instance of this program is invoked; if
  27. # the file is a regular file then the Mx editor is invoked to display
  28. # the file.
  29.  
  30. proc mailbrowse {dir file} {
  31.     if {[string compare $dir "."] != 0} {set file $dir/$file}
  32.     if [file isdirectory $file] {
  33.     exec mailbrowse $file &
  34.     } else {
  35.     if [file isfile $file] {
  36.         exec /usr/bin/X11/xterm -T $file -n $file -e elm -f $file &
  37.     } else {
  38.         puts stdout "\"$file\" isn't a directory or regular file"
  39.     }
  40.     }
  41. }
  42.  
  43. # Fill the listbox with a list of all the files in the directory (run
  44. # the "ls" command to get that information).
  45.  
  46. if $argc>0 {set dir [lindex $argv 0]}
  47. foreach i [exec ls $dirswitch $dir] {
  48.     .list insert end $i
  49. }
  50.  
  51. # Set up bindings for the browser.
  52.  
  53. bind .list <Control-q> {destroy .}
  54. bind .list <Control-c> {destroy .}
  55. focus .list
  56. bind .list <Double-Button-1> {foreach i [selection get] {mailbrowse $dir $i}}
  57.