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 >
Text File  |  2001-11-03  |  5KB  |  214 lines

  1. # -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
  2. #
  3. #    $Id: VTree.tcl,v 1.3.2.1 2001/11/03 07:26:10 idiscovery Exp $
  4. #
  5. # VTree.tcl --
  6. #
  7. #    Virtual base class for Tree widgets.
  8. #
  9. #
  10. # Copyright (c) 1993-1999 Ioi Kim Lam.
  11. # Copyright (c) 2000-2001 Tix Project Group.
  12. #
  13. # See the file "license.terms" for information on usage and redistribution
  14. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  15. #
  16.  
  17. tixWidgetClass tixVTree {
  18.     -virtual true
  19.     -classname TixVTree
  20.     -superclass tixScrolledHList
  21.     -method {
  22.     }
  23.     -flag {
  24.     -ignoreinvoke
  25.     }
  26.     -configspec {
  27.     {-ignoreinvoke ignoreInvoke IgnoreInvoke false tixVerifyBoolean}
  28.     }
  29.     -default {
  30.     }
  31. }
  32.  
  33. proc tixVTree:InitWidgetRec {w} {
  34.     upvar #0 $w data
  35.  
  36.     tixChainMethod $w InitWidgetRec
  37. }
  38.  
  39. proc tixVTree:ConstructWidget {w} {
  40.     upvar #0 $w data
  41.  
  42.     tixChainMethod $w ConstructWidget
  43.  
  44.     set data(indStyle) [tixDisplayStyle image -refwindow $data(w:hlist) \
  45.     -padx 0 -pady 0]
  46. }
  47.  
  48. proc tixVTree:SetBindings {w} {
  49.     upvar #0 $w data
  50.  
  51.     tixChainMethod $w SetBindings
  52.  
  53.     $data(w:hlist) config \
  54.     -indicatorcmd [list tixVTree:IndicatorCmd $w] \
  55.     -browsecmd [list tixVTree:BrowseCmdHook $w] \
  56.     -command [list tixVTree:CommandHook $w]
  57. }
  58.  
  59. proc tixVTree:IndicatorCmd {w args} {
  60.     upvar #0 $w data
  61.  
  62.     uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
  63.     set event [tixEvent type]
  64.     set ent   [tixEvent flag V]
  65.  
  66.     set type [tixVTree:GetType $w $ent]
  67.     set plus     [tix getimage plus] 
  68.     set plusarm     [tix getimage plusarm] 
  69.     set minus     [tix getimage minus] 
  70.     set minusarm [tix getimage minusarm] 
  71.  
  72.     if {![$data(w:hlist) info exists $ent]} {return}
  73.     case $event {
  74.     <Arm> {
  75.         if {![$data(w:hlist) indicator exists $ent]} {return}
  76.         if {$type == "open"} {
  77.         $data(w:hlist) indicator config $ent -image $plusarm
  78.         } else {
  79.         $data(w:hlist) indicator config $ent -image $minusarm
  80.         }
  81.     }
  82.     <Disarm> {
  83.         if {![$data(w:hlist) indicator exists $ent]} {return}
  84.         if {$type == "open"} {
  85.         $data(w:hlist) indicator config $ent -image $plus
  86.         } else {
  87.         $data(w:hlist) indicator config $ent -image $minus
  88.         }
  89.     }
  90.     <Activate> {
  91.         upvar bind bind
  92.         tixCallMethod $w Activate $ent $type
  93.         set bind(%V) $ent
  94.         tixVTree:BrowseCmdHook $w
  95.     }
  96.     }
  97. }
  98.  
  99. proc tixVTree:GetType {w ent} {
  100.     upvar #0 $w data
  101.  
  102.     uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
  103.     if {![$data(w:hlist) indicator exists $ent]} {
  104.     return none
  105.     }
  106.  
  107.     set img [$data(w:hlist) indicator cget $ent -image]
  108.  
  109.     if {$img == [tix getimage plus]} {
  110.     return open
  111.     }
  112.     if {$img == [tix getimage plusarm]} {
  113.     return open
  114.     }
  115.     return close
  116. }
  117.  
  118. proc tixVTree:Activate {w ent type} {
  119.     upvar #0 $w data
  120.  
  121.     uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
  122.  
  123.     set plus     [tix getimage plus] 
  124.     set minus     [tix getimage minus] 
  125.  
  126.     if {$type == "open"} {
  127.     tixCallMethod $w OpenCmd $ent
  128.     $data(w:hlist) indicator config $ent -image $minus
  129.     } else {
  130.     tixCallMethod $w CloseCmd $ent
  131.     $data(w:hlist) indicator config $ent -image $plus
  132.     }
  133. }
  134.  
  135. proc tixVTree:CommandHook {w args} {
  136.     upvar #0 $w data
  137.     upvar bind bind
  138.  
  139.     tixCallMethod $w Command bind
  140. }
  141.  
  142. proc tixVTree:BrowseCmdHook {w args} {
  143.     upvar #0 $w data
  144.     upvar bind bind
  145.  
  146.     tixCallMethod $w BrowseCmd bind
  147. }
  148.  
  149. proc tixVTree:SetMode {w ent mode} {
  150.     upvar #0 $w data
  151.  
  152.     uplevel #0 set TRANSPARENT_GIF_COLOR [$data(w:hlist) cget -bg]
  153.  
  154.     case $mode {
  155.     open {
  156.         $data(w:hlist) indicator create $ent -itemtype image \
  157.         -image [tix getimage plus]  -style $data(indStyle)
  158.     }
  159.     close {
  160.         $data(w:hlist) indicator create $ent -itemtype image \
  161.         -image [tix getimage minus] -style $data(indStyle)
  162.     }
  163.     none {
  164.         if {[$data(w:hlist) indicator exist $ent]} {
  165.         $data(w:hlist) indicator delete $ent 
  166.         }
  167.     }
  168.     }
  169. }
  170.  
  171. #----------------------------------------------------------------------
  172. #
  173. #            Virtual Methods
  174. #
  175. #----------------------------------------------------------------------
  176. proc tixVTree:OpenCmd {w ent} {
  177.     upvar #0 $w data
  178.  
  179.     # The default action
  180.     foreach kid [$data(w:hlist) info children $ent] {
  181.     $data(w:hlist) show entry $kid
  182.     }
  183. }
  184.  
  185. proc tixVTree:CloseCmd {w ent} {
  186.     upvar #0 $w data
  187.  
  188.     # The default action
  189.     foreach kid [$data(w:hlist) info children $ent] {
  190.     $data(w:hlist) hide entry $kid
  191.     }
  192. }
  193.  
  194. proc tixVTree:Command {w B} {
  195.     upvar #0 $w data
  196.     upvar $B bind
  197.  
  198.     if {$data(-ignoreinvoke)} {
  199.     return
  200.     }
  201.     set ent [tixEvent flag V]
  202.     if {[$data(w:hlist) indicator exist $ent]} {
  203.     tixVTree:Activate $w $ent [tixVTree:GetType $w $ent]
  204.     }
  205. }
  206.  
  207. proc tixVTree:BrowseCmd {w B} {
  208. }
  209. #----------------------------------------------------------------------
  210. #
  211. #            Widget commands
  212. #
  213. #----------------------------------------------------------------------
  214.