home *** CD-ROM | disk | FTP | other *** search
- #
- # 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
- }
-
-