1# filebox.tcl -- 2# 3# This demonstration script prompts the user to select a file. 4# 5# RCS: @(#) $Id$ 6 7if {![info exists widgetDemo]} { 8 error "This script should be run from the \"widget\" demo." 9} 10 11package require Tk 12 13set w .filebox 14catch {destroy $w} 15toplevel $w 16wm title $w "File Selection Dialogs" 17wm iconname $w "filebox" 18positionWindow $w 19 20label $w.msg -font $font -wraplength 4i -justify left -text "Enter a file name in the entry box or click on the \"Browse\" buttons to select a file name using the file selection dialog." 21pack $w.msg -side top 22 23## See Code / Dismiss buttons 24set btns [addSeeDismiss $w.buttons $w] 25pack $btns -side bottom -fill x 26 27foreach i {open save} { 28 set f [frame $w.$i] 29 label $f.lab -text "Select a file to $i: " -anchor e 30 entry $f.ent -width 20 31 button $f.but -text "Browse ..." -command "fileDialog $w $f.ent $i" 32 pack $f.lab -side left 33 pack $f.ent -side left -expand yes -fill x 34 pack $f.but -side left 35 pack $f -fill x -padx 1c -pady 3 36} 37 38if {[tk windowingsystem] eq "x11"} { 39 checkbutton $w.strict -text "Use Motif Style Dialog" \ 40 -variable tk_strictMotif -onvalue 1 -offvalue 0 41 pack $w.strict -anchor c 42 43 # This binding ensures that we don't run the rest of the demos 44 # with motif style interactions 45 bind $w.strict <Destroy> {set tk_strictMotif 0} 46} 47 48proc fileDialog {w ent operation} { 49 # Type names Extension(s) Mac File Type(s) 50 # 51 #--------------------------------------------------------- 52 set types { 53 {"Text files" {.txt .doc} } 54 {"Text files" {} TEXT} 55 {"Tcl Scripts" {.tcl} TEXT} 56 {"C Source Files" {.c .h} } 57 {"All Source Files" {.tcl .c .h} } 58 {"Image Files" {.gif} } 59 {"Image Files" {.jpeg .jpg} } 60 {"Image Files" "" {GIFF JPEG}} 61 {"All files" *} 62 } 63 if {$operation == "open"} { 64 global selected_type 65 if {![info exists selected_type]} { 66 set selected_type "Tcl Scripts" 67 } 68 set file [tk_getOpenFile -filetypes $types -parent $w \ 69 -typevariable selected_type] 70 puts "You selected filetype \"$selected_type\"" 71 } else { 72 set file [tk_getSaveFile -filetypes $types -parent $w \ 73 -initialfile Untitled -defaultextension .txt] 74 } 75 if {[string compare $file ""]} { 76 $ent delete 0 end 77 $ent insert 0 $file 78 $ent xview end 79 } 80} 81