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 / fileselectiondialog.itk < prev    next >
Text File  |  1999-02-24  |  7KB  |  182 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:53:07 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 Fileselectiondialog {
  39.     keep -activebackground -activerelief -background -borderwidth -cursor \
  40.      -elementborderwidth -foreground -highlightcolor -highlightthickness \
  41.      -insertbackground -insertborderwidth -insertofftime -insertontime \
  42.      -insertwidth -jump -labelfont -modality -selectbackground \
  43.      -selectborderwidth -textbackground -textfont 
  44. }
  45.  
  46. # ------------------------------------------------------------------
  47. #                        FILESELECTIONDIALOG
  48. # ------------------------------------------------------------------
  49. class iwidgets::Fileselectiondialog {
  50.     inherit iwidgets::Dialog
  51.  
  52.     constructor {args} {}
  53.  
  54.     public {
  55.     method childsite {}
  56.     method get {}
  57.     method filter {}
  58.     }
  59.  
  60.     protected method _dbldir {}
  61. }
  62.  
  63. #
  64. # Provide a lowercased access method for the Fileselectiondialog class.
  65. proc ::iwidgets::fileselectiondialog {pathName args} {
  66.     uplevel ::iwidgets::Fileselectiondialog $pathName $args
  67. }
  68.  
  69. #
  70. # Use option database to override default resources of base classes.
  71. #
  72. option add *Fileselectiondialog.borderWidth 2 widgetDefault
  73.  
  74. option add *Fileselectiondialog.title "File Selection Dialog" widgetDefault
  75.  
  76. option add *Fileselectiondialog.width 350 widgetDefault
  77. option add *Fileselectiondialog.height 400 widgetDefault
  78.  
  79. option add *Fileselectiondialog.master "." widgetDefault
  80.  
  81. # ------------------------------------------------------------------
  82. #                        CONSTRUCTOR
  83. # ------------------------------------------------------------------
  84. body iwidgets::Fileselectiondialog::constructor {args} {
  85.     component hull configure -borderwidth 0
  86.     itk_option add hull.width hull.height
  87.     
  88.     #
  89.     # Turn off pack propagation for the hull widget so the width
  90.     # and height options become active.
  91.     #
  92.     pack propagate $itk_component(hull) no
  93.     
  94.     # 
  95.     # Instantiate a file selection box widget.
  96.     #
  97.     itk_component add fsb {
  98.     iwidgets::Fileselectionbox $itk_interior.fsb -width 150 -height 150 \
  99.         -selectioncommand [code $this invoke] \
  100.             -selectdircommand [code $this default Apply] \
  101.             -selectfilecommand [code $this default OK]
  102.     } {
  103.     usual
  104.  
  105.     keep -labelfont -childsitepos -directory -dirslabel \
  106.         -dirsearchcommand -dirson -fileslabel -fileson \
  107.         -filesearchcommand -filterlabel -filteron \
  108.         -filetype -invalid -mask -nomatchstring \
  109.         -selectionlabel -selectionon
  110.     }
  111.     grid $itk_component(fsb) -sticky nsew
  112.     grid rowconfigure $itk_interior 0 -weight 1
  113.     grid columnconfigure $itk_interior 0 -weight 1
  114.     
  115.     $itk_component(fsb) component filter configure \
  116.     -focuscommand [code $this default Apply]
  117.     $itk_component(fsb) component selection configure \
  118.     -focuscommand [code $this default OK]
  119.     $itk_component(fsb) component dirs configure \
  120.         -dblclickcommand [code $this _dbldir]
  121.     $itk_component(fsb) component files configure \
  122.         -dblclickcommand [code $this invoke] 
  123.  
  124.     buttonconfigure Apply -text "Filter" \
  125.         -command [code $itk_component(fsb) filter]
  126.     
  127.     set itk_interior [$itk_component(fsb) childsite]
  128.     
  129.     hide Help
  130.  
  131.     eval itk_initialize $args
  132. }   
  133.  
  134. # ------------------------------------------------------------------
  135. #                            METHODS
  136. # ------------------------------------------------------------------
  137.  
  138. # ------------------------------------------------------------------
  139. # METHOD: childsite
  140. #
  141. # Thinwrapped method of file selection box class.
  142. # ------------------------------------------------------------------
  143. body iwidgets::Fileselectiondialog::childsite {} {
  144.     return [$itk_component(fsb) childsite]
  145. }
  146.  
  147. # ------------------------------------------------------------------
  148. # METHOD: get
  149. #
  150. # Thinwrapped method of file selection box class.
  151. # ------------------------------------------------------------------
  152. body iwidgets::Fileselectiondialog::get {} {
  153.     return [$itk_component(fsb) get]
  154. }
  155.  
  156. # ------------------------------------------------------------------
  157. # METHOD: filter
  158. #
  159. # Thinwrapped method of file selection box class.
  160. # ------------------------------------------------------------------
  161. body iwidgets::Fileselectiondialog::filter {} {
  162.     return [$itk_component(fsb) filter]
  163. }
  164.  
  165. # ------------------------------------------------------------------
  166. # PROTECTED METHOD: _dbldir
  167. #
  168. # Double select in directory list.  If the files list is on then
  169. # make the default button the filter and invoke.  If not, just invoke.
  170. # ------------------------------------------------------------------
  171. body iwidgets::Fileselectiondialog::_dbldir {} {
  172.     if {$itk_option(-fileson)} {
  173.     default Apply
  174.     }
  175.  
  176.     invoke
  177. }
  178.  
  179.