123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- # -*- 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
- }
|