home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / docstructt.tcl < prev    next >
Text File  |  1996-08-29  |  2KB  |  96 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)docstructt.tcl    /main/hindenburg/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)docstructt.tcl    /main/hindenburg/1   29 Aug 1996 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class DocStructTree : {BrowsTree} {
  16.     constructor
  17.     method destructor
  18.     method dropEvent
  19.     method dialog
  20.     attribute _dialog
  21. }
  22.  
  23. constructor DocStructTree {class this name} {
  24.     set this [BrowsTree::constructor $class $this $name]
  25.     # Start constructor user section
  26.  
  27.     $this config \
  28.         -selectionChanged {[%this dialog] selectionChanged} \
  29.         -destinationSet "SECTION dropEvent" \
  30.         -font "[m4_var get M4_font -context desk]"
  31.  
  32.     # End constructor user section
  33.     return $this
  34. }
  35.  
  36. method DocStructTree::destructor {this} {
  37.     set ref [$this _dialog]
  38.     if {$ref != ""} {
  39.         $ref _structure ""
  40.     }
  41.     # Start destructor user section
  42.     # End destructor user section
  43. }
  44.  
  45. method DocStructTree::dropEvent {this section srcIsDst droppedAfterObj droppedBeforeObj} {
  46.     # Skip if dragged from other tool
  47.     if {! $srcIsDst} {
  48.     return
  49.     }
  50.  
  51.     # The root node can not be dragged
  52.     if {"[$section parent]" == ""} {
  53.     return
  54.     }
  55.  
  56.     # Cannot drop before the root node
  57.     if {"$droppedAfterObj" == ""} {
  58.     return
  59.     }
  60.  
  61.     # Update the section's parent and index
  62.     set newParent [$droppedAfterObj parent]
  63.     if {("$newParent" == "") ||
  64.     ("$droppedBeforeObj" != "" &&
  65.      "[$droppedBeforeObj parent]" != "$newParent")} {
  66.     set newParent $droppedAfterObj
  67.     set index 0
  68.     } else {
  69.     set index [expr [$droppedAfterObj index] + 1]
  70.     }
  71.     if {! [$section setParent $newParent]} {
  72.     return
  73.     }
  74.     if {[$section index] != $index} {
  75.     $section index $index
  76.     }
  77. }
  78.  
  79. # Do not delete this line -- regeneration end marker
  80.  
  81. method DocStructTree::dialog {this args} {
  82.     if {$args == ""} {
  83.         return [$this _dialog]
  84.     }
  85.     set ref [$this _dialog]
  86.     if {$ref != ""} {
  87.         $ref _structure ""
  88.     }
  89.     set obj [lindex $args 0]
  90.     if {$obj != ""} {
  91.         $obj _structure $this
  92.     }
  93.     $this _dialog $obj
  94. }
  95.  
  96.