home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / comanche.exe / lib / iwidgets2.2.0 / scripts / pane.itk < prev    next >
Text File  |  1999-02-24  |  5KB  |  135 lines

  1. #
  2. # Paned
  3. # ----------------------------------------------------------------------
  4. # Implements a pane for a paned window widget.  The pane is itself a 
  5. # frame with a child site for other widgets.  The pane class performs
  6. # basic option management.
  7. #
  8. # ----------------------------------------------------------------------
  9. #  AUTHOR: Mark L. Ulferts               EMAIL: mulferts@spd.dsccc.com
  10. #
  11. #  @(#) $Id: pane.itk,v 1.1 1998/07/27 18:49:42 stanton Exp $
  12. # ----------------------------------------------------------------------
  13. #            Copyright (c) 1995 DSC Technologies Corporation
  14. # ======================================================================
  15. # Permission to use, copy, modify, distribute and license this software 
  16. # and its documentation for any purpose, and without fee or written 
  17. # agreement with DSC, is hereby granted, provided that the above copyright 
  18. # notice appears in all copies and that both the copyright notice and 
  19. # warranty disclaimer below appear in supporting documentation, and that 
  20. # the names of DSC Technologies Corporation or DSC Communications 
  21. # Corporation not be used in advertising or publicity pertaining to the 
  22. # software without specific, written prior permission.
  23. # DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 
  24. # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND NON-
  25. # INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE
  26. # AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, 
  27. # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. IN NO EVENT SHALL 
  28. # DSC BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 
  29. # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
  30. # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION,
  31. # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 
  32. # SOFTWARE.
  33. # ======================================================================
  34.  
  35. #
  36. # Default resources.
  37. #
  38. option add *Pane.minimum 10 widgetDefault
  39. option add *Pane.margin 8 widgetDefault
  40.  
  41. #
  42. # Usual options.
  43. #
  44. itk::usual Pane {
  45.     keep -background -cursor
  46. }
  47.  
  48. # ------------------------------------------------------------------
  49. #                               PANE
  50. # ------------------------------------------------------------------
  51. class iwidgets::Pane {
  52.     inherit itk::Widget
  53.  
  54.     constructor {args} {}
  55.  
  56.     itk_option define -minimum minimum Minimum 10
  57.     itk_option define -margin margin Margin 8
  58.  
  59.     public method childSite {} {}
  60. }
  61.  
  62. #
  63. # Provide a lowercased access method for the Pane class.
  64. proc ::iwidgets::pane {pathName args} {
  65.     uplevel ::iwidgets::Pane $pathName $args
  66. }
  67.  
  68. # ------------------------------------------------------------------
  69. #                        CONSTRUCTOR
  70. # ------------------------------------------------------------------
  71. body iwidgets::Pane::constructor {args} {
  72.     # 
  73.     # Create the pane childsite.
  74.     #
  75.     itk_component add childsite {
  76.     frame $itk_interior.childsite 
  77.     } {
  78.     keep -background -cursor
  79.     }
  80.     pack $itk_component(childsite) -fill both -expand yes
  81.     
  82.     #
  83.     # Set the itk_interior variable to be the childsite for derived 
  84.     # classes.
  85.     #
  86.     set itk_interior $itk_component(childsite)
  87.     
  88.     eval itk_initialize $args
  89. }
  90.  
  91. # ------------------------------------------------------------------
  92. #                             OPTIONS
  93. # ------------------------------------------------------------------
  94.  
  95. # ------------------------------------------------------------------
  96. # OPTION: -minimum
  97. #
  98. # Specifies the minimum size that the pane may reach.
  99. # ------------------------------------------------------------------
  100. configbody iwidgets::Pane::minimum {
  101.     set pixels \
  102.         [winfo pixels $itk_component(hull) $itk_option(-minimum)]
  103.     
  104.     set $itk_option(-minimum) $pixels
  105. }
  106.  
  107. # ------------------------------------------------------------------
  108. # OPTION: -margin
  109. #
  110. # Specifies the border distance between the pane and pane contents.
  111. # This is done by setting the borderwidth of the pane to the margin.
  112. # ------------------------------------------------------------------
  113. configbody iwidgets::Pane::margin {
  114.     set pixels [winfo pixels $itk_component(hull) $itk_option(-margin)]
  115.     set itk_option(-margin) $pixels
  116.     
  117.     $itk_component(childsite) configure \
  118.         -borderwidth $itk_option(-margin)
  119. }
  120.  
  121. # ------------------------------------------------------------------
  122. #                            METHODS
  123. # ------------------------------------------------------------------
  124.  
  125. # ------------------------------------------------------------------
  126. # METHOD: childSite
  127. #
  128. # Return the pane child site path name.
  129. # ------------------------------------------------------------------
  130. body iwidgets::Pane::childSite {} {
  131.     return $itk_component(childsite)
  132. }
  133.