| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| tixWidgetClass tixDirSelectBox { |
| -classname TixDirSelectBox |
| -superclass tixPrimitive |
| -method { |
| } |
| -flag { |
| -command -disablecallback -value |
| } |
| -configspec { |
| {-command command Command ""} |
| {-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean} |
| {-label label Label "Directory:"} |
| {-value value Value ""} |
| } |
| -forcecall { |
| -value -label |
| } |
| -default { |
| {*combo*listbox.height 5} |
| {*combo.label.anchor w} |
| {*combo.labelSide top} |
| {*combo.history true} |
| {*combo.historyLimit 20} |
| } |
| } |
|
|
| proc tixDirSelectBox:InitWidgetRec {w} { |
| upvar #0 $w data |
| tixChainMethod $w InitWidgetRec |
| } |
|
|
| proc tixDirSelectBox:ConstructWidget {w} { |
| upvar #0 $w data |
|
|
| tixChainMethod $w ConstructWidget |
| set data(w:dircbx) [tixFileComboBox $w.dircbx] |
| set data(w:dirlist) [tixDirList $w.dirlist] |
|
|
| pack $data(w:dircbx) -side top -fill x -padx 4 -pady 2 |
| pack $data(w:dirlist) -side top -fill both -expand yes -padx 4 -pady 2 |
|
|
| if {$data(-value) eq ""} { |
| set data(-value) [pwd] |
| } |
| } |
|
|
| proc tixDirSelectBox:SetBindings {w} { |
| upvar #0 $w data |
|
|
| tixChainMethod $w SetBindings |
|
|
| $data(w:dircbx) config -command [list tixDirSelectBox:Cmd-DirCbx $w] |
| $data(w:dirlist) config -command [list tixDirSelectBox:Cmd-DirList $w]\ |
| -browsecmd [list tixDirSelectBox:Browse-DirList $w] |
| } |
|
|
| |
| |
| |
|
|
| |
| |
| |
| proc tixDirSelectBox:Cmd-DirCbx {w args} { |
| upvar #0 $w data |
|
|
| set fInfo [tixEvent value] |
| set path [lindex $fInfo 0] |
|
|
| if {![file exists $path]} { |
| |
| |
| if {![tixFSIsValid $path]} { |
| tk_messageBox -title "Invalid Directory" \ |
| -type ok -icon error \ |
| -message "\"$path\" is not a valid directory name" |
| $data(w:dircbx) config \ |
| -text [tixFSDisplayName [file normalize $data(-value)]] \ |
| -directory $data(-value) |
| return |
| } |
|
|
| |
| |
| set choice [tk_messageBox -title "Create Directory?" \ |
| -type yesno -icon question \ |
| -message "Directory \"$path\" does not exist.\ |
| \nDo you want to create it?"] |
| if {$choice eq "yes" |
| && [catch {file mkdir [file dirname $path]} err]} { |
| tk_messageBox -title "Error Creating Directory" \ |
| -icon error -type ok \ |
| -message "Cannot create directory \"$path\":\n$err" |
| set choice "no" |
| } |
| if {$choice eq "no"} { |
| $data(w:dircbx) config \ |
| -text [tixFSDisplayName [file normalize $data(-value)]] \ |
| -directory $data(-value) |
| return |
| } |
| tixDirSelectBox:SetValue $w $path 1 1 |
| } elseif {![file isdirectory $path]} { |
| |
| |
| tk_messageBox -title "Invalid Directory" \ |
| -type ok -icon error \ |
| -message "\"$path\" is not a directory" |
| $data(w:dircbx) config \ |
| -text [tixFSDisplayName [file normalize $data(-value)]] \ |
| -directory $data(-value) |
| return |
| } else { |
| |
| |
| tixDirSelectBox:SetValue $w $path 1 1 |
| } |
| } |
|
|
| |
| |
| |
| proc tixDirSelectBox:Cmd-DirList {w args} { |
| upvar #0 $w data |
|
|
| set dir $data(-value) |
| catch {set dir [tixEvent flag V]} |
| set dir [tixFSNormalize $dir] |
| tixDirSelectBox:SetValue $w $dir 0 0 |
| } |
|
|
| |
| |
| |
| proc tixDirSelectBox:Browse-DirList {w args} { |
| upvar #0 $w data |
|
|
| set dir $data(-value) |
| catch {set dir [tixEvent flag V]} |
| set dir [tixFSNormalize $dir] |
| tixDirSelectBox:SetValue $w $dir 0 0 |
| } |
|
|
| |
| |
| |
| proc tixDirSelectBox:config-value {w value} { |
| upvar #0 $w data |
|
|
| set value [tixFSNormalize $value] |
| tixDirSelectBox:SetValue $w $value 1 1 |
| return $value |
| } |
|
|
| proc tixDirSelectBox:config-label {w value} { |
| upvar #0 $w data |
|
|
| $data(w:dircbx) subwidget combo config -label $value |
| } |
|
|
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| proc tixDirSelectBox:SetValue {w dir callback setlist} { |
| upvar #0 $w data |
|
|
| set data(-value) $dir |
| $data(w:dircbx) config -text [tixFSDisplayName $dir] -directory $dir |
| if {$setlist && [file isdirectory $dir]} { |
| tixSetSilent $data(w:dirlist) $dir |
| } |
|
|
| if {$callback} { |
| if {!$data(-disablecallback) && [llength $data(-command)]} { |
| set bind(specs) {%V} |
| set bind(%V) $data(-value) |
|
|
| tixEvalCmdBinding $w $data(-command) bind $data(-value) |
| } |
| } |
| } |
|
|