Spaces:
Running
Running
# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- | |
# | |
# $Id: FileCbx.tcl,v 1.5 2004/03/28 02:44:57 hobbs Exp $ | |
# | |
# tixFileCombobox -- | |
# | |
# A combobox widget for entering file names, directory names, file | |
# patterns, etc. | |
# | |
# | |
# Copyright (c) 1993-1999 Ioi Kim Lam. | |
# Copyright (c) 2000-2001 Tix Project Group. | |
# Copyright (c) 2004 ActiveState | |
# | |
# See the file "license.terms" for information on usage and redistribution | |
# of this file, and for a DISCLAIMER OF ALL WARRANTIES. | |
# tixFileComboBox displays and accepts the DOS pathnames only. It doesn't | |
# recognize UNC file names or Tix VPATHS. | |
# | |
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 | |
} | |