home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / comanche.exe / lib / iwidgets3.0.0 / scripts / pane.itk < prev    next >
Text File  |  1999-02-24  |  5KB  |  129 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@austin.dsccc.com
  10. #
  11. #  @(#) $Id: pane.itk,v 1.1 1998/07/27 18:53:11 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. # Usual options.
  37. #
  38. itk::usual Pane {
  39.     keep -background -cursor
  40. }
  41.  
  42. # ------------------------------------------------------------------
  43. #                               PANE
  44. # ------------------------------------------------------------------
  45. class iwidgets::Pane {
  46.     inherit itk::Widget
  47.  
  48.     constructor {args} {}
  49.  
  50.     itk_option define -minimum minimum Minimum 10
  51.     itk_option define -margin margin Margin 8
  52.  
  53.     public method childSite {} {}
  54. }
  55.  
  56. #
  57. # Provide a lowercased access method for the Pane class.
  58. proc ::iwidgets::pane {pathName args} {
  59.     uplevel ::iwidgets::Pane $pathName $args
  60. }
  61.  
  62. # ------------------------------------------------------------------
  63. #                        CONSTRUCTOR
  64. # ------------------------------------------------------------------
  65. body iwidgets::Pane::constructor {args} {
  66.     # 
  67.     # Create the pane childsite.
  68.     #
  69.     itk_component add childsite {
  70.     frame $itk_interior.childsite 
  71.     } {
  72.     keep -background -cursor
  73.     }
  74.     pack $itk_component(childsite) -fill both -expand yes
  75.     
  76.     #
  77.     # Set the itk_interior variable to be the childsite for derived 
  78.     # classes.
  79.     #
  80.     set itk_interior $itk_component(childsite)
  81.     
  82.     eval itk_initialize $args
  83. }
  84.  
  85. # ------------------------------------------------------------------
  86. #                             OPTIONS
  87. # ------------------------------------------------------------------
  88.  
  89. # ------------------------------------------------------------------
  90. # OPTION: -minimum
  91. #
  92. # Specifies the minimum size that the pane may reach.
  93. # ------------------------------------------------------------------
  94. configbody iwidgets::Pane::minimum {
  95.     set pixels \
  96.         [winfo pixels $itk_component(hull) $itk_option(-minimum)]
  97.     
  98.     set $itk_option(-minimum) $pixels
  99. }
  100.  
  101. # ------------------------------------------------------------------
  102. # OPTION: -margin
  103. #
  104. # Specifies the border distance between the pane and pane contents.
  105. # This is done by setting the borderwidth of the pane to the margin.
  106. # ------------------------------------------------------------------
  107. configbody iwidgets::Pane::margin {
  108.     set pixels [winfo pixels $itk_component(hull) $itk_option(-margin)]
  109.     set itk_option(-margin) $pixels
  110.     
  111.     $itk_component(childsite) configure \
  112.         -borderwidth $itk_option(-margin)
  113. }
  114.  
  115. # ------------------------------------------------------------------
  116. #                            METHODS
  117. # ------------------------------------------------------------------
  118.  
  119. # ------------------------------------------------------------------
  120. # METHOD: childSite
  121. #
  122. # Return the pane child site path name.
  123. # ------------------------------------------------------------------
  124. body iwidgets::Pane::childSite {} {
  125.     return $itk_component(childsite)
  126. }
  127.