2 # the next line restarts using wish \
3 exec wish8.6 "$0" ${1+"$@"}
6 # This script generates a directory browser, which lists the working
7 # directory and allows you to open files or subdirectories by
12 # Create a scrollbar on the right side of the main window and a listbox
15 scrollbar .scroll -command ".list yview"
16 pack .scroll -side right -fill y
17 listbox .list -yscroll ".scroll set" -relief sunken -width 20 -height 20 \
19 pack .list -side left -fill both -expand yes
22 # The procedure below is invoked to open a browser on a given file; if the
23 # file is a directory then another instance of this program is invoked; if
24 # the file is a regular file then the Mx editor is invoked to display
27 set browseScript [file join [pwd] $argv0]
28 proc browse {dir file} {
29 global env browseScript
30 if {[string compare $dir "."] != 0} {set file $dir/$file}
31 switch [file type $file] {
33 exec [info nameofexecutable] $browseScript $file &
36 if {[info exists env(EDITOR)]} {
37 eval exec $env(EDITOR) $file &
43 puts stdout "\"$file\" isn't a directory or regular file"
48 # Fill the listbox with a list of all the files in the directory.
50 if {$argc>0} {set dir [lindex $argv 0]} else {set dir "."}
51 foreach i [lsort [glob * .* *.*]] {
52 if {[file type $i] eq "directory"} {
53 # Safe to do since it is still a directory.
59 # Set up bindings for the browser.
61 bind all <Control-c> {destroy .}
62 bind .list <Double-Button-1> {foreach i [selection get] {browse $dir $i}}