home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 November / CPNL0711.ISO / beeld / teken / scribus-1.3.3.9-win32-install.exe / tcl / tix8.1 / HListDD.tcl < prev    next >
Text File  |  2001-11-03  |  5KB  |  205 lines

  1. # -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
  2. #
  3. #    $Id: HListDD.tcl,v 1.2.2.1 2001/11/03 06:43:50 idiscovery Exp $
  4. #
  5. # HListDD.tcl --
  6. #
  7. #    !!! PRE-ALPHA CODE, NOT USED, DON'T USE !!!
  8. #
  9. #    This file implements drag+drop for HList.
  10. #
  11. # Copyright (c) 1993-1999 Ioi Kim Lam.
  12. # Copyright (c) 2000-2001 Tix Project Group.
  13. #
  14. # See the file "license.terms" for information on usage and redistribution
  15. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  16. #
  17.  
  18. #
  19. # events
  20. #
  21. #
  22.  
  23. proc tixHListSingle:DragTimer {w ent} {
  24.     case [tixHListSingle:GetState $w] {
  25.     {1} {
  26.         # fire up
  27.     }
  28.     }
  29. }
  30.  
  31.  
  32.  
  33.  
  34.  
  35. #----------------------------------------------------------------------
  36. #
  37. #            Drag + Drop Bindings
  38. #
  39. #----------------------------------------------------------------------
  40.  
  41.          #----------------------------------------#
  42.          #              Sending Actions          #
  43.          #----------------------------------------#
  44.  
  45. #----------------------------------------------------------------------
  46. #  tixHListSingle:Send:WaitDrag --
  47. #
  48. #    Sender wait for dragging action
  49. #----------------------------------------------------------------------
  50. proc tixHListSingle:Send:WaitDrag {w x y} {
  51.     global tixPriv
  52.  
  53.     set ent [tixHListSingle:GetNearest $w $y]
  54.     if {$ent != ""} {
  55.     $w anchor set $ent
  56.     $w select clear
  57.     $w select set $ent
  58.  
  59.     set tixPriv(dd,$w:moved) 0
  60.     set tixPriv(dd,$w:entry) $ent
  61.  
  62. #    set browsecmd [$w cget -browsecmd]
  63. #    if {$browsecmd != "" && $ent != ""} {
  64. #        eval $browsecmd $ent
  65. #    }
  66.     }
  67. }
  68.  
  69. proc tixHListSingle:Send:StartDrag {w x y} {
  70.     global tixPriv
  71.     set dd [tixGetDragDropContext $w]
  72.  
  73.     if {![info exists tixPriv(dd,$w:entry)]} {
  74.     return
  75.     }
  76.     if {$tixPriv(dd,$w:entry) == ""} {
  77.     return
  78.     }
  79.  
  80.     if {$tixPriv(dd,$w:moved) == 0} {
  81.     $w dragsite set $tixPriv(dd,$w:entry)
  82.     set tixPriv(dd,$w:moved) 1
  83.     $dd config -source $w -command [list tixHListSingle:Send:Cmd $w]
  84.     $dd startdrag $X $Y
  85.     } else {
  86.     $dd drag $X $Y
  87.     }
  88. }
  89.  
  90. proc tixHListSingle:Send:DoneDrag {w x y} {
  91.     global tixPriv
  92.     global moved
  93.  
  94.     if {![info exists tixPriv(dd,$w:entry)]} {
  95.     return
  96.     }
  97.     if {$tixPriv(dd,$w:entry) == ""} {
  98.     return
  99.     }
  100.  
  101.     if {$tixPriv(dd,$w:moved) == 1} {
  102.     set dd [tixGetDragDropContext $w]
  103.     $dd drop $X $Y
  104.     }
  105.     $w dragsite clear
  106.     catch {unset tixPriv(dd,$w:moved)}
  107.     catch {unset tixPriv(dd,$w:entry)}
  108. }
  109.  
  110. proc tixHListSingle:Send:Cmd {w option args} {
  111.     set dragCmd [$w cget -dragcmd]
  112.     if {$dragCmd != ""} {
  113.     return [eval $dragCmd $option $args]
  114.     }
  115.  
  116.     # Perform the default action
  117.     #
  118.     case "$option" {
  119.     who {
  120.         return $w
  121.     }
  122.     types {
  123.         return {data text}
  124.     }
  125.     get {
  126.         global tixPriv
  127.         if {[lindex $args 0] == "text"} {
  128.         if {$tixPriv(dd,$w:entry) != ""} {
  129.             return [$w entrycget $tixPriv(dd,$w:entry) -text]
  130.         }
  131.         }
  132.         if {[lindex $args 0] == "data"} {
  133.         if {$tixPriv(dd,$w:entry) != ""} {
  134.             return [$w entrycget $tixPriv(dd,$w:entry) -data]
  135.         }
  136.         }
  137.     }
  138.     }
  139. }
  140.  
  141.          #----------------------------------------#
  142.          #              Receiving Actions          #
  143.          #----------------------------------------#
  144. proc tixHListSingle:Rec:DragOver {w sender x y} {
  145.     if {[$w cget -selectmode] != "dragdrop"} {
  146.     return
  147.     }
  148.  
  149.     set ent [tixHListSingle:GetNearest $w $y]
  150.     if {$ent != ""} {
  151.     $w dropsite set $ent
  152.     } else {
  153.     $w dropsite clear
  154.     }
  155. }
  156.  
  157. proc tixHListSingle:Rec:DragIn {w sender x y} {
  158.     if {[$w cget -selectmode] != "dragdrop"} {
  159.     return
  160.     }
  161.     set ent [tixHListSingle:GetNearest $w $y]
  162.     if {$ent != ""} {
  163.     $w dropsite set $ent
  164.     } else {
  165.     $w dropsite clear
  166.     }
  167. }
  168.  
  169. proc tixHListSingle:Rec:DragOut {w sender x y} {
  170.     if {[$w cget -selectmode] != "dragdrop"} {
  171.     return
  172.     }
  173.     $w dropsite clear
  174. }
  175.  
  176. proc tixHListSingle:Rec:Drop {w sender x y} {
  177.     if {[$w cget -selectmode] != "dragdrop"} {
  178.     return
  179.     }
  180.     $w dropsite clear
  181.  
  182.     set ent [tixHListSingle:GetNearest $w $y]
  183.     if {$ent != ""} {
  184.     $w anchor set $ent
  185.     $w select clear
  186.     $w select set $ent
  187.     }
  188.  
  189.     set dropCmd [$w cget -dropcmd]
  190.     if {$dropCmd != ""} {
  191.     eval $dropCmd $sender $x $y
  192.     return
  193.     }
  194.  
  195. #    set browsecmd [$w cget -browsecmd]
  196. #    if {$browsecmd != "" && $ent != ""} {
  197. #    eval $browsecmd [list $ent]
  198. #    }
  199. }
  200.  
  201. tixDropBind TixHListSingle <In>   "tixHListSingle:Rec:DragIn %W %S %x %y"
  202. tixDropBind TixHListSingle <Over> "tixHListSingle:Rec:DragOver %W %S %x %y"
  203. tixDropBind TixHListSingle <Out>  "tixHListSingle:Rec:DragOut %W %S %x %y"
  204. tixDropBind TixHListSingle <Drop> "tixHListSingle:Rec:Drop %W %S %x %y"
  205.