home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog Special Freeware 31
/
FreelogHS31.iso
/
Texte
/
scribus
/
scribus-1.3.3.9-win32-install.exe
/
tcl
/
tix8.1
/
VTree.tcl
< prev
next >
Wrap
Text File
|
2001-11-03
|
5KB
|
214 lines
# -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
#
# $Id: VTree.tcl,v 1.3.2.1 2001/11/03 07:26:10 idiscovery Exp $
#
# VTree.tcl --
#
# Virtual base class for Tree widgets.
#
#
# 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 tixVTree {
-virtual true
-classname TixVTree
-superclass tixScrolledHList
-method {
}
-flag {
-ignoreinvoke
}
-configspec {
{-ignoreinvoke ignoreInvoke IgnoreInvoke false tixVerifyBoolean}
}
-default {
}
}
proc tixVTree:InitWidgetRec {w} {
upvar #0 $w data
tixChainMethod $w InitWidgetRec
}
proc tixVTree:ConstructWidget {w} {
upvar #0 $w data
tixChainMethod $w ConstructWidget
set data(indStyle) [tixDisplayStyle image -refwindow $data(w:hlist) \
-padx 0 -pady 0]
}
proc tixVTree:SetBindings {w} {
upvar #0 $w data
tixChainMethod $w SetBindings
$data(w:hlist) config \
-indicatorcmd [list tixVTree:IndicatorCmd $w] \
-browsecmd [list tixVTree:BrowseCmdHook $w] \
-command [list tixVTree:CommandHook $w]
}
proc tixVTree:IndicatorCmd {w args} {
upvar #0 $w data
uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
set event [tixEvent type]
set ent [tixEvent flag V]
set type [tixVTree:GetType $w $ent]
set plus [tix getimage plus]
set plusarm [tix getimage plusarm]
set minus [tix getimage minus]
set minusarm [tix getimage minusarm]
if {![$data(w:hlist) info exists $ent]} {return}
case $event {
<Arm> {
if {![$data(w:hlist) indicator exists $ent]} {return}
if {$type == "open"} {
$data(w:hlist) indicator config $ent -image $plusarm
} else {
$data(w:hlist) indicator config $ent -image $minusarm
}
}
<Disarm> {
if {![$data(w:hlist) indicator exists $ent]} {return}
if {$type == "open"} {
$data(w:hlist) indicator config $ent -image $plus
} else {
$data(w:hlist) indicator config $ent -image $minus
}
}
<Activate> {
upvar bind bind
tixCallMethod $w Activate $ent $type
set bind(%V) $ent
tixVTree:BrowseCmdHook $w
}
}
}
proc tixVTree:GetType {w ent} {
upvar #0 $w data
uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
if {![$data(w:hlist) indicator exists $ent]} {
return none
}
set img [$data(w:hlist) indicator cget $ent -image]
if {$img == [tix getimage plus]} {
return open
}
if {$img == [tix getimage plusarm]} {
return open
}
return close
}
proc tixVTree:Activate {w ent type} {
upvar #0 $w data
uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
set plus [tix getimage plus]
set minus [tix getimage minus]
if {$type == "open"} {
tixCallMethod $w OpenCmd $ent
$data(w:hlist) indicator config $ent -image $minus
} else {
tixCallMethod $w CloseCmd $ent
$data(w:hlist) indicator config $ent -image $plus
}
}
proc tixVTree:CommandHook {w args} {
upvar #0 $w data
upvar bind bind
tixCallMethod $w Command bind
}
proc tixVTree:BrowseCmdHook {w args} {
upvar #0 $w data
upvar bind bind
tixCallMethod $w BrowseCmd bind
}
proc tixVTree:SetMode {w ent mode} {
upvar #0 $w data
uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
case $mode {
open {
$data(w:hlist) indicator create $ent -itemtype image \
-image [tix getimage plus] -style $data(indStyle)
}
close {
$data(w:hlist) indicator create $ent -itemtype image \
-image [tix getimage minus] -style $data(indStyle)
}
none {
if {[$data(w:hlist) indicator exist $ent]} {
$data(w:hlist) indicator delete $ent
}
}
}
}
#----------------------------------------------------------------------
#
# Virtual Methods
#
#----------------------------------------------------------------------
proc tixVTree:OpenCmd {w ent} {
upvar #0 $w data
# The default action
foreach kid [$data(w:hlist) info children $ent] {
$data(w:hlist) show entry $kid
}
}
proc tixVTree:CloseCmd {w ent} {
upvar #0 $w data
# The default action
foreach kid [$data(w:hlist) info children $ent] {
$data(w:hlist) hide entry $kid
}
}
proc tixVTree:Command {w B} {
upvar #0 $w data
upvar $B bind
if {$data(-ignoreinvoke)} {
return
}
set ent [tixEvent flag V]
if {[$data(w:hlist) indicator exist $ent]} {
tixVTree:Activate $w $ent [tixVTree:GetType $w $ent]
}
}
proc tixVTree:BrowseCmd {w B} {
}
#----------------------------------------------------------------------
#
# Widget commands
#
#----------------------------------------------------------------------