|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tixWidgetClass tixFileComboBox { |
|
-classname TixFileComboBox |
|
-superclass tixPrimitive |
|
-method { |
|
invoke |
|
} |
|
-flag { |
|
-command -defaultfile -directory -text |
|
} |
|
-forcecall { |
|
-directory |
|
} |
|
-configspec { |
|
{-defaultfile defaultFile DefaultFile ""} |
|
{-directory directory Directory ""} |
|
{-command command Command ""} |
|
{-text text Text ""} |
|
} |
|
-default { |
|
} |
|
} |
|
|
|
proc tixFileComboBox:InitWidgetRec {w} { |
|
upvar #0 $w data |
|
|
|
tixChainMethod $w InitWidgetRec |
|
|
|
if {$data(-directory) eq ""} { |
|
set data(-directory) [pwd] |
|
} |
|
} |
|
|
|
proc tixFileComboBox:ConstructWidget {w} { |
|
upvar #0 $w data |
|
|
|
tixChainMethod $w ConstructWidget |
|
set data(w:combo) [tixComboBox $w.combo -editable true -dropdown true] |
|
pack $data(w:combo) -expand yes -fill both |
|
} |
|
|
|
proc tixFileComboBox:SetBindings {w} { |
|
upvar #0 $w data |
|
|
|
tixChainMethod $w SetBindings |
|
$data(w:combo) config -command [list tixFileComboBox:OnComboCmd $w] |
|
} |
|
|
|
proc tixFileComboBox:OnComboCmd {w args} { |
|
upvar #0 $w data |
|
|
|
set text [string trim [tixEvent value]] |
|
|
|
set path [tixFSJoin $data(-directory) $text] |
|
if {[file isdirectory $path]} { |
|
set path [tixFSJoin $path $data(-defaultfile)] |
|
set tail $data(-defaultfile) |
|
} else { |
|
set tail [file tail $path] |
|
} |
|
set norm [tixFSNormalize $path] |
|
tixSetSilent $data(w:combo) $norm |
|
if {[llength $data(-command)]} { |
|
set bind(specs) {%V} |
|
set bind(%V) [list $norm $path $tail ""] |
|
tixEvalCmdBinding $w $data(-command) bind $bind(%V) |
|
} |
|
} |
|
|
|
proc tixFileComboBox:config-text {w val} { |
|
upvar #0 $w data |
|
|
|
tixSetSilent $data(w:combo) $val |
|
} |
|
|
|
proc tixFileComboBox:config-directory {w val} { |
|
upvar #0 $w data |
|
|
|
set data(-directory) [tixFSNormalize $val] |
|
return $data(-directory) |
|
} |
|
|
|
proc tixFileComboBox:invoke {w} { |
|
upvar #0 $w data |
|
|
|
$data(w:combo) invoke |
|
} |
|
|
|
|
|
|