2 # the next line restarts using wish \
3 exec wish
"$0" ${1+"$@"}
6 # This script generates a directory browser, which lists the working
7 # directory and allows you to open files or subdirectories by
10 # RCS: @(#) $Id: browse,v 1.4 2001/11/05 10:13:53 dkf Exp $
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}}