home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # the next line restarts using wish \
- exec wish "$0" "$@"
-
- # browse --
- # This script generates a directory browser, which lists the working
- # directory and allows you to open files or subdirectories by
- # double-clicking.
- #
- # RCS: @(#) $Id: browse,v 1.2.18.1 2001/10/12 10:56:13 dkf Exp $
-
- # Create a scrollbar on the right side of the main window and a listbox
- # on the left side.
-
- scrollbar .scroll -command ".list yview"
- pack .scroll -side right -fill y
- listbox .list -yscroll ".scroll set" -relief sunken -width 20 -height 20 \
- -setgrid yes
- pack .list -side left -fill both -expand yes
- wm minsize . 1 1
-
- # The procedure below is invoked to open a browser on a given file; if the
- # file is a directory then another instance of this program is invoked; if
- # the file is a regular file then the Mx editor is invoked to display
- # the file.
-
- set browseScript [file join [pwd] $argv0]
- proc browse {dir file} {
- global env browseScript
- if {[string compare $dir "."] != 0} {set file $dir/$file}
- if [file isdirectory $file] {
- exec [info nameofexecutable] $browseScript $file &
- } else {
- if [file isfile $file] {
- if [info exists env(EDITOR)] {
- eval exec $env(EDITOR) $file &
- } else {
- exec xedit $file &
- }
- } else {
- puts stdout "\"$file\" isn't a directory or regular file"
- }
- }
- }
-
- # Fill the listbox with a list of all the files in the directory.
-
- if $argc>0 {set dir [lindex $argv 0]} else {set dir "."}
- foreach i [lsort [glob * .* *.*]] {
- switch [file type $i] {
- directory {
- # Safe to do since it is still a directory.
- append i /
- }
- }
- .list insert end $i
- }
-
- # Set up bindings for the browser.
-
- bind all <Control-c> {destroy .}
- bind .list <Double-Button-1> {foreach i [selection get] {browse $dir $i}}
-
- # Local Variables:
- # mode: tcl
- # End:
-