python-2.5.2/win32/tcl/tix8.4/FileEnt.tcl
changeset 0 ae805ac0140d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-2.5.2/win32/tcl/tix8.4/FileEnt.tcl	Fri Apr 03 17:19:34 2009 +0100
@@ -0,0 +1,270 @@
+# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
+#
+#	$Id: FileEnt.tcl,v 1.7 2004/03/28 02:44:57 hobbs Exp $
+#
+# FileEnt.tcl --
+#
+# 	TixFileEntry Widget: an entry box for entering filenames.
+#
+# 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.
+#
+
+tixWidgetClass tixFileEntry {
+    -classname TixFileEntry
+    -superclass tixLabelWidget
+    -method {
+	invoke filedialog update
+    }
+    -flag {
+	-activatecmd -command -dialogtype -disablecallback -disabledforeground
+	-filebitmap -selectmode -state -validatecmd -value -variable
+    }
+    -forcecall {
+	-variable
+    }
+    -static {
+	-filebitmap
+    }
+    -configspec {
+	{-activatecmd activateCmd ActivateCmd ""}
+	{-command command Command ""}
+	{-dialogtype dialogType DialogType ""}
+	{-disablecallback disableCallback DisableCallback 0 tixVerifyBoolean}
+	{-disabledforeground disabledForeground DisabledForeground #303030}
+	{-filebitmap fileBitmap FileBitmap ""}
+	{-selectmode selectMode SelectMode normal}
+	{-state state State normal}
+	{-validatecmd validateCmd ValidateCmd ""}
+	{-value value Value ""}
+	{-variable variable Variable ""}
+    }
+    -default {
+	{*frame.borderWidth		2}
+	{*frame.relief			sunken}
+	{*Button.highlightThickness	0}
+	{*Entry.highlightThickness	0}
+	{*Entry.borderWidth 		0}
+    }
+}
+
+proc tixFileEntry:InitWidgetRec {w} {
+    upvar #0 $w data
+
+    tixChainMethod $w InitWidgetRec
+    set data(varInited)	  0
+
+    if {$data(-filebitmap) eq ""} {
+	set data(-filebitmap) [tix getbitmap openfile]
+    }
+}
+
+proc tixFileEntry:ConstructFramedWidget {w frame} {
+    upvar #0 $w data
+
+    tixChainMethod $w ConstructFramedWidget $frame
+
+    set data(w:entry)  [entry  $frame.entry]
+    set data(w:button) [button $frame.button -bitmap $data(-filebitmap) \
+			    -takefocus 0]
+    set data(entryfg) [$data(w:entry) cget -fg]
+
+    pack $data(w:button) -side right -fill both
+    pack $data(w:entry)  -side left  -expand yes -fill both
+}
+
+proc tixFileEntry:SetBindings {w} {
+    upvar #0 $w data
+
+    tixChainMethod $w SetBindings
+
+    $data(w:button) config -command [list tixFileEntry:OpenFile $w]
+    tixSetMegaWidget $data(w:entry) $w
+
+    # If user press <return>, verify the value and call the -command
+    #
+    bind $data(w:entry) <Return> [list tixFileEntry:invoke $w]
+    bind $data(w:entry) <KeyPress> {
+	if {[set [tixGetMegaWidget %W](-selectmode)] eq "immediate"} {
+	    tixFileEntry:invoke [tixGetMegaWidget %W]
+	}
+    }
+    bind $data(w:entry) <FocusOut>  {
+        if {"%d" eq "NotifyNonlinear" || "%d" eq "NotifyNonlinearVirtual"} {
+	    tixFileEntry:invoke [tixGetMegaWidget %W]
+        }
+    }
+    bind $w <FocusIn> [list focus $data(w:entry)]
+}
+
+#----------------------------------------------------------------------
+#                           CONFIG OPTIONS
+#----------------------------------------------------------------------
+proc tixFileEntry:config-state {w value} {
+    upvar #0 $w data
+
+    if {$value eq "normal"} {
+	$data(w:button) config -state $value
+	$data(w:entry)  config -state $value -fg $data(entryfg)
+	catch {$data(w:label)  config -fg $data(entryfg)}
+    } else {
+	$data(w:button) config -state $value
+	$data(w:entry)  config -state $value -fg $data(-disabledforeground)
+	catch {$data(w:label)  config -fg $data(-disabledforeground)}
+    }
+
+    return ""
+}
+
+proc tixFileEntry:config-value {w value} {
+    tixFileEntry:SetValue $w $value
+}
+
+proc tixFileEntry:config-variable {w arg} {
+    upvar #0 $w data
+
+    if {[tixVariable:ConfigVariable $w $arg]} {
+       # The value of data(-value) is changed if tixVariable:ConfigVariable 
+       # returns true
+       tixFileEntry:SetValue $w $data(-value)
+    }
+    catch {
+	unset data(varInited)
+    }
+    set data(-variable) $arg
+}
+
+#----------------------------------------------------------------------
+#                         User Commands
+#----------------------------------------------------------------------
+proc tixFileEntry:invoke {w} {
+    upvar #0 $w data
+
+    if {![catch {$data(w:entry) index sel.first}]} {
+	# THIS ENTRY OWNS SELECTION --> TURN IT OFF
+	#
+	$data(w:entry) select from end
+	$data(w:entry) select to   end
+    }
+
+    tixFileEntry:SetValue $w [$data(w:entry) get]
+}
+
+proc tixFileEntry:filedialog {w args} {
+    upvar #0 $w data
+
+    if {[llength $args]} {
+	return [eval [tix filedialog $data(-dialogtype)] $args]
+    } else {
+	return [tix filedialog $data(-dialogtype)]
+    }
+}
+
+proc tixFileEntry:update {w} {
+    upvar #0 $w data
+
+    if {[$data(w:entry) get] ne $data(-value)} {
+	tixFileEntry:invoke $w
+    }
+}
+#----------------------------------------------------------------------
+#                       Internal Commands
+#----------------------------------------------------------------------
+proc tixFileEntry:OpenFile {w} {
+     upvar #0 $w data
+
+     if {$data(-activatecmd) != ""} {
+	 uplevel #0 $data(-activatecmd)
+     }
+
+     switch -- $data(-dialogtype) tk_chooseDirectory {
+	 set args [list -parent [winfo toplevel $w]]
+	 if {[set initial $data(-value)] != ""} {
+	     lappend args -initialdir $data(value)
+	 }
+	 set retval [eval [linsert $args 0 tk_chooseDirectory]]
+
+	 if {$retval != ""} {tixFileEntry:SetValue $w [tixFSNative $retval]}
+     } tk_getOpenFile - tk_getSaveFile {
+	 set args [list -parent [winfo toplevel $w]]
+
+	 if {[set initial [$data(w:entry) get]] != ""} {
+	     switch -glob -- $initial *.py {
+		 set types [list {"Python Files" {.py .pyw}} {"All Files" *}]
+	     } *.txt {
+		 set types [list {"Text Files" .txt} {"All Files" *}]
+	     } *.tcl {
+		 set types [list {"Tcl Files" .tcl} {"All Files" *}]
+	     } * - default {
+		 set types [list {"All Files" *}]
+	     }
+	     if {[file isfile $initial]} {
+		 lappend args -initialdir [file dir $initial] \
+			 -initialfile $initial
+	     } elseif {[file isdir $initial]} {
+		 lappend args -initialdir $initial
+	     }
+	 } else {
+	     set types [list {"All Files" *}]
+	 }
+	 lappend args -filetypes $types
+
+	 set retval [eval $data(-dialogtype) $args]
+	 if {$retval != ""} {tixFileEntry:SetValue $w [tixFSNative $retval]}
+     } default {
+	 set filedlg [tix filedialog $data(-dialogtype)]
+
+	 $filedlg config -parent [winfo toplevel $w] \
+		 -command [list tixFileEntry:FileDlgCallback $w]
+
+	 focus $data(w:entry)
+
+	 $filedlg popup
+     }
+}
+
+proc tixFileEntry:FileDlgCallback {w args} {
+    set filename [tixEvent flag V]
+
+    tixFileEntry:SetValue $w $filename
+}
+
+proc tixFileEntry:SetValue {w value} {
+    upvar #0 $w data
+
+    if {[llength $data(-validatecmd)]} {
+	set value [tixEvalCmdBinding $w $data(-validatecmd) "" $value]
+    }
+
+    if {$data(-state) eq "normal"} {
+	$data(w:entry) delete 0 end
+	$data(w:entry) insert 0 $value
+	$data(w:entry) xview end
+    }
+
+    set data(-value) $value
+
+    tixVariable:UpdateVariable $w
+
+    if {[llength $data(-command)] && !$data(-disablecallback)} {
+	if {![info exists data(varInited)]} {
+	    set bind(specs) ""
+	    tixEvalCmdBinding $w $data(-command) bind $value
+	}
+    }
+}
+
+proc tixFileEntry:Destructor {w} {
+    upvar #0 $w data
+
+    tixUnsetMegaWidget $data(w:entry)
+    tixVariable:DeleteVariable $w
+
+    # Chain this to the superclass
+    #
+    tixChainMethod $w Destructor
+}