# # 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.3 2006/09/11 20:35:55 irby 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. # ====================================================================== # # Default resources. # option add *Fileselectiondialog.borderWidth 2 widgetDefault option add *Fileselectiondialog.filterLabel Filter widgetDefault option add *Fileselectiondialog.filterLabelPos nw widgetDefault option add *Fileselectiondialog.filterOn yes widgetDefault option add *Fileselectiondialog.dirsLabel Directories widgetDefault option add *Fileselectiondialog.dirsLabelPos nw widgetDefault option add *Fileselectiondialog.dirsOn yes widgetDefault option add *Fileselectiondialog.filesLabel Files widgetDefault option add *Fileselectiondialog.filesLabelPos nw widgetDefault option add *Fileselectiondialog.filesOn yes widgetDefault option add *Fileselectiondialog.selectionLabel Selection widgetDefault option add *Fileselectiondialog.selectionLabelPos nw widgetDefault option add *Fileselectiondialog.selectionOn yes widgetDefault option add *Fileselectiondialog.vscrollMode static widgetDefault option add *Fileselectiondialog.hscrollMode static widgetDefault option add *Fileselectiondialog.scrollMargin 3 widgetDefault option add *Fileselectiondialog.vertMargin 7 widgetDefault option add *Fileselectiondialog.horizMargin 7 widgetDefault option add *Fileselectiondialog.title "File Selection Dialog" widgetDefault option add *Fileselectiondialog.padX 10 widgetDefault option add *Fileselectiondialog.padY 10 widgetDefault option add *Fileselectiondialog.width 450 widgetDefault option add *Fileselectiondialog.height 435 widgetDefault option add *Fileselectiondialog.master "." widgetDefault # # 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 -selectforeground -separator -textbackground \ -textfont } # ------------------------------------------------------------------ # FILESELECTIONDIALOG # ------------------------------------------------------------------ class iwidgets::Fileselectiondialog { inherit iwidgets::Dialog constructor {args} {} public method childsite {} public method get {} public method filter {} protected method _dbldir {} } # # Provide a lowercased access method for the Fileselectiondialog class. # proc ::iwidgets::fileselectiondialog {pathName args} { uplevel ::iwidgets::Fileselectiondialog $pathName $args } # ------------------------------------------------------------------ # CONSTRUCTOR # ------------------------------------------------------------------ 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 \ -filterfocuscommand [code $this default Apply] \ -selectionfocuscommand [code $this default OK] \ -selectioncommand [code $this invoke] \ -selectdircommand [code $this default Apply] \ -selectfilecommand [code $this default OK] \ -dbldirscommand [code $this _dbldir] \ -dblfilescommand [code $this invoke] } { keep -activebackground -activerelief -background -borderwidth -cursor \ -elementborderwidth -foreground -insertbackground \ -insertborderwidth -insertofftime -insertontime -insertwidth \ -jump -relief -repeatdelay -repeatinterval -labelfont \ -selectbackground -selectborderwidth -selectforeground \ -hscrollmode -labelmargin -sbwidth -scrollmargin \ -textbackground -textfont -vscrollmode -childsitepos \ -directory -dirslabel -dirslabelpos -dirsearchcommand \ -dirson -fileslabel -fileslabelpos -fileson \ -filesearchcommand -filterlabel -filterlabelpos -filteron \ -filetype -horizmargin -invalid -mask -nomatchstring \ -selectioncommand -selectionlabel -selectionlabelpos \ -selectionon -vertmargin -highlightcolor \ -highlightthickness -troughcolor -dirsfraction -style } pack $itk_component(fsb) -fill both -expand yes buttonconfigure Apply -text "Filter" \ -command [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. # ------------------------------------------------------------------ body iwidgets::Fileselectiondialog::childsite {} { return [$itk_component(fsb) childsite] } # ------------------------------------------------------------------ # METHOD: get # # Thinwrapped method of file selection box class. # ------------------------------------------------------------------ body iwidgets::Fileselectiondialog::get {} { return [$itk_component(fsb) get] } # ------------------------------------------------------------------ # METHOD: filter # # Thinwrapped method of file selection box class. # ------------------------------------------------------------------ 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. # ------------------------------------------------------------------ body iwidgets::Fileselectiondialog::_dbldir {} { if {$itk_option(-fileson)} { default Apply } invoke }