python-2.5.2/win32/tcl/tix8.4/Tree.tcl
changeset 0 ae805ac0140d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-2.5.2/win32/tcl/tix8.4/Tree.tcl	Fri Apr 03 17:19:34 2009 +0100
@@ -0,0 +1,211 @@
+# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
+#
+#	$Id: Tree.tcl,v 1.7 2004/04/09 21:39:12 hobbs Exp $
+#
+# Tree.tcl --
+#
+#	This file implements the TixTree widget.
+#
+# Copyright (c) 1993-1999 Ioi Kim Lam.
+# Copyright (c) 2000-2001 Tix Project Group.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+
+
+tixWidgetClass tixTree {
+    -classname TixTree
+    -superclass tixVTree
+    -method {
+	autosetmode close getmode open setmode
+
+	addchild anchor column delete entrycget
+	entryconfigure header hide indicator info
+	item nearest see selection show
+    }
+    -flag {
+	-browsecmd -command -opencmd -closecmd
+    }
+    -configspec {
+	{-browsecmd browseCmd BrowseCmd ""}
+	{-command command Command ""}
+	{-closecmd closeCmd CloseCmd ""}
+	{-opencmd openCmd OpenCmd ""}
+    }
+    -default {
+	{.scrollbar			auto}
+	{*Scrollbar.takeFocus           0}
+	{*borderWidth                   1}
+	{*hlist.background              #c3c3c3}
+	{*hlist.drawBranch              1}
+	{*hlist.height                  10}
+	{*hlist.highlightBackground      #d9d9d9}
+	{*hlist.indicator               1}
+	{*hlist.indent                  20}
+	{*hlist.itemType                imagetext}
+	{*hlist.padX                    2}
+	{*hlist.padY                    2}
+	{*hlist.relief                  sunken}
+	{*hlist.takeFocus               1}
+	{*hlist.wideSelection           0}
+	{*hlist.width                   20}
+    }
+}
+
+proc tixTree:InitWidgetRec {w} {
+    upvar #0 $w data
+
+    tixChainMethod $w InitWidgetRec
+}
+
+proc tixTree:ConstructWidget {w} {
+    upvar #0 $w data
+
+    tixChainMethod $w ConstructWidget
+}
+
+proc tixTree:SetBindings {w} {
+    upvar #0 $w data
+
+    tixChainMethod $w SetBindings
+}
+
+#----------------------------------------------------------------------
+#
+#			Widget commands
+#
+#----------------------------------------------------------------------
+proc tixTree:autosetmode {w} {
+    tixTree:SetModes $w ""
+}
+
+proc tixTree:close {w ent} {
+    upvar #0 $w data
+
+    set type [tixVTree:GetType $w $ent]
+    if {$type == "close"} {
+	tixCallMethod $w Activate $ent $type
+    }
+}
+
+proc tixTree:open {w ent} {
+    upvar #0 $w data
+
+    set type [tixVTree:GetType $w $ent]
+    if {$type == "open"} {
+	tixCallMethod $w Activate $ent $type
+    }
+}
+
+proc tixTree:getmode {w ent} {
+    tixVTree:GetType $w $ent
+}
+
+proc tixTree:setmode {w ent mode} {
+    tixVTree:SetMode $w $ent $mode
+}
+
+foreach cmd {
+    addchild anchor column delete entrycget
+    entryconfigure header hide indicator info
+    item nearest see selection show
+} {
+    proc tixTree:$cmd {w args} {
+	# These are hlist passthrough methods to work around
+	# Tix' ignorant inheritance model.
+	upvar #0 $w data
+	set cmd [lindex [split [lindex [info level 0] 0] :] end]
+	uplevel 1 [linsert $args 0 $data(w:hlist) $cmd]
+    }
+}
+unset cmd
+
+#----------------------------------------------------------------------
+#
+#			Private Methods
+#
+#----------------------------------------------------------------------
+proc tixTree:SetModes {w ent} {
+    upvar #0 $w data
+   
+    set mode none
+
+    if {$ent == ""} {
+	set children [$data(w:hlist) info children]
+    } else {
+	set children [$data(w:hlist) info children $ent]
+    }
+ 
+    if {$children != ""} {
+	set mode close
+
+	foreach c $children {
+	    if {[$data(w:hlist) info hidden $c]} {
+		set mode open
+	    }
+	    tixTree:SetModes $w $c
+	}
+    }
+    
+    if {$ent != ""} {
+	tixVTree:SetMode $w $ent $mode
+    }
+}
+#----------------------------------------------------------------------
+#
+#			Virtual Methods
+#
+#----------------------------------------------------------------------
+proc tixTree:OpenCmd {w ent} {
+    upvar #0 $w data
+
+    if {$data(-opencmd) != ""} {
+	tixTree:CallSwitchCmd $w $data(-opencmd) $ent
+    } else {
+	tixChainMethod $w OpenCmd $ent
+
+    }
+}
+
+proc tixTree:CloseCmd {w ent} {
+    upvar #0 $w data
+
+    if {$data(-closecmd) != ""} {
+	tixTree:CallSwitchCmd $w $data(-closecmd) $ent
+    } else {
+	tixChainMethod $w CloseCmd $ent
+    }
+}
+
+# Call the opencmd or closecmd, depending on the mode ($cmd argument)
+#
+proc tixTree:CallSwitchCmd {w cmd ent} {
+    upvar #0 $w data
+
+    set bind(specs) {%V}
+    set bind(%V)    $ent
+
+    tixEvalCmdBinding $w $cmd bind $ent
+}
+
+proc tixTree:Command {w B} {
+    upvar #0 $w data
+    upvar $B bind
+
+    tixChainMethod $w Command $B
+
+    set ent [tixEvent flag V]
+    if {$data(-command) != ""} {
+	tixEvalCmdBinding $w $data(-command) bind $ent
+    }
+}
+
+proc tixTree:BrowseCmd {w B} {
+    upvar #0 $w data
+
+    set ent [tixEvent flag V]
+    if {$data(-browsecmd) != ""} {
+	tixEvalCmdBinding $w $data(-browsecmd) "" $ent
+    }
+}