| # |
| # Fileselectiondialog |
| # ---------------------------------------------------------------------- |
| # Implements a file selection box similar to the OSF/Motif standard |
| # file selection dialog composite widget. The Fileselectiondialog is |
| # derived from the Dialog class and is composed of a FileSelectionBox |
| # with attributes set to manipulate the dialog buttons. |
| # |
| # ---------------------------------------------------------------------- |
| # AUTHOR: Mark L. Ulferts EMAIL: mulferts@spd.dsccc.com |
| # |
| # @(#) $Id: fileselectiondialog.itk,v 1.2 2001/08/07 19:56:48 smithc Exp $ |
| # ---------------------------------------------------------------------- |
| # Copyright (c) 1995 DSC Technologies Corporation |
| # ====================================================================== |
| # Permission to use, copy, modify, distribute and license this software |
| # and its documentation for any purpose, and without fee or written |
| # agreement with DSC, is hereby granted, provided that the above copyright |
| # notice appears in all copies and that both the copyright notice and |
| # warranty disclaimer below appear in supporting documentation, and that |
| # the names of DSC Technologies Corporation or DSC Communications |
| # Corporation not be used in advertising or publicity pertaining to the |
| # software without specific, written prior permission. |
| # |
| # DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING |
| # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND NON- |
| # INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE |
| # AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, |
| # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. IN NO EVENT SHALL |
| # DSC BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR |
| # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, |
| # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, |
| # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS |
| # SOFTWARE. |
| # ====================================================================== |
| |
| # |
| # Usual options. |
| # |
| itk::usual Fileselectiondialog { |
| keep -activebackground -activerelief -background -borderwidth -cursor \ |
| -elementborderwidth -foreground -highlightcolor -highlightthickness \ |
| -insertbackground -insertborderwidth -insertofftime -insertontime \ |
| -insertwidth -jump -labelfont -modality -selectbackground \ |
| -selectborderwidth -textbackground -textfont |
| } |
| |
| # ------------------------------------------------------------------ |
| # FILESELECTIONDIALOG |
| # ------------------------------------------------------------------ |
| itcl::class iwidgets::Fileselectiondialog { |
| inherit iwidgets::Dialog |
| |
| constructor {args} {} |
| |
| public { |
| method childsite {} |
| method get {} |
| method filter {} |
| } |
| |
| protected method _dbldir {} |
| } |
| |
| # |
| # Provide a lowercased access method for the Fileselectiondialog class. |
| # |
| proc ::iwidgets::fileselectiondialog {pathName args} { |
| uplevel ::iwidgets::Fileselectiondialog $pathName $args |
| } |
| |
| # |
| # Use option database to override default resources of base classes. |
| # |
| option add *Fileselectiondialog.borderWidth 2 widgetDefault |
| |
| option add *Fileselectiondialog.title "File Selection Dialog" widgetDefault |
| |
| option add *Fileselectiondialog.width 350 widgetDefault |
| option add *Fileselectiondialog.height 400 widgetDefault |
| |
| option add *Fileselectiondialog.master "." widgetDefault |
| |
| # ------------------------------------------------------------------ |
| # CONSTRUCTOR |
| # ------------------------------------------------------------------ |
| itcl::body iwidgets::Fileselectiondialog::constructor {args} { |
| component hull configure -borderwidth 0 |
| itk_option add hull.width hull.height |
| |
| # |
| # Turn off pack propagation for the hull widget so the width |
| # and height options become active. |
| # |
| pack propagate $itk_component(hull) no |
| |
| # |
| # Instantiate a file selection box widget. |
| # |
| itk_component add fsb { |
| iwidgets::Fileselectionbox $itk_interior.fsb -width 150 -height 150 \ |
| -selectioncommand [itcl::code $this invoke] \ |
| -selectdircommand [itcl::code $this default Apply] \ |
| -selectfilecommand [itcl::code $this default OK] |
| } { |
| usual |
| |
| keep -labelfont -childsitepos -directory -dirslabel \ |
| -dirsearchcommand -dirson -fileslabel -fileson \ |
| -filesearchcommand -filterlabel -filteron \ |
| -filetype -invalid -mask -nomatchstring \ |
| -selectionlabel -selectionon |
| } |
| grid $itk_component(fsb) -sticky nsew |
| grid rowconfigure $itk_interior 0 -weight 1 |
| grid columnconfigure $itk_interior 0 -weight 1 |
| |
| $itk_component(fsb) component filter configure \ |
| -focuscommand [itcl::code $this default Apply] |
| $itk_component(fsb) component selection configure \ |
| -focuscommand [itcl::code $this default OK] |
| $itk_component(fsb) component dirs configure \ |
| -dblclickcommand [itcl::code $this _dbldir] |
| $itk_component(fsb) component files configure \ |
| -dblclickcommand [itcl::code $this invoke] |
| |
| buttonconfigure Apply -text "Filter" \ |
| -command [itcl::code $itk_component(fsb) filter] |
| |
| set itk_interior [$itk_component(fsb) childsite] |
| |
| hide Help |
| |
| eval itk_initialize $args |
| } |
| |
| # ------------------------------------------------------------------ |
| # METHODS |
| # ------------------------------------------------------------------ |
| |
| # ------------------------------------------------------------------ |
| # METHOD: childsite |
| # |
| # Thinwrapped method of file selection box class. |
| # ------------------------------------------------------------------ |
| itcl::body iwidgets::Fileselectiondialog::childsite {} { |
| return [$itk_component(fsb) childsite] |
| } |
| |
| # ------------------------------------------------------------------ |
| # METHOD: get |
| # |
| # Thinwrapped method of file selection box class. |
| # ------------------------------------------------------------------ |
| itcl::body iwidgets::Fileselectiondialog::get {} { |
| return [$itk_component(fsb) get] |
| } |
| |
| # ------------------------------------------------------------------ |
| # METHOD: filter |
| # |
| # Thinwrapped method of file selection box class. |
| # ------------------------------------------------------------------ |
| itcl::body iwidgets::Fileselectiondialog::filter {} { |
| return [$itk_component(fsb) filter] |
| } |
| |
| # ------------------------------------------------------------------ |
| # PROTECTED METHOD: _dbldir |
| # |
| # Double select in directory list. If the files list is on then |
| # make the default button the filter and invoke. If not, just invoke. |
| # ------------------------------------------------------------------ |
| itcl::body iwidgets::Fileselectiondialog::_dbldir {} { |
| if {$itk_option(-fileson)} { |
| default Apply |
| } |
| |
| invoke |
| } |
| |