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

  1. #
  2. # Extfileselectiondialog
  3. # ----------------------------------------------------------------------
  4. # Implements a file selection dialog that is a slightly extended version
  5. # of the OSF/Motif standard composite widget.  The Extfileselectionbox 
  6. # differs from the Motif standard in that the filter and selection 
  7. # fields are comboboxes and the files and directory lists are in a 
  8. # paned window.
  9. # ----------------------------------------------------------------------
  10. #  AUTHOR: Mark L. Ulferts               EMAIL: mulferts@spd.dsccc.com
  11. #
  12. #  @(#) $Id: extfileselectiondialog.itk,v 1.1 1998/07/27 18:53:05 stanton Exp $
  13. # ----------------------------------------------------------------------
  14. #            Copyright (c) 1997 DSC Technologies Corporation
  15. # ======================================================================
  16. # Permission to use, copy, modify, distribute and license this software 
  17. # and its documentation for any purpose, and without fee or written 
  18. # agreement with DSC, is hereby granted, provided that the above copyright 
  19. # notice appears in all copies and that both the copyright notice and 
  20. # warranty disclaimer below appear in supporting documentation, and that 
  21. # the names of DSC Technologies Corporation or DSC Communications 
  22. # Corporation not be used in advertising or publicity pertaining to the 
  23. # software without specific, written prior permission.
  24. # DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 
  25. # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND NON-
  26. # INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE
  27. # AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, 
  28. # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. IN NO EVENT SHALL 
  29. # DSC BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 
  30. # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
  31. # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION,
  32. # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 
  33. # SOFTWARE.
  34. # ======================================================================
  35.  
  36. #
  37. # Usual options.
  38. #
  39. itk::usual Extfileselectiondialog {
  40.     keep -activebackground -activerelief -background -borderwidth -cursor \
  41.      -elementborderwidth -foreground -highlightcolor -highlightthickness \
  42.      -insertbackground -insertborderwidth -insertofftime -insertontime \
  43.      -insertwidth -jump -labelfont -modality -selectbackground \
  44.      -selectborderwidth -textbackground -textfont 
  45. }
  46.  
  47. # ------------------------------------------------------------------
  48. #                        EXTFILESELECTIONDIALOG
  49. # ------------------------------------------------------------------
  50. class iwidgets::Extfileselectiondialog {
  51.     inherit iwidgets::Dialog
  52.  
  53.     constructor {args} {}
  54.  
  55.     public {
  56.     method childsite {}
  57.     method get {}
  58.     method filter {}
  59.     }
  60.  
  61.     protected method _dbldir {}
  62. }
  63.  
  64. #
  65. # Provide a lowercased access method for the Extfileselectiondialog class.
  66. proc ::iwidgets::extfileselectiondialog {pathName args} {
  67.     uplevel ::iwidgets::Extfileselectiondialog $pathName $args
  68. }
  69.  
  70. #
  71. # Use option database to override default resources of base classes.
  72. #
  73. option add *Extfileselectiondialog.borderWidth 2 widgetDefault
  74.  
  75. option add *Extfileselectiondialog.title "File Selection Dialog" widgetDefault
  76.  
  77. option add *Extfileselectiondialog.width 350 widgetDefault
  78. option add *Extfileselectiondialog.height 400 widgetDefault
  79.  
  80. option add *Extfileselectiondialog.master "." widgetDefault
  81.  
  82. # ------------------------------------------------------------------
  83. #                        CONSTRUCTOR
  84. # ------------------------------------------------------------------
  85. body iwidgets::Extfileselectiondialog::constructor {args} {
  86.     component hull configure -borderwidth 0
  87.     itk_option add hull.width hull.height
  88.     
  89.     #
  90.     # Turn off pack propagation for the hull widget so the width
  91.     # and height options become active.
  92.     #
  93.     pack propagate $itk_component(hull) no
  94.     
  95.     # 
  96.     # Instantiate a file selection box widget.
  97.     #
  98.     itk_component add fsb {
  99.     iwidgets::Extfileselectionbox $itk_interior.fsb -width 150 -height 150 \
  100.         -selectioncommand [code $this invoke] \
  101.             -selectdircommand [code $this default Apply] \
  102.             -selectfilecommand [code $this default OK]
  103.     } {
  104.     usual
  105.  
  106.     keep -labelfont -childsitepos -directory -dirslabel \
  107.         -dirsearchcommand -dirson -fileslabel -fileson \
  108.         -filesearchcommand -filterlabel -filteron \
  109.         -filetype -invalid -mask -nomatchstring \
  110.         -selectionlabel -selectionon
  111.     }
  112.     grid $itk_component(fsb) -sticky nsew
  113.     grid rowconfigure $itk_interior 0 -weight 1
  114.     grid columnconfigure $itk_interior 0 -weight 1
  115.     
  116.     $itk_component(fsb) component filter configure \
  117.     -focuscommand [code $this default Apply]
  118.     $itk_component(fsb) component selection configure \
  119.     -focuscommand [code $this default OK]
  120.     $itk_component(fsb) component dirs configure \
  121.         -dblclickcommand [code $this _dbldir]
  122.     $itk_component(fsb) component files configure \
  123.         -dblclickcommand [code $this invoke] 
  124.  
  125.     buttonconfigure Apply -text "Filter" \
  126.         -command [code $itk_component(fsb) filter]
  127.     
  128.     set itk_interior [$itk_component(fsb) childsite]
  129.     
  130.     hide Help
  131.  
  132.     eval itk_initialize $args
  133. }   
  134.  
  135. # ------------------------------------------------------------------
  136. #                            METHODS
  137. # ------------------------------------------------------------------
  138.  
  139. # ------------------------------------------------------------------
  140. # METHOD: childsite
  141. #
  142. # Thinwrapped method of file selection box class.
  143. # ------------------------------------------------------------------
  144. body iwidgets::Extfileselectiondialog::childsite {} {
  145.     return [$itk_component(fsb) childsite]
  146. }
  147.  
  148. # ------------------------------------------------------------------
  149. # METHOD: get
  150. #
  151. # Thinwrapped method of file selection box class.
  152. # ------------------------------------------------------------------
  153. body iwidgets::Extfileselectiondialog::get {} {
  154.     return [$itk_component(fsb) get]
  155. }
  156.  
  157. # ------------------------------------------------------------------
  158. # METHOD: filter
  159. #
  160. # Thinwrapped method of file selection box class.
  161. # ------------------------------------------------------------------
  162. body iwidgets::Extfileselectiondialog::filter {} {
  163.     return [$itk_component(fsb) filter]
  164. }
  165.  
  166. # ------------------------------------------------------------------
  167. # PROTECTED METHOD: _dbldir
  168. #
  169. # Double select in directory list.  If the files list is on then
  170. # make the default button the filter and invoke.  If not, just invoke.
  171. # ------------------------------------------------------------------
  172. body iwidgets::Extfileselectiondialog::_dbldir {} {
  173.     if {$itk_option(-fileson)} {
  174.     default Apply
  175.     }
  176.  
  177.     invoke
  178. }
  179.  
  180.