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 / SGrid.tcl < prev    next >
Text File  |  2002-01-24  |  6KB  |  244 lines

  1. # -*- mode: TCL; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-
  2. #
  3. #    $Id: SGrid.tcl,v 1.3.2.3 2002/01/24 10:08:58 idiscovery Exp $
  4. #
  5. # SGrid.tcl --
  6. #
  7. #    This file implements Scrolled Grid widgets
  8. #
  9. # Copyright (c) 1993-1999 Ioi Kim Lam.
  10. # Copyright (c) 2000-2001 Tix Project Group.
  11. #
  12. # See the file "license.terms" for information on usage and redistribution
  13. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  14. #
  15.  
  16. global tkPriv
  17. if {![llength [info globals tkPriv]]} {
  18.     tk::unsupported::ExposePrivateVariable tkPriv
  19. }
  20. #--------------------------------------------------------------------------
  21. # tkPriv elements used in this file:
  22. #
  23. # x -    
  24. # y -    
  25. # X -    
  26. # Y -    
  27. #--------------------------------------------------------------------------
  28. #
  29.  
  30. tixWidgetClass tixScrolledGrid {
  31.     -classname TixScrolledGrid
  32.     -superclass tixScrolledWidget
  33.     -method {
  34.     }
  35.     -flag {
  36.     }
  37.     -configspec {
  38.     }
  39.     -default {
  40.     {.scrollbar            auto}
  41.     {*grid.borderWidth        1}
  42.     {*grid.Background        #c3c3c3}
  43.     {*grid.highlightBackground    #d9d9d9}
  44.     {*grid.relief            sunken}
  45.     {*grid.takeFocus        1}
  46.     {*Scrollbar.takeFocus        0}
  47.     }
  48. }
  49.  
  50. proc tixScrolledGrid:ConstructWidget {w} {
  51.     upvar #0 $w data
  52.  
  53.     tixChainMethod $w ConstructWidget
  54.  
  55.     set data(w:grid) [tixGrid $w.grid]
  56.  
  57.     set data(w:hsb) \
  58.     [scrollbar $w.hsb -orient horizontal -takefocus 0]
  59.     set data(w:vsb) \
  60.     [scrollbar $w.vsb -orient vertical -takefocus 0]
  61.  
  62.     set data(pw:client) $data(w:grid)
  63.  
  64.     pack $data(w:grid) -expand yes -fill both -padx 0 -pady 0
  65. }
  66.  
  67. proc tixScrolledGrid:SetBindings {w} {
  68.     upvar #0 $w data
  69.  
  70.     tixChainMethod $w SetBindings
  71.  
  72.     $data(w:grid) config \
  73.     -xscrollcommand "$data(w:hsb) set"\
  74.     -yscrollcommand "$data(w:vsb) set"\
  75.     -sizecmd [list tixScrolledWidget:Configure $w] \
  76.     -formatcmd "tixCallMethod $w FormatCmd"
  77.  
  78.     $data(w:hsb) config -command "$data(w:grid) xview"
  79.     $data(w:vsb) config -command "$data(w:grid) yview"
  80.  
  81.     bindtags $data(w:grid) \
  82.     "$data(w:grid) TixSGrid TixGrid [winfo toplevel $data(w:grid)] all"    
  83.  
  84.     tixSetMegaWidget $data(w:grid) $w
  85. }
  86.  
  87. #----------------------------------------------------------------------
  88. #            RAW event bindings
  89. #----------------------------------------------------------------------
  90. proc tixScrolledGridBind {} {
  91.     tixBind TixScrolledGrid <ButtonPress-1> {
  92.     tixScrolledGrid:Button-1 [tixGetMegaWidget %W] %x %y
  93.     }
  94.     tixBind TixScrolledGrid <Shift-ButtonPress-1> {
  95.     tixScrolledGrid:Shift-Button-1 %W %x %y
  96.     }
  97.     tixBind TixScrolledGrid <Control-ButtonPress-1> {
  98.     tixScrolledGrid:Control-Button-1 %W %x %y
  99.     }
  100.     tixBind TixScrolledGrid <ButtonRelease-1> {
  101.     tixScrolledGrid:ButtonRelease-1 %W %x %y
  102.     }
  103.     tixBind TixScrolledGrid <Double-ButtonPress-1> {
  104.     tixScrolledGrid:Double-1 %W  %x %y
  105.     }
  106.     tixBind TixScrolledGrid <B1-Motion> {
  107.     set tkPriv(x) %x 
  108.     set tkPriv(y) %y
  109.     set tkPriv(X) %X
  110.     set tkPriv(Y) %Y
  111.  
  112.     tixScrolledGrid:B1-Motion %W %x %y
  113.     }
  114.     tixBind TixScrolledGrid <Control-B1-Motion> {
  115.     set tkPriv(x) %x 
  116.     set tkPriv(y) %y
  117.     set tkPriv(X) %X
  118.     set tkPriv(Y) %Y
  119.  
  120.     tixScrolledGrid:Control-B1-Motion %W %x %y
  121.     }
  122.     tixBind TixScrolledGrid <B1-Leave> {
  123.     set tkPriv(x) %x 
  124.     set tkPriv(y) %y
  125.     set tkPriv(X) %X
  126.     set tkPriv(Y) %Y
  127.  
  128.     tixScrolledGrid:B1-Leave %W
  129.     }
  130.     tixBind TixScrolledGrid <B1-Enter> {
  131.     tixScrolledGrid:B1-Enter %W %x %y
  132.     }
  133.     tixBind TixScrolledGrid <Control-B1-Leave> {
  134.     set tkPriv(x) %x 
  135.     set tkPriv(y) %y
  136.     set tkPriv(X) %X
  137.     set tkPriv(Y) %Y
  138.  
  139.     tixScrolledGrid:Control-B1-Leave %W
  140.     }
  141.     tixBind TixScrolledGrid <Control-B1-Enter> {
  142.     tixScrolledGrid:Control-B1-Enter %W %x %y
  143.     }
  144.  
  145.     # Keyboard bindings
  146.     #
  147.     tixBind TixScrolledGrid <Up> {
  148.     tixScrolledGrid:DirKey %W up
  149.     }
  150.     tixBind TixScrolledGrid <Down> {
  151.     tixScrolledGrid:DirKey %W down
  152.     }
  153.     tixBind TixScrolledGrid <Left> {
  154.     tixScrolledGrid:DirKey %W left
  155.     }
  156.     tixBind TixScrolledGrid <Right> {
  157.     tixScrolledGrid:DirKey %W right
  158.     }
  159.     tixBind TixScrolledGrid <Prior> {
  160.     %W yview scroll -1 pages
  161.     }
  162.     tixBind TixScrolledGrid <Next> {
  163.     %W yview scroll 1 pages
  164.     }
  165.     tixBind TixScrolledGrid <Return> {
  166.     tixScrolledGrid:Return %W 
  167.     }
  168.     tixBind TixScrolledGrid <space> {
  169.     tixScrolledGrid:Space %W 
  170.     }
  171. }
  172.  
  173. #----------------------------------------------------------------------
  174. #
  175. #
  176. #             Mouse bindings
  177. #
  178. #
  179. #----------------------------------------------------------------------
  180. proc tixScrolledGrid:Button-1 {w x y} {
  181.     if {[$w cget -state] == "disabled"} {
  182.     return
  183.     }
  184.     if {[$w cget -takefocus]} {
  185.     focus $w
  186.     }
  187.     case [tixScrolled:GetState $w] {
  188.     {0} {
  189.         tixScrolledGrid:GoState s1 $w $x $y
  190.            }
  191.     {b0} {
  192.         tixScrolledGrid:GoState b1 $w $x $y
  193.            }
  194.     {m0} {
  195.         tixScrolledGrid:GoState m1 $w $x $y
  196.            }
  197.     {e0} {
  198.         tixScrolledGrid:GoState e1 $w $x $y
  199.            }
  200.     }
  201. }
  202.  
  203.  
  204.  
  205. #----------------------------------------------------------------------
  206. #
  207. #        option configs
  208. #----------------------------------------------------------------------
  209.  
  210. #----------------------------------------------------------------------
  211. #
  212. #        Widget commands
  213. #----------------------------------------------------------------------
  214.  
  215.  
  216. #----------------------------------------------------------------------
  217. #
  218. #        Private Methods
  219. #----------------------------------------------------------------------
  220.  
  221. #----------------------------------------------------------------------
  222. #        Virtual Methods
  223. #----------------------------------------------------------------------
  224. proc tixScrolledGrid:FormatCmd {w area x1 y1 x2 y2} {
  225.     # do nothing
  226. }
  227.  
  228. #----------------------------------------------------------------------
  229. # virtual functions to query the client window's scroll requirement
  230. #----------------------------------------------------------------------
  231. proc tixScrolledGrid:GeometryInfo {w mW mH} {
  232.     upvar #0 $w data
  233.  
  234.  
  235.     if {$mW < 1} {
  236.     set mW 1
  237.     }
  238.     if {$mH < 1} {
  239.     set mH 1
  240.     }
  241.  
  242.     return [$data(w:grid) geometryinfo $mW $mH]
  243. }
  244.