summaryrefslogtreecommitdiff
path: root/iwidgets/generic/fileselectiondialog.itk
diff options
context:
space:
mode:
Diffstat (limited to 'iwidgets/generic/fileselectiondialog.itk')
-rw-r--r--iwidgets/generic/fileselectiondialog.itk181
1 files changed, 181 insertions, 0 deletions
diff --git a/iwidgets/generic/fileselectiondialog.itk b/iwidgets/generic/fileselectiondialog.itk
new file mode 100644
index 00000000000..d24ce2dfe9a
--- /dev/null
+++ b/iwidgets/generic/fileselectiondialog.itk
@@ -0,0 +1,181 @@
+#
+# 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$
+# ----------------------------------------------------------------------
+# 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
+}
+