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 / fileselectiondialog.itk < prev    next >
Text File  |  1999-02-24  |  8KB  |  207 lines

  1. #
  2. # Fileselectiondialog
  3. # ----------------------------------------------------------------------
  4. # Implements a file selection box similar to the OSF/Motif standard
  5. # file selection dialog composite widget.  The Fileselectiondialog is 
  6. # derived from the Dialog class and is composed of a FileSelectionBox
  7. # with attributes set to manipulate the dialog buttons.
  8. # ----------------------------------------------------------------------
  9. #  AUTHOR: Mark L. Ulferts               EMAIL: mulferts@spd.dsccc.com
  10. #
  11. #  @(#) $Id: fileselectiondialog.itk,v 1.1 1998/07/27 18:49:29 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 *Fileselectiondialog.borderWidth 2 widgetDefault
  39.  
  40. option add *Fileselectiondialog.filterLabel Filter widgetDefault
  41. option add *Fileselectiondialog.filterLabelPos nw widgetDefault
  42. option add *Fileselectiondialog.filterOn yes widgetDefault
  43.  
  44. option add *Fileselectiondialog.dirsLabel Directories widgetDefault
  45. option add *Fileselectiondialog.dirsLabelPos nw widgetDefault
  46. option add *Fileselectiondialog.dirsOn yes widgetDefault
  47.  
  48. option add *Fileselectiondialog.filesLabel Files widgetDefault
  49. option add *Fileselectiondialog.filesLabelPos nw widgetDefault
  50. option add *Fileselectiondialog.filesOn yes widgetDefault
  51.  
  52. option add *Fileselectiondialog.selectionLabel Selection widgetDefault
  53. option add *Fileselectiondialog.selectionLabelPos nw widgetDefault
  54. option add *Fileselectiondialog.selectionOn yes widgetDefault
  55.  
  56. option add *Fileselectiondialog.vscrollMode static widgetDefault
  57. option add *Fileselectiondialog.hscrollMode static widgetDefault
  58. option add *Fileselectiondialog.scrollMargin 3 widgetDefault
  59.  
  60. option add *Fileselectiondialog.vertMargin 7 widgetDefault
  61. option add *Fileselectiondialog.horizMargin 7 widgetDefault
  62.  
  63. option add *Fileselectiondialog.title "File Selection Dialog" widgetDefault
  64.  
  65. option add *Fileselectiondialog.padX 10 widgetDefault
  66. option add *Fileselectiondialog.padY 10 widgetDefault
  67.  
  68. option add *Fileselectiondialog.width 450 widgetDefault
  69. option add *Fileselectiondialog.height 435 widgetDefault
  70.  
  71. option add *Fileselectiondialog.master "." widgetDefault
  72.  
  73. #
  74. # Usual options.
  75. #
  76. itk::usual Fileselectiondialog {
  77.     keep -activebackground -activerelief -background -borderwidth -cursor \
  78.      -elementborderwidth -foreground -highlightcolor -highlightthickness \
  79.      -insertbackground -insertborderwidth -insertofftime -insertontime \
  80.      -insertwidth -jump -labelfont -modality -selectbackground \
  81.      -selectborderwidth -selectforeground -separator -textbackground \
  82.      -textfont 
  83. }
  84.  
  85. # ------------------------------------------------------------------
  86. #                        FILESELECTIONDIALOG
  87. # ------------------------------------------------------------------
  88. class iwidgets::Fileselectiondialog {
  89.     inherit iwidgets::Dialog
  90.  
  91.     constructor {args} {}
  92.  
  93.     public method childsite {}
  94.     public method get {}
  95.     public method filter {}
  96.  
  97.     protected method _dbldir {}
  98. }
  99.  
  100. #
  101. # Provide a lowercased access method for the Fileselectiondialog class.
  102. proc ::iwidgets::fileselectiondialog {pathName args} {
  103.     uplevel ::iwidgets::Fileselectiondialog $pathName $args
  104. }
  105.  
  106. # ------------------------------------------------------------------
  107. #                        CONSTRUCTOR
  108. # ------------------------------------------------------------------
  109. body iwidgets::Fileselectiondialog::constructor {args} {
  110.     component hull configure -borderwidth 0
  111.     itk_option add hull.width hull.height
  112.     
  113.     #
  114.     # Turn off pack propagation for the hull widget so the width
  115.     # and height options become active.
  116.     #
  117.     pack propagate $itk_component(hull) no
  118.     
  119.     # 
  120.     # Instantiate a file selection box widget.
  121.     #
  122.     itk_component add fsb {
  123.     iwidgets::Fileselectionbox $itk_interior.fsb -width 150 -height 150 \
  124.         -filterfocuscommand [code $this default Apply] \
  125.         -selectionfocuscommand [code $this default OK] \
  126.         -selectioncommand [code $this invoke] \
  127.             -selectdircommand [code $this default Apply] \
  128.             -selectfilecommand [code $this default OK] \
  129.         -dbldirscommand [code $this _dbldir] \
  130.         -dblfilescommand [code $this invoke] 
  131.     } {
  132.     keep -activebackground -activerelief -background -borderwidth -cursor \
  133.         -elementborderwidth -foreground -insertbackground \
  134.         -insertborderwidth -insertofftime -insertontime -insertwidth \
  135.         -jump -relief -repeatdelay -repeatinterval -labelfont \
  136.         -selectbackground -selectborderwidth -selectforeground \
  137.         -hscrollmode -labelmargin -sbwidth -scrollmargin \
  138.         -textbackground -textfont -vscrollmode -childsitepos \
  139.         -directory -dirslabel -dirslabelpos -dirsearchcommand \
  140.         -dirson -fileslabel -fileslabelpos -fileson \
  141.         -filesearchcommand -filterlabel -filterlabelpos -filteron \
  142.         -filetype -horizmargin -invalid -mask -nomatchstring \
  143.         -selectioncommand -selectionlabel -selectionlabelpos \
  144.         -selectionon -vertmargin -highlightcolor \
  145.         -highlightthickness -troughcolor -dirsfraction -style
  146.     }
  147.     pack $itk_component(fsb) -fill both -expand yes
  148.     
  149.     buttonconfigure Apply -text "Filter" \
  150.         -command [code $itk_component(fsb) filter]
  151.     
  152.     set itk_interior [$itk_component(fsb) childsite]
  153.     
  154.     hide Help
  155.  
  156.     eval itk_initialize $args
  157. }   
  158.  
  159. # ------------------------------------------------------------------
  160. #                            METHODS
  161. # ------------------------------------------------------------------
  162.  
  163. # ------------------------------------------------------------------
  164. # METHOD: childsite
  165. #
  166. # Thinwrapped method of file selection box class.
  167. # ------------------------------------------------------------------
  168. body iwidgets::Fileselectiondialog::childsite {} {
  169.     return [$itk_component(fsb) childsite]
  170. }
  171.  
  172. # ------------------------------------------------------------------
  173. # METHOD: get
  174. #
  175. # Thinwrapped method of file selection box class.
  176. # ------------------------------------------------------------------
  177. body iwidgets::Fileselectiondialog::get {} {
  178.     return [$itk_component(fsb) get]
  179. }
  180.  
  181. # ------------------------------------------------------------------
  182. # METHOD: filter
  183. #
  184. # Thinwrapped method of file selection box class.
  185. # ------------------------------------------------------------------
  186. body iwidgets::Fileselectiondialog::filter {} {
  187.     return [$itk_component(fsb) filter]
  188. }
  189.  
  190. # ------------------------------------------------------------------
  191. # PROTECTED METHOD: _dbldir
  192. #
  193. # Double select in directory list.  If the files list is on then
  194. # make the default button the filter and invoke.  If not, just invoke.
  195. # ------------------------------------------------------------------
  196. body iwidgets::Fileselectiondialog::_dbldir {} {
  197.     if {$itk_option(-fileson)} {
  198.     default Apply
  199.     }
  200.  
  201.     invoke
  202. }
  203.  
  204.