GIF89a;
Mass Deface "} { tixExFileSelectBox:Ok $w } } proc tixExFileSelectBox:Ok {w} { upvar #0 $w data set value [string trim [$data(w:file) subwidget entry get]] if {$value == ""} { set value $data(-pattern) } tixSetSilent $data(w:file) $value if {[tixExFileSelectBox:IsPattern $w $value]} { set data(-pattern) $value tixWidgetDoWhenIdle tixExFileSelectBox:LoadFiles $w reload } else { # ensure absolute path set value [file join $data(-directory) $value]; # native set data(-value) [tixFSNativeNorm $value] tixExFileSelectBox:Invoke $w } } proc tixExFileSelectBox:Cancel {w} { upvar #0 $w data if {$data(-dialog) != ""} { eval $data(-dialog) popdown } } proc tixExFileSelectBox:Invoke {w} { upvar #0 $w data # Save some old history # $data(w:dir) addhistory [$data(w:dir) cget -value] $data(w:file) addhistory $data(-pattern) $data(w:file) addhistory $data(-value) if {$data(-dialog) != ""} { eval $data(-dialog) popdown } if {$data(-command) != "" && !$data(-disablecallback)} { set bind(specs) "%V" set bind(%V) $data(-value) tixEvalCmdBinding $w $data(-command) bind $data(-value) } } proc tixExFileSelectBox:Cmd-FileList {w invoke args} { upvar #0 $w data set index [lindex [$data(w:filelist) subwidget listbox curselection] 0] if {$index == ""} { set index 0 } set file [$data(w:filelist) subwidget listbox get $index] tixSetSilent $data(w:file) $file set value [file join $data(-directory) $file] set data(-value) [tixFSNativeNorm $value] if {$invoke == 1} { tixExFileSelectBox:Invoke $w } elseif {$data(-browsecmd) != ""} { tixEvalCmdBinding $w $data(-browsecmd) "" $data(-value) } } proc tixExFileSelectBox:Cmd-TypeCombo {w args} { upvar #0 $w data set value [tixEvent flag V] if {[info exists data(type,$value)]} { set data(-pattern) $data(type,$value) tixSetSilent $data(w:file) $data(-pattern) tixWidgetDoWhenIdle tixExFileSelectBox:LoadFiles $w reload } } proc tixExFileSelectBox:LoadFiles {w flag} { upvar #0 $w data if {$flag ne "reload" && $data(-directory) eq $data(oldDir)} { return } if {![winfo ismapped [winfo toplevel $w]]} { tixDoWhenMapped [winfo toplevel $w] \ [list tixExFileSelectBox:LoadFiles $w $flag] return } set listbox [$data(w:filelist) subwidget listbox] $listbox delete 0 end set data(-value) "" tixBusy $w on [$data(w:dirlist) subwidget hlist] # wrap in a catch so you can't get stuck in a Busy state if {[catch { foreach name [tixFSListDir $data(-directory) 0 1 0 \ $data(-showhidden) $data(-pattern)] { $listbox insert end $name } if {$data(oldDir) ne $data(-directory)} { # Otherwise if the user has already selected a file and then # presses "show hidden", the selection won't be wiped out. tixSetSilent $data(w:file) $data(-pattern) } } err]} { tixDebug "tixExFileSelectBox:LoadFiles error for $w\n$err" } set data(oldDir) $data(-directory) tixWidgetDoWhenIdle tixBusy $w off [$data(w:dirlist) subwidget hlist] } # # Called when thd listbox is first mapped proc tixExFileSelectBox:Map {w} { if {![winfo exists $w]} { return } upvar #0 $w data set bind(specs) "%V" set bind(%V) $data(-value) tixEvalCmdBinding $w bind \ [list tixExFileSelectBox:Cmd-DirList $w] $data(-directory) } #---------------------------------------------------------------------- # Public commands # #---------------------------------------------------------------------- proc tixExFileSelectBox:invoke {w} { tixExFileSelectBox:Invoke $w } proc tixExFileSelectBox:filter {w} { tixExFileSelectBox:LoadFiles $w reload }