diff options
Diffstat (limited to 'itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk')
-rw-r--r-- | itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk b/itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk new file mode 100644 index 00000000000..06ec10557bf --- /dev/null +++ b/itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk @@ -0,0 +1,182 @@ +# +# Extfileselectiondialog +# ---------------------------------------------------------------------- +# Implements a file selection dialog that is a slightly extended version +# of the OSF/Motif standard composite widget. The Extfileselectionbox +# differs from the Motif standard in that the filter and selection +# fields are comboboxes and the files and directory lists are in a +# paned window. +# +# ---------------------------------------------------------------------- +# AUTHOR: Mark L. Ulferts EMAIL: mulferts@spd.dsccc.com +# +# @(#) $Id$ +# ---------------------------------------------------------------------- +# Copyright (c) 1997 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 Extfileselectiondialog { + keep -activebackground -activerelief -background -borderwidth -cursor \ + -elementborderwidth -foreground -highlightcolor -highlightthickness \ + -insertbackground -insertborderwidth -insertofftime -insertontime \ + -insertwidth -jump -labelfont -modality -selectbackground \ + -selectborderwidth -textbackground -textfont +} + +# ------------------------------------------------------------------ +# EXTFILESELECTIONDIALOG +# ------------------------------------------------------------------ +class iwidgets::Extfileselectiondialog { + inherit iwidgets::Dialog + + constructor {args} {} + + public { + method childsite {} + method get {} + method filter {} + } + + protected method _dbldir {} +} + +# +# Provide a lowercased access method for the Extfileselectiondialog class. +# +proc ::iwidgets::extfileselectiondialog {pathName args} { + uplevel ::iwidgets::Extfileselectiondialog $pathName $args +} + +# +# Use option database to override default resources of base classes. +# +option add *Extfileselectiondialog.borderWidth 2 widgetDefault + +option add *Extfileselectiondialog.title "File Selection Dialog" widgetDefault + +option add *Extfileselectiondialog.width 350 widgetDefault +option add *Extfileselectiondialog.height 400 widgetDefault + +option add *Extfileselectiondialog.master "." widgetDefault + +# ------------------------------------------------------------------ +# CONSTRUCTOR +# ------------------------------------------------------------------ +body iwidgets::Extfileselectiondialog::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::Extfileselectionbox $itk_interior.fsb -width 150 -height 150 \ + -selectioncommand [code $this invoke] \ + -selectdircommand [code $this default Apply] \ + -selectfilecommand [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 [code $this default Apply] + $itk_component(fsb) component selection configure \ + -focuscommand [code $this default OK] + $itk_component(fsb) component dirs configure \ + -dblclickcommand [code $this _dbldir] + $itk_component(fsb) component files configure \ + -dblclickcommand [code $this invoke] + + 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::Extfileselectiondialog::childsite {} { + return [$itk_component(fsb) childsite] +} + +# ------------------------------------------------------------------ +# METHOD: get +# +# Thinwrapped method of file selection box class. +# ------------------------------------------------------------------ +body iwidgets::Extfileselectiondialog::get {} { + return [$itk_component(fsb) get] +} + +# ------------------------------------------------------------------ +# METHOD: filter +# +# Thinwrapped method of file selection box class. +# ------------------------------------------------------------------ +body iwidgets::Extfileselectiondialog::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::Extfileselectiondialog::_dbldir {} { + if {$itk_option(-fileson)} { + default Apply + } + + invoke +} + |