summaryrefslogtreecommitdiff
path: root/itcl/iwidgets3.0.0/generic
diff options
context:
space:
mode:
Diffstat (limited to 'itcl/iwidgets3.0.0/generic')
-rw-r--r--itcl/iwidgets3.0.0/generic/buttonbox.itk571
-rw-r--r--itcl/iwidgets3.0.0/generic/calendar.itk938
-rw-r--r--itcl/iwidgets3.0.0/generic/canvasprintbox.itk1111
-rw-r--r--itcl/iwidgets3.0.0/generic/canvasprintdialog.itk155
-rwxr-xr-xitcl/iwidgets3.0.0/generic/checkbox.itk341
-rw-r--r--itcl/iwidgets3.0.0/generic/colors.itcl209
-rw-r--r--itcl/iwidgets3.0.0/generic/combobox.itk1360
-rw-r--r--itcl/iwidgets3.0.0/generic/dateentry.itk407
-rw-r--r--itcl/iwidgets3.0.0/generic/datefield.itk854
-rw-r--r--itcl/iwidgets3.0.0/generic/dialog.itk92
-rw-r--r--itcl/iwidgets3.0.0/generic/dialogshell.itk350
-rwxr-xr-xitcl/iwidgets3.0.0/generic/disjointlistbox.itk486
-rw-r--r--itcl/iwidgets3.0.0/generic/entryfield.itk579
-rw-r--r--itcl/iwidgets3.0.0/generic/extfileselectionbox.itk1126
-rw-r--r--itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk182
-rw-r--r--itcl/iwidgets3.0.0/generic/feedback.itk212
-rw-r--r--itcl/iwidgets3.0.0/generic/fileselectionbox.itk1245
-rw-r--r--itcl/iwidgets3.0.0/generic/fileselectiondialog.itk181
-rwxr-xr-xitcl/iwidgets3.0.0/generic/finddialog.itk488
-rw-r--r--itcl/iwidgets3.0.0/generic/hierarchy.itk1928
-rw-r--r--itcl/iwidgets3.0.0/generic/hyperhelp.itk504
-rw-r--r--itcl/iwidgets3.0.0/generic/labeledframe.itk522
-rw-r--r--itcl/iwidgets3.0.0/generic/labeledwidget.itk437
-rw-r--r--itcl/iwidgets3.0.0/generic/mainwindow.itk313
-rw-r--r--itcl/iwidgets3.0.0/generic/menubar.itk2244
-rw-r--r--itcl/iwidgets3.0.0/generic/messagebox.itk403
-rw-r--r--itcl/iwidgets3.0.0/generic/messagedialog.itk144
-rw-r--r--itcl/iwidgets3.0.0/generic/notebook.itk946
-rw-r--r--itcl/iwidgets3.0.0/generic/optionmenu.itk660
-rw-r--r--itcl/iwidgets3.0.0/generic/pane.itk128
-rw-r--r--itcl/iwidgets3.0.0/generic/panedwindow.itk892
-rw-r--r--itcl/iwidgets3.0.0/generic/promptdialog.itk199
-rw-r--r--itcl/iwidgets3.0.0/generic/pushbutton.itk356
-rw-r--r--itcl/iwidgets3.0.0/generic/radiobox.itk354
-rwxr-xr-xitcl/iwidgets3.0.0/generic/regexpfield.itk455
-rw-r--r--itcl/iwidgets3.0.0/generic/roman.itcl28
-rwxr-xr-xitcl/iwidgets3.0.0/generic/scopedobject.itcl181
-rw-r--r--itcl/iwidgets3.0.0/generic/scrolledcanvas.itk477
-rw-r--r--itcl/iwidgets3.0.0/generic/scrolledframe.itk250
-rw-r--r--itcl/iwidgets3.0.0/generic/scrolledhtml.itk2545
-rw-r--r--itcl/iwidgets3.0.0/generic/scrolledlistbox.itk733
-rw-r--r--itcl/iwidgets3.0.0/generic/scrolledtext.itk503
-rw-r--r--itcl/iwidgets3.0.0/generic/scrolledwidget.itk434
-rw-r--r--itcl/iwidgets3.0.0/generic/selectionbox.itk560
-rw-r--r--itcl/iwidgets3.0.0/generic/selectiondialog.itk233
-rw-r--r--itcl/iwidgets3.0.0/generic/shell.itk371
-rw-r--r--itcl/iwidgets3.0.0/generic/spindate.itk692
-rw-r--r--itcl/iwidgets3.0.0/generic/spinint.itk237
-rw-r--r--itcl/iwidgets3.0.0/generic/spinner.itk448
-rw-r--r--itcl/iwidgets3.0.0/generic/spintime.itk527
-rw-r--r--itcl/iwidgets3.0.0/generic/tabnotebook.itk1075
-rw-r--r--itcl/iwidgets3.0.0/generic/tabset.itk2747
-rw-r--r--itcl/iwidgets3.0.0/generic/tclIndex1336
-rw-r--r--itcl/iwidgets3.0.0/generic/timeentry.itk398
-rw-r--r--itcl/iwidgets3.0.0/generic/timefield.itk1018
-rw-r--r--itcl/iwidgets3.0.0/generic/toolbar.itk983
-rw-r--r--itcl/iwidgets3.0.0/generic/unknownimage.gifbin472 -> 0 bytes
-rwxr-xr-xitcl/iwidgets3.0.0/generic/watch.itk626
58 files changed, 0 insertions, 37774 deletions
diff --git a/itcl/iwidgets3.0.0/generic/buttonbox.itk b/itcl/iwidgets3.0.0/generic/buttonbox.itk
deleted file mode 100644
index 20f8b4cb8ce..00000000000
--- a/itcl/iwidgets3.0.0/generic/buttonbox.itk
+++ /dev/null
@@ -1,571 +0,0 @@
-#
-# Buttonbox
-# ----------------------------------------------------------------------
-# Manages a framed area with Motif style buttons. The button box can
-# be configured either horizontally or vertically.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.dsccc.com
-# Bret A. Schuhmacher EMAIL: bas@wn.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 Buttonbox {
- keep -background -cursor -foreground
-}
-
-# ------------------------------------------------------------------
-# BUTTONBOX
-# ------------------------------------------------------------------
-class iwidgets::Buttonbox {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -pady padY Pad 5
- itk_option define -padx padX Pad 5
- itk_option define -orient orient Orient "horizontal"
- itk_option define -foreground foreground Foreground black
-
- public method index {args}
- public method add {args}
- public method insert {args}
- public method delete {args}
- public method default {args}
- public method hide {args}
- public method show {args}
- public method invoke {args}
- public method buttonconfigure {args}
- public method buttoncget {index option}
-
- private method _positionButtons {}
- private method _setBoxSize {{when later}}
- private method _getMaxWidth {}
- private method _getMaxHeight {}
-
- private variable _resizeFlag {} ;# Flag for resize needed.
- private variable _buttonList {} ;# List of all buttons in box.
- private variable _displayList {} ;# List of displayed buttons.
- private variable _unique 0 ;# Counter for button widget ids.
-}
-
-namespace eval iwidgets::Buttonbox {
- #
- # Set up some class level bindings for map and configure events.
- #
- bind bbox-map <Map> [code %W _setBoxSize]
- bind bbox-config <Configure> [code %W _positionButtons]
-}
-
-#
-# Provide a lowercased access method for the Buttonbox class.
-#
-proc ::iwidgets::buttonbox {pathName args} {
- uplevel ::iwidgets::Buttonbox $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::constructor {args} {
- #
- # Add Configure bindings for geometry management.
- #
- bindtags $itk_component(hull) \
- [linsert [bindtags $itk_component(hull)] 0 bbox-map]
- bindtags $itk_component(hull) \
- [linsert [bindtags $itk_component(hull)] 1 bbox-config]
-
- pack propagate $itk_component(hull) no
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::destructor {} {
- if {$_resizeFlag != ""} {after cancel $_resizeFlag}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -pady
-#
-# Pad the y space between the button box frame and the hull.
-# ------------------------------------------------------------------
-configbody iwidgets::Buttonbox::pady {
- _setBoxSize
-}
-
-# ------------------------------------------------------------------
-# OPTION: -padx
-#
-# Pad the x space between the button box frame and the hull.
-# ------------------------------------------------------------------
-configbody iwidgets::Buttonbox::padx {
- _setBoxSize
-}
-
-# ------------------------------------------------------------------
-# OPTION: -orient
-#
-# Position buttons either horizontally or vertically.
-# ------------------------------------------------------------------
-configbody iwidgets::Buttonbox::orient {
- switch $itk_option(-orient) {
- "horizontal" -
- "vertical" {
- _setBoxSize
- }
-
- default {
- error "bad orientation option \"$itk_option(-orient)\",\
- should be either horizontal or vertical"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Searches the buttons in the box for the one with the requested tag,
-# numerical index, keyword "end" or "default". Returns the button's
-# tag if found, otherwise error.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::index {index} {
- if {[llength $_buttonList] > 0} {
- if {[regexp {(^[0-9]+$)} $index]} {
- if {$index < [llength $_buttonList]} {
- return $index
- } else {
- error "Buttonbox index \"$index\" is out of range"
- }
-
- } elseif {$index == "end"} {
- return [expr [llength $_buttonList] - 1]
-
- } elseif {$index == "default"} {
- foreach knownButton $_buttonList {
- if {[$itk_component($knownButton) cget -defaultring]} {
- return [lsearch -exact $_buttonList $knownButton]
- }
- }
-
- error "Buttonbox \"$itk_component(hull)\" has no default"
-
- } else {
- if {[set idx [lsearch $_buttonList $index]] != -1} {
- return $idx
- }
-
- error "bad Buttonbox index \"$index\": must be number, end,\
- default, or pattern"
- }
-
- } else {
- error "Buttonbox \"$itk_component(hull)\" has no buttons"
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: add tag ?option value option value ...?
-#
-# Add the specified button to the button box. All PushButton options
-# are allowed. New buttons are added to the list of buttons and the
-# list of displayed buttons. The PushButton path name is returned.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::add {tag args} {
- itk_component add $tag {
- iwidgets::Pushbutton $itk_component(hull).[incr _unique]
- } {
- usual
- rename -highlightbackground -background background Background
- }
-
- if {$args != ""} {
- uplevel $itk_component($tag) configure $args
- }
-
- lappend _buttonList $tag
- lappend _displayList $tag
-
- _setBoxSize
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert index tag ?option value option value ...?
-#
-# Insert the specified button in the button box just before the one
-# given by index. All PushButton options are allowed. New buttons
-# are added to the list of buttons and the list of displayed buttons.
-# The PushButton path name is returned.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::insert {index tag args} {
- itk_component add $tag {
- iwidgets::Pushbutton $itk_component(hull).[incr _unique]
- } {
- usual
- rename -highlightbackground -background background Background
- }
-
- if {$args != ""} {
- uplevel $itk_component($tag) configure $args
- }
-
- set index [index $index]
- set _buttonList [linsert $_buttonList $index $tag]
- set _displayList [linsert $_displayList $index $tag]
-
- _setBoxSize
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete index
-#
-# Delete the specified button from the button box.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::delete {index} {
- set index [index $index]
- set tag [lindex $_buttonList $index]
-
- destroy $itk_component($tag)
-
- set _buttonList [lreplace $_buttonList $index $index]
-
- if {[set dind [lsearch $_displayList $tag]] != -1} {
- set _displayList [lreplace $_displayList $dind $dind]
- }
-
- _setBoxSize
- update idletasks
-}
-
-# ------------------------------------------------------------------
-# METHOD: default index
-#
-# Sets the default to the push button given by index.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::default {index} {
- set index [index $index]
-
- set defbtn [lindex $_buttonList $index]
-
- foreach knownButton $_displayList {
- if {$knownButton == $defbtn} {
- $itk_component($knownButton) configure -defaultring yes
- } else {
- $itk_component($knownButton) configure -defaultring no
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: hide index
-#
-# Hide the push button given by index. This doesn't remove the button
-# permanently from the display list, just inhibits its display.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::hide {index} {
- set index [index $index]
- set tag [lindex $_buttonList $index]
-
- if {[set dind [lsearch $_displayList $tag]] != -1} {
- place forget $itk_component($tag)
- set _displayList [lreplace $_displayList $dind $dind]
-
- _setBoxSize
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: show index
-#
-# Displays a previously hidden push button given by index. Check if
-# the button is already in the display list. If not then add it back
-# at it's original location and redisplay.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::show {index} {
- set index [index $index]
- set tag [lindex $_buttonList $index]
-
- if {[lsearch $_displayList $tag] == -1} {
- set _displayList [linsert $_displayList $index $tag]
-
- _setBoxSize
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: invoke ?index?
-#
-# Invoke the command associated with a push button. If no arguments
-# are given then the default button is invoked, otherwise the argument
-# is expected to be a button index.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::invoke {args} {
- if {[llength $args] == 0} {
- $itk_component([lindex $_buttonList [index default]]) invoke
-
- } else {
- $itk_component([lindex $_buttonList [index [lindex $args 0]]]) \
- invoke
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: buttonconfigure index ?option? ?value option value ...?
-#
-# Configure a push button given by index. This method allows
-# configuration of pushbuttons from the Buttonbox level. The options
-# may have any of the values accepted by the add method.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::buttonconfigure {index args} {
- set tag [lindex $_buttonList [index $index]]
-
- set retstr [uplevel $itk_component($tag) configure $args]
-
- _setBoxSize
-
- return $retstr
-}
-
-# ------------------------------------------------------------------
-# METHOD: buttonccget index option
-#
-# Return value of option for push button given by index. Option may
-# have any of the values accepted by the add method.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::buttoncget {index option} {
- set tag [lindex $_buttonList [index $index]]
-
- set retstr [uplevel $itk_component($tag) cget [list $option]]
-
- return $retstr
-}
-
-# -----------------------------------------------------------------
-# PRIVATE METHOD: _getMaxWidth
-#
-# Returns the required width of the largest button.
-# -----------------------------------------------------------------
-body iwidgets::Buttonbox::_getMaxWidth {} {
- set max 0
-
- foreach tag $_displayList {
- set w [winfo reqwidth $itk_component($tag)]
-
- if {$w > $max} {
- set max $w
- }
- }
-
- return $max
-}
-
-# -----------------------------------------------------------------
-# PRIVATE METHOD: _getMaxHeight
-#
-# Returns the required height of the largest button.
-# -----------------------------------------------------------------
-body iwidgets::Buttonbox::_getMaxHeight {} {
- set max 0
-
- foreach tag $_displayList {
- set h [winfo reqheight $itk_component($tag)]
-
- if {$h > $max} {
- set max $h
- }
- }
-
- return $max
-}
-
-# ------------------------------------------------------------------
-# METHOD: _setBoxSize ?when?
-#
-# Sets the proper size of the frame surrounding all the buttons.
-# If "when" is "now", the change is applied immediately. If it is
-# "later" or it is not specified, then the change is applied later,
-# when the application is idle.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::_setBoxSize {{when later}} {
- if {[winfo ismapped $itk_component(hull)]} {
- if {$when == "later"} {
- if {$_resizeFlag == ""} {
- set _resizeFlag [after idle [code $this _setBoxSize now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- set _resizeFlag ""
-
- set numBtns [llength $_displayList]
-
- if {$itk_option(-orient) == "horizontal"} {
- set minw [expr $numBtns * [_getMaxWidth] \
- + ($numBtns+1) * $itk_option(-padx)]
- set minh [expr [_getMaxHeight] + 2 * $itk_option(-pady)]
-
- } else {
- set minw [expr [_getMaxWidth] + 2 * $itk_option(-padx)]
- set minh [expr $numBtns * [_getMaxHeight] \
- + ($numBtns+1) * $itk_option(-pady)]
- }
-
- #
- # Remove the configure event bindings on the hull while we adjust the
- # width/height and re-position the buttons. Once we're through, we'll
- # update and reinstall them. This prevents double calls to position
- # the buttons.
- #
- set tags [bindtags $itk_component(hull)]
- if {[set i [lsearch $tags bbox-config]] != -1} {
- set tags [lreplace $tags $i $i]
- bindtags $itk_component(hull) $tags
- }
-
- component hull configure -width $minw -height $minh
-
- update idletasks
-
- _positionButtons
-
- bindtags $itk_component(hull) [linsert $tags 0 bbox-config]
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: _positionButtons
-#
-# This method is responsible setting the width/height of all the
-# displayed buttons to the same value and for placing all the buttons
-# in equidistant locations.
-# ------------------------------------------------------------------
-body iwidgets::Buttonbox::_positionButtons {} {
- set bf $itk_component(hull)
- set numBtns [llength $_displayList]
-
- #
- # First, determine the common width and height for all the
- # displayed buttons.
- #
- if {$numBtns > 0} {
- set bfWidth [winfo width $itk_component(hull)]
- set bfHeight [winfo height $itk_component(hull)]
-
- if {$bfWidth >= [winfo reqwidth $itk_component(hull)]} {
- set _btnWidth [_getMaxWidth]
-
- } else {
- if {$itk_option(-orient) == "horizontal"} {
- set _btnWidth [expr $bfWidth / $numBtns]
- } else {
- set _btnWidth $bfWidth
- }
- }
-
- if {$bfHeight >= [winfo reqheight $itk_component(hull)]} {
- set _btnHeight [_getMaxHeight]
-
- } else {
- if {$itk_option(-orient) == "vertical"} {
- set _btnHeight [expr $bfHeight / $numBtns]
- } else {
- set _btnHeight $bfHeight
- }
- }
- }
-
- #
- # Place the buttons at the proper locations.
- #
- if {$numBtns > 0} {
- if {$itk_option(-orient) == "horizontal"} {
- set leftover [expr [winfo width $bf] \
- - 2 * $itk_option(-padx) - $_btnWidth * $numBtns]
-
- if {$numBtns > 0} {
- set offset [expr $leftover / ($numBtns + 1)]
- } else {
- set offset 0
- }
- if {$offset < 0} {set offset 0}
-
- set xDist [expr $itk_option(-padx) + $offset]
- set incrAmount [expr $_btnWidth + $offset]
-
- foreach button $_displayList {
- place $itk_component($button) -anchor w \
- -x $xDist -rely .5 -y 0 -relx 0 \
- -width $_btnWidth -height $_btnHeight
-
- set xDist [expr $xDist + $incrAmount]
- }
-
- } else {
- set leftover [expr [winfo height $bf] \
- - 2 * $itk_option(-pady) - $_btnHeight * $numBtns]
-
- if {$numBtns > 0} {
- set offset [expr $leftover / ($numBtns + 1)]
- } else {
- set offset 0
- }
- if {$offset < 0} {set offset 0}
-
- set yDist [expr $itk_option(-pady) + $offset]
- set incrAmount [expr $_btnHeight + $offset]
-
- foreach button $_displayList {
- place $itk_component($button) -anchor n \
- -y $yDist -relx .5 -x 0 -rely 0 \
- -width $_btnWidth -height $_btnHeight
-
- set yDist [expr $yDist + $incrAmount]
- }
- }
- }
-}
-
-
diff --git a/itcl/iwidgets3.0.0/generic/calendar.itk b/itcl/iwidgets3.0.0/generic/calendar.itk
deleted file mode 100644
index a7b0363a7a8..00000000000
--- a/itcl/iwidgets3.0.0/generic/calendar.itk
+++ /dev/null
@@ -1,938 +0,0 @@
-#
-# Calendar
-# ----------------------------------------------------------------------
-# Implements a calendar widget for the selection of a date. It displays
-# a single month at a time. Buttons exist on the top to change the
-# month in effect turning th pages of a calendar. As a page is turned,
-# the dates for the month are modified. Selection of a date visually
-# marks that date. The selected value can be monitored via the
-# -command option or just retrieved using the get method. Methods also
-# exist to select a date and show a particular month. The option set
-# allows the calendars appearance to take on many forms.
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts E-mail: mulferts@austin.dsccc.com
-#
-# ACKNOWLEDGEMENTS: Michael McLennan E-mail: mmclennan@lucent.com
-#
-# This code is an [incr Tk] port of the calendar code shown in Michael
-# J. McLennan's book "Effective Tcl" from Addison Wesley. Small
-# modificiations were made to the logic here and there to make it a
-# mega-widget and the command and option interface was expanded to make
-# it even more configurable, but the underlying logic is the same.
-#
-# @(#) $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 Calendar {
- keep -background -cursor
-}
-
-# ------------------------------------------------------------------
-# CALENDAR
-# ------------------------------------------------------------------
-class iwidgets::Calendar {
- inherit itk::Widget
-
- constructor {args} {}
-
- itk_option define -days days Days {Su Mo Tu We Th Fr Sa}
- itk_option define -command command Command {}
- itk_option define -forwardimage forwardImage Image {}
- itk_option define -backwardimage backwardImage Image {}
- itk_option define -weekdaybackground weekdayBackground Background \#d9d9d9
- itk_option define -weekendbackground weekendBackground Background \#d9d9d9
- itk_option define -outline outline Outline \#d9d9d9
- itk_option define -buttonforeground buttonForeground Foreground blue
- itk_option define -foreground foreground Foreground black
- itk_option define -selectcolor selectColor Foreground red
- itk_option define -selectthickness selectThickness SelectThickness 3
- itk_option define -titlefont titleFont Font \
- -*-helvetica-bold-r-normal--*-140-*
- itk_option define -dayfont dayFont Font \
- -*-helvetica-medium-r-normal--*-120-*
- itk_option define -datefont dateFont Font \
- -*-helvetica-medium-r-normal--*-120-*
- itk_option define -currentdatefont currentDateFont Font \
- -*-helvetica-bold-r-normal--*-120-*
- itk_option define -startday startDay Day sunday
-
- public method get {{format "-string"}} ;# Returns the selected date
- public method select {{date_ "now"}} ;# Selects date, moving select ring
- public method show {{date_ "now"}} ;# Displays a specific date
-
- protected method _drawtext {canvas_ day_ date_ now_ x0_ y0_ x1_ y1_}
-
- private method _change {delta_}
- private method _configureHandler {}
- private method _redraw {}
- private method _days {{wmax {}}}
- private method _layout {time_}
- private method _select {date_}
- private method _selectEvent {date_}
- private method _adjustday {day_}
- private method _percentSubst {pattern_ string_ subst_}
-
- private variable _time {}
- private variable _selected {}
- private variable _initialized 0
- private variable _offset 0
-}
-
-#
-# Provide a lowercased access method for the Calendar class.
-#
-proc ::iwidgets::calendar {pathName args} {
- uplevel ::iwidgets::Calendar $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Calendar.width 200 widgetDefault
-option add *Calendar.height 165 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Calendar::constructor {args} {
- #
- # Create the canvas which displays each page of the calendar.
- #
- itk_component add page {
- canvas $itk_interior.page
- } {
- keep -background -cursor -width -height
- }
- pack $itk_component(page) -expand yes -fill both
-
- #
- # Create the forward and backward buttons. Rather than pack
- # them directly in the hull, we'll waittill later and make
- # them canvas window items.
- #
- itk_component add backward {
- button $itk_component(page).backward \
- -command [code $this _change -1]
- } {
- keep -background -cursor
- }
-
- itk_component add forward {
- button $itk_component(page).forward \
- -command [code $this _change +1]
- } {
- keep -background -cursor
- }
-
- #
- # Set the initial time to now.
- #
- set _time [clock seconds]
-
- #
- # Bind to the configure event which will be used to redraw
- # the calendar and display the month.
- #
- bind $itk_component(page) <Configure> [code $this _configureHandler]
-
- #
- # Evaluate the option arguments.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -command
-#
-# Sets the selection command for the calendar. When the user
-# selects a date on the calendar, the date is substituted in
-# place of "%d" in this command, and the command is executed.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::command {}
-
-# ------------------------------------------------------------------
-# OPTION: -days
-#
-# The days option takes a list of values to set the text used to display the
-# days of the week header above the dates. The default value is
-# {Su Mo Tu We Th Fr Sa}.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::days {
- if {$_initialized} {
- if {[$itk_component(page) find withtag days] != {}} {
- $itk_component(page) delete days
- _days
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -backwardimage
-#
-# Specifies a image to be displayed on the backwards calendar
-# button. If none is specified, a default is provided.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::backwardimage {
-
- #
- # If no image is given, then we'll use the default image.
- #
- if {$itk_option(-backwardimage) == {}} {
-
- #
- # If the default image hasn't yet been created, then we
- # need to create it.
- #
- if {[lsearch [image names] $this-backward] == -1} {
- image create bitmap $this-backward \
- -foreground $itk_option(-buttonforeground) -data {
- #define back_width 16
- #define back_height 16
- static unsigned char back_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30,
- 0xe0, 0x38, 0xf0, 0x3c, 0xf8, 0x3e, 0xfc, 0x3f,
- 0xfc, 0x3f, 0xf8, 0x3e, 0xf0, 0x3c, 0xe0, 0x38,
- 0xc0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- }
- }
-
- #
- # Configure the button to use the default image.
- #
- $itk_component(backward) configure -image $this-backward
-
- #
- # Else, an image has been specified. First, we'll need to make sure
- # the image really exists before configuring the button to use it.
- # If it doesn't generate an error.
- #
- } else {
- if {[lsearch [image names] $itk_option(-backwardimage)] != -1} {
- $itk_component(backward) configure \
- -image $itk_option(-backwardimage)
- } else {
- error "bad image name \"$itk_option(-backwardimage)\":\
- image does not exist"
- }
-
- #
- # If we previously created a default image, we'll just remove it.
- #
- if {[lsearch [image names] $this-backward] != -1} {
- image delete $this-backward
- }
- }
-}
-
-
-# ------------------------------------------------------------------
-# OPTION: -forwardimage
-#
-# Specifies a image to be displayed on the forwards calendar
-# button. If none is specified, a default is provided.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::forwardimage {
-
- #
- # If no image is given, then we'll use the default image.
- #
- if {$itk_option(-forwardimage) == {}} {
-
- #
- # If the default image hasn't yet been created, then we
- # need to create it.
- #
- if {[lsearch [image names] $this-forward] == -1} {
- image create bitmap $this-forward \
- -foreground $itk_option(-buttonforeground) -data {
- #define fwd_width 16
- #define fwd_height 16
- static unsigned char fwd_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03,
- 0x1c, 0x07, 0x3c, 0x0f, 0x7c, 0x1f, 0xfc, 0x3f,
- 0xfc, 0x3f, 0x7c, 0x1f, 0x3c, 0x0f, 0x1c, 0x07,
- 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- }
- }
-
- #
- # Configure the button to use the default image.
- #
- $itk_component(forward) configure -image $this-forward
-
- #
- # Else, an image has been specified. First, we'll need to make sure
- # the image really exists before configuring the button to use it.
- # If it doesn't generate an error.
- #
- } else {
- if {[lsearch [image names] $itk_option(-forwardimage)] != -1} {
- $itk_component(forward) configure \
- -image $itk_option(-forwardimage)
- } else {
- error "bad image name \"$itk_option(-forwardimage)\":\
- image does not exist"
- }
-
- #
- # If we previously created a default image, we'll just remove it.
- #
- if {[lsearch [image names] $this-forward] != -1} {
- image delete $this-forward
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -weekdaybackground
-#
-# Specifies the background for the weekdays which allows it to
-# be visually distinguished from the weekend.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::weekdaybackground {
- if {$_initialized} {
- $itk_component(page) itemconfigure weekday \
- -fill $itk_option(-weekdaybackground)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -weekendbackground
-#
-# Specifies the background for the weekdays which allows it to
-# be visually distinguished from the weekdays.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::weekendbackground {
- if {$_initialized} {
- $itk_component(page) itemconfigure weekend \
- -fill $itk_option(-weekendbackground)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -foreground
-#
-# Specifies the foreground color for the textual items, buttons,
-# and divider on the calendar.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::foreground {
- if {$_initialized} {
- $itk_component(page) itemconfigure text \
- -fill $itk_option(-foreground)
- $itk_component(page) itemconfigure line \
- -fill $itk_option(-foreground)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -outline
-#
-# Specifies the outline color used to surround the date text.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::outline {
- if {$_initialized} {
- $itk_component(page) itemconfigure square \
- -outline $itk_option(-outline)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -buttonforeground
-#
-# Specifies the foreground color of the forward and backward buttons.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::buttonforeground {
- if {$_initialized} {
- if {$itk_option(-forwardimage) == {}} {
- if {[lsearch [image names] $this-forward] != -1} {
- $this-forward configure \
- -foreground $itk_option(-buttonforeground)
- }
- } else {
- $itk_component(forward) configure \
- -foreground $itk_option(-buttonforeground)
- }
-
- if {$itk_option(-backwardimage) == {}} {
- if {[lsearch [image names] $this-backward] != -1} {
- $this-backward configure \
- -foreground $itk_option(-buttonforeground)
- }
- } else {
- $itk_component(-backward) configure \
- -foreground $itk_option(-buttonforeground)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectcolor
-#
-# Specifies the color of the ring displayed that distinguishes the
-# currently selected date.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::selectcolor {
- if {$_initialized} {
- $itk_component(page) itemconfigure $_selected-sensor \
- -outline $itk_option(-selectcolor)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectthickness
-#
-# Specifies the thickness of the ring displayed that distinguishes
-# the currently selected date.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::selectthickness {
- if {$_initialized} {
- $itk_component(page) itemconfigure $_selected-sensor \
- -width $itk_option(-selectthickness)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -titlefont
-#
-# Specifies the font used for the title text that consists of the
-# month and year.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::titlefont {
- if {$_initialized} {
- $itk_component(page) itemconfigure title \
- -font $itk_option(-titlefont)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -datefont
-#
-# Specifies the font used for the date text that consists of the
-# day of the month.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::datefont {
- if {$_initialized} {
- $itk_component(page) itemconfigure date \
- -font $itk_option(-datefont)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -currentdatefont
-#
-# Specifies the font used for the current date text.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::currentdatefont {
- if {$_initialized} {
- $itk_component(page) itemconfigure now \
- -font $itk_option(-currentdatefont)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -dayfont
-#
-# Specifies the font used for the day of the week text.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::dayfont {
- if {$_initialized} {
- $itk_component(page) itemconfigure days \
- -font $itk_option(-dayfont)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -startday
-#
-# Specifies the starting day for the week. The value must be a day of the
-# week: sunday, monday, tuesday, wednesday, thursday, friday, or
-# saturday. The default is sunday.
-# ------------------------------------------------------------------
-configbody iwidgets::Calendar::startday {
- set day [string tolower $itk_option(-startday)]
-
- switch $day {
- sunday {set _offset 0}
- monday {set _offset 1}
- tuesday {set _offset 2}
- wednesday {set _offset 3}
- thursday {set _offset 4}
- friday {set _offset 5}
- saturday {set _offset 6}
- default {
- error "bad startday option \"$itk_option(-startday)\":\
- should be sunday, monday, tuesday, wednesday,\
- thursday, friday, or saturday"
- }
- }
-
- if {$_initialized} {
- $itk_component(page) delete all-page
- _redraw
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: get ?format?
-#
-# Returns the currently selected date in one of two formats, string
-# or as an integer clock value using the -string and -clicks
-# options respectively. The default is by string. Reference the
-# clock command for more information on obtaining dates and their
-# formats.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::get {{format "-string"}} {
- switch -- $format {
- "-string" {
- return $_selected
- }
- "-clicks" {
- return [clock scan $_selected]
- }
- default {
- error "bad format option \"$format\":\
- should be -string or -clicks"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: select date_
-#
-# Changes the currently selected date to the value specified.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::select {{date_ "now"}} {
- if {$date_ == "now"} {
- set time [clock seconds]
- } else {
- if {[catch {clock format $date_}] == 0} {
- set time $date_
- } elseif {[catch {set time [clock scan $date_]}] != 0} {
- error "bad date: \"$date_\", must be a valid date string, clock clicks value or the keyword now"
- }
- }
-
- _select [clock format $time -format "%m/%d/%Y"]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: show date_
-#
-# Changes the currently display month to be that of the specified
-# date.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::show {{date_ "now"}} {
- if {$date_ == "now"} {
- set _time [clock seconds]
- } else {
- if {[catch {clock format $date_}] == 0} {
- set _time $date_
- } elseif {[catch {set _time [clock scan $date_]}] != 0} {
- error "bad date: \"$date_\", must be a valid date string, clock clicks value or the keyword now"
- }
- }
-
- $itk_component(page) delete all-page
- _redraw
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _drawtext canvas_ day_ date_ now_
-# x0_ y0_ x1_ y1_
-#
-# Draws the text in the date square. The method is protected such that
-# it can be overridden in derived classes that may wish to add their
-# own unique text. The method receives the day to draw along with
-# the coordinates of the square.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_drawtext {canvas_ day_ date_ now_ x0_ y0_ x1_ y1_} {
- set item [$canvas_ create text \
- [expr (($x1_ - $x0_) / 2) + $x0_] \
- [expr (($y1_ -$y0_) / 2) + $y0_ + 1] \
- -anchor center -text "$day_" \
- -fill $itk_option(-foreground)]
-
- if {$date_ == $now_} {
- $canvas_ itemconfigure $item \
- -font $itk_option(-currentdatefont) \
- -tags [list all-page date text now]
- } else {
- $canvas_ itemconfigure $item \
- -font $itk_option(-datefont) \
- -tags [list all-page date text]
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _configureHandler
-#
-# Processes a configure event received on the canvas. The method
-# deletes all the current canvas items and forces a redraw.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_configureHandler {} {
- set _initialized 1
-
- $itk_component(page) delete all
- _redraw
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _change delta_
-#
-# Changes the current month displayed in the calendar, moving
-# forward or backward by <delta_> months where <delta_> is +/-
-# some number.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_change {delta_} {
- set dir [expr ($delta_ > 0) ? 1 : -1]
- set month [clock format $_time -format "%m"]
- set month [string trimleft $month 0]
- set year [clock format $_time -format "%Y"]
-
- for {set i 0} {$i < abs($delta_)} {incr i} {
- incr month $dir
- if {$month < 1} {
- set month 12
- incr year -1
- } elseif {$month > 12} {
- set month 1
- incr year 1
- }
- }
- if {[catch {set _time [clock scan "$month/1/$year"]}]} {
- bell
- } else {
- _redraw
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _redraw
-#
-# Redraws the calendar. This method is invoked whenever the
-# calendar changes size or we need to effect a change such as draw
-# it with a new month.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_redraw {} {
- #
- # Remove all the items that typically change per redraw request
- # such as the title and dates. Also, get the maximum width and
- # height of the page.
- #
- $itk_component(page) delete all-page
-
- set wmax [winfo width $itk_component(page)]
- set hmax [winfo height $itk_component(page)]
-
- #
- # If we haven't yet created the forward and backwards buttons,
- # then dot it; otherwise, skip it.
- #
- if {[$itk_component(page) find withtag button] == {}} {
- $itk_component(page) create window 3 3 -anchor nw \
- -window $itk_component(backward) -tags button
- $itk_component(page) create window [expr $wmax-3] 3 -anchor ne \
- -window $itk_component(forward) -tags button
- }
-
- #
- # Create the title centered between the buttons.
- #
- foreach {x0 y0 x1 y1} [$itk_component(page) bbox button] {
- set x [expr (($x1-$x0)/2)+$x0]
- set y [expr (($y1-$y0)/2)+$y0]
- }
-
- set title [clock format $_time -format "%B %Y"]
- $itk_component(page) create text $x $y -anchor center \
- -text $title -font $itk_option(-titlefont) \
- -fill $itk_option(-foreground) \
- -tags [list title text all-page]
-
- #
- # Add the days of the week labels if they haven't yet been created.
- #
- if {[$itk_component(page) find withtag days] == {}} {
- _days $wmax
- }
-
- #
- # Add a line between the calendar header and the dates if needed.
- #
- set bottom [expr [lindex [$itk_component(page) bbox all] 3] + 3]
-
- if {[$itk_component(page) find withtag line] == {}} {
- $itk_component(page) create line 0 $bottom $wmax $bottom \
- -width 2 -tags line
- }
-
- incr bottom 3
-
- #
- # Get the layout for the time value and create the date squares.
- # This includes the surrounding date rectangle, the date text,
- # and the sensor. Bind selection to the sensor.
- #
- set current ""
- set now [clock format [clock seconds] -format "%m/%d/%Y"]
-
- set layout [_layout $_time]
- set weeks [expr [lindex $layout end] + 1]
-
- foreach {day date kind dcol wrow} $layout {
- set x0 [expr $dcol*($wmax-7)/7+3]
- set y0 [expr $wrow*($hmax-$bottom-4)/$weeks+$bottom]
- set x1 [expr ($dcol+1)*($wmax-7)/7+3]
- set y1 [expr ($wrow+1)*($hmax-$bottom-4)/$weeks+$bottom]
-
- if {$date == $_selected} {
- set current $date
- }
-
- #
- # Create the rectangle that surrounds the date and configure
- # its background based on the wheather it is a weekday or
- # a weekend.
- #
- set item [$itk_component(page) create rectangle $x0 $y0 $x1 $y1 \
- -outline $itk_option(-outline)]
-
- if {$kind == "weekend"} {
- $itk_component(page) itemconfigure $item \
- -fill $itk_option(-weekendbackground) \
- -tags [list all-page square weekend]
- } else {
- $itk_component(page) itemconfigure $item \
- -fill $itk_option(-weekdaybackground) \
- -tags [list all-page square weekday]
- }
-
- #
- # Create the date text and configure its font based on the
- # wheather or not it is the current date.
- #
- _drawtext $itk_component(page) $day $date $now $x0 $y0 $x1 $y1
-
- #
- # Create a sensor area to detect selections. Bind the
- # sensor and pass the date to the bind script.
- #
- $itk_component(page) create rectangle $x0 $y0 $x1 $y1 \
- -outline "" -fill "" \
- -tags [list $date-sensor all-sensor all-page]
-
- $itk_component(page) bind $date-sensor <ButtonPress-1> \
- [code $this _selectEvent $date]
- }
-
- #
- # Highlight the selected date if it is on this page.
- #
- if {$current != ""} {
- $itk_component(page) itemconfigure $current-sensor \
- -outline $itk_option(-selectcolor) \
- -width $itk_option(-selectthickness)
-
- $itk_component(page) raise $current-sensor
-
- } elseif {$_selected == ""} {
- set date [clock format $_time -format "%m/%d/%Y"]
- _select $date
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _days
-#
-# Used to rewite the days of the week label just below the month
-# title string. The days are given in the -days option.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_days {{wmax {}}} {
- if {$wmax == {}} {
- set wmax [winfo width $itk_component(page)]
- }
-
- set col 0
- set bottom [expr [lindex [$itk_component(page) bbox title buttons] 3] + 7]
-
- foreach dayoweek $itk_option(-days) {
- set x0 [expr $col*($wmax/7)]
- set x1 [expr ($col+1)*($wmax/7)]
-
- $itk_component(page) create text \
- [expr (($x1 - $x0) / 2) + $x0] $bottom \
- -anchor n -text "$dayoweek" \
- -fill $itk_option(-foreground) \
- -font $itk_option(-dayfont) \
- -tags [list days text]
-
- incr col
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _layout time_
-#
-# Used whenever the calendar is redrawn. Finds the month containing
-# a <time_> in seconds, and returns a list for all of the days in
-# that month. The list looks like this:
-#
-# {day1 date1 kind1 c1 r1 day2 date2 kind2 c2 r2 ...}
-#
-# where dayN is a day number like 1,2,3,..., dateN is the date for
-# dayN, kindN is the day type of weekday or weekend, and cN,rN
-# are the column/row indices for the square containing that date.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_layout {time_} {
- set month [clock format $time_ -format "%m"]
- set year [clock format $time_ -format "%Y"]
-
- foreach lastday {31 30 29 28} {
- if {[catch {clock scan "$month/$lastday/$year"}] == 0} {
- break
- }
- }
- set seconds [clock scan "$month/1/$year"]
- set firstday [_adjustday [clock format $seconds -format %w]]
-
- set weeks [expr ceil(double($lastday+$firstday)/7)]
-
- set rlist ""
- for {set day 1} {$day <= $lastday} {incr day} {
- set seconds [clock scan "$month/$day/$year"]
- set date [clock format $seconds -format "%m/%d/%Y"]
- set dayoweek [clock format $seconds -format %w]
-
- if {$dayoweek == 0 || $dayoweek == 6} {
- set kind "weekend"
- } else {
- set kind "weekday"
- }
-
- set daycol [_adjustday $dayoweek]
-
- set weekrow [expr ($firstday+$day-1)/7]
- lappend rlist $day $date $kind $daycol $weekrow
- }
- return $rlist
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _adjustday day_
-#
-# Modifies the day to be in accordance with the startday option.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_adjustday {day_} {
- set retday [expr $day_ - $_offset]
-
- if {$retday < 0} {
- set retday [expr $retday + 7]
- }
-
- return $retday
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _select date_
-#
-# Selects the current <date_> on the calendar. Highlights the date
-# on the calendar, and executes the command associated with the
-# calendar, with the selected date substituted in place of "%d".
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_select {date_} {
- set time [clock scan $date_]
- set date [clock format $time -format "%m/%d/%Y"]
-
- set _selected $date
-
- set current [clock format $_time -format "%m %Y"]
- set selected [clock format $time -format "%m %Y"]
-
- if {$current == $selected} {
- $itk_component(page) itemconfigure all-sensor \
- -outline "" -width 1
-
- $itk_component(page) itemconfigure $date-sensor \
- -outline $itk_option(-selectcolor) \
- -width $itk_option(-selectthickness)
- $itk_component(page) raise $date-sensor
- } else {
- set _time $time
- _redraw
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectEvent date_
-#
-# Selects the current <date_> on the calendar. Highlights the date
-# on the calendar, and executes the command associated with the
-# calendar, with the selected date substituted in place of "%d".
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_selectEvent {date_} {
- _select $date_
-
- if {[string trim $itk_option(-command)] != ""} {
- set cmd $itk_option(-command)
- set cmd [_percentSubst %d $cmd [get]]
- uplevel #0 $cmd
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _percentSubst pattern_ string_ subst_
-#
-# This command is a "safe" version of regsub, for substituting
-# each occurance of <%pattern_> in <string_> with <subst_>. The
-# usual Tcl "regsub" command does the same thing, but also
-# converts characters like "&" and "\0", "\1", etc. that may
-# be present in the <subst_> string.
-#
-# Returns <string_> with <subst_> substituted in place of each
-# <%pattern_>.
-# ------------------------------------------------------------------
-body iwidgets::Calendar::_percentSubst {pattern_ string_ subst_} {
- if {![string match %* $pattern_]} {
- error "bad pattern \"$pattern_\": should be %something"
- }
-
- set rval ""
- while {[regexp "(.*)${pattern_}(.*)" $string_ all head tail]} {
- set rval "$subst_$tail$rval"
- set string_ $head
- }
- set rval "$string_$rval"
-}
diff --git a/itcl/iwidgets3.0.0/generic/canvasprintbox.itk b/itcl/iwidgets3.0.0/generic/canvasprintbox.itk
deleted file mode 100644
index 64ced049bf4..00000000000
--- a/itcl/iwidgets3.0.0/generic/canvasprintbox.itk
+++ /dev/null
@@ -1,1111 +0,0 @@
-#
-# CanvasPrintBox v1.5
-# ----------------------------------------------------------------------
-# Implements a print box for printing the contents of a canvas widget
-# to a printer or a file. It is possible to specify page orientation, the
-# number of pages to print the image on and if the output should be
-# stretched to fit the page.
-#
-# CanvasPrintBox is a "super-widget" that can be used as an
-# element in ones own GUIs. It is used to print the contents
-# of a canvas (called the source hereafter) to a printer or a
-# file. Possible settings include: portrait and landscape orientation
-# of the output, stretching the output to fit the page while maintaining
-# a proper aspect-ratio and posterizing to enlarge the output to fit on
-# multiple pages. A stamp-sized copy of the source will be shown (called
-# the stamp hereafter) at all times to reflect the effect of changing
-# the settings will have on the output.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Tako Schotanus EMAIL: Tako.Schotanus@bouw.tno.nl
-# ----------------------------------------------------------------------
-# Copyright (c) 1995 Tako Schotanus
-# ======================================================================
-# Permission is hereby granted, without written agreement and without
-# license or royalty fees, to use, copy, modify, and distribute this
-# software and its documentation for any purpose, provided that the
-# above copyright notice and the following two paragraphs appear in
-# all copies of this software.
-#
-# IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
-# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
-# IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-# ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
-# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Canvasprintbox.filename "canvas.ps" widgetDefault
-option add *Canvasprintbox.hPageCnt 1 widgetDefault
-option add *Canvasprintbox.orient landscape widgetDefault
-option add *Canvasprintbox.output printer widgetDefault
-option add *Canvasprintbox.pageSize A4 widgetDefault
-option add *Canvasprintbox.posterize 0 widgetDefault
-option add *Canvasprintbox.printCmd lpr widgetDefault
-option add *Canvasprintbox.printRegion "" widgetDefault
-option add *Canvasprintbox.vPageCnt 1 widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Canvasprintbox {
- keep -background -cursor -textbackground -foreground
-}
-
-#<
-#
-# CanvasPrintBox is a "super-widget" that can be used as an
-# element in ones own GUIs. It is used to print the contents
-# of a canvas (called the source hereafter) to a printer or a
-# file. Possible settings include: portrait and landscape orientation
-# of the output, stretching the output to fit the page while maintaining
-# a proper aspect-ratio and posterizing to enlarge the output to fit on
-# multiple pages. A stamp-sized copy of the source will be shown (called
-# the stamp hereafter) at all times to reflect the effect of changing
-# the settings will have on the output.
-#
-#>
-class iwidgets::Canvasprintbox {
- inherit itk::Widget
-
- #
- # Holds the current state for all check- and radiobuttons.
- #
- itk_option define -filename filename FileName "canvas.ps"
- itk_option define -hpagecnt hPageCnt PageCnt 1
- itk_option define -orient orient Orient "landscape"
- itk_option define -output output Output "printer"
- itk_option define -pagesize pageSize PageSize "A4"
- itk_option define -posterize posterize Posterize 0
- itk_option define -printcmd printCmd PrintCmd ""
- itk_option define -printregion printRegion PrintRegion ""
- itk_option define -stretch stretch Stretch 0
- itk_option define -vpagecnt vPageCnt PageCnt 1
-
- constructor {args} {}
- destructor {}
-
- # ---------------------------------------------------------------
- # PUBLIC
- #----------------------------------------------------------------
- public {
- method getoutput {}
- method print {}
- method refresh {}
- method setcanvas {canv}
- method stop {}
- }
-
- # ---------------------------------------------------------------
- # PROTECTED
- #----------------------------------------------------------------
- protected {
- #
- # Just holds the names of some widgets/objects. "win" is used to
- # determine if the object is fully constructed and initialized.
- #
- variable win ""
- variable canvw ""
-
- #
- # The canvas we want to print.
- #
- variable canvas ""
-
- #
- # Boolean indicating if the attribute "orient" is set
- # to landscape or not.
- #
- variable rotate 1
-
- #
- # Holds the configure options that were used to create this object.
- #
- variable init_opts ""
-
- #
- # The following attributes hold a list of lines that are
- # currently drawn on the "stamp" to show how the page(s) is/are
- # oriented. The first holds the vertical dividing lines and the
- # second the horizontal ones.
- #
- variable hlines ""
- variable vlines ""
-
- #
- # Updating is set when the thumbnail is being drawn. Settings
- # this to 0 while drawing is still busy will terminate the
- # proces.
- # Restart_update can be set to 1 when the thumbnail is being
- # drawn to force a redraw.
- #
- variable _reposition ""
- variable _update_attr_id ""
-
- method _calc_poster_size {}
- method _calc_print_region {}
- method _calc_print_scale {}
- method _mapEventHandler {}
- method _update_attr {{when later}}
- method _update_canvas {{when later}}
-
- common _globVar
-
- proc ezPaperInfo {size {attr ""} \
- {orient "portrait"} {window ""}} {}
- }
-}
-
-#
-# Provide a lowercased access method for the Canvasprintbox class.
-#
-proc ::iwidgets::canvasprintbox {args} {
- uplevel ::iwidgets::Canvasprintbox $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-#<
-# A list of four coordinates specifying which part of the canvas to print.
-# An empty list means that the canvas' entire scrollregion should be
-# printed. Any change to this attribute will automatically update the "stamp".
-# Defaults to an empty list.
-#>
-configbody iwidgets::Canvasprintbox::printregion {
- if {$itk_option(-printregion) != ""
- && [llength $itk_option(-printregion)] != 4} {
- error {bad option "printregion": should contain 4 coordinates}
- }
- _update_canvas
-}
-
-#<
-# Specifies where the postscript output should go: to the printer
-# or to a file. Can take on the values "printer" or "file".
-# The corresponding entry-widget will reflect the contents of
-# either the printcmd attribute or the filename attribute.
-#>
-configbody iwidgets::Canvasprintbox::output {
- switch $itk_option(-output) {
- file - printer {
- set _globVar($this,output) $itk_option(-output)
- }
- default {
- error {bad output option \"$itk_option(-output)\":\
- should be file or printer}
- }
- }
- _update_attr
-}
-
-#<
-# The command to execute when printing the postscript output.
-# The command will get the postscript directed to its standard
-# input. (Only when output is set to "printer")
-#>
-configbody iwidgets::Canvasprintbox::printcmd {
- set _globVar($this,printeref) $itk_option(-printcmd)
- _update_attr
-}
-
-#<
-# The file to write the postscript output to (Only when output
-# is set to "file"). If posterizing is turned on and hpagecnt
-# and/or vpagecnt is more than 1, x.y is appended to the filename
-# where x is the horizontal page number and y the vertical page number.
-#>
-configbody iwidgets::Canvasprintbox::filename {
- set _globVar($this,fileef) $itk_option(-filename)
- _update_attr
-}
-
-#<
-# The pagesize the printer supports. Changes to this attribute
-# will be reflected immediately in the "stamp".
-#>
-configbody iwidgets::Canvasprintbox::pagesize {
- set opt [string tolower $itk_option(-pagesize)]
- set lst [string tolower [ezPaperInfo types]]
- if {[lsearch $lst $opt] == -1} {
- error "bad option \"pagesize\": should be one of: [ezPaperInfo types]"
- }
- $itk_component(paperom) select "*[string range $opt 1 end]"
- _update_canvas
-}
-
-#<
-# Determines the orientation of the output to the printer (or file).
-# It can take the value "portrait" or "landscape" (default). Changes
-# to this attribute will be reflected immediately in the "stamp".
-#>
-configbody iwidgets::Canvasprintbox::orient {
- switch $itk_option(-orient) {
- "portrait" - "landscape" {
- $itk_component(orientom) select $itk_option(-orient)
- _update_canvas
-
- }
- default {
- error "bad orient option \"$itk_option(-orient)\":\
- should be portrait or landscape"
- }
- }
-}
-
-#<
-# Determines if the output should be stretched to fill the
-# page (as defined by the attribute pagesize) as large as
-# possible. The aspect-ratio of the output will be retained
-# and the output will never fall outside of the boundaries
-# of the page.
-#>
-configbody iwidgets::Canvasprintbox::stretch {
- if {$itk_option(-stretch) != 0 && $itk_option(-stretch) != 1} {
- error {bad option "stretch": should be a boolean}
- }
- set _globVar($this,stretchcb) $itk_option(-stretch)
- _update_attr
-}
-
-#<
-# Indicates if posterizing is turned on or not. Posterizing
-# the output means that it is possible to distribute the
-# output over more than one page. This way it is possible to
-# print a canvas/region which is larger than the specified
-# pagesize without stretching. If used in combination with
-# stretching it can be used to "blow up" the contents of a
-# canvas to as large as size as you want (See attributes:
-# hpagecnt end vpagecnt). Any change to this attribute will
-# automatically update the "stamp".
-#>
-configbody iwidgets::Canvasprintbox::posterize {
- if {$itk_option(-posterize) != "0" && $itk_option(-posterize) != "1"} {
- error "expected boolean but got \"$itk_option(-posterize)\""
- }
- set _globVar($this,postercb) $itk_option(-posterize)
- _update_canvas
-}
-
-#<
-# Is used in combination with "posterize" to determine over
-# how many pages the output should be distributed. This
-# attribute specifies how many pages should be used horizontaly.
-# Any change to this attribute will automatically update the "stamp".
-#>
-configbody iwidgets::Canvasprintbox::hpagecnt {
- set _globVar($this,hpc) $itk_option(-hpagecnt)
- _update_canvas
-}
-
-#<
-# Is used in combination with "posterize" to determine over
-# how many pages the output should be distributed. This
-# attribute specifies how many pages should be used verticaly.
-# Any change to this attribute will automatically update the "stamp".
-#>
-configbody iwidgets::Canvasprintbox::vpagecnt {
- set _globVar($this,vpc) $itk_option(-vpagecnt)
- _update_canvas
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Canvasprintbox::constructor {args} {
- set _globVar($this,output) printer
- set _globVar($this,printeref) ""
- set _globVar($this,fileef) "canvas.ps"
- set _globVar($this,hpc) 1
- set _globVar($this,vpc) 1
- set _globVar($this,postercb) 0
- set _globVar($this,stretchcb) 0
-
- itk_component add canvasframe {
- frame $itk_interior.f18 -bd 2
- }
-
- itk_component add canvas {
- canvas $itk_component(canvasframe).c1 \
- -bd 2 -relief sunken \
- -scrollregion {0c 0c 10c 10c} \
- -width 250
- }
- pack $itk_component(canvas) -expand 1 -fill both
-
- itk_component add outputom {
- iwidgets::Labeledframe $itk_interior.outputom \
- -labelpos nw \
- -labeltext "Output to"
- }
- set cs [$itk_component(outputom) childsite]
-
- itk_component add printerrb {
- radiobutton $cs.printerrb \
- -text Printer \
- -variable [scope _globVar($this,output)] \
- -anchor w \
- -justify left \
- -value printer \
- -command [code $this _update_attr]
- } {
- usual
- rename -font -labelfont labelFont Font
- }
- itk_component add printeref {
- iwidgets::entryfield $cs.printeref \
- -labeltext "command:" \
- -state normal \
- -labelpos w \
- -textvariable [scope _globVar($this,printeref)]
- }
-
- itk_component add filerb {
- radiobutton $cs.filerb \
- -text File \
- -justify left \
- -anchor w \
- -variable [scope _globVar($this,output)] \
- -value file \
- -command [code $this _update_attr]
- } {
- usual
- rename -font -labelfont labelFont Font
- }
- itk_component add fileef {
- iwidgets::entryfield $cs.fileef \
- -labeltext "filename:" \
- -state disabled \
- -labelpos w \
- -textvariable [scope _globVar($this,fileef)]
- }
-
- itk_component add propsframe {
- iwidgets::Labeledframe $itk_interior.propsframe \
- -labelpos nw \
- -labeltext "Properties"
- }
- set cs [$itk_component(propsframe) childsite]
-
- itk_component add paperom {
- iwidgets::optionmenu $cs.paperom \
- -labelpos w -cyclicon 1 \
- -labeltext "Paper size:" \
- -command [code $this refresh]
- } {
- usual
- rename -font -labelfont labelFont Font
- }
- eval $itk_component(paperom) insert end [ezPaperInfo types]
- $itk_component(paperom) select A4
-
- itk_component add orientom {
- iwidgets::radiobox $itk_interior.orientom \
- -labeltext "Orientation" -command [code $this refresh]
- }
- $itk_component(orientom) add landscape -text Landscape
- $itk_component(orientom) add portrait -text Portrait
- $itk_component(orientom) select 0
-
- itk_component add stretchcb {
- checkbutton $cs.stretchcb \
- -relief flat \
- -text {Stretch to fit} \
- -justify left \
- -anchor w \
- -variable [scope _globVar($this,stretchcb)] \
- -command [code $this refresh]
- } {
- usual
- rename -font -labelfont labelFont Font
- }
-
- itk_component add postercb {
- checkbutton $cs.postercb \
- -relief flat \
- -text Posterize \
- -justify left \
- -anchor w \
- -variable [scope _globVar($this,postercb)] \
- -command [code $this refresh]
- } {
- usual
- rename -font -labelfont labelFont Font
- }
-
- itk_component add hpcnt {
- iwidgets::entryfield $cs.hpcnt \
- -labeltext on \
- -textvariable [scope _globVar($this,hpc)] \
- -validate integer -width 3 \
- -command [code $this refresh]
- }
-
- itk_component add vpcnt {
- iwidgets::entryfield $cs.vpcnt \
- -labeltext by \
- -textvariable [scope _globVar($this,vpc)] \
- -validate integer -width 3 \
- -command [code $this refresh]
- }
-
- itk_component add pages {
- label $cs.pages -text pages.
- } {
- usual
- rename -font -labelfont labelFont Font
- }
-
- set init_opts $args
-
- grid $itk_component(canvasframe) -row 0 -column 0 -rowspan 4 -sticky nsew
- grid $itk_component(propsframe) -row 0 -column 1 -sticky nsew
- grid $itk_component(outputom) -row 1 -column 1 -sticky nsew
- grid $itk_component(orientom) -row 2 -column 1 -sticky nsew
- grid columnconfigure $itk_interior 0 -weight 1
- grid rowconfigure $itk_interior 3 -weight 1
-
- grid $itk_component(printerrb) -row 0 -column 0 -sticky nsw
- grid $itk_component(printeref) -row 0 -column 1 -sticky nsw
- grid $itk_component(filerb) -row 1 -column 0 -sticky nsw
- grid $itk_component(fileef) -row 1 -column 1 -sticky nsw
- iwidgets::Labeledwidget::alignlabels $itk_component(printeref) $itk_component(fileef)
- grid columnconfigure $itk_component(outputom) 1 -weight 1
-
- grid $itk_component(paperom) -row 0 -column 0 -columnspan 2 -sticky nsw
- grid $itk_component(stretchcb) -row 1 -column 0 -sticky nsw
- grid $itk_component(postercb) -row 2 -column 0 -sticky nsw
- grid $itk_component(hpcnt) -row 2 -column 1 -sticky nsw
- grid $itk_component(vpcnt) -row 2 -column 2 -sticky nsw
- grid $itk_component(pages) -row 2 -column 3 -sticky nsw
- grid columnconfigure $itk_component(propsframe) 3 -weight 1
-
- eval itk_initialize $args
-
- bind $itk_component(pages) <Map> +[code $this _mapEventHandler]
- bind $itk_component(canvas) <Configure> +[code $this refresh]
-}
-
-
-# ---------------------------------------------------------------
-# PUBLIC METHODS
-#----------------------------------------------------------------
-
-#<
-# This is used to set the canvas that has to be printed.
-# A stamp-sized copy will automatically be drawn to show how the
-# output would look with the current settings.
-#
-# In: canv - The canvas to be printed
-# Out: canvas (attrib) - Holds the canvas to be printed
-#>
-body iwidgets::Canvasprintbox::setcanvas {canv} {
- set canvas $canv
- _update_canvas
-}
-
-#<
-# Returns the value of the -printercmd or -filename option
-# depending on the current setting of -output.
-#
-# In: itk_option (attrib)
-# Out: The value of -printercmd or -filename
-#>
-body iwidgets::Canvasprintbox::getoutput {} {
- switch $_globVar($this,output) {
- "file" {
- return $_globVar($this,fileef)
- }
- "printer" {
- return $_globVar($this,printeref)
- }
- }
- return ""
-}
-
-#<
-# Perfrom the actual printing of the canvas using the current settings of
-# all the attributes.
-#
-# In: itk_option, rotate (attrib)
-# Out: A boolean indicating wether printing was successful
-#>
-body iwidgets::Canvasprintbox::print {} {
-
- global env tcl_platform
-
- stop
-
- if {$itk_option(-output) == "file"} {
- set nm $itk_option(-filename)
- if {[string range $nm 0 1] == "~/"} {
- set nm "$env(HOME)/[string range $nm 2 end]"
- }
- } else {
- set nm "/tmp/xge[winfo id $canvas]"
- }
-
- set pr [_calc_print_region]
- set x1 [lindex $pr 0]
- set y1 [lindex $pr 1]
- set x2 [lindex $pr 2]
- set y2 [lindex $pr 3]
- set cx [expr int(($x2 + $x1) / 2)]
- set cy [expr int(($y2 + $y1) / 2)]
- if {!$itk_option(-stretch)} {
- set ps [_calc_poster_size]
- set pshw [expr int([lindex $ps 0] / 2)]
- set pshh [expr int([lindex $ps 1] / 2)]
- set x [expr $cx - $pshw]
- set y [expr $cy - $pshh]
- set w [ezPaperInfo $itk_option(-pagesize) pwidth $itk_option(-orient) $win]
- set h [ezPaperInfo $itk_option(-pagesize) pheight $itk_option(-orient) $win]
- } else {
- set x $x1
- set y $y1
- set w [expr ($x2-$x1) / $_globVar($this,hpc)]
- set h [expr ($y2-$y1) / $_globVar($this,vpc)]
- }
-
- set i 0
- set px $x
- while {$i < $_globVar($this,hpc)} {
- set j 0
- set py $y
- while {$j < $_globVar($this,vpc)} {
- set nm2 [expr {$_globVar($this,hpc) > 1 || $_globVar($this,vpc) > 1 ? "$nm$i.$j" : $nm}]
-
- if {$itk_option(-stretch)} {
- $canvas postscript \
- -file $nm2 \
- -rotate $rotate \
- -x $px -y $py \
- -width $w \
- -height $h \
- -pagex [ezPaperInfo $itk_option(-pagesize) centerx] \
- -pagey [ezPaperInfo $itk_option(-pagesize) centery] \
- -pagewidth [ezPaperInfo $itk_option(-pagesize) pwidth $itk_option(-orient)] \
- -pageheight [ezPaperInfo $itk_option(-pagesize) pheight $itk_option(-orient)]
- } else {
- $canvas postscript \
- -file $nm2 \
- -rotate $rotate \
- -x $px -y $py \
- -width $w \
- -height $h \
- -pagex [ezPaperInfo $itk_option(-pagesize) centerx] \
- -pagey [ezPaperInfo $itk_option(-pagesize) centery]
- }
-
- if {$itk_option(-output) == "printer"} {
- set cmd "$itk_option(-printcmd) < $nm2"
- if {[catch {eval exec $cmd &}]} {
- return 0
- }
- }
-
- set py [expr $py + $h]
- incr j
- }
- set px [expr $px + $w]
- incr i
- }
-
- return 1
-}
-
-#<
-# Retrieves the current value for all edit fields and updates
-# the stamp accordingly. Is useful for Apply-buttons.
-#>
-body iwidgets::Canvasprintbox::refresh {} {
- stop
- _update_canvas
- return
-}
-
-#<
-# Stops the drawing of the "stamp". I'm currently unable to detect
-# when a Canvasprintbox gets withdrawn. It's therefore advised
-# that you perform a stop before you do something like that.
-#>
-body iwidgets::Canvasprintbox::stop {} {
-
- if {$_reposition != ""} {
- after cancel $_reposition
- set _reposition ""
- }
-
- if {$_update_attr_id != ""} {
- after cancel $_update_attr_id
- set _update_attr_id ""
- }
-
- return
-}
-
-# ---------------------------------------------------------------
-# PROTECTED METHODS
-#----------------------------------------------------------------
-
-#
-# Calculate the total size the output would be with the current
-# settings for "pagesize" and "posterize" (and "hpagecnt" and
-# "vpagecnt"). This size will be the size of the printable area,
-# some space has been substracted to take into account that a
-# page should have borders because most printers can't print on
-# the very edge of the paper.
-#
-# In: posterize, hpagecnt, vpagecnt, pagesize, orient (attrib)
-# Out: A list of two numbers indicating the width and the height
-# of the total paper area which will be used for printing
-# in pixels.
-#
-body iwidgets::Canvasprintbox::_calc_poster_size {} {
- set tpw [expr [ezPaperInfo $itk_option(-pagesize) \
- pwidth $itk_option(-orient) $win]*$_globVar($this,hpc)]
- set tph [expr [ezPaperInfo $itk_option(-pagesize) \
- pheight $itk_option(-orient) $win]*$_globVar($this,vpc)]
-
- return "$tpw $tph"
-}
-
-#
-# Determine which area of the "source" canvas will be printed.
-# If "printregion" was set by the "user" this will be used and
-# converted to pixel-coordinates. If the user didn't set it
-# the bounding box that contains all canvas-items will be used
-# instead.
-#
-# In: printregion, canvas (attrib)
-# Out: Four floats specifying the region to be printed in
-# pixel-coordinates (topleft & bottomright).
-#
-body iwidgets::Canvasprintbox::_calc_print_region {} {
- set printreg [expr {$itk_option(-printregion) != ""
- ? $itk_option(-printregion) : [$canvas bbox all]}]
-
- if {$printreg != ""} {
- set prx1 [winfo fpixels $canvas [lindex $printreg 0]]
- set pry1 [winfo fpixels $canvas [lindex $printreg 1]]
- set prx2 [winfo fpixels $canvas [lindex $printreg 2]]
- set pry2 [winfo fpixels $canvas [lindex $printreg 3]]
-
- set res "$prx1 $pry1 $prx2 $pry2"
- } else {
- set res "0 0 0 0"
- }
-
- return $res
-}
-
-#
-# Calculate the scaling factor needed if the output was
-# to be stretched to fit exactly on the page (or pages).
-# If stretching is turned off this will always return 1.0.
-#
-# In: stretch (attrib)
-# Out: A float specifying the scaling factor.
-#
-body iwidgets::Canvasprintbox::_calc_print_scale {} {
- if {$itk_option(-stretch)} {
- set pr [_calc_print_region]
- set prw [expr [lindex $pr 2] - [lindex $pr 0]]
- set prh [expr [lindex $pr 3] - [lindex $pr 1]]
- set ps [_calc_poster_size]
- set psw [lindex $ps 0]
- set psh [lindex $ps 1]
- set sfx [expr $psw / $prw]
- set sfy [expr $psh / $prh]
- set sf [expr {$sfx < $sfy ? $sfx : $sfy}]
- return $sf
- } else {
- return 1.0
- }
-}
-
-#
-# Schedule the thread that makes a copy of the "source"
-# canvas to the "stamp".
-#
-# In: win, canvas (attrib)
-# Out: -
-#
-body iwidgets::Canvasprintbox::_update_canvas {{when later}} {
- if {$win == "" || $canvas == "" || [$canvas find all] == ""} {
- return
- }
- if {$when == "later"} {
- if {$_reposition == ""} {
- set _reposition [after idle [code $this _update_canvas now]]
- }
- return
- }
-
- _update_attr now
-
- #
- # Make a copy of the "source" canvas to the "stamp".
- #
- if {$_globVar($this,hpc) == [llength $vlines] &&
- $_globVar($this,vpc) == [llength $hlines]} {
- stop
- return
- }
-
- $canvw delete all
-
- set width [winfo width $canvw]
- set height [winfo height $canvw]
- set ps [_calc_poster_size]
-
- #
- # Calculate the scaling factor that would be needed to fit the
- # whole "source" into the "stamp". This takes into account the
- # total amount of "paper" that would be needed to print the
- # contents of the "source".
- #
- set xsf [expr $width/[lindex $ps 0]]
- set ysf [expr $height/[lindex $ps 1]]
- set sf [expr {$xsf < $ysf ? $xsf : $ysf}]
- set w [expr [lindex $ps 0]*$sf]
- set h [expr [lindex $ps 1]*$sf]
- set x1 [expr ($width-$w)/2]
- set y1 [expr ($height-$h)/2]
- set x2 [expr $x1+$w]
- set y2 [expr $y1+$h]
- set cx [expr ($x2+$x1)/ 2]
- set cy [expr ($y2+$y1)/ 2]
-
- set printreg [_calc_print_region]
- set prx1 [lindex $printreg 0]
- set pry1 [lindex $printreg 1]
- set prx2 [lindex $printreg 2]
- set pry2 [lindex $printreg 3]
- set prcx [expr ($prx2+$prx1)/2]
- set prcy [expr ($pry2+$pry1)/2]
-
- set psf [_calc_print_scale]
-
- #
- # Copy all items from the "real" canvas to the canvas
- # showing what we'll send to the printer. Bitmaps and
- # texts are not copied because they can't be scaled,
- # a rectangle will be created instead.
- #
- set tsf [expr $sf * $psf]
- set dx [expr $cx-($prcx*$tsf)]
- set dy [expr $cy-($prcy*$tsf)]
- $canvw create rectangle \
- [expr $x1+0] \
- [expr $y1+0] \
- [expr $x2-0] \
- [expr $y2-0] -fill white
- set items [eval "$canvas find overlapping $printreg"]
-
- set itemCount [llength $items]
- for {set cnt 0} {$cnt < $itemCount} {incr cnt} {
- #
- # Determine the item's type and coordinates
- #
- set i [lindex $items $cnt]
- set t [$canvas type $i]
- set crds [$canvas coords $i]
-
- #
- # Ask for the item's configuration settings and strip
- # it to leave only a list of option names and values.
- #
- set cfg [$canvas itemconfigure $i]
- set cfg2 ""
- foreach c $cfg {
- if {[llength $c] == 5} {
- lappend cfg2 [lindex $c 0] [lindex $c 4]
- }
- }
-
- #
- # Handle texts and bitmaps differently: they will
- # be represented as rectangles.
- #
- if {$t == "text" || $t == "bitmap" || $t == "window"} {
- set t "rectangle"
- set crds [$canvas bbox $i]
- set cfg2 "-outline {} -fill gray"
- }
-
- #
- # Remove the arrows from a line item when the scale
- # factor drops below 1/3rd of the original size.
- # This to prevent the arrowheads from dominating the
- # display.
- #
- if {$t == "line" && $tsf < 0.33} {
- lappend cfg2 -arrow none
- }
-
- #
- # Create a copy of the item on the "printing" canvas.
- #
- set i2 [eval "$canvw create $t $crds $cfg2"]
- $canvw scale $i2 0 0 $tsf $tsf
- $canvw move $i2 $dx $dy
-
- if {[expr $cnt%25] == 0} {
- update
- }
- if {$_reposition == ""} {
- return
- }
- }
-
- set p $x1
- set i 1
- set vlines {}
- while {$i < $_globVar($this,hpc)} {
- set p [expr $p + ($w/$_globVar($this,hpc))]
- set l [$canvw create line $p $y1 $p $y2]
- lappend vlines $l
- incr i
- }
-
- set p $y1
- set i 1
- set vlines {}
- while {$i < $_globVar($this,vpc)} {
- set p [expr $p + ($h/$_globVar($this,vpc))]
- set l [$canvw create line $x1 $p $x2 $p]
- lappend vlines $l
- incr i
- }
-
- set _reposition ""
-}
-
-#
-# Update the attributes to reflect changes made in the user-
-# interface.
-#
-# In: itk_option (attrib) - the attributes to update
-# itk_component (attrib) - the widgets
-# _globVar (common) - the global var holding the state
-# of all radiobuttons and checkboxes.
-# Out: -
-#
-body iwidgets::Canvasprintbox::_update_attr {{when "later"}} {
- if {$when != "now"} {
- if {$_update_attr_id == ""} {
- set _update_attr_id [after idle [code $this _update_attr now]]
- }
- return
- }
-
- set itk_option(-printcmd) $_globVar($this,printeref)
- set itk_option(-filename) $_globVar($this,fileef)
- set itk_option(-output) $_globVar($this,output)
- set itk_option(-pagesize) [string tolower [$itk_component(paperom) get]]
- set itk_option(-stretch) $_globVar($this,stretchcb)
- set itk_option(-posterize) $_globVar($this,postercb)
- set itk_option(-vpagecnt) $_globVar($this,vpc)
- set itk_option(-hpagecnt) $_globVar($this,hpc)
- set itk_option(-orient) [$itk_component(orientom) get]
- set rotate [expr {$itk_option(-orient) == "landscape"}]
-
- if {$_globVar($this,output) == "file"} {
- $itk_component(fileef) configure \
- -state normal -foreground $itk_option(-foreground)
- $itk_component(printeref) configure \
- -state disabled -foreground $itk_option(-disabledforeground)
- } else {
- $itk_component(fileef) configure \
- -state disabled -foreground $itk_option(-disabledforeground)
- $itk_component(printeref) configure \
- -state normal -foreground $itk_option(-foreground)
- }
-
- set fg [expr {$_globVar($this,postercb) \
- ? $itk_option(-foreground) : $itk_option(-disabledforeground)}]
-
- $itk_component(vpcnt) configure -foreground $fg
- $itk_component(hpcnt) configure -foreground $fg
- $itk_component(pages) configure -foreground $fg
-
- #
- # Update dependencies among widgets. (For example: disabling
- # an entry-widget when its associated checkbox-button is used
- # to turn of the option (the entry's value is not needed
- # anymore and this should be reflected in the fact that it
- # isn't possible to change it anymore).
- #
- # former method:_update_widgets/_update_UI
- #
- set state [expr {$itk_option(-posterize) ? "normal" : "disabled"}]
- $itk_component(vpcnt) configure -state $state
- $itk_component(hpcnt) configure -state $state
- $itk_component(paperom) select "*[string range $itk_option(-pagesize) 1 end]"
-
- set _update_attr_id ""
-}
-
-#
-# Gets called when the CanvasPrintBox-widget gets mapped.
-#
-body iwidgets::Canvasprintbox::_mapEventHandler {} {
- set win $itk_interior
- set canvw $itk_component(canvas)
- if {$canvas != ""} {
- setcanvas $canvas
- }
- _update_attr
-}
-
-#
-# Destroy this object and its associated widgets.
-#
-body iwidgets::Canvasprintbox::destructor {} {
- stop
-}
-
-#
-# Hold the information about common paper sizes. A bit of a hack, but it
-# should be possible to add your own if you take a look at it.
-#
-body iwidgets::Canvasprintbox::ezPaperInfo {size {attr ""} \
- {orient "portrait"} {window ""}} {
-
- set size [string tolower $size]
- set attr [string tolower $attr]
- set orient [string tolower $orient]
-
- case $size in {
- types {
- return "A5 A4 A3 A2 A1 Legal Letter"
- }
- a5 {
- set paper(x1) "1.0c"
- set paper(y1) "1.0c"
- set paper(x2) "13.85c"
- set paper(y2) "20.0c"
- set paper(pheight) "19.0c"
- set paper(pwidth) "12.85c"
- set paper(height) "21.0c"
- set paper(width) "14.85c"
- set paper(centerx) "7.425c"
- set paper(centery) "10.5c"
- }
- a4 {
- set paper(x1) "1.0c"
- set paper(y1) "1.0c"
- set paper(x2) "20.0c"
- set paper(y2) "28.7c"
- set paper(pheight) "27.7c"
- set paper(pwidth) "19.0c"
- set paper(height) "29.7c"
- set paper(width) "21.0c"
- set paper(centerx) "10.5c"
- set paper(centery) "14.85c"
- }
- a3 {
- set paper(x1) "1.0c"
- set paper(y1) "1.0c"
- set paper(x2) "28.7c"
- set paper(y2) "41.0c"
- set paper(pheight) "40.0c"
- set paper(pwidth) "27.7c"
- set paper(height) "42.0c"
- set paper(width) "29.7c"
- set paper(centerx) "14.85c"
- set paper(centery) "21.0c"
- }
- a2 {
- set paper(x1) "1.0c"
- set paper(y1) "1.0c"
- set paper(x2) "41.0c"
- set paper(y2) "58.4c"
- set paper(pheight) "57.4c"
- set paper(pwidth) "40.0c"
- set paper(height) "59.4c"
- set paper(width) "42.0c"
- set paper(centerx) "21.0c"
- set paper(centery) "29.7c"
- }
- a1 {
- set paper(x1) "1.0c"
- set paper(y1) "1.0c"
- set paper(x2) "58.4c"
- set paper(y2) "83.0c"
- set paper(pheight) "82.0c"
- set paper(pwidth) "57.4c"
- set paper(height) "84.0c"
- set paper(width) "59.4c"
- set paper(centerx) "29.7c"
- set paper(centery) "42.0c"
- }
- legal {
- set paper(x1) "0.2i"
- set paper(y1) "0.2i"
- set paper(x2) "8.3i"
- set paper(y2) "13.8i"
- set paper(pheight) "13.6i"
- set paper(pwidth) "8.1i"
- set paper(height) "14.0i"
- set paper(width) "8.5i"
- set paper(centerx) "4.25i"
- set paper(centery) "7.0i"
- }
- letter {
- set paper(x1) "0.2i"
- set paper(y1) "0.2i"
- set paper(x2) "8.3i"
- set paper(y2) "10.8i"
- set paper(pheight) "10.6i"
- set paper(pwidth) "8.1i"
- set paper(height) "11.0i"
- set paper(width) "8.5i"
- set paper(centerx) "4.25i"
- set paper(centery) "5.5i"
- }
- default {
- error "ezPaperInfo: Unknown paper type ($type)"
- }
- }
-
- set inv(x1) "y1"
- set inv(x2) "y2"
- set inv(y1) "x1"
- set inv(y2) "x2"
- set inv(pwidth) "pheight"
- set inv(pheight) "pwidth"
- set inv(width) "height"
- set inv(height) "width"
- set inv(centerx) "centery"
- set inv(centery) "centerx"
-
- case $orient in {
- landscape {
- set res $paper($inv($attr))
- }
- portrait {
- set res $paper($attr)
- }
- default {
- error "ezPaperInfo: orientation should be\
- portrait or landscape (not $orient)"
- }
- }
-
- if {$window != ""} {
- set res [winfo fpixels $window $res]
- }
-
- return $res
-}
diff --git a/itcl/iwidgets3.0.0/generic/canvasprintdialog.itk b/itcl/iwidgets3.0.0/generic/canvasprintdialog.itk
deleted file mode 100644
index d87593947e3..00000000000
--- a/itcl/iwidgets3.0.0/generic/canvasprintdialog.itk
+++ /dev/null
@@ -1,155 +0,0 @@
-#
-# CanvasPrintDialog v1.5
-# ----------------------------------------------------------------------
-# Implements a print dialog for printing the contents of a canvas widget
-# to a printer or a file. It is possible to specify page orientation, the
-# number of pages to print the image on and if the output should be
-# stretched to fit the page. The CanvasPrintDialog is derived from the
-# Dialog class and is composed of a CanvasPrintBox with attributes set to
-# manipulate the dialog buttons.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Tako Schotanus EMAIL: Tako.Schotanus@bouw.tno.nl
-# ----------------------------------------------------------------------
-# Copyright (c) 1995 Tako Schotanus
-# ======================================================================
-# Permission is hereby granted, without written agreement and without
-# license or royalty fees, to use, copy, modify, and distribute this
-# software and its documentation for any purpose, provided that the
-# above copyright notice and the following two paragraphs appear in
-# all copies of this software.
-#
-# IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
-# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
-# IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-# ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
-# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-# ======================================================================
-
-#
-# Option database default resources:
-#
-option add *Canvasprintdialog.filename "canvas.ps" widgetDefault
-option add *Canvasprintdialog.hPageCnt 1 widgetDefault
-option add *Canvasprintdialog.orient landscape widgetDefault
-option add *Canvasprintdialog.output printer widgetDefault
-option add *Canvasprintdialog.pageSize A4 widgetDefault
-option add *Canvasprintdialog.posterize 0 widgetDefault
-option add *Canvasprintdialog.printCmd lpr widgetDefault
-option add *Canvasprintdialog.printRegion "" widgetDefault
-option add *Canvasprintdialog.vPageCnt 1 widgetDefault
-option add *Canvasprintdialog.title "Canvas Print Dialog" widgetDefault
-option add *Canvasprintdialog.master "." widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Canvasprintdialog {
- keep -background -cursor -foreground -modality
-}
-
-# ------------------------------------------------------------------
-# CANVASPRINTDIALOG
-# ------------------------------------------------------------------
-class iwidgets::Canvasprintdialog {
- inherit iwidgets::Dialog
-
- constructor {args} {}
- destructor {}
-
- method deactivate {args} {}
- method getoutput {} {}
- method setcanvas {canv} {}
- method refresh {} {}
- method print {} {}
-}
-
-#
-# Provide a lowercased access method for the Canvasprintdialog class.
-#
-proc ::iwidgets::canvasprintdialog {args} {
- uplevel ::iwidgets::Canvasprintdialog $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-#
-# Create new file selection dialog.
-# ------------------------------------------------------------------
-body iwidgets::Canvasprintdialog::constructor {args} {
- component hull configure -borderwidth 0
-
- #
- # Instantiate a file selection box widget.
- #
- itk_component add cpb {
- iwidgets::Canvasprintbox $itk_interior.cpb
- } {
- usual
- keep -printregion -output -printcmd -filename -pagesize \
- -orient -stretch -posterize -hpagecnt -vpagecnt
- }
- pack $itk_component(cpb) -fill both -expand yes
-
- #
- # Hide the apply and help buttons.
- #
- buttonconfigure OK -text Print
- buttonconfigure Apply -command [code $this refresh] -text Refresh
- hide Help
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: deactivate
-#
-# Redefines method of dialog shell class. Stops the drawing of the
-# thumbnail (when busy) upon deactivation of the dialog.
-# ------------------------------------------------------------------
-body iwidgets::Canvasprintdialog::deactivate {args} {
- $itk_component(cpb) stop
- return [eval Shell::deactivate $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: getoutput
-#
-# Thinwrapped method of canvas print box class.
-# ------------------------------------------------------------------
-body iwidgets::Canvasprintdialog::getoutput {} {
- return [$itk_component(cpb) getoutput]
-}
-
-# ------------------------------------------------------------------
-# METHOD: setcanvas
-#
-# Thinwrapped method of canvas print box class.
-# ------------------------------------------------------------------
-body iwidgets::Canvasprintdialog::setcanvas {canv} {
- return [$itk_component(cpb) setcanvas $canv]
-}
-
-# ------------------------------------------------------------------
-# METHOD: refresh
-#
-# Thinwrapped method of canvas print box class.
-# ------------------------------------------------------------------
-body iwidgets::Canvasprintdialog::refresh {} {
- return [$itk_component(cpb) refresh]
-}
-
-# ------------------------------------------------------------------
-# METHOD: print
-#
-# Thinwrapped method of canvas print box class.
-# ------------------------------------------------------------------
-body iwidgets::Canvasprintdialog::print {} {
- return [$itk_component(cpb) print]
-}
diff --git a/itcl/iwidgets3.0.0/generic/checkbox.itk b/itcl/iwidgets3.0.0/generic/checkbox.itk
deleted file mode 100755
index d1498d15667..00000000000
--- a/itcl/iwidgets3.0.0/generic/checkbox.itk
+++ /dev/null
@@ -1,341 +0,0 @@
-#
-# Checkbox
-# ----------------------------------------------------------------------
-# Implements a checkbuttonbox. Supports adding, inserting, deleting,
-# selecting, and deselecting of checkbuttons by tag and index.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: John A. Tucker EMAIL: jatucker@spd.dsccc.com
-#
-# ----------------------------------------------------------------------
-# 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.
-# ======================================================================
-
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Checkbox.labelMargin 10 widgetDefault
-option add *Checkbox.labelFont \
- "-Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*" widgetDefault
-option add *Checkbox.labelPos nw widgetDefault
-option add *Checkbox.borderWidth 2 widgetDefault
-option add *Checkbox.relief groove widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Checkbox {
- keep -background -borderwidth -cursor -foreground -labelfont
-}
-
-# ------------------------------------------------------------------
-# CHECKBOX
-# ------------------------------------------------------------------
-class iwidgets::Checkbox {
- inherit iwidgets::Labeledframe
-
- constructor {args} {}
-
- itk_option define -orient orient Orient vertical
-
- public {
- method add {tag args}
- method insert {index tag args}
- method delete {index}
- method get {{index ""}}
- method index {index}
- method select {index}
- method deselect {index}
- method flash {index}
- method toggle {index}
- method buttonconfigure {index args}
- }
-
- private {
-
- method gettag {index} ;# Get the tag of the checkbutton associated
- ;# with a numeric index
-
- variable _unique 0 ;# Unique id for choice creation.
- variable _buttons {} ;# List of checkbutton tags.
- common buttonVar ;# Array of checkbutton "-variables"
- }
-}
-
-#
-# Provide a lowercased access method for the Checkbox class.
-#
-proc ::iwidgets::checkbox {pathName args} {
- uplevel ::iwidgets::Checkbox $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::constructor {args} {
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -orient
-#
-# Allows the user to orient the checkbuttons either horizontally
-# or vertically. Added by Chad Smith (csmith@adc.com) 3/10/00.
-# ------------------------------------------------------------------
-configbody iwidgets::Checkbox::orient {
- if {$itk_option(-orient) == "horizontal"} {
- foreach tag $_buttons {
- pack $itk_component($tag) -side left -anchor nw -padx 4 -expand 1
- }
- } elseif {$itk_option(-orient) == "vertical"} {
- foreach tag $_buttons {
- pack $itk_component($tag) -side top -anchor w -padx 4 -expand 0
- }
- } else {
- error "Bad orientation: $itk_option(-orient). Should be\
- \"horizontal\" or \"vertical\"."
- }
-}
-
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Searches the checkbutton tags in the checkbox for the one with the
-# requested tag, numerical index, or keyword "end". Returns the
-# choices's numerical index if found, otherwise error.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::index {index} {
- if {[llength $_buttons] > 0} {
- if {[regexp {(^[0-9]+$)} $index]} {
- if {$index < [llength $_buttons]} {
- return $index
- } else {
- error "Checkbox index \"$index\" is out of range"
- }
-
- } elseif {$index == "end"} {
- return [expr [llength $_buttons] - 1]
-
- } else {
- if {[set idx [lsearch $_buttons $index]] != -1} {
- return $idx
- }
-
- error "bad Checkbox index \"$index\": must be number, end,\
- or pattern"
- }
-
- } else {
- error "Checkbox \"$itk_component(hull)\" has no checkbuttons"
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: add tag ?option value option value ...?
-#
-# Add a new tagged checkbutton to the checkbox at the end. The method
-# takes additional options which are passed on to the checkbutton
-# constructor. These include most of the typical checkbutton
-# options. The tag is returned.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::add {tag args} {
- itk_component add $tag {
- eval checkbutton $itk_component(childsite).cb[incr _unique] \
- -variable [list [scope buttonVar($this,$tag)]] \
- -anchor w \
- -justify left \
- -highlightthickness 0 \
- $args
- } {
- usual
- keep -command -disabledforeground -selectcolor -state
- ignore -highlightthickness -highlightcolor
- rename -font -labelfont labelFont Font
- }
-
- # Redraw the buttons with the proper orientation.
- if {$itk_option(-orient) == "vertical"} {
- pack $itk_component($tag) -side top -anchor w -padx 4 -expand 0
- } else {
- pack $itk_component($tag) -side left -anchor nw -expand 1
- }
-
- lappend _buttons $tag
-
- return $tag
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert index tag ?option value option value ...?
-#
-# Insert the tagged checkbutton in the checkbox just before the
-# one given by index. Any additional options are passed on to the
-# checkbutton constructor. These include the typical checkbutton
-# options. The tag is returned.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::insert {index tag args} {
- itk_component add $tag {
- eval checkbutton $itk_component(childsite).cb[incr _unique] \
- -variable [list [scope buttonVar($this,$tag)]] \
- -anchor w \
- -justify left \
- -highlightthickness 0 \
- $args
- } {
- usual
- ignore -highlightthickness -highlightcolor
- rename -font -labelfont labelFont Font
- }
-
- set index [index $index]
- set before [lindex $_buttons $index]
- set _buttons [linsert $_buttons $index $tag]
-
- pack $itk_component($tag) -anchor w -padx 4 -before $itk_component($before)
-
- return $tag
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete index
-#
-# Delete the specified checkbutton.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::delete {index} {
-
- set tag [gettag $index]
- set index [index $index]
- destroy $itk_component($tag)
- set _buttons [lreplace $_buttons $index $index]
-
- if { [info exists buttonVar($this,$tag)] == 1 } {
- unset buttonVar($this,$tag)
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: select index
-#
-# Select the specified checkbutton.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::select {index} {
- set tag [gettag $index]
- #-----------------------------------------------------------
- # BUG FIX: csmith (Chad Smith: csmith@adc.com), 3/30/99
- #-----------------------------------------------------------
- # This method should only invoke the checkbutton if it's not
- # already selected. Check its associated variable, and if
- # it's set, then just ignore and return.
- #-----------------------------------------------------------
- if {[set [scope buttonVar($this,$tag)]] ==
- [[component $tag] cget -onvalue]} {
- return
- }
- $itk_component($tag) invoke
-}
-
-# ------------------------------------------------------------------
-# METHOD: toggle index
-#
-# Toggle a specified checkbutton between selected and unselected
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::toggle {index} {
- set tag [gettag $index]
- $itk_component($tag) toggle
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Return the value of the checkbutton with the given index, or a
-# list of all checkbutton values in increasing order by index.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::get {{index ""}} {
- set result {}
-
- if {$index == ""} {
- foreach tag $_buttons {
- if {$buttonVar($this,$tag)} {
- lappend result $tag
- }
- }
- } else {
- set tag [gettag $index]
- set result $buttonVar($this,$tag)
- }
-
- return $result
-}
-
-# ------------------------------------------------------------------
-# METHOD: deselect index
-#
-# Deselect the specified checkbutton.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::deselect {index} {
- set tag [gettag $index]
- $itk_component($tag) deselect
-}
-
-# ------------------------------------------------------------------
-# METHOD: flash index
-#
-# Flash the specified checkbutton.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::flash {index} {
- set tag [gettag $index]
- $itk_component($tag) flash
-}
-
-# ------------------------------------------------------------------
-# METHOD: buttonconfigure index ?option? ?value option value ...?
-#
-# Configure a specified checkbutton. This method allows configuration
-# of checkbuttons from the Checkbox level. The options may have any
-# of the values accepted by the add method.
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::buttonconfigure {index args} {
- set tag [gettag $index]
- eval $itk_component($tag) configure $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: gettag index
-#
-# Return the tag of the checkbutton associated with a specified
-# numeric index
-# ------------------------------------------------------------------
-body iwidgets::Checkbox::gettag {index} {
- return [lindex $_buttons [index $index]]
-}
diff --git a/itcl/iwidgets3.0.0/generic/colors.itcl b/itcl/iwidgets3.0.0/generic/colors.itcl
deleted file mode 100644
index c544c2e2da0..00000000000
--- a/itcl/iwidgets3.0.0/generic/colors.itcl
+++ /dev/null
@@ -1,209 +0,0 @@
-#
-# colors
-# ----------------------------------------------------------------------
-# The colors class encapsulates several color related utility functions.
-# Class level scope resolution must be used inorder to access the static
-# member functions.
-#
-# USAGE:
-# set hsb [colors::rgbToHsb [winfo rgb . bisque]]
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@spd.dsccc.com
-#
-# @(#) $Id$
-# ----------------------------------------------------------------------
-# Copyright (c) 1995 Mark L. Ulferts
-# ======================================================================
-# Permission is hereby granted, without written agreement and without
-# license or royalty fees, to use, copy, modify, and distribute this
-# software and its documentation for any purpose, provided that the
-# above copyright notice and the following two paragraphs appear in
-# all copies of this software.
-#
-# IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
-# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
-# IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-# ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
-# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-# ======================================================================
-
-namespace eval iwidgets::colors {
-
- # ------------------------------------------------------------------
- # PROCEDURE: rgbToNumeric
- #
- # Returns the numeric value for a list of red, green, and blue.
- # ------------------------------------------------------------------
- proc rgbToNumeric {rgb} {
- if {[llength $rgb] != 3} {
- error "bad arg: \"$rgb\", should be list of red, green, and blue"
- }
-
- return [format "#%04x%04x%04x" \
- [lindex $rgb 0] [lindex $rgb 1] [lindex $rgb 2]]
- }
-
- # ------------------------------------------------------------------
- # PROCEDURE: rgbToHsb
- #
- # The procedure below converts an RGB value to HSB. It takes red,
- # green, and blue components (0-65535) as arguments, and returns a
- # list containing HSB components (floating-point, 0-1) as result.
- # The code here is a copy of the code on page 615 of "Fundamentals
- # of Interactive Computer Graphics" by Foley and Van Dam.
- # ------------------------------------------------------------------
- proc rgbToHsb {rgb} {
- if {[llength $rgb] != 3} {
- error "bad arg: \"$rgb\", should be list of red, green, and blue"
- }
-
- set r [expr [lindex $rgb 0]/65535.0]
- set g [expr [lindex $rgb 1]/65535.0]
- set b [expr [lindex $rgb 2]/65535.0]
-
- set max 0
- if {$r > $max} {set max $r}
- if {$g > $max} {set max $g}
- if {$b > $max} {set max $b}
-
- set min 65535
- if {$r < $min} {set min $r}
- if {$g < $min} {set min $g}
- if {$b < $min} {set min $b}
-
- if {$max != 0} {
- set sat [expr ($max-$min)/$max]
- } else {
- set sat 0
- }
- if {$sat == 0} {
- set hue 0
- } else {
- set rc [expr ($max-$r)/($max-$min)]
- set gc [expr ($max-$g)/($max-$min)]
- set bc [expr ($max-$b)/($max-$min)]
-
- if {$r == $max} {
- set hue [expr $bc-$gc]
- } elseif {$g == $max} {
- set hue [expr 2+$rc-$bc]
- } elseif {$b == $max} {
- set hue [expr 4+$gc-$rc]
- }
- set hue [expr $hue*0.1666667]
- if {$hue < 0} {set hue [expr $hue+1.0]}
- }
- return [list $hue $sat $max]
- }
-
- # ------------------------------------------------------------------
- # PROCEDURE: hsbToRgb
- #
- # The procedure below converts an HSB value to RGB. It takes hue,
- # saturation, and value components (floating-point, 0-1.0) as
- # arguments, and returns a list containing RGB components (integers,
- # 0-65535) as result. The code here is a copy of the code on page
- # 616 of "Fundamentals of Interactive Computer Graphics" by Foley
- # and Van Dam.
- # ------------------------------------------------------------------
- proc hsbToRgb {hsb} {
-
- if {[llength $hsb] != 3} {
- error "bad arg: \"$hsb\", should be list of hue, saturation, and brightness"
- }
-
- set hue [lindex $hsb 0]
- set sat [lindex $hsb 1]
- set value [lindex $hsb 2]
-
- set v [format %.0f [expr 65535.0*$value]]
- if {$sat == 0} {
- return "$v $v $v"
- } else {
- set hue [expr $hue*6.0]
- if {$hue >= 6.0} {
- set hue 0.0
- }
- scan $hue. %d i
- set f [expr $hue-$i]
- set p [format %.0f [expr {65535.0*$value*(1 - $sat)}]]
- set q [format %.0f [expr {65535.0*$value*(1 - ($sat*$f))}]]
- set t [format %.0f [expr {65535.0*$value*(1 - ($sat*(1 - $f)))}]]
- case $i \
- 0 {return "$v $t $p"} \
- 1 {return "$q $v $p"} \
- 2 {return "$p $v $t"} \
- 3 {return "$p $q $v"} \
- 4 {return "$t $p $v"} \
- 5 {return "$v $p $q"}
- error "i value $i is out of range"
- }
- }
-
- # ------------------------------------------------------------------
- #
- # PROCEDURE: topShadow bgColor
- #
- # This method computes a lighter shadow variant of bgColor.
- # It wants to decrease the saturation to 25%. But if there is
- # no saturation (as in gray colors) it tries to turn the
- # brightness up by 10%. It maxes the brightness at 1.0 to
- # avoid bogus colors...
- #
- # bgColor is converted to HSB where the calculations are
- # made. Then converted back to an rgb color number (hex fmt)
- #
- # ------------------------------------------------------------------
- proc topShadow { bgColor } {
-
- set hsb [rgbToHsb [winfo rgb . $bgColor]]
-
- set saturation [lindex $hsb 1]
- set brightness [lindex $hsb 2]
-
- if { $brightness < 0.9 } {
- # try turning the brightness up first.
- set brightness [expr $brightness * 1.1]
- } else {
- # otherwise fiddle with saturation
- set saturation [expr $saturation * 0.25]
- }
-
- set hsb [lreplace $hsb 1 1 [set saturation]]
- set hsb [lreplace $hsb 2 2 [set brightness]]
-
- set rgb [hsbToRgb $hsb]
- set color [rgbToNumeric $rgb]
- return $color
- }
-
-
- # ------------------------------------------------------------------
- #
- # PROC: bottomShadow bgColor
- #
- #
- # This method computes a darker shadow variant of bg color.
- # It takes the brightness and decreases it to 80% of its
- # original value.
- #
- # bgColor is converted to HSB where the calculations are
- # made. Then converted back to an rgb color number (hex fmt)
- #
- # ------------------------------------------------------------------
- proc bottomShadow { bgColor } {
-
- set hsb [rgbToHsb [winfo rgb . $bgColor]]
- set hsb [lreplace $hsb 2 2 [expr [lindex $hsb 2] * 0.8]]
- set rgb [hsbToRgb $hsb]
- set color [rgbToNumeric $rgb]
- return $color
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/combobox.itk b/itcl/iwidgets3.0.0/generic/combobox.itk
deleted file mode 100644
index ab70ba98956..00000000000
--- a/itcl/iwidgets3.0.0/generic/combobox.itk
+++ /dev/null
@@ -1,1360 +0,0 @@
-# Combobox
-# ----------------------------------------------------------------------
-# Implements a Combobox widget. A Combobox has 2 basic styles: simple and
-# dropdown. Dropdowns display an entry field with an arrow button to the
-# right of it. When the arrow button is pressed a selectable list of
-# items is popped up. A simple Combobox displays an entry field and a listbox
-# just beneath it which is always displayed. In both types, if the user
-# selects an item in the listbox, the contents of the entry field are
-# replaced with the text from the selected item. If the Combobox is
-# editable, the user can type in the entry field and when <Return> is
-# pressed the item will be inserted into the list.
-#
-# WISH LIST:
-# This section lists possible future enhancements.
-#
-# Combobox 1.x:
-# - convert bindings to bindtags.
-#
-# ----------------------------------------------------------------------
-# ORIGINAL AUTHOR: John S. Sigler EMAIL: jsigler@spd.dsccc.com
-# sigler@onramp.net
-# ----------------------------------------------------------------------
-# CURRENT MAINTAINER: Mitch Gorman EMAIL: logain@erols.com
-# Copyright (c) 1995 John S. Sigler
-# Copyright (c) 1997 Mitch Gorman
-# ======================================================================
-# Permission is hereby granted, without written agreement and without
-# license or royalty fees, to use, copy, modify, and distribute this
-# software and its documentation for any purpose, provided that the
-# above copyright notice and the following two paragraphs appear in
-# all copies of this software.
-#
-# IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
-# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
-# IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-# ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
-# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Combobox.borderWidth 2 widgetDefault
-option add *Combobox.labelPos wn widgetDefault
-option add *Combobox.listHeight 150 widgetDefault
-option add *Combobox.hscrollMode dynamic widgetDefault
-option add *Combobox.vscrollMode dynamic widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Combobox {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -labelfont -popupcursor \
- -selectbackground -selectborderwidth -selectforeground \
- -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# COMBOBOX
-# ------------------------------------------------------------------
-class iwidgets::Combobox {
- inherit iwidgets::Entryfield
-
- constructor {args} {}
- destructor {}
-
- itk_option define -arrowrelief arrowRelief Relief raised
- itk_option define -completion completion Completion true
- itk_option define -dropdown dropdown Dropdown true
- itk_option define -editable editable Editable true
- itk_option define -grab grab Grab local
- itk_option define -listheight listHeight Height 150
- itk_option define -margin margin Margin 1
- itk_option define -popupcursor popupCursor Cursor arrow
- itk_option define -selectioncommand selectionCommand SelectionCommand {}
- itk_option define -state state State normal
- itk_option define -unique unique Unique true
-
- public method clear {{component all}}
- public method curselection {}
- public method delete {component first {last {}}}
- public method get {{index {}}}
- public method getcurselection {}
- public method insert {component index args}
- public method invoke {}
- public method justify {direction}
- public method see {index}
- public method selection {option first {last {}}}
- public method size {}
- public method sort {{mode ascending}}
- public method xview {args}
- public method yview {args}
-
- protected method _addToList {}
- protected method _createComponents {}
- protected method _deleteList {first {last {}}}
- protected method _deleteText {first {last {}}}
- protected method _doLayout {{when later}}
- protected method _drawArrow {}
- protected method _dropdownBtnRelease {{window {}} {x 1} {y 1}}
- protected method _ignoreNextBtnRelease {ignore}
- protected method _next {}
- protected method _packComponents {{when later}}
- protected method _positionList {}
- protected method _postList {}
- protected method _previous {}
- protected method _resizeArrow {}
- protected method _selectCmd {}
- protected method _toggleList {}
- protected method _unpostList {}
- protected method _commonBindings {}
- protected method _dropdownBindings {}
- protected method _simpleBindings {}
- protected method _listShowing {{val ""}}
-
- private method _bs {}
- private method _lookup {key}
- private method _slbListbox {}
- private method _stateSelect {}
-
- private variable _doit 0;
- private variable _inbs 0;
- private variable _inlookup 0;
- private variable _currItem {}; ;# current selected item.
- private variable _ignoreRelease false ;# next button release ignored.
- private variable _isPosted false; ;# is the dropdown popped up.
- private variable _repacking {} ;# non-null => _packComponents pending.
- private common _listShowing
- private common count 0
-}
-
-#
-# Provide a lowercase access method for the Combobox class.
-#
-proc ::iwidgets::combobox {pathName args} {
- uplevel ::iwidgets::Combobox $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Combobox::constructor {args} {
- set _listShowing($this) 0
-
- # combobox is different as all components are created
- # after determining what the dropdown style is...
-
- # configure args
- eval itk_initialize $args
-
- # create components that are dependent on options
- # (Scrolledlistbox, arrow button) and pack them.
- if {$count == 0} {
- image create bitmap downarrow -data {
- #define down_width 16
- #define down_height 16
- static unsigned char down_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0xf8, 0x3f,
- 0xf0, 0x1f, 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x03,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
- }
- image create bitmap uparrow -data {
- #define up_width 16
- #define up_height 16
- static unsigned char up_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
- 0xc0, 0x01, 0xe0, 0x03, 0xf0, 0x07, 0xf8, 0x0f,
- 0xfc, 0x1f, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
- }
- }
- incr count
- _doLayout
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Combobox::destructor {} {
- # catch any repacking that may be waiting for idle time
- if {$_repacking != ""} {
- after cancel $_repacking
- }
- incr count -1
- if {$count == 0} {
- image delete uparrow
- image delete downarrow
- }
-}
-
-# ================================================================
-# OPTIONS
-# ================================================================
-
-# --------------------------------------------------------------------
-# OPTION: -arrowrelief
-#
-# Relief style used on the arrow button.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::arrowrelief {}
-
-# --------------------------------------------------------------------
-# OPTION: -completion
-#
-# Relief style used on the arrow button.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::completion {
- switch -- $itk_option(-completion) {
- 0 - no - false - off { }
- 1 - yes - true - on { }
- default {
- error "bad completion option \"$itk_option(-completion)\":\
- should be boolean"
- }
- }
-}
-
-# --------------------------------------------------------------------
-# OPTION: -dropdown
-#
-# Boolean which determines the Combobox style: dropdown or simple.
-# Because the two style's lists reside in different toplevel widgets
-# this is more complicated than it should be.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::dropdown {
- switch -- $itk_option(-dropdown) {
- 1 - yes - true - on {
- if {[winfo exists $itk_interior.list]} {
- set vals [$itk_component(list) get 0 end]
- destroy $itk_component(list)
- _doLayout
- if [llength $vals] {
- eval insert list end $vals
- }
- }
- }
- 0 - no - false - off {
- if {[winfo exists $itk_interior.popup.list]} {
- set vals [$itk_component(list) get 0 end]
- catch {destroy $itk_component(arrowBtn)}
- destroy $itk_component(popup) ;# this deletes the list too
- _doLayout
- if [llength $vals] {
- eval insert list end $vals
- }
- }
- }
- default {
- error "bad dropdown option \"$itk_option(-dropdown)\":\
- should be boolean"
- }
- }
-}
-
-# --------------------------------------------------------------------
-# OPTION: -editable
-#
-# Boolean which allows/disallows user input to the entry field area.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::editable {
- switch -- $itk_option(-editable) {
- 1 - true - yes - on {
- switch -- $itk_option(-state) {
- normal {
- $itk_component(entry) configure -state normal
- }
- }
- }
- 0 - false - no - off {
- $itk_component(entry) configure -state disabled
- }
- default {
- error "bad editable option \"$itk_option(-editable)\":\
- should be boolean"
- }
- }
-}
-
-# --------------------------------------------------------------------
-# OPTION: -grab
-#
-# grab-state of megawidget
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::grab {
- switch -- $itk_option(-grab) {
- local { }
- global { }
- default {
- error "bad grab value \"$itk_option(-grab)\":\
- must be global or local"
- }
- }
-}
-
-# --------------------------------------------------------------------
-# OPTION: -listheight
-#
-# Listbox height in pixels. (Need to integrate the scrolledlistbox
-# -visibleitems option here - at least for simple listbox.)
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::listheight {}
-
-# --------------------------------------------------------------------
-# OPTION: -margin
-#
-# Spacer between the entry field and arrow button of dropdown style
-# Comboboxes.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::margin {
- grid columnconfigure $itk_interior 0 -minsize $itk_option(-margin)
-}
-
-# --------------------------------------------------------------------
-# OPTION: -popupcursor
-#
-# Set the cursor for the popup list.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::popupcursor {}
-
-# --------------------------------------------------------------------
-# OPTION: -selectioncommand
-#
-# Defines the proc to be called when an item is selected in the list.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::selectioncommand {}
-
-# --------------------------------------------------------------------
-# OPTION: -state
-#
-# overall state of megawidget
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::state {
- switch -- $itk_option(-state) {
- disabled {
- $itk_component(entry) configure -state disabled
- }
- normal {
- switch -- $itk_option(-editable) {
- 1 - true - yes - on {
- $itk_component(entry) configure -state normal
- }
- 0 - false - no - off {
- $itk_component(entry) configure -state disabled
- }
- }
- }
- default {
- error "bad state value \"$itk_option(-state)\":\
- must be normal or disabled"
- }
- }
- if {[winfo exists itk_component(arrowBtn)]} {
- $itk_component(arrowBtn) configure -state $itk_option(-state)
- }
-}
-
-# --------------------------------------------------------------------
-# OPTION: -unique
-#
-# Boolean which disallows/allows adding duplicate items to the listbox.
-# --------------------------------------------------------------------
-configbody iwidgets::Combobox::unique {
- # boolean error check
- switch -- $itk_option(-unique) {
- 1 - true - yes - on { }
- 0 - false - no - off { }
- default {
- error "bad unique value \"$itk_option(-unique)\":\
- should be boolean"
- }
- }
-}
-
-# =================================================================
-# METHODS
-# =================================================================
-
-# ------------------------------------------------------
-# PUBLIC METHOD: clear ?component?
-#
-# Remove all elements from the listbox, all contents
-# from the entry component, or both (if all).
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::clear {{component all}} {
- switch -- $component {
- entry {
- iwidgets::Entryfield::clear
- }
- list {
- delete list 0 end
- }
- all {
- delete list 0 end
- iwidgets::Entryfield::clear
- }
- default {
- error "bad Combobox component \"$component\":\
- must be entry, list, or all."
- }
- }
- return
-}
-
-# ------------------------------------------------------
-# PUBLIC METHOD: curselection
-#
-# Return the current selection index.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::curselection {} {
- return [$itk_component(list) curselection]
-}
-
-# ------------------------------------------------------
-# PUBLIC METHOD: delete component first ?last?
-#
-# Delete an item or items from the listbox OR delete
-# text from the entry field. First argument determines
-# which component deletion occurs in - valid values are
-# entry or list.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::delete {component first {last {}}} {
- switch -- $component {
- entry {
- if {$last == {}} {
- set last [expr $first + 1]
- }
- iwidgets::Entryfield::delete $first $last
- }
- list {
- _deleteList $first $last
- }
- default {
- error "bad Combobox component \"$component\":\
- must be entry or list."
- }
- }
-}
-
-# ------------------------------------------------------
-# PUBLIC METHOD: get ?index?
-#
-#
-# Retrieve entry contents if no args OR use args as list
-# index and retrieve list item at index .
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::get {{index {}}} {
- # no args means to get the current text in the entry field area
- if {$index == {}} {
- iwidgets::Entryfield::get
- } else {
- eval $itk_component(list) get $index
- }
-}
-
-# ------------------------------------------------------
-# PUBLIC METHOD: getcurselection
-#
-# Return currently selected item in the listbox. Shortcut
-# version of get curselection command combination.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::getcurselection {} {
- return [$itk_component(list) getcurselection]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: ivoke
-#
-# Pops up or down a dropdown combobox.
-#
-# ------------------------------------------------------------------
-body iwidgets::Combobox::invoke {} {
- if {$itk_option(-dropdown)} {
- return [_toggleList]
- }
- return
-}
-
-# ------------------------------------------------------------
-# PUBLIC METHOD: insert comonent index string ?string ...?
-#
-# Insert an item into the listbox OR text into the entry area.
-# Valid component names are entry or list.
-#
-# ------------------------------------------------------------
-body iwidgets::Combobox::insert {component index args} {
- set nargs [llength $args]
-
- if {$nargs == 0} {
- error "no value given for parameter \"string\" in function\
- \"Combobox::insert\""
- }
-
- switch -- $component {
- entry {
- if { $nargs > 1} {
- error "called function \"Combobox::insert entry\"\
- with too many arguments"
- } else {
- if {$itk_option(-state) == "normal"} {
- eval iwidgets::Entryfield::insert $index $args
- [code $this _lookup ""]
- }
- }
- }
- list {
- if {$itk_option(-state) == "normal"} {
- eval $itk_component(list) insert $index $args
- }
- }
- default {
- error "bad Combobox component \"$component\": must\
- be entry or list."
- }
- }
-}
-
-# ------------------------------------------------------
-# PUBLIC METHOD: justify direction
-#
-# Wrapper for justifying the listbox items in one of
-# 4 directions: top, bottom, left, or right.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::justify {direction} {
- return [$itk_component(list) justify $direction]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: see index
-#
-# Adjusts the view such that the element given by index is visible.
-# ------------------------------------------------------------------
-body iwidgets::Combobox::see {index} {
- return [$itk_component(list) see $index]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: selection option first ?last?
-#
-# Adjusts the selection within the listbox and changes the contents
-# of the entry component to be the value of the selected list item.
-# ------------------------------------------------------------------
-body iwidgets::Combobox::selection {option first {last {}}} {
- # thin wrap
- if {$option == "set"} {
- $itk_component(list) selection clear 0 end
- $itk_component(list) selection set $first
- set rtn ""
- } else {
- set rtn [eval $itk_component(list) selection $option $first $last]
- }
- set _currItem $first
-
- # combobox additions
- set theText [getcurselection]
- if {$theText != [$itk_component(entry) get]} {
- clear entry
- if {$theText != ""} {
- insert entry 0 $theText
- }
- }
- return $rtn
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: size
-#
-# Returns a decimal string indicating the total number of elements
-# in the listbox.
-# ------------------------------------------------------------------
-body iwidgets::Combobox::size {} {
- return [$itk_component(list) size]
-}
-
-# ------------------------------------------------------
-# PUBLIC METHOD: sort ?mode?
-#
-# Sort the current list in either "ascending" or "descending" order.
-#
-# jss: how should i handle selected items?
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::sort {{mode ascending}} {
- $itk_component(list) sort $mode
- # return [$itk_component(list) sort $mode]
-}
-
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: xview ?arg arg ...?
-#
-# Change or query the vertical position of the text in the list box.
-# ------------------------------------------------------------------
-body iwidgets::Combobox::xview {args} {
- return [eval $itk_component(list) xview $args]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: yview ?arg arg ...?
-#
-# Change or query the horizontal position of the text in the list box.
-# ------------------------------------------------------------------
-body iwidgets::Combobox::yview {args} {
- return [eval $itk_component(list) yview $args]
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _addToList
-#
-# Add the current item in the entry to the listbox.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_addToList {} {
- set input [get]
- if {$input != ""} {
- if {$itk_option(-unique)} {
- # if item is already in list, select it and exit
- set item [lsearch -exact [$itk_component(list) get 0 end] $input]
- if {$item != -1} {
- selection clear 0 end
- if {$item != {}} {
- selection set $item $item
- set _currItem $item
- }
- return
- }
- }
- # add the item to end of list
- selection clear 0 end
- insert list end $input
- selection set end end
- }
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _createComponents
-#
-# Create deferred combobox components and add bindings.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_createComponents {} {
- if {$itk_option(-dropdown)} {
- # --- build a dropdown combobox ---
-
- # make the arrow childsite be on the right hand side
-
- #-------------------------------------------------------------
- # BUG FIX: csmith (Chad Smith: csmith@adc.com), 3/4/99
- #-------------------------------------------------------------
- # The following commented line of code overwrites the -command
- # option when passed into the constructor. The order of calls
- # in the constructor is:
- # 1) eval itk_initalize $args (initializes -command)
- # 2) _doLayout
- # 3) _createComponents (overwrites -command)
- # The solution is to only set the -command option if it hasn't
- # already been set. The following 4 lines of code do this.
- #-------------------------------------------------------------
- # ** configure -childsitepos e -command [code $this _addToList]
- #-------------------------------------------------------------
- configure -childsitepos e
- if ![llength [cget -command]] {
- configure -command [code $this _addToList]
- }
-
- # arrow button to popup the list
- itk_component add arrowBtn {
- button $itk_interior.arrowBtn -borderwidth 2 \
- -width 15 -height 15 -image downarrow \
- -command [code $this _toggleList] -state $itk_option(-state)
- } {
- keep -background -borderwidth -cursor -state \
- -highlightcolor -highlightthickness
- rename -relief -arrowrelief arrowRelief Relief
- rename -highlightbackground -background background Background
- }
-
- # popup list container
- itk_component add popup {
- toplevel $itk_interior.popup
- } {
- keep -background -cursor
- }
- wm withdraw $itk_interior.popup
-
- # the listbox
- itk_component add list {
- iwidgets::Scrolledlistbox $itk_interior.popup.list -exportselection no \
- -vscrollmode dynamic -hscrollmode dynamic -selectmode browse
- } {
- keep -background -borderwidth -cursor -foreground \
- -highlightcolor -highlightthickness \
- -hscrollmode -selectbackground \
- -selectborderwidth -selectforeground -textbackground \
- -textfont -vscrollmode
- rename -height -listheight listHeight Height
- rename -cursor -popupcursor popupCursor Cursor
- }
- # mode specific bindings
- _dropdownBindings
-
- # Ugly hack to avoid tk buglet revealed in _dropdownBtnRelease where
- # relief is used but not set in scrollbar.tcl.
- global tkPriv
- set tkPriv(relief) raise
-
- } else {
- # --- build a simple combobox ---
- configure -childsitepos s
- itk_component add list {
- iwidgets::Scrolledlistbox $itk_interior.list -exportselection no \
- -vscrollmode dynamic -hscrollmode dynamic
- } {
- keep -background -borderwidth -cursor -foreground \
- -highlightcolor -highlightthickness \
- -hscrollmode -selectbackground \
- -selectborderwidth -selectforeground -textbackground \
- -textfont -visibleitems -vscrollmode
- rename -height -listheight listHeight Height
- }
- # add mode specific bindings
- _simpleBindings
- }
-
- # popup cursor applies only to the list within the combobox
- configure -popupcursor $itk_option(-popupcursor)
-
- # add mode independent bindings
- _commonBindings
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _deleteList first ?last?
-#
-# Delete an item or items from the listbox. Called via
-# "delete list args".
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_deleteList {first {last {}}} {
-
- if {$last == {}} {
- set last $first
- }
- $itk_component(list) delete $first $last
-
- # remove the item if it is no longer in the list
- set text [$this get]
- if {$text != ""} {
- set index [lsearch -exact [$itk_component(list) get 0 end] $text ]
- if {$index == -1} {
- clear entry
- }
- }
- return
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _deleteText first ?last?
-#
-# Renamed Entryfield delete method. Called via "delete entry args".
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_deleteText {first {last {}}} {
- $itk_component(entry) configure -state normal
- set rtrn [delete $first $last]
- switch -- $itk_option(-editable) {
- 0 - false - no - off {
- $itk_component(entry) configure -state disabled
- }
- }
- return $rtrn
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _doLayout ?when?
-#
-# Call methods to create and pack the Combobox components.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_doLayout {{when later}} {
- _createComponents
- _packComponents $when
-}
-
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _drawArrow
-#
-# Draw the arrow button. Determines packing according to
-# -labelpos.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_drawArrow {} {
- set flip false
- set relief ""
- set fg [cget -foreground]
- if {$_isPosted} {
- set flip true
- set relief "-relief sunken"
- } else {
- set relief "-relief $itk_option(-arrowrelief)"
- }
-
- if {$flip} {
- #
- # draw up arrow
- #
- eval $itk_component(arrowBtn) configure -image uparrow $relief
- } else {
- #
- # draw down arrow
- #
- eval $itk_component(arrowBtn) configure -image downarrow $relief
- }
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _dropdownBtnRelease window x y
-#
-# Event handler for button releases while a dropdown list
-# is posted.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_dropdownBtnRelease {{window {}} {x 1} {y 1}} {
-
- # if it's a scrollbar then ignore the release
- if {($window == [$itk_component(list) component vertsb]) ||
- ($window == [$itk_component(list) component horizsb])} {
- return
- }
-
- # 1st release allows list to stay up unless we are in listbox
- if {$_ignoreRelease} {
- _ignoreNextBtnRelease false
- return
- }
-
- # should I use just the listbox or also include the scrollbars
- if { ($x >= 0) && ($x < [winfo width [_slbListbox]])
- && ($y >= 0) && ($y < [winfo height [_slbListbox]])} {
- _stateSelect
- }
-
- _unpostList
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _ignoreNextBtnRelease ignore
-#
-# Set private variable _ignoreRelease. If this variable
-# is true then the next button release will not remove
-# a dropdown list.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_ignoreNextBtnRelease {ignore} {
- set _ignoreRelease $ignore
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _next
-#
-# Select the next item in the list.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_next {} {
- if {[size] <= 1} {
- return
- }
- set i [curselection]
- if {($i == {}) || ($i == [expr [size]-1]) } {
- set i 0
- } else {
- incr i
- }
- selection clear 0 end
- selection set $i $i
- see $i
- set _currItem $i
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _packComponents ?when?
-#
-# Pack the components of the combobox and add bindings.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_packComponents {{when later}} {
- if {$when == "later"} {
- if {$_repacking == ""} {
- set _repacking [after idle [code $this _packComponents now]]
- return
- }
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- if {$itk_option(-dropdown)} {
- grid configure $itk_component(list) -row 1 -column 0 -sticky news
- _resizeArrow
- grid config $itk_component(arrowBtn) -row 0 -column 1 -sticky nsew
- } else {
- # size and pack list hack
- grid configure $itk_component(entry) -row 0 -column 0 -sticky ew
- grid configure $itk_component(efchildsite) -row 1 -column 0 -sticky nsew
- grid configure $itk_component(list) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $itk_component(efchildsite) 1 -weight 1
- grid columnconfigure $itk_component(efchildsite) 0 -weight 1
- }
- set _repacking ""
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _positionList
-#
-# Determine the position (geometry) for the popped up list
-# and map it to the screen.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_positionList {} {
-
- set x [winfo rootx $itk_component(entry) ]
- set y [expr [winfo rooty $itk_component(entry) ] + \
- [winfo height $itk_component(entry) ]]
- set w [winfo width $itk_component(entry) ]
- set h [winfo height [_slbListbox] ]
- set sh [winfo screenheight .]
-
- if {([expr $y+$h] > $sh) && ($y > [expr $sh/2])} {
- set y [expr [winfo rooty $itk_component(entry) ] - $h]
- }
-
- $itk_component(list) configure -width $w
- wm overrideredirect $itk_component(popup) 0
- wm geometry $itk_component(popup) +$x+$y
- wm overrideredirect $itk_component(popup) 1
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _postList
-#
-# Pop up the list in a dropdown style Combobox.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_postList {} {
- if {[$itk_component(list) size] == ""} {
- return
- }
-
- set _isPosted true
- _positionList
-
- # map window and do a grab
- wm deiconify $itk_component(popup)
- _listShowing -wait
- if {$itk_option(-grab) == "global"} {
- grab -global $itk_component(popup)
- } else {
- grab $itk_component(popup)
- }
- raise $itk_component(popup)
- focus $itk_component(popup)
- _drawArrow
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _previous
-#
-# Select the previous item in the list. Wraps at front
-# and end of list.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_previous {} {
- if {[size] <= 1} {
- return
- }
- set i [curselection]
- if {$i == "" || $i == 0} {
- set i [expr [size] - 1]
- } else {
- incr i -1
- }
- selection clear 0 end
- selection set $i $i
- see $i
- set _currItem $i
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _resizeArrow
-#
-# Recalculate the arrow button size and then redraw it.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_resizeArrow {} {
- set bw [expr [$itk_component(arrowBtn) cget -borderwidth]+ \
- [$itk_component(arrowBtn) cget -highlightthickness]]
- set newHeight [expr [winfo reqheight $itk_component(entry) ]-(2*$bw) - 2]
- $itk_component(arrowBtn) configure -width $newHeight -height $newHeight
- _drawArrow
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _selectCmd
-#
-# Called when list item is selected to insert new text
-# in entry, and call user -command callback if defined.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_selectCmd {} {
- $itk_component(entry) configure -state normal
-
- set _currItem [$itk_component(list) curselection]
- set item [$itk_component(list) getcurselection]
- clear entry
- $itk_component(entry) insert 0 $item
- switch -- $itk_option(-editable) {
- 0 - false - no - off {
- $itk_component(entry) configure -state disabled
- }
- }
-
- # execute user command
- if {$itk_option(-selectioncommand) != ""} {
- uplevel #0 $itk_option(-selectioncommand)
- }
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _toggleList
-#
-# Post or unpost the dropdown listbox (toggle).
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_toggleList {} {
- if {[winfo ismapped $itk_component(popup)] } {
- _unpostList
- } else {
- _postList
- }
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _unpostList
-#
-# Unmap the listbox (pop it down).
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_unpostList {} {
- # Determine if event occured in the scrolledlistbox and, if it did,
- # don't unpost it. (A selection in the list unposts it correctly and
- # in the scrollbar we don't want to unpost it.)
- set x [winfo x $itk_component(list)]
- set y [winfo y $itk_component(list)]
- set w [winfo width $itk_component(list)]
- set h [winfo height $itk_component(list)]
-
- wm withdraw $itk_component(popup)
- grab release $itk_component(popup)
-
- set _isPosted false
-
- $itk_component(list) selection clear 0 end
- if {$_currItem != {}} {
- $itk_component(list) selection set $_currItem $_currItem
- $itk_component(list) activate $_currItem
- }
-
- switch -- $itk_option(-editable) {
- 1 - true - yes - on {
- $itk_component(entry) configure -state normal
- }
- 0 - false - no - off {
- $itk_component(entry) configure -state disabled
- }
- }
-
- _drawArrow
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _commonBindings
-#
-# Bindings that are used by both simple and dropdown
-# style Comboboxes.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_commonBindings {} {
- bind $itk_component(entry) <KeyPress-BackSpace> [code $this _bs]
- bind $itk_component(entry) <KeyRelease> [code $this _lookup %K]
- bind $itk_component(entry) <Down> [code $this _next]
- bind $itk_component(entry) <Up> [code $this _previous]
- bind $itk_component(entry) <Control-n> [code $this _next]
- bind $itk_component(entry) <Control-p> [code $this _previous]
- bind [_slbListbox] <Control-n> [code $this _next]
- bind [_slbListbox] <Control-p> [code $this _previous]
-}
-
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _dropdownBindings
-#
-# Bindings used only by the dropdown type Combobox.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_dropdownBindings {} {
- bind $itk_component(popup) <Escape> [code $this _unpostList]
- bind $itk_component(popup) <space> \
- "[code $this _stateSelect]; [code $this _unpostList]"
- bind $itk_component(popup) <Return> \
- "[code $this _stateSelect]; [code $this _unpostList]"
- bind $itk_component(popup) <ButtonRelease-1> \
- [code $this _dropdownBtnRelease %W %x %y]
-
- bind $itk_component(list) <Map> \
- [code $this _listShowing 1]
- bind $itk_component(list) <Unmap> \
- [code $this _listShowing 0]
-
- # once in the listbox, we drop on the next release (unless in scrollbar)
- bind [_slbListbox] <Enter> \
- [code $this _ignoreNextBtnRelease false]
-
- bind $itk_component(arrowBtn) <3> [code $this _next]
- bind $itk_component(arrowBtn) <Shift-3> [code $this _previous]
- bind $itk_component(arrowBtn) <Down> [code $this _next]
- bind $itk_component(arrowBtn) <Up> [code $this _previous]
- bind $itk_component(arrowBtn) <Control-n> [code $this _next]
- bind $itk_component(arrowBtn) <Control-p> [code $this _previous]
- bind $itk_component(arrowBtn) <Shift-Down> [code $this _toggleList]
- bind $itk_component(arrowBtn) <Shift-Up> [code $this _toggleList]
- bind $itk_component(arrowBtn) <Return> [code $this _toggleList]
- bind $itk_component(arrowBtn) <space> [code $this _toggleList]
-
- bind $itk_component(entry) <Configure> [code $this _resizeArrow]
- bind $itk_component(entry) <Shift-Down> [code $this _toggleList]
- bind $itk_component(entry) <Shift-Up> [code $this _toggleList]
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _simpleBindings
-#
-# Bindings used only by the simple type Comboboxes.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_simpleBindings {} {
- bind [_slbListbox] <ButtonRelease-1> [code $this _stateSelect]
- # "[code $this _stateselect]; [code $this _selectCmd]"
-
-
- bind [_slbListbox] <space> [code $this _stateSelect]
- bind [_slbListbox] <Return> [code $this _stateSelect]
- bind $itk_component(entry) <Escape> ""
- bind $itk_component(entry) <Shift-Down> ""
- bind $itk_component(entry) <Shift-Up> ""
- bind $itk_component(entry) <Configure> ""
-}
-
-# ------------------------------------------------------
-# PROTECTED METHOD: _listShowing ?val?
-#
-# Used instead of "tkwait visibility" to make sure that
-# the dropdown list is visible. Whenever the list gets
-# mapped or unmapped, this method is called to keep
-# track of it. When it is called with the value "-wait",
-# it waits for the list to be mapped.
-# ------------------------------------------------------
-body iwidgets::Combobox::_listShowing {{val ""}} {
- if {$val == ""} {
- return $_listShowing($this)
- } elseif {$val == "-wait"} {
- while {!$_listShowing($this)} {
- tkwait variable [scope _listShowing($this)]
- }
- return
- }
- set _listShowing($this) $val
-}
-
-# ------------------------------------------------------
-# PRIVATE METHOD: _slbListbox
-#
-# Access the tk listbox window out of the scrolledlistbox.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_slbListbox {} {
- return [$itk_component(list) component listbox]
-}
-
-# ------------------------------------------------------
-# PRIVATE METHOD: _stateSelect
-#
-# only allows a B1 release in the listbox to have an effect if -state is
-# normal.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_stateSelect {} {
- switch -- $itk_option(-state) {
- normal {
- [code $this _selectCmd]
- }
- }
-}
-
-# ------------------------------------------------------
-# PRIVATE METHOD: _bs
-#
-# A part of the auto-completion code, this function sets a flag when the
-# Backspace key is hit and there is a selection in the entry field.
-# Note that it's probably buggy to assume that a selection being present
-# means that that selection came from auto-completion.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_bs {} {
- #
- # exit if completion is turned off
- #
- switch -- $itk_option(-completion) {
- 0 - no - false - off {
- return
- }
- }
- #
- # critical section flag. it ain't perfect, but for most usage it'll
- # keep us from being in this code "twice" at the same time
- # (auto-repeated keystrokes are a pain!)
- #
- if {$_inbs} {
- return
- } else {
- set _inbs 1
- }
-
- #
- # set the _doit flag if there is a selection set in the entry field
- #
- set _doit 0
- if [$itk_component(entry) selection present] {
- set _doit 1
- }
-
- #
- # clear the semaphore and return
- #
- set _inbs 0
-}
-
-# ------------------------------------------------------
-# PRIVATE METHOD: _lookup
-#
-# handles auto-completion of text typed (or insert'd) into the entry field.
-#
-# ------------------------------------------------------
-body iwidgets::Combobox::_lookup {key} {
- #
- # exit if completion is turned off
- #
- switch -- $itk_option(-completion) {
- 0 - no - false - off {
- return
- }
- }
-
- #
- # critical section flag. it ain't perfect, but for most usage it'll
- # keep us from being in this code "twice" at the same time
- # (auto-repeated keystrokes are a pain!)
- #
- if {$_inlookup} {
- return
- } else {
- set _inlookup 1
- }
-
- #
- # if state of megawidget is disabled, or the entry is not editable,
- # clear the semaphore and exit
- #
- if {$itk_option(-state) == "disabled" \
- || [lsearch {on 1 true yes} $itk_option(-editable)] == -1} {
- set _inlookup 0
- return
- }
-
- #
- # okay, *now* we can get to work
- # the _bs function is called on keyPRESS of BackSpace, and will set
- # the _doit flag if there's a selection set in the entryfield. If
- # there is, we're assuming that it's generated by completion itself
- # (this is probably a Bad Assumption), so we'll want to whack the
- # selected text, as well as the character immediately preceding the
- # insertion cursor.
- #
- if {$key == "BackSpace"} {
- if {$_doit} {
- set first [expr [$itk_component(entry) index insert] -1]
- $itk_component(entry) delete $first end
- $itk_component(entry) icursor $first
- }
- }
-
- #
- # get the text left in the entry field, and its length. if
- # zero-length, clear the selection in the listbox, clear the
- # semaphore, and boogie.
- #
- set text [get]
- set len [string length $text]
- if {$len == 0} {
- $itk_component(list) selection clear 0 end
- set _inlookup 0
- return
- }
-
- #
- # okay, so we have to do a lookup. find the first match in the
- # listbox to the text we've got in the entry field (glob).
- # if one exists, clear the current listbox selection, and set it to
- # the one we just found, making that one visible in the listbox.
- # then, pick off the text from the listbox entry that hadn't yet been
- # entered into the entry field. we need to tack that text onto the
- # end of the entry field, select it, and then set the insertion cursor
- # back to just before the point where we just added that text.
- # if one didn't exist, then just clear the listbox selection
- #
- set item [lsearch [$itk_component(list) get 0 end] "$text*" ]
- if {$item != -1} {
- $itk_component(list) selection clear 0 end
- $itk_component(list) selection set $item $item
- see $item
- set remainder [string range [$itk_component(list) get $item] \
- $len end]
- $itk_component(entry) insert end $remainder
- $itk_component(entry) selection range $len end
- $itk_component(entry) icursor $len
- } else {
- $itk_component(list) selection clear 0 end
- }
- #
- # clear the semaphore and return
- #
- set _inlookup 0
- return
-}
diff --git a/itcl/iwidgets3.0.0/generic/dateentry.itk b/itcl/iwidgets3.0.0/generic/dateentry.itk
deleted file mode 100644
index 5cf648c03b1..00000000000
--- a/itcl/iwidgets3.0.0/generic/dateentry.itk
+++ /dev/null
@@ -1,407 +0,0 @@
-#
-# Dateentry
-# ----------------------------------------------------------------------
-# Implements a quicken style date entry field with a popup calendar
-# by combining the datefield and calendar widgets together. This
-# allows a user to enter the date via the keyboard or by using the
-# mouse by selecting the calendar icon which brings up a popup calendar.
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts E-mail: mulferts@austin.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 Dateentry {
- keep -background -borderwidth -currentdatefont -cursor \
- -datefont -dayfont -foreground -highlightcolor \
- -highlightthickness -labelfont -textbackground -textfont \
- -titlefont
-}
-
-# ------------------------------------------------------------------
-# DATEENTRY
-# ------------------------------------------------------------------
-class iwidgets::Dateentry {
- inherit iwidgets::Datefield
-
- constructor {args} {}
-
- itk_option define -grab grab Grab "global"
- itk_option define -icon icon Icon {}
-
- #
- # The calendar widget isn't created until needed, yet we need
- # its options to be available upon creation of a dateentry widget.
- # So, we'll define them in these class now so they can just be
- # propagated onto the calendar later.
- #
- itk_option define -days days Days {Su Mo Tu We Th Fr Sa}
- itk_option define -forwardimage forwardImage Image {}
- itk_option define -backwardimage backwardImage Image {}
- itk_option define -weekdaybackground weekdayBackground Background \#d9d9d9
- itk_option define -weekendbackground weekendBackground Background \#d9d9d9
- itk_option define -outline outline Outline \#d9d9d9
- itk_option define -buttonforeground buttonForeground Foreground blue
- itk_option define -foreground foreground Foreground black
- itk_option define -selectcolor selectColor Foreground red
- itk_option define -selectthickness selectThickness SelectThickness 3
- itk_option define -titlefont titleFont Font \
- -*-helvetica-bold-r-normal--*-140-*
- itk_option define -dayfont dayFont Font \
- -*-helvetica-medium-r-normal--*-120-*
- itk_option define -datefont dateFont Font \
- -*-helvetica-medium-r-normal--*-120-*
- itk_option define -currentdatefont currentDateFont Font \
- -*-helvetica-bold-r-normal--*-120-*
- itk_option define -startday startDay Day sunday
- itk_option define -height height Height 165
- itk_option define -width width Width 200
- itk_option define -state state State normal
-
- protected {
- method _getPopupDate {date}
- method _releaseGrab {}
- method _releaseGrabCheck {rootx rooty}
- method _popup {}
- method _getDefaultIcon {}
-
- common _defaultIcon ""
- }
-}
-
-#
-# Provide a lowercased access method for the dateentry class.
-#
-proc ::iwidgets::dateentry {pathName args} {
- uplevel ::iwidgets::Dateentry $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Dateentry::constructor {args} {
- #
- # Create an icon label to act as a button to bring up the
- # calendar popup.
- #
- itk_component add iconbutton {
- label $itk_interior.iconbutton -relief raised
- } {
- keep -borderwidth -cursor -foreground
- }
- grid $itk_component(iconbutton) -row 0 -column 0 -sticky ns
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -icon
-#
-# Specifies the calendar icon image to be used in the date.
-# Should one not be provided, then a default pixmap will be used
-# if possible, bitmap otherwise.
-# ------------------------------------------------------------------
-configbody iwidgets::Dateentry::icon {
- if {$itk_option(-icon) == {}} {
- $itk_component(iconbutton) configure -image [_getDefaultIcon]
- } else {
- if {[lsearch [image names] $itk_option(-icon)] == -1} {
- error "bad icon option \"$itk_option(-icon)\":\
- should be an existing image"
- } else {
- $itk_component(iconbutton) configure -image $itk_option(-icon)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -grab
-#
-# Specifies the grab level, local or global, to be obtained when
-# bringing up the popup calendar. The default is global.
-# ------------------------------------------------------------------
-configbody iwidgets::Dateentry::grab {
- switch -- $itk_option(-grab) {
- "local" - "global" {}
- default {
- error "bad grab option \"$itk_option(-grab)\":\
- should be local or global"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -state
-#
-# Specifies the state of the widget which may be disabled or
-# normal. A disabled state prevents selection of the date field
-# or date icon button.
-# ------------------------------------------------------------------
-configbody iwidgets::Dateentry::state {
- switch -- $itk_option(-state) {
- normal {
- bind $itk_component(iconbutton) <Button-1> [code $this _popup]
- }
- disabled {
- bind $itk_component(iconbutton) <Button-1> {}
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _getDefaultIcon
-#
-# This method is invoked uto retrieve the name of the default icon
-# image displayed in the icon button.
-# ------------------------------------------------------------------
-body iwidgets::Dateentry::_getDefaultIcon {} {
- if {[lsearch [image types] pixmap] != -1} {
- set _defaultIcon [image create pixmap -data {
- /* XPM */
- static char *calendar[] = {
- /* width height num_colors chars_per_pixel */
- " 25 20 6 1",
- /* colors */
- ". c #808080",
- "# c #040404",
- "a c #848484",
- "b c #fc0404",
- "c c #fcfcfc",
- "d c #c0c0c0",
- /* pixels */
- "d##########d###########dd",
- "d#ccccccccc##ccccccccca#d",
- "##ccccccccc.#ccccccccc..#",
- "##cccbbcccca#cccbbbccca.#",
- "##cccbbcccc.#ccbbbbbcc..#",
- "##cccbbccc####ccccbbcc..#",
- "##cccbbcccca#ccccbbbcca.#",
- "##cccbbcccc.#cccbbbccc..#",
- "##cccbbcccca#ccbbbcccca.#",
- "##cccbbbccc.#ccbbbbbcc..#",
- "##ccccccccc.#ccccccccc..#",
- "##ccccccccca#ccccccccca.#",
- "##cc#####c#cd#c#####cc..#",
- "##cccccccc####cccccccca.#",
- "##cc#####cc.#cc#####cc..#",
- "##ccccccccc.#ccccccccc..#",
- "##ccccccccc.#ccccccccc..#",
- "##..........#...........#",
- "###..........#..........#",
- "#########################"
- };
- }]
- } else {
- set _defaultIcon [image create bitmap -data {
- #define calendr2_width 25
- #define calendr2_height 20
- static char calendr2_bits[] = {
- 0xfe,0xf7,0x7f,0xfe,0x02,0x18,0xc0,0xfe,0x03,
- 0x18,0x80,0xff,0x63,0x10,0x47,0xff,0x43,0x98,
- 0x8a,0xff,0x63,0x3c,0x4c,0xff,0x43,0x10,0x8a,
- 0xff,0x63,0x18,0x47,0xff,0x23,0x90,0x81,0xff,
- 0xe3,0x98,0x4e,0xff,0x03,0x10,0x80,0xff,0x03,
- 0x10,0x40,0xff,0xf3,0xa5,0x8f,0xff,0x03,0x3c,
- 0x40,0xff,0xf3,0x99,0x8f,0xff,0x03,0x10,0x40,
- 0xff,0x03,0x18,0x80,0xff,0x57,0x55,0x55,0xff,
- 0x57,0xb5,0xaa,0xff,0xff,0xff,0xff,0xff};
- }]
- }
-
- #
- # Since this image will only need to be created once, we redefine
- # this method to just return the image name for subsequent calls.
- #
- body ::iwidgets::Dateentry::_getDefaultIcon {} {
- return $_defaultIcon
- }
-
- return $_defaultIcon
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _popup
-#
-# This method is invoked upon selection of the icon button. It
-# creates a calendar widget within a toplevel popup, calculates
-# the position at which to display the calendar, performs a grab
-# and displays the calendar.
-# ------------------------------------------------------------------
-body iwidgets::Dateentry::_popup {} {
- #
- # First, let's nullify the icon binding so that any another
- # selections are ignored until were done with this one. Next,
- # change the relief of the icon.
- #
- bind $itk_component(iconbutton) <Button-1> {}
- $itk_component(iconbutton) configure -relief sunken
-
- #
- # Create a withdrawn toplevel widget and remove the window
- # decoration via override redirect.
- #
- itk_component add -private popup {
- toplevel $itk_interior.popup
- }
- $itk_component(popup) configure -borderwidth 2 -background black
- wm withdraw $itk_component(popup)
- wm overrideredirect $itk_component(popup) 1
-
- #
- # Add a binding to button 1 events in order to detect mouse
- # clicks off the calendar in which case we'll release the grab.
- # Also add a binding for Escape to always release.
- #
- bind $itk_component(popup) <1> [code $this _releaseGrabCheck %X %Y]
- bind $itk_component(popup) <KeyPress-Escape> [code $this _releaseGrab]
-
- #
- # Create the calendar widget and set its cursor properly.
- #
- itk_component add calendar {
- iwidgets::Calendar $itk_component(popup).calendar \
- -command [code $this _getPopupDate %d]
- } {
- usual
- keep -days -forwardimage -backwardimage -weekdaybackground \
- -weekendbackground -outline -buttonforeground -selectcolor \
- -selectthickness -titlefont -dayfont -datefont \
- -currentdatefont -startday -width -height
- }
- grid $itk_component(calendar) -row 0 -column 0
- $itk_component(calendar) configure -cursor top_left_arrow
-
- #
- # The icon button will be used as the basis for the position of the
- # popup on the screen. We'll always attempt to locate the popup
- # off the lower right corner of the button. If that would put
- # the popup off the screen, then we'll put above the upper left.
- #
- set rootx [winfo rootx $itk_component(iconbutton)]
- set rooty [winfo rooty $itk_component(iconbutton)]
- set popupwidth [winfo reqwidth $itk_component(popup)]
- set popupheight [winfo reqheight $itk_component(popup)]
-
- set popupx [expr $rootx + 3 + \
- [winfo width $itk_component(iconbutton)]]
- set popupy [expr $rooty + 3 + \
- [winfo height $itk_component(iconbutton)]]
-
- if {([expr $popupx + $popupwidth] > [winfo screenwidth .]) || \
- ([expr $popupy + $popupheight] > [winfo screenheight .])} {
- set popupx [expr $rootx - 3 - $popupwidth]
- set popupy [expr $rooty - 3 - $popupheight]
- }
-
- #
- # Get the current date from the datefield widget and both
- # show and select it on the calendar.
- #
- $itk_component(calendar) show [get]
- $itk_component(calendar) select [get]
-
- #
- # Display the popup at the calculated position.
- #
- wm geometry $itk_component(popup) +$popupx+$popupy
- wm deiconify $itk_component(popup)
- tkwait visibility $itk_component(popup)
-
- #
- # Perform either a local or global grab based on the -grab option.
- #
- if {$itk_option(-grab) == "local"} {
- grab $itk_component(popup)
- } else {
- grab -global $itk_component(popup)
- }
-
- #
- # Make sure the widget is above all others and give it focus.
- #
- raise $itk_component(popup)
- focus $itk_component(calendar)
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _popupGetDate
-#
-# This method is the callback for selection of a date on the
-# calendar. It releases the grab and sets the date in the
-# datefield widget.
-# ------------------------------------------------------------------
-body iwidgets::Dateentry::_getPopupDate {date} {
- _releaseGrab
- show $date
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _releaseGrabCheck rootx rooty
-#
-# This method handles mouse button 1 events. If the selection
-# occured within the bounds of the calendar, then return normally
-# and let the calendar handle the event. Otherwise, we'll drop
-# the calendar and release the grab.
-# ------------------------------------------------------------------
-body iwidgets::Dateentry::_releaseGrabCheck {rootx rooty} {
- set calx [winfo rootx $itk_component(calendar)]
- set caly [winfo rooty $itk_component(calendar)]
- set calwidth [winfo reqwidth $itk_component(calendar)]
- set calheight [winfo reqheight $itk_component(calendar)]
-
- if {($rootx < $calx) || ($rootx > [expr $calx + $calwidth]) || \
- ($rooty < $caly) || ($rooty > [expr $caly + $calheight])} {
- _releaseGrab
- return -code break
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _releaseGrab
-#
-# This method releases the grab, destroys the popup, changes the
-# relief of the button back to raised and reapplies the binding
-# to the icon button that engages the popup action.
-# ------------------------------------------------------------------
-body iwidgets::Dateentry::_releaseGrab {} {
- grab release $itk_component(popup)
- $itk_component(iconbutton) configure -relief raised
- destroy $itk_component(popup)
- bind $itk_component(iconbutton) <Button-1> [code $this _popup]
-}
diff --git a/itcl/iwidgets3.0.0/generic/datefield.itk b/itcl/iwidgets3.0.0/generic/datefield.itk
deleted file mode 100644
index eba7d6a8908..00000000000
--- a/itcl/iwidgets3.0.0/generic/datefield.itk
+++ /dev/null
@@ -1,854 +0,0 @@
-#
-# Datefield
-# ----------------------------------------------------------------------
-# Implements a date entry field with adjustable built-in intelligence
-# levels.
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts E-mail: mulferts@austin.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 Datefield {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -labelfont -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# DATEFIELD
-# ------------------------------------------------------------------
-class iwidgets::Datefield {
- inherit iwidgets::Labeledwidget
-
- constructor {args} {}
-
- itk_option define -childsitepos childSitePos Position e
- itk_option define -command command Command {}
- itk_option define -iq iq Iq high
-
- public method get {{format "-string"}}
- public method isvalid {}
- public method show {{date now}}
-
- protected method _backward {}
- protected method _focusIn {}
- protected method _forward {}
- protected method _keyPress {char sym state}
- protected method _lastDay {month year}
- protected method _moveField {direction}
- protected method _setField {field}
- protected method _whichField {}
-
- protected variable _cfield "month"
- protected variable _fields {month day year}
-}
-
-#
-# Provide a lowercased access method for the datefield class.
-#
-proc ::iwidgets::datefield {pathName args} {
- uplevel ::iwidgets::Datefield $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Datefield.justify center widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Datefield::constructor {args} {
- component hull configure -borderwidth 0
-
- #
- # Create an entry field for entering the date.
- #
- itk_component add date {
- entry $itk_interior.date -width 10
- } {
- keep -borderwidth -cursor -exportselection \
- -foreground -highlightcolor -highlightthickness \
- -insertbackground -justify -relief -state
-
- rename -font -textfont textFont Font
- rename -highlightbackground -background background Background
- rename -background -textbackground textBackground Background
- }
-
- #
- # Create the child site widget.
- #
- itk_component add -protected dfchildsite {
- frame $itk_interior.dfchildsite
- }
- set itk_interior $itk_component(dfchildsite)
-
- #
- # Add datefield event bindings for focus in and keypress events.
- #
- bind $itk_component(date) <FocusIn> [code $this _focusIn]
- bind $itk_component(date) <KeyPress> [code $this _keyPress %A %K %s]
-
- #
- # Disable some mouse button event bindings:
- # Button Motion
- # Double-Clicks
- # Triple-Clicks
- # Button2
- #
- bind $itk_component(date) <Button1-Motion> break
- bind $itk_component(date) <Button2-Motion> break
- bind $itk_component(date) <Double-Button> break
- bind $itk_component(date) <Triple-Button> break
- bind $itk_component(date) <2> break
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-
- #
- # Initialize the date to the current date.
- #
- $itk_component(date) delete 0 end
- $itk_component(date) insert end \
- [clock format [clock seconds] -format "%m/%d/%Y"]
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the widget. Valid
-# locations are n, s, e, and w.
-# ------------------------------------------------------------------
-configbody iwidgets::Datefield::childsitepos {
- set parent [winfo parent $itk_component(date)]
-
- switch $itk_option(-childsitepos) {
- n {
- grid $itk_component(dfchildsite) -row 0 -column 0 -sticky ew
- grid $itk_component(date) -row 1 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 0
- grid rowconfigure $parent 1 -weight 1
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- e {
- grid $itk_component(dfchildsite) -row 0 -column 1 -sticky ns
- grid $itk_component(date) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- s {
- grid $itk_component(dfchildsite) -row 1 -column 0 -sticky ew
- grid $itk_component(date) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- w {
- grid $itk_component(dfchildsite) -row 0 -column 0 -sticky ns
- grid $itk_component(date) -row 0 -column 1 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 0
- grid columnconfigure $parent 1 -weight 1
- }
-
- default {
- error "bad childsite option\
- \"$itk_option(-childsitepos)\":\
- should be n, e, s, or w"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -command
-#
-# Command invoked upon detection of return key press event.
-# ------------------------------------------------------------------
-configbody iwidgets::Datefield::command {}
-
-# ------------------------------------------------------------------
-# OPTION: -iq
-#
-# Specifies the level of intelligence to be shown in the actions
-# taken by the date field during the processing of keypress events.
-# Valid settings include high, average, and low. With a high iq,
-# the date prevents the user from typing in an invalid date. For
-# example, if the current date is 05/31/1997 and the user changes
-# the month to 04, then the day will be instantly modified for them
-# to be 30. In addition, leap years are fully taken into account.
-# With average iq, the month is limited to the values of 01-12, but
-# it is possible to type in an invalid day. A setting of low iq
-# instructs the widget to do no validity checking at all during
-# date entry. With both average and low iq levels, it is assumed
-# that the validity will be determined at a later time using the
-# date's isvalid command.
-# ------------------------------------------------------------------
-configbody iwidgets::Datefield::iq {
- switch $itk_option(-iq) {
- high - average - low {
- }
- default {
- error "bad iq option \"$itk_option(-iq)\":\
- should be high, average or low"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: get ?format?
-#
-# Return the current contents of the datefield in one of two formats
-# string or as an integer clock value using the -string and -clicks
-# options respectively. The default is by string. Reference the
-# clock command for more information on obtaining dates and their
-# formats.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::get {{format "-string"}} {
- set datestr [$itk_component(date) get]
-
- switch -- $format {
- "-string" {
- return $datestr
- }
- "-clicks" {
- return [clock scan $datestr]
- }
- default {
- error "bad format option \"$format\":\
- should be -string or -clicks"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: show date
-#
-# Changes the currently displayed date to be that of the date
-# argument. The date may be specified either as a string or an
-# integer clock value. Reference the clock command for more
-# information on obtaining dates and their formats.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::show {{date "now"}} {
- if {$date == "now"} {
- set seconds [clock seconds]
- } else {
- if {[catch {clock format $date}] == 0} {
- set seconds $date
- } elseif {[catch {set seconds [clock scan $date]}] != 0} {
- error "bad date: \"$date\", must be a valid date\
- string, clock clicks value or the keyword now"
- }
- }
-
- $itk_component(date) delete 0 end
- $itk_component(date) insert end [clock format $seconds -format "%m/%d/%Y"]
-
- _setField month
-
- return
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: isvalid
-#
-# Returns a boolean indication of the validity of the currently
-# displayed date value. For example, 3/3/1960 is valid whereas
-# 02/29/1997 is invalid.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::isvalid {} {
- if {[catch {clock scan [$itk_component(date) get]}] != 0} {
- return 0
- } else {
- return 1
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _focusIn
-#
-# This method is bound to the <FocusIn> event. It resets the
-# insert cursor and field settings to be back to their last known
-# positions.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_focusIn {} {
- _setField $_cfield
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _keyPress
-#
-# This method is the workhorse of the class. It is bound to the
-# <KeyPress> event and controls the processing of all key strokes.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_keyPress {char sym state} {
- #
- # Determine which field we are in currently. This is needed
- # since the user may have moved to this position via a mouse
- # selection and so it would not be in the position we last
- # knew it to be.
- #
- _whichField
-
- #
- # Set up a few basic variables we'll be needing throughout the
- # rest of the method such as the position of the insert cursor
- # and the currently displayed day, month, and year.
- #
- set icursor [$itk_component(date) index insert]
- set splist [split [$itk_component(date) get] "/"]
- set month [lindex $splist 0]
- set day [lindex $splist 1]
- set year [lindex $splist 2]
-
- #
- # Process numeric keystrokes. This involes a fair amount of
- # processing with step one being to check and make sure we
- # aren't attempting to insert more that 10 characters. If
- # so ring the bell and break.
- #
- if {[regexp {[0-9]} $char]} {
- if {[$itk_component(date) index insert] == 10} {
- bell
- return -code break
- }
-
- #
- # If we are currently in the month field then we process the
- # number entered based on the cursor position. If we are at
- # at the first position and our iq is low, then accept any
- # input.
- #
- if {$_cfield == "month"} {
- if {[$itk_component(date) index insert] == 0} {
- if {$itk_option(-iq) == "low"} {
- $itk_component(date) delete 0
- $itk_component(date) insert 0 $char
-
- } else {
-
- #
- # Otherwise, we're slightly smarter. If the number
- # is less than two insert it at position zero. If
- # this makes the month greater than twelve, set the
- # number at position one to zero which makes in
- # effect puts the month back in range.
- #
- regsub {([0-9])([0-9])} $month "$char\\2" month2b
-
- if {$char < 2} {
- $itk_component(date) delete 0
- $itk_component(date) insert 0 $char
-
- if {$month2b > 12} {
- $itk_component(date) delete 1
- $itk_component(date) insert 1 0
- $itk_component(date) icursor 1
- } elseif {$month2b == "00"} {
- $itk_component(date) delete 1
- $itk_component(date) insert 1 1
- $itk_component(date) icursor 1
- }
-
- #
- # Finally, if the number is greater than one we'll
- # assume that they really mean to be entering a zero
- # followed by their number, do so for them, and
- # proceed to skip to the next field which is the
- # day field.
- #
- } else {
- $itk_component(date) delete 0 2
- $itk_component(date) insert 0 0$char
- _setField day
- }
- }
-
- #
- # Else, we're at cursor position one. Again, if we aren't
- # too smart, let them enter anything. Otherwise, if the
- # number makes the month exceed twelve, set the month to
- # zero followed by their number to get it back into range.
- #
- } else {
- regsub {([0-9])([0-9])} $month "\\1$char" month2b
-
- if {$itk_option(-iq) == "low"} {
- $itk_component(date) delete 1
- $itk_component(date) insert 1 $char
- } else {
- if {$month2b > 12} {
- $itk_component(date) delete 0 2
- $itk_component(date) insert 0 0$char
- } elseif {$month2b == "00"} {
- bell
- return -code break
- } else {
- $itk_component(date) delete 1
- $itk_component(date) insert 1 $char
- }
- }
-
- _setField day
- }
-
- #
- # Now, the month processing is complete and if we're of a
- # high level of intelligence, then we'll make sure that the
- # current value for the day is valid for this month. If
- # it is beyond the last day for this month, change it to
- # be the last day of the new month.
- #
- if {$itk_option(-iq) == "high"} {
- set splist [split [$itk_component(date) get] "/"]
- set month [lindex $splist 0]
-
- if {$day > [set endday [_lastDay $month $year]]} {
- set icursor [$itk_component(date) index insert]
- $itk_component(date) delete 3 5
- $itk_component(date) insert 3 $endday
- $itk_component(date) icursor $icursor
- }
- }
-
- #
- # Finally, return with a code of break to stop any normal
- # processing in that we've done all that is necessary.
- #
- return -code break
- }
-
- #
- # This next block of code is for processing of the day field
- # which is quite similar is strategy to that of the month.
- #
- if {$_cfield == "day"} {
- if {$itk_option(-iq) == "high"} {
- set endofMonth [_lastDay $month $year]
- } else {
- set endofMonth 31
- }
-
- #
- # If we are at the third cursor position we are porcessing
- # the first character of the day field. If we have an iq
- # of low accept any input.
- #
- if {[$itk_component(date) index insert] == 3} {
- if {$itk_option(-iq) == "low"} {
- $itk_component(date) delete 3
- $itk_component(date) insert 3 $char
-
- } else {
-
- #
- # If the day to be is double zero, then make the
- # day be the first.
- #
- regsub {([0-9])([0-9])} $day "$char\\2" day2b
-
- if {$day2b == "00"} {
- $itk_component(date) delete 3 5
- $itk_component(date) insert 3 01
- $itk_component(date) icursor 4
-
- #
- # Otherwise, if the character is less than four
- # and the month is not Feburary, insert the number
- # and if this makes the day be beyond the valid
- # range for this month, than set to be back in
- # range.
- #
- } elseif {($char < 4) && ($month != "02")} {
- $itk_component(date) delete 3
- $itk_component(date) insert 3 $char
-
- if {$day2b > $endofMonth} {
- $itk_component(date) delete 4
- $itk_component(date) insert 4 0
- $itk_component(date) icursor 4
- }
-
- #
- # For Feburary with a number to be entered of
- # less than three, make sure the number doesn't
- # make the day be greater than the correct range
- # and if so adjust the input.
- #
- } elseif {$char < 3} {
- $itk_component(date) delete 3
- $itk_component(date) insert 3 $char
-
- if {$day2b > $endofMonth} {
- $itk_component(date) delete 3 5
- $itk_component(date) insert 3 $endofMonth
- $itk_component(date) icursor 4
- }
-
- #
- # Finally, if the number is greater than three,
- # set the day to be zero followed by the number
- # entered and proceed to the year field.
- #
- } else {
- $itk_component(date) delete 3 5
- $itk_component(date) insert 3 0$char
- _setField year
- }
- }
-
- #
- # Else, we're dealing with the second number in the day
- # field. If we're not too bright accept anything, otherwise
- # if the day is beyond the range for this month or equal to
- # zero then ring the bell.
- #
- } else {
- regsub {([0-9])([0-9])} $day "\\1$char" day2b
-
- if {($itk_option(-iq) != "low") && \
- (($day2b > $endofMonth) || ($day2b == "00"))} {
- bell
- } else {
- $itk_component(date) delete 4
- $itk_component(date) insert 4 $char
- _setField year
- }
- }
-
- #
- # Return with a code of break to prevent normal processing.
- #
- return -code break
- }
-
- #
- # This month and day we're tough, the code for the year is
- # comparitively simple. Accept any input and if we are really
- # sharp, then make sure the day is correct for the month
- # given the year. In short, handle leap years.
- #
- if {$_cfield == "year"} {
- if {$itk_option(-iq) == "low"} {
- $itk_component(date) delete $icursor
- $itk_component(date) insert $icursor $char
- } else {
-
- set prevdate [get]
-
- if {[$itk_component(date) index insert] == 6} {
- set yrdgt [lindex [split [lindex \
- [split $prevdate "/"] 2] ""] 0]
- if {$char != $yrdgt} {
- if {$char == 1} {
- $itk_component(date) delete $icursor end
- $itk_component(date) insert $icursor 1999
- } elseif {$char == 2} {
- $itk_component(date) delete $icursor end
- $itk_component(date) insert $icursor 2000
- } else {
- bell
- return -code break
- }
- }
-
- $itk_component(date) icursor 7
- return -code break
- }
-
- $itk_component(date) delete $icursor
- $itk_component(date) insert $icursor $char
-
- if {[catch {clock scan [get]}] != 0} {
- $itk_component(date) delete 6 end
- $itk_component(date) insert end \
- [lindex [split $prevdate "/"] 2]
- $itk_component(date) icursor $icursor
-
- bell
- return -code break
- }
-
- if {$itk_option(-iq) == "high"} {
- set splist [split [$itk_component(date) get] "/"]
- set year [lindex $splist 2]
-
- if {$day > [set endday [_lastDay $month $year]]} {
- set icursor [$itk_component(date) index insert]
- $itk_component(date) delete 3 5
- $itk_component(date) insert 3 $endday
- $itk_component(date) icursor $icursor
- }
- }
- }
-
- return -code break
- }
-
- #
- # Process the plus and the up arrow keys. They both yeild the same
- # effect, they increment the day by one.
- #
- } elseif {($sym == "plus") || ($sym == "Up")} {
- if {[catch {show [clock scan "1 day" -base [get -clicks]]}] != 0} {
- bell
- }
- return -code break
-
- #
- # Process the minus and the down arrow keys which decrement the day.
- #
- } elseif {($sym == "minus") || ($sym == "Down")} {
- if {[catch {show [clock scan "-1 day" -base [get -clicks]]}] != 0} {
- bell
- }
- return -code break
-
- #
- # A tab key moves the day/month/year field forward by one unless
- # the current field is the year. In that case we'll let tab
- # do what is supposed to and pass the focus onto the next widget.
- #
- } elseif {($sym == "Tab") && ($state == 0)} {
- if {$_cfield != "year"} {
- _moveField forward
- return -code break
- } else {
- _setField "month"
- return -code continue
- }
-
- #
- # A ctrl-tab key moves the day/month/year field backwards by one
- # unless the current field is the month. In that case we'll let
- # tab take the focus to a previous widget.
- #
- } elseif {($sym == "Tab") && ($state == 4)} {
- if {$_cfield != "month"} {
- _moveField backward
- return -code break
- } else {
- set _cfield "month"
- return -code continue
- }
-
- #
- # A right arrow key moves the insert cursor to the right one.
- #
- } elseif {$sym == "Right"} {
- _forward
- return -code break
-
- #
- # A left arrow, backspace, or delete key moves the insert cursor
- # to the left one. This is what you expect for the left arrow
- # and since the whole widget always operates in overstrike mode,
- # it makes the most sense for backspace and delete to do the same.
- #
- } elseif {$sym == "Left" || $sym == "BackSpace" || $sym == "Delete"} {
- _backward
- return -code break
-
- } elseif {($sym == "Control_L") || ($sym == "Shift_L") || \
- ($sym == "Control_R") || ($sym == "Shift_R")} {
- return -code break
-
- #
- # A Return key invokes the optionally specified command option.
- #
- } elseif {$sym == "Return"} {
- uplevel #0 $itk_option(-command)
- return -code break
-
- } else {
- bell
- return -code break
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _setField field
-#
-# Internal method which adjusts the field to be that of the
-# argument, setting the insert cursor appropriately.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_setField {field} {
- set _cfield $field
-
- switch $field {
- "month" {
- $itk_component(date) icursor 0
- }
- "day" {
- $itk_component(date) icursor 3
- }
- "year" {
- $itk_component(date) icursor 8
- }
- default {
- error "bad field: \"$field\", must be month, day or year"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _moveField
-#
-# Internal method for moving the field forward or backward by one.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_moveField {direction} {
- set index [lsearch $_fields $_cfield]
-
- if {$direction == "forward"} {
- set newIndex [expr $index + 1]
- } else {
- set newIndex [expr $index - 1]
- }
-
- if {$newIndex == [llength $_fields]} {
- set newIndex 0
- }
- if {$newIndex < 0} {
- set newIndex [expr [llength $_fields] - 1]
- }
-
- _setField [lindex $_fields $newIndex]
-
- return
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _whichField
-#
-# Internal method which returns the current field that the cursor
-# is currently within.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_whichField {} {
- set icursor [$itk_component(date) index insert]
-
- switch $icursor {
- 0 - 1 {
- set _cfield "month"
- }
- 3 - 4 {
- set _cfield "day"
- }
- 6 - 7 - 8 - 9 {
- set _cfield "year"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _forward
-#
-# Internal method which moves the cursor forward by one character
-# jumping over the slashes and wrapping.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_forward {} {
- set icursor [$itk_component(date) index insert]
-
- switch $icursor {
- 1 {
- _setField day
- }
- 4 {
- _setField year
- }
- 9 - 10 {
- _setField month
- }
- default {
- $itk_component(date) icursor [expr $icursor + 1]
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _backward
-#
-# Internal method which moves the cursor backward by one character
-# jumping over the slashes and wrapping.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_backward {} {
- set icursor [$itk_component(date) index insert]
-
- switch $icursor {
- 6 {
- _setField day
- }
- 3 {
- _setField month
- }
- 0 {
- _setField year
- }
- default {
- $itk_component(date) icursor [expr $icursor -1]
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _lastDay month year
-#
-# Internal method which determines the last day of the month for
-# the given month and year. We start at 28 and go forward till
-# we fail. Crude but effective.
-# ------------------------------------------------------------------
-body iwidgets::Datefield::_lastDay {month year} {
- set lastone 28
-
- for {set lastone 28} {$lastone < 32} {incr lastone} {
- if {[catch {clock scan $month/[expr $lastone + 1]/$year}] != 0} {
- return $lastone
- }
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/dialog.itk b/itcl/iwidgets3.0.0/generic/dialog.itk
deleted file mode 100644
index 519d57bf37f..00000000000
--- a/itcl/iwidgets3.0.0/generic/dialog.itk
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-# Dialog
-# ----------------------------------------------------------------------
-# Implements a standard dialog box providing standard buttons and a
-# child site for use in derived classes. The buttons include ok, apply,
-# cancel, and help. Options exist to configure the buttons.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Dialog {
- keep -background -cursor -foreground -modality
-}
-
-# ------------------------------------------------------------------
-# DIALOG
-# ------------------------------------------------------------------
-class iwidgets::Dialog {
- inherit iwidgets::Dialogshell
-
- constructor {args} {}
-}
-
-#
-# Provide a lowercased access method for the Dialog class.
-#
-proc ::iwidgets::dialog {pathName args} {
- uplevel ::iwidgets::Dialog $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Dialog.master "." widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Dialog::constructor {args} {
- #
- # Add the standard buttons: OK, Apply, Cancel, and Help, making
- # OK be the default button.
- #
- add OK -text OK -command [code $this deactivate 1]
- add Apply -text Apply
- add Cancel -text Cancel -command [code $this deactivate 0]
- add Help -text Help
-
- default OK
-
- #
- # Bind the window manager delete protocol to invocation of the
- # cancel button. This can be overridden by the user via the
- # execution of a similar command outside the class.
- #
- wm protocol $itk_component(hull) WM_DELETE_WINDOW \
- [code $this invoke Cancel]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/dialogshell.itk b/itcl/iwidgets3.0.0/generic/dialogshell.itk
deleted file mode 100644
index d4a52e998ef..00000000000
--- a/itcl/iwidgets3.0.0/generic/dialogshell.itk
+++ /dev/null
@@ -1,350 +0,0 @@
-# Dialogshell
-# ----------------------------------------------------------------------
-# This class is implements a dialog shell which is a top level widget
-# composed of a button box, separator, and child site area. The class
-# also has methods to control button construction.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Dialogshell {
- keep -background -cursor -foreground -modality
-}
-
-# ------------------------------------------------------------------
-# DIALOGSHELL
-# ------------------------------------------------------------------
-class iwidgets::Dialogshell {
- inherit iwidgets::Shell
-
- constructor {args} {}
-
- itk_option define -thickness thickness Thickness 3
- itk_option define -buttonboxpos buttonBoxPos Position s
- itk_option define -separator separator Separator on
- itk_option define -padx padX Pad 10
- itk_option define -pady padY Pad 10
-
- public method childsite {}
- public method index {args}
- public method add {args}
- public method insert {args}
- public method delete {args}
- public method hide {args}
- public method show {args}
- public method default {args}
- public method invoke {args}
- public method buttonconfigure {args}
- public method buttoncget {index option}
-}
-
-#
-# Provide a lowercased access method for the Dialogshell class.
-#
-proc ::iwidgets::dialogshell {pathName args} {
- uplevel ::iwidgets::Dialogshell $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Dialogshell.master "." widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::constructor {args} {
- itk_option remove iwidgets::Shell::padx iwidgets::Shell::pady
-
- #
- # Create the user child site, separator, and button box,
- #
- itk_component add -protected dschildsite {
- frame $itk_interior.dschildsite
- }
-
- itk_component add separator {
- frame $itk_interior.separator -relief sunken
- }
-
- itk_component add bbox {
- iwidgets::Buttonbox $itk_interior.bbox
- } {
- usual
-
- rename -padx -buttonboxpadx buttonBoxPadX Pad
- rename -pady -buttonboxpady buttonBoxPadY Pad
- }
-
- #
- # Set the itk_interior variable to be the childsite for derived
- # classes.
- #
- set itk_interior $itk_component(dschildsite)
-
- #
- # Set up the default button so that if <Return> is pressed in
- # any widget, it will invoke the default button.
- #
- bind $itk_component(hull) <Return> [code $this invoke]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -thickness
-#
-# Specifies the thickness of the separator. It sets the width and
-# height of the separator to the thickness value and the borderwidth
-# to half the thickness.
-# ------------------------------------------------------------------
-configbody iwidgets::Dialogshell::thickness {
- $itk_component(separator) config -height $itk_option(-thickness)
- $itk_component(separator) config -width $itk_option(-thickness)
- $itk_component(separator) config \
- -borderwidth [expr $itk_option(-thickness) / 2]
-}
-
-# ------------------------------------------------------------------
-# OPTION: -buttonboxpos
-#
-# Specifies the position of the button box relative to the child site.
-# The separator appears between the child site and button box.
-# ------------------------------------------------------------------
-configbody iwidgets::Dialogshell::buttonboxpos {
- set parent [winfo parent $itk_component(bbox)]
-
- switch $itk_option(-buttonboxpos) {
- n {
- $itk_component(bbox) configure -orient horizontal
-
- grid $itk_component(bbox) -row 0 -column 0 -sticky ew
- grid $itk_component(separator) -row 1 -column 0 -sticky ew
- grid $itk_component(dschildsite) -row 2 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 0
- grid rowconfigure $parent 1 -weight 0
- grid rowconfigure $parent 2 -weight 1
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- grid columnconfigure $parent 2 -weight 0
- }
- s {
- $itk_component(bbox) configure -orient horizontal
-
- grid $itk_component(dschildsite) -row 0 -column 0 -sticky nsew
- grid $itk_component(separator) -row 1 -column 0 -sticky ew
- grid $itk_component(bbox) -row 2 -column 0 -sticky ew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid rowconfigure $parent 2 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- grid columnconfigure $parent 2 -weight 0
- }
- w {
- $itk_component(bbox) configure -orient vertical
-
- grid $itk_component(bbox) -row 0 -column 0 -sticky ns
- grid $itk_component(separator) -row 0 -column 1 -sticky ns
- grid $itk_component(dschildsite) -row 0 -column 2 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid rowconfigure $parent 2 -weight 0
- grid columnconfigure $parent 0 -weight 0
- grid columnconfigure $parent 1 -weight 0
- grid columnconfigure $parent 2 -weight 1
- }
- e {
- $itk_component(bbox) configure -orient vertical
-
- grid $itk_component(dschildsite) -row 0 -column 0 -sticky nsew
- grid $itk_component(separator) -row 0 -column 1 -sticky ns
- grid $itk_component(bbox) -row 0 -column 2 -sticky ns
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid rowconfigure $parent 2 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- grid columnconfigure $parent 2 -weight 0
- }
- default {
- error "bad buttonboxpos option\
- \"$itk_option(-buttonboxpos)\": should be n,\
- s, e, or w"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -separator
-#
-# Boolean option indicating wheather to display the separator.
-# ------------------------------------------------------------------
-configbody iwidgets::Dialogshell::separator {
- if {$itk_option(-separator)} {
- $itk_component(separator) configure -relief sunken
- } else {
- $itk_component(separator) configure -relief flat
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -padx
-#
-# Specifies a padding distance for the childsite in the X-direction.
-# ------------------------------------------------------------------
-configbody iwidgets::Dialogshell::padx {
- grid configure $itk_component(dschildsite) -padx $itk_option(-padx)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -pady
-#
-# Specifies a padding distance for the childsite in the Y-direction.
-# ------------------------------------------------------------------
-configbody iwidgets::Dialogshell::pady {
- grid configure $itk_component(dschildsite) -pady $itk_option(-pady)
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Return the pathname of the user accessible area.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::childsite {} {
- return $itk_component(dschildsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Thin wrapper of Buttonbox's index method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::index {args} {
- uplevel $itk_component(bbox) index $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: add tag ?option value ...?
-#
-# Thin wrapper of Buttonbox's add method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::add {args} {
- uplevel $itk_component(bbox) add $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert index tag ?option value ...?
-#
-# Thin wrapper of Buttonbox's insert method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::insert {args} {
- uplevel $itk_component(bbox) insert $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete tag
-#
-# Thin wrapper of Buttonbox's delete method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::delete {args} {
- uplevel $itk_component(bbox) delete $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: hide index
-#
-# Thin wrapper of Buttonbox's hide method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::hide {args} {
- uplevel $itk_component(bbox) hide $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: show index
-#
-# Thin wrapper of Buttonbox's show method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::show {args} {
- uplevel $itk_component(bbox) show $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: default index
-#
-# Thin wrapper of Buttonbox's default method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::default {args} {
- uplevel $itk_component(bbox) default $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: invoke ?index?
-#
-# Thin wrapper of Buttonbox's invoke method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::invoke {args} {
- uplevel $itk_component(bbox) invoke $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: buttonconfigure index ?option? ?value option value ...?
-#
-# Thin wrapper of Buttonbox's buttonconfigure method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::buttonconfigure {args} {
- uplevel $itk_component(bbox) buttonconfigure $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: buttoncget index option
-#
-# Thin wrapper of Buttonbox's buttoncget method.
-# ------------------------------------------------------------------
-body iwidgets::Dialogshell::buttoncget {index option} {
- uplevel $itk_component(bbox) buttoncget [list $index] \
- [list $option]
-}
diff --git a/itcl/iwidgets3.0.0/generic/disjointlistbox.itk b/itcl/iwidgets3.0.0/generic/disjointlistbox.itk
deleted file mode 100755
index 1234eae70e6..00000000000
--- a/itcl/iwidgets3.0.0/generic/disjointlistbox.itk
+++ /dev/null
@@ -1,486 +0,0 @@
-#
-# ::iwidgets::Disjointlistbox
-# ----------------------------------------------------------------------
-# Implements a widget which maintains a disjoint relationship between
-# the items displayed by two listboxes. The disjointlistbox is composed
-# of 2 Scrolledlistboxes, 2 Pushbuttons, and 2 labels.
-#
-# The disjoint behavior of this widget exists between the two Listboxes,
-# That is, a given instance of a ::iwidgets::Disjointlistbox will never
-# exist which has Listbox widgets with items in common.
-#
-# Users may transfer items between the two Listbox widgets using the
-# the two Pushbuttons.
-#
-# The options include the ability to configure the "items" displayed by
-# either of the two Listboxes and to control the placement of the insertion
-# and removal buttons.
-#
-# The following depicts the allowable "-buttonplacement" option values
-# and their associated layout:
-#
-# "-buttonplacement" => center
-#
-# --------------------------
-# |listbox| |listbox|
-# | |________| |
-# | (LHS) | button | (RHS) |
-# | |========| |
-# | | button | |
-# |_______|--------|_______|
-# | count | | count |
-# --------------------------
-#
-# "-buttonplacement" => bottom
-#
-# ---------------------
-# | listbox | listbox |
-# | (LHS) | (RHS) |
-# |_________|_________|
-# | button | button |
-# |---------|---------|
-# | count | count |
-# ---------------------
-#
-# ----------------------------------------------------------------------
-# AUTHOR: John A. Tucker EMAIL: jatucker@spd.dsccc.com
-#
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Disjointlistbox.lhsLabelText Available widgetDefault
-option add *Disjointlistbox.rhsLabelText Current widgetDefault
-option add *Disjointlistbox.lhsButtonLabel {Insert >>} widgetDefault
-option add *Disjointlistbox.rhsButtonLabel {<< Remove} widgetDefault
-option add *Disjointlistbox.vscrollMode static widgetDefault
-option add *Disjointlistbox.hscrollMode static widgetDefault
-option add *Disjointlistbox.selectMode multiple widgetDefault
-option add *Disjointlistbox.labelPos nw widgetDefault
-option add *Disjointlistbox.buttonPlacement bottom widgetDefault
-
-
-#
-# Usual options.
-#
-itk::usual Disjointlistbox {
- keep -background -textbackground -cursor \
- -foreground -textfont -labelfont
-}
-
-
-# ----------------------------------------------------------------------
-# ::iwidgets::Disjointlistbox
-# ----------------------------------------------------------------------
-class ::iwidgets::Disjointlistbox {
-
- inherit itk::Widget
-
- #
- # options
- #
- itk_option define -buttonplacement buttonPlacement ButtonPlacement bottom
- itk_option define -lhsbuttonlabel lhsButtonLabel LabelText {Insert >>}
- itk_option define -rhsbuttonlabel rhsButtonLabel LabelText {<< Remove}
-
- constructor {args} {}
-
- #
- # PUBLIC
- #
- public {
- method clear {}
- method getlhs {{first 0} {last end}}
- method getrhs {{first 0} {last end}}
- method lhs {args}
- method insertlhs {items}
- method insertrhs {items}
- method setlhs {items}
- method setrhs {items}
- method rhs {args}
- }
-
- #
- # PROTECTED
- #
- protected {
- method insert {theListbox items}
- method listboxClick {clickSide otherSide}
- method listboxDblClick {clickSide otherSide}
- method remove {theListbox items}
- method showCount {}
- method transfer {}
-
- variable sourceListbox {}
- variable destinationListbox {}
- }
-}
-
-#
-# Provide a lowercased access method for the ::iwidgets::Disjointlistbox class.
-#
-proc ::iwidgets::disjointlistbox {pathName args} {
- uplevel ::iwidgets::Disjointlistbox $pathName $args
-}
-
-# ------------------------------------------------------------------
-#
-# Method: Constructor
-#
-# Purpose:
-#
-body ::iwidgets::Disjointlistbox::constructor {args} {
- #
- # Create the left-most Listbox
- #
- itk_component add lhs {
- iwidgets::Scrolledlistbox $itk_interior.lhs \
- -selectioncommand [code $this listboxClick lhs rhs] \
- -dblclickcommand [code $this listboxDblClick lhs rhs]
- } {
- usual
- keep -selectmode -vscrollmode -hscrollmode
- rename -labeltext -lhslabeltext lhsLabelText LabelText
- }
-
- #
- # Create the right-most Listbox
- #
- itk_component add rhs {
- iwidgets::Scrolledlistbox $itk_interior.rhs \
- -selectioncommand [code $this listboxClick rhs lhs] \
- -dblclickcommand [code $this listboxDblClick rhs lhs]
- } {
- usual
- keep -selectmode -vscrollmode -hscrollmode
- rename -labeltext -rhslabeltext rhsLabelText LabelText
- }
-
- #
- # Create the left-most item count Label
- #
- itk_component add lhsCount {
- label $itk_interior.lhscount
- } {
- usual
- rename -font -labelfont labelFont Font
- }
-
- #
- # Create the right-most item count Label
- #
- itk_component add rhsCount {
- label $itk_interior.rhscount
- } {
- usual
- rename -font -labelfont labelFont Font
- }
-
- set sourceListbox $itk_component(lhs)
- set destinationListbox $itk_component(rhs)
-
- #
- # Bind the "showCount" method to the Map event of one of the labels
- # to keep the diplayed item count current.
- #
- bind $itk_component(lhsCount) <Map> [code $this showCount]
-
- grid $itk_component(lhs) -row 0 -column 0 -sticky nsew
- grid $itk_component(rhs) -row 0 -column 2 -sticky nsew
-
- grid rowconfigure $itk_interior 0 -weight 1
- grid columnconfigure $itk_interior 0 -weight 1
- grid columnconfigure $itk_interior 2 -weight 1
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# Method: listboxClick
-#
-# Purpose: Evaluate a single click make in the specified Listbox.
-#
-body ::iwidgets::Disjointlistbox::listboxClick {clickSide otherSide} {
- set button "button"
- $itk_component($clickSide$button) configure -state active
- $itk_component($otherSide$button) configure -state disabled
- set sourceListbox $itk_component($clickSide)
- set destinationListbox $itk_component($otherSide)
-}
-
-# ------------------------------------------------------------------
-# Method: listboxDblClick
-#
-# Purpose: Evaluate a double click in the specified Listbox.
-#
-body ::iwidgets::Disjointlistbox::listboxDblClick {clickSide otherSide} {
- listboxClick $clickSide $otherSide
- transfer
-}
-
-# ------------------------------------------------------------------
-# Method: transfer
-#
-# Purpose: Transfer source Listbox items to destination Listbox
-#
-body ::iwidgets::Disjointlistbox::transfer {} {
-
- if {[$sourceListbox selecteditemcount] == 0} {
- return
- }
- set selectedindices [lsort -integer -decreasing [$sourceListbox curselection]]
- set selecteditems [$sourceListbox getcurselection]
-
- foreach index $selectedindices {
- $sourceListbox delete $index
- }
-
- foreach item $selecteditems {
- $destinationListbox insert end $item
- }
- $destinationListbox sort increasing
-
- showCount
-}
-
-# ------------------------------------------------------------------
-# Method: getlhs
-#
-# Purpose: Retrieve the items of the left Listbox widget
-#
-body ::iwidgets::Disjointlistbox::getlhs {{first 0} {last end}} {
- return [lhs get $first $last]
-}
-
-# ------------------------------------------------------------------
-# Method: getrhs
-#
-# Purpose: Retrieve the items of the right Listbox widget
-#
-body ::iwidgets::Disjointlistbox::getrhs {{first 0} {last end}} {
- return [rhs get $first $last]
-}
-
-# ------------------------------------------------------------------
-# Method: insertrhs
-#
-# Purpose: Insert items into the right Listbox widget
-#
-body ::iwidgets::Disjointlistbox::insertrhs {items} {
- remove $itk_component(lhs) $items
- insert $itk_component(rhs) $items
-}
-
-# ------------------------------------------------------------------
-# Method: insertlhs
-#
-# Purpose: Insert items into the left Listbox widget
-#
-body ::iwidgets::Disjointlistbox::insertlhs {items} {
- remove $itk_component(rhs) $items
- insert $itk_component(lhs) $items
-}
-
-# ------------------------------------------------------------------
-# Method: clear
-#
-# Purpose: Remove the items from the Listbox widgets and set the item count
-# Labels text to 0
-#
-body ::iwidgets::Disjointlistbox::clear {} {
- lhs clear
- rhs clear
- showCount
-}
-
-# ------------------------------------------------------------------
-# Method: insert
-#
-# Purpose: Insert the input items into the input Listbox widget while
-# maintaining the disjoint property between them.
-#
-body ::iwidgets::Disjointlistbox::insert {theListbox items} {
-
- set curritems [$theListbox get 0 end]
-
- foreach item $items {
- #
- # if the item is not already present in the Listbox then insert it
- #
- if {[lsearch -exact $curritems $item] == -1} {
- $theListbox insert end $item
- }
- }
- $theListbox sort increasing
- showCount
-}
-
-# ------------------------------------------------------------------
-# Method: remove
-#
-# Purpose: Remove the input items from the input Listbox widget while
-# maintaining the disjoint property between them.
-#
-body ::iwidgets::Disjointlistbox::remove {theListbox items} {
-
- set indexes {}
- set curritems [$theListbox get 0 end]
-
- foreach item $items {
- #
- # if the item is in the listbox then add its index to the index list
- #
- if {[set index [lsearch -exact $curritems $item]] != -1} {
- lappend indexes $index
- }
- }
-
- foreach index [lsort -integer -decreasing $indexes] {
- $theListbox delete $index
- }
- showCount
-}
-
-# ------------------------------------------------------------------
-# Method: showCount
-#
-# Purpose: Set the text of the item count Labels.
-#
-body ::iwidgets::Disjointlistbox::showCount {} {
- $itk_component(lhsCount) config -text "item count: [lhs size]"
- $itk_component(rhsCount) config -text "item count: [rhs size]"
-}
-
-# ------------------------------------------------------------------
-# METHOD: setlhs
-#
-# Set the items of the left-most Listbox with the input list
-# option. Remove all (if any) items from the right-most Listbox
-# which exist in the input list option to maintain the disjoint
-# property between the two
-#
-body ::iwidgets::Disjointlistbox::setlhs {items} {
- lhs clear
- insertlhs $items
-}
-
-# ------------------------------------------------------------------
-# METHOD: setrhs
-#
-# Set the items of the right-most Listbox with the input list
-# option. Remove all (if any) items from the left-most Listbox
-# which exist in the input list option to maintain the disjoint
-# property between the two
-#
-body ::iwidgets::Disjointlistbox::setrhs {items} {
- rhs clear
- insertrhs $items
-}
-
-# ------------------------------------------------------------------
-# Method: lhs
-#
-# Purpose: Evaluates the specified arguments against the lhs Listbox
-#
-body ::iwidgets::Disjointlistbox::lhs {args} {
- return [eval $itk_component(lhs) $args]
-}
-
-# ------------------------------------------------------------------
-# Method: rhs
-#
-# Purpose: Evaluates the specified arguments against the rhs Listbox
-#
-body ::iwidgets::Disjointlistbox::rhs {args} {
- return [eval $itk_component(rhs) $args]
-}
-
-# ------------------------------------------------------------------
-# OPTION: buttonplacement
-#
-# Configure the placement of the buttons to be either between or below
-# the two list boxes.
-#
-configbody ::iwidgets::Disjointlistbox::buttonplacement {
- if {$itk_option(-buttonplacement) != ""} {
-
- if { [lsearch [component] lhsbutton] != -1 } {
- eval destroy $itk_component(rhsbutton) $itk_component(lhsbutton)
- }
-
- if { [lsearch [component] bbox] != -1 } {
- destroy $itk_component(bbox)
- }
-
- set where $itk_option(-buttonplacement)
-
- switch $where {
-
- center {
- #
- # Create the button box frame
- #
- itk_component add bbox {
- frame $itk_interior.bbox
- }
-
- itk_component add lhsbutton {
- button $itk_component(bbox).lhsbutton -command [code $this transfer]
- } {
- usual
- rename -text -lhsbuttonlabel lhsButtonLabel LabelText
- rename -font -labelfont labelFont Font
- }
-
- itk_component add rhsbutton {
- button $itk_component(bbox).rhsbutton -command [code $this transfer]
- } {
- usual
- rename -text -rhsbuttonlabel rhsButtonLabel LabelText
- rename -font -labelfont labelFont Font
- }
-
- grid configure $itk_component(lhsCount) -row 1 -column 0 -sticky ew
- grid configure $itk_component(rhsCount) -row 1 -column 2 -sticky ew
-
- grid configure $itk_component(bbox) \
- -in $itk_interior -row 0 -column 1 -columnspan 1 -sticky nsew
-
- grid configure $itk_component(rhsbutton) \
- -in $itk_component(bbox) -row 0 -column 0 -sticky ew
- grid configure $itk_component(lhsbutton) \
- -in $itk_component(bbox) -row 1 -column 0 -sticky ew
- }
-
- bottom {
-
- itk_component add lhsbutton {
- button $itk_interior.lhsbutton -command [code $this transfer]
- } {
- usual
- rename -text -lhsbuttonlabel lhsButtonLabel LabelText
- rename -font -labelfont labelFont Font
- }
-
- itk_component add rhsbutton {
- button $itk_interior.rhsbutton -command [code $this transfer]
- } {
- usual
- rename -text -rhsbuttonlabel rhsButtonLabel LabelText
- rename -font -labelfont labelFont Font
- }
-
- grid $itk_component(lhsCount) -row 2 -column 0 -sticky ew
- grid $itk_component(rhsCount) -row 2 -column 2 -sticky ew
- grid $itk_component(lhsbutton) -row 1 -column 0 -sticky ew
- grid $itk_component(rhsbutton) -row 1 -column 2 -sticky ew
- }
-
- default {
- error "bad buttonplacement option\"$where\": should be center or bottom"
- }
- }
- }
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/entryfield.itk b/itcl/iwidgets3.0.0/generic/entryfield.itk
deleted file mode 100644
index bf3880086cf..00000000000
--- a/itcl/iwidgets3.0.0/generic/entryfield.itk
+++ /dev/null
@@ -1,579 +0,0 @@
-#
-# Entryfield
-# ----------------------------------------------------------------------
-# Implements an enhanced text entry widget.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Sue Yockey E-mail: yockey@acm.org
-# Mark L. Ulferts E-mail: mulferts@austin.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 Entryfield {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -labelfont \
- -selectbackground -selectborderwidth -selectforeground \
- -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# ENTRYFIELD
-# ------------------------------------------------------------------
-class iwidgets::Entryfield {
- inherit iwidgets::Labeledwidget
-
- constructor {args} {}
-
- itk_option define -childsitepos childSitePos Position e
- itk_option define -command command Command {}
- itk_option define -fixed fixed Fixed 0
- itk_option define -focuscommand focusCommand Command {}
- itk_option define -invalid invalid Command {bell}
- itk_option define -pasting pasting Behavior 1
- itk_option define -validate validate Command {}
-
- public {
- method childsite {}
- method get {}
- method delete {args}
- method icursor {args}
- method index {args}
- method insert {args}
- method scan {args}
- method selection {args}
- method xview {args}
- method clear {}
- }
-
- proc numeric {char} {}
- proc integer {string} {}
- proc alphabetic {char} {}
- proc alphanumeric {char} {}
- proc hexidecimal {string} {}
- proc real {string} {}
-
- protected {
- method _focusCommand {}
- method _keyPress {char sym state}
- }
-
- private method _peek {char}
-}
-
-#
-# Provide a lowercased access method for the Entryfield class.
-#
-proc ::iwidgets::entryfield {pathName args} {
- uplevel ::iwidgets::Entryfield $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::constructor {args} {
- component hull configure -borderwidth 0
-
- itk_component add entry {
- entry $itk_interior.entry
- } {
- keep -borderwidth -cursor -exportselection \
- -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -justify \
- -relief -selectbackground -selectborderwidth \
- -selectforeground -show -state -textvariable -width
-
- rename -font -textfont textFont Font
- rename -highlightbackground -background background Background
- rename -background -textbackground textBackground Background
- }
-
- #
- # Create the child site widget.
- #
- itk_component add -protected efchildsite {
- frame $itk_interior.efchildsite
- }
- set itk_interior $itk_component(efchildsite)
-
- #
- # Entryfield instance bindings.
- #
- bind $itk_component(entry) <KeyPress> [code $this _keyPress %A %K %s]
- bind $itk_component(entry) <FocusIn> [code $this _focusCommand]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -command
-#
-# Command associated upon detection of Return key press event
-# ------------------------------------------------------------------
-configbody iwidgets::Entryfield::command {}
-
-# ------------------------------------------------------------------
-# OPTION: -focuscommand
-#
-# Command associated upon detection of focus.
-# ------------------------------------------------------------------
-configbody iwidgets::Entryfield::focuscommand {}
-
-# ------------------------------------------------------------------
-# OPTION: -validate
-#
-# Specify a command to executed for the validation of Entryfields.
-# ------------------------------------------------------------------
-configbody iwidgets::Entryfield::validate {
- switch $itk_option(-validate) {
- {} {
- set itk_option(-validate) {}
- }
- numeric {
- set itk_option(-validate) "::iwidgets::Entryfield::numeric %c"
- }
- integer {
- set itk_option(-validate) "::iwidgets::Entryfield::integer %P"
- }
- hexidecimal {
- set itk_option(-validate) "::iwidgets::Entryfield::hexidecimal %P"
- }
- real {
- set itk_option(-validate) "::iwidgets::Entryfield::real %P"
- }
- alphabetic {
- set itk_option(-validate) "::iwidgets::Entryfield::alphabetic %c"
- }
- alphanumeric {
- set itk_option(-validate) "::iwidgets::Entryfield::alphanumeric %c"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -invalid
-#
-# Specify a command to executed should the current Entryfield contents
-# be proven invalid.
-# ------------------------------------------------------------------
-configbody iwidgets::Entryfield::invalid {}
-
-# ------------------------------------------------------------------
-# OPTION: -pasting
-#
-# Allows the developer to enable and disable pasting into the entry
-# component of the entryfield. This is done to avoid potential stack
-# dumps when using the -validate configuration option. Plus, it's just
-# a good idea to have complete control over what you allow the user
-# to enter into the entryfield.
-# ------------------------------------------------------------------
-configbody iwidgets::Entryfield::pasting {
- set oldtags [bindtags $itk_component(entry)]
- set firsttag [lindex $oldtags 0]
-
- if ($itk_option(-pasting)) {
- if {$firsttag == "pastetag"} {
- bindtags $itk_component(entry) [lreplace $oldtags 0 0]
- }
-
- } else {
- if {$firsttag == "pastetag"} {
- # Ignore this if it's already set.
- return
- }
- bindtags $itk_component(entry) [linsert $oldtags 0 pastetag]
- bind pastetag <ButtonRelease-2> {break}
- bind pastetag <KeyPress> {
- # Disable function keys > F9 and the 'Insert' key.
- if {[regexp {^F[1,2][0-9]+$} "%K"] || "%K" == "Insert"} {
- break
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -fixed
-#
-# Restrict entry to 0 (unlimited) chars. The value is the maximum
-# number of chars the user may type into the field, regardles of
-# field width, i.e. the field width may be 20, but the user will
-# only be able to type -fixed number of characters into it (or
-# unlimited if -fixed = 0).
-# ------------------------------------------------------------------
-configbody iwidgets::Entryfield::fixed {
- if {[regexp {[^0-9]} $itk_option(-fixed)] || \
- ($itk_option(-fixed) < 0)} {
- error "bad fixed option \"$itk_option(-fixed)\",\
- should be positive integer"
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Entryfield::childsitepos {
- set parent [winfo parent $itk_component(entry)]
-
- switch $itk_option(-childsitepos) {
- n {
- grid $itk_component(efchildsite) -row 0 -column 0 -sticky ew
- grid $itk_component(entry) -row 1 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 0
- grid rowconfigure $parent 1 -weight 1
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- e {
- grid $itk_component(efchildsite) -row 0 -column 1 -sticky ns
- grid $itk_component(entry) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- s {
- grid $itk_component(efchildsite) -row 1 -column 0 -sticky ew
- grid $itk_component(entry) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- w {
- grid $itk_component(efchildsite) -row 0 -column 0 -sticky ns
- grid $itk_component(entry) -row 0 -column 1 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 0
- grid columnconfigure $parent 1 -weight 1
- }
-
- default {
- error "bad childsite option\
- \"$itk_option(-childsitepos)\":\
- should be n, e, s, or w"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::childsite {} {
- return $itk_component(efchildsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Thin wrap of the standard entry widget get method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::get {} {
- return [$itk_component(entry) get]
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete
-#
-# Thin wrap of the standard entry widget delete method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::delete {args} {
- return [eval $itk_component(entry) delete $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: icursor
-#
-# Thin wrap of the standard entry widget icursor method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::icursor {args} {
- return [eval $itk_component(entry) icursor $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: index
-#
-# Thin wrap of the standard entry widget index method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::index {args} {
- return [eval $itk_component(entry) index $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert
-#
-# Thin wrap of the standard entry widget index method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::insert {args} {
- return [eval $itk_component(entry) insert $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: scan
-#
-# Thin wrap of the standard entry widget scan method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::scan {args} {
- return [eval $itk_component(entry) scan $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: selection
-#
-# Thin wrap of the standard entry widget selection method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::selection {args} {
- return [eval $itk_component(entry) selection $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: xview
-#
-# Thin wrap of the standard entry widget xview method.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::xview {args} {
- return [eval $itk_component(entry) xview $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: clear
-#
-# Delete the current entry contents.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::clear {} {
- $itk_component(entry) delete 0 end
- icursor 0
-}
-
-# ------------------------------------------------------------------
-# PROCEDURE: numeric char
-#
-# The numeric procedure validates character input for a given
-# Entryfield to be numeric and returns the result.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::numeric {char} {
- return [regexp {[0-9]} $char]
-}
-
-# ------------------------------------------------------------------
-# PROCEDURE: integer string
-#
-# The integer procedure validates character input for a given
-# Entryfield to be integer and returns the result.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::integer {string} {
- return [regexp {^[-+]?[0-9]*$} $string]
-}
-
-# ------------------------------------------------------------------
-# PROCEDURE: alphabetic char
-#
-# The alphabetic procedure validates character input for a given
-# Entryfield to be alphabetic and returns the result.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::alphabetic {char} {
- return [regexp -nocase {[a-z]} $char]
-}
-
-# ------------------------------------------------------------------
-# PROCEDURE: alphanumeric char
-#
-# The alphanumeric procedure validates character input for a given
-# Entryfield to be alphanumeric and returns the result.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::alphanumeric {char} {
- return [regexp -nocase {[0-9a-z]} $char]
-}
-
-# ------------------------------------------------------------------
-# PROCEDURE: hexadecimal string
-#
-# The hexidecimal procedure validates character input for a given
-# Entryfield to be hexidecimal and returns the result.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::hexidecimal {string} {
- return [regexp {^(0x)?[0-9a-fA-F]*$} $string]
-}
-
-# ------------------------------------------------------------------
-# PROCEDURE: real string
-#
-# The real procedure validates character input for a given Entryfield
-# to be real and returns the result.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::real {string} {
- return [regexp {^[-+]?[0-9]*\.?[0-9]*([0-9]\.?[eE][-+]?[0-9]*)?$} $string]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _peek char
-#
-# The peek procedure returns the value of the Entryfield with the
-# char inserted at the insert position.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::_peek {char} {
- set str [get]
-
- set insertPos [index insert]
- set firstPart [string range $str 0 [expr $insertPos - 1]]
- set lastPart [string range $str $insertPos end]
-
- regsub -all {\\} "$char" {\\\\} char
- append rtnVal $firstPart $char $lastPart
- return $rtnVal
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _focusCommand
-#
-# Method bound to focus event which evaluates the current command
-# specified in the focuscommand option
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::_focusCommand {} {
- uplevel #0 $itk_option(-focuscommand)
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _keyPress
-#
-# Monitor the key press event checking for return keys, fixed width
-# specification, and optional validation procedures.
-# ------------------------------------------------------------------
-body iwidgets::Entryfield::_keyPress {char sym state} {
- #
- # A Return key invokes the optionally specified command option.
- #
- if {$sym == "Return"} {
- uplevel #0 $itk_option(-command)
- return -code break 1
- }
-
- #
- # Tabs, BackSpace, and Delete are passed on for other bindings.
- #
- if {($sym == "Tab") || ($sym == "BackSpace") || ($sym == "Delete")} {
- return -code continue 1
- }
-
- #
- # Character is not printable or the state is greater than one which
- # means a modifier was used such as a control, meta key, or control
- # or meta key with numlock down.
- #
- #-----------------------------------------------------------
- # BUG FIX: csmith (Chad Smith: csmith@adc.com), 3/15/99
- #-----------------------------------------------------------
- # The following conditional used to hardcode specific state values, such
- # as "4" and "8". These values are used to detect <Ctrl>, <Shift>, etc.
- # key combinations. On the windows platform, the <Alt> key is state
- # 16, and on the unix platform, the <Alt> key is state 8. All <Ctrl>
- # and <Alt> combinations should be masked out, regardless of the
- # <NumLock> or <CapsLock> status, and regardless of platform.
- #-----------------------------------------------------------
- set CTRL 4
- global tcl_platform
- if {$tcl_platform(platform) == "unix"} {
- set ALT 8
- } elseif {$tcl_platform(platform) == "windows"} {
- set ALT 16
- } else {
- # This is something other than UNIX or WINDOWS. Default to the
- # old behavior (UNIX).
- set ALT 8
- }
- # Thanks to Rolf Schroedter for the following elegant conditional. This
- # masks out all <Ctrl> and <Alt> key combinations.
- if {($char == "") || ($state & ($CTRL | $ALT))} {
- return -code continue 1
- }
-
- #
- # If the fixed length option is not zero, then verify that the
- # current length plus one will not exceed the limit. If so then
- # invoke the invalid command procedure.
- #
- if {$itk_option(-fixed) != 0} {
- if {[string length [get]] >= $itk_option(-fixed)} {
- uplevel #0 $itk_option(-invalid)
- return -code break 0
- }
- }
-
- #
- # The validate option may contain a keyword (numeric, alphabetic),
- # the name of a procedure, or nothing. The numeric and alphabetic
- # keywords engage typical base level checks. If a command procedure
- # is specified, then invoke it with the object and character passed
- # as arguments. If the validate procedure returns false, then the
- # invalid procedure is called.
- #
- if {$itk_option(-validate) != {}} {
- set cmd $itk_option(-validate)
-
- regsub -all "%W" "$cmd" $itk_component(hull) cmd
- regsub -all "%P" "$cmd" [list [_peek $char]] cmd
- regsub -all "%S" "$cmd" [list [get]] cmd
- regsub -all "%c" "$cmd" [list $char] cmd
- regsub -all {\\} "$cmd" {\\\\} cmd
-
- set valid [uplevel #0 $cmd]
-
- if {($valid == "") || ([regexp 0|false|off|no $valid])} {
- uplevel #0 $itk_option(-invalid)
- return -code break 0
- }
- }
-
- return -code continue 1
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/extfileselectionbox.itk b/itcl/iwidgets3.0.0/generic/extfileselectionbox.itk
deleted file mode 100644
index 0b04fcf26d4..00000000000
--- a/itcl/iwidgets3.0.0/generic/extfileselectionbox.itk
+++ /dev/null
@@ -1,1126 +0,0 @@
-#
-# Extfileselectionbox
-# ----------------------------------------------------------------------
-# Implements a file selection box that is a slightly extended version
-# of the OSF/Motif standard XmExtfileselectionbox 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
-# Anthony L. Parent tony.parent@symbios.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 Extfileselectionbox {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -insertbackground -insertborderwidth -insertofftime -insertontime \
- -insertwidth -jump -labelfont -selectbackground -selectborderwidth \
- -textbackground -textfont -troughcolor
-}
-
-# ------------------------------------------------------------------
-# EXTFILESELECTIONBOX
-# ------------------------------------------------------------------
-class iwidgets::Extfileselectionbox {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -childsitepos childSitePos Position s
- itk_option define -fileson filesOn FilesOn true
- itk_option define -dirson dirsOn DirsOn true
- itk_option define -selectionon selectionOn SelectionOn true
- itk_option define -filteron filterOn FilterOn true
- itk_option define -mask mask Mask {*}
- itk_option define -directory directory Directory {}
- itk_option define -nomatchstring noMatchString NoMatchString {}
- itk_option define -dirsearchcommand dirSearchCommand Command {}
- itk_option define -filesearchcommand fileSearchCommand Command {}
- itk_option define -selectioncommand selectionCommand Command {}
- itk_option define -filtercommand filterCommand Command {}
- itk_option define -selectdircommand selectDirCommand Command {}
- itk_option define -selectfilecommand selectFileCommand Command {}
- itk_option define -invalid invalid Command {bell}
- itk_option define -filetype fileType FileType {regular}
- itk_option define -width width Width 350
- itk_option define -height height Height 300
-
- public {
- method childsite {}
- method get {}
- method filter {}
- }
-
- protected {
- method _packComponents {{when later}}
- method _updateLists {{when later}}
- }
-
- private {
- method _selectDir {}
- method _dblSelectDir {}
- method _selectFile {}
- method _selectSelection {}
- method _selectFilter {}
- method _setFilter {}
- method _setSelection {}
- method _setDirList {}
- method _setFileList {}
-
- method _nPos {}
- method _sPos {}
- method _ePos {}
- method _wPos {}
- method _topPos {}
- method _bottomPos {}
-
- variable _packToken "" ;# non-null => _packComponents pending
- variable _updateToken "" ;# non-null => _updateLists pending
- variable _pwd "." ;# present working dir
- variable _interior ;# original interior setting
- }
-}
-
-#
-# Provide a lowercased access method for the Extfileselectionbox class.
-#
-proc ::iwidgets::extfileselectionbox {pathName args} {
- uplevel ::iwidgets::Extfileselectionbox $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Extfileselectionbox.borderWidth 2 widgetDefault
-
-option add *Extfileselectionbox.filterLabel Filter widgetDefault
-option add *Extfileselectionbox.dirsLabel Directories widgetDefault
-option add *Extfileselectionbox.filesLabel Files widgetDefault
-option add *Extfileselectionbox.selectionLabel Selection widgetDefault
-
-option add *Extfileselectionbox.width 350 widgetDefault
-option add *Extfileselectionbox.height 300 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::constructor {args} {
- #
- # Add back to the hull width and height options and make the
- # borderwidth zero since we don't need it.
- #
- itk_option add hull.width hull.height
- component hull configure -borderwidth 0
-
- set _interior $itk_interior
-
- #
- # Create the filter entry.
- #
- itk_component add filter {
- iwidgets::Combobox $itk_interior.filter -unique true \
- -command [code $this _selectFilter] -exportselection 0 \
- -labelpos nw -completion 0
-
- } {
- usual
-
- rename -labeltext -filterlabel filterLabel Text
- }
-
- set cmd [$itk_component(filter) cget -command]
- set cmd "$cmd;[code $this _selectFilter]"
- $itk_component(filter) configure -command "$cmd" -selectioncommand "$cmd";
-
- #
- # Create a paned window for the directory and file lists.
- #
- itk_component add listpane {
- iwidgets::Panedwindow $itk_interior.listpane -orient vertical
- }
-
- $itk_component(listpane) add dirs -margin 5
- $itk_component(listpane) add files -margin 5
-
- #
- # Create the directory list.
- #
- itk_component add dirs {
- iwidgets::Scrolledlistbox [$itk_component(listpane) childsite dirs].dirs \
- -selectioncommand [code $this _selectDir] \
- -selectmode single -exportselection 0 \
- -visibleitems 1x1 -labelpos nw \
- -hscrollmode static -vscrollmode static \
- -dblclickcommand [code $this _dblSelectDir]
- } {
- usual
-
- rename -labeltext -dirslabel dirsLabel Text
- }
- grid $itk_component(dirs) -sticky nsew
- grid rowconfigure [$itk_component(listpane) childsite dirs] 0 -weight 1
- grid columnconfigure [$itk_component(listpane) childsite dirs] 0 -weight 1
-
- #
- # Create the files list.
- #
- itk_component add files {
- iwidgets::Scrolledlistbox [$itk_component(listpane) childsite files].files \
- -selectioncommand [code $this _selectFile] \
- -selectmode single -exportselection 0 \
- -visibleitems 1x1 -labelpos nw \
- -hscrollmode static -vscrollmode static
- } {
- usual
-
- rename -labeltext -fileslabel filesLabel Text
- }
- grid $itk_component(files) -sticky nsew
- grid rowconfigure [$itk_component(listpane) childsite files] 0 -weight 1
- grid columnconfigure [$itk_component(listpane) childsite files] 0 -weight 1
-
- #
- # Create the selection entry.
- #
- itk_component add selection {
- iwidgets::Combobox $itk_interior.selection -unique true \
- -command [code $this _selectSelection] -exportselection 0 \
- -labelpos nw -completion 0
- } {
- usual
-
- rename -labeltext -selectionlabel selectionLabel Text
- }
-
- #
- # Create the child site widget.
- #
- itk_component add -protected childsite {
- frame $itk_interior.fsbchildsite
- }
-
- #
- # Set the interior variable to the childsite for derived classes.
- #
- set itk_interior $itk_component(childsite)
-
- #
- # Explicitly handle configs that may have been ignored earlier.
- #
- eval itk_initialize $args
-
- #
- # When idle, pack the childsite and update the lists.
- #
- _packComponents
- _updateLists
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::destructor {} {
- if {$_packToken != ""} {after cancel $_packToken}
- if {$_updateToken != ""} {after cancel $_updateToken}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the selection box.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::childsitepos {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -fileson
-#
-# Specifies whether or not to display the files list.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::fileson {
- if {$itk_option(-fileson)} {
- $itk_component(listpane) show files
-
- _updateLists
-
- } else {
- $itk_component(listpane) hide files
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -dirson
-#
-# Specifies whether or not to display the dirs list.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::dirson {
- if {$itk_option(-dirson)} {
- $itk_component(listpane) show dirs
-
- _updateLists
-
- } else {
- $itk_component(listpane) hide dirs
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectionon
-#
-# Specifies whether or not to display the selection entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::selectionon {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filteron
-#
-# Specifies whether or not to display the filter entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::filteron {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -mask
-#
-# Specifies the initial file mask string.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::mask {
- global tcl_platform
- set prefix $_pwd
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $prefix {} prefix;
- }
-
- set curFilter $itk_option(-mask);
- $itk_component(filter) delete entry 0 end
- $itk_component(filter) insert entry 0 [file join $_pwd $itk_option(-mask)]
-
- #
- # Make sure the right most text is visable.
- #
- [$itk_component(filter) component entry] xview moveto 1
-}
-
-# ------------------------------------------------------------------
-# OPTION: -directory
-#
-# Specifies the initial default directory.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::directory {
- if {$itk_option(-directory) != {}} {
- if {! [file exists $itk_option(-directory)]} {
- error "bad directory option \"$itk_option(-directory)\":\
- directory does not exist"
- }
-
- set olddir [pwd]
- cd $itk_option(-directory)
- set _pwd [pwd]
- cd $olddir
-
- configure -mask $itk_option(-mask)
- _selectFilter
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -nomatchstring
-#
-# Specifies the string to be displayed in the files list should
-# not regular files exist in the directory.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::nomatchstring {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -dirsearchcommand
-#
-# Specifies a command to be executed to perform a directory search.
-# The command will receive the current working directory and filter
-# mask as arguments. The command should return a list of files which
-# will be placed into the directory list.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::dirsearchcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filesearchcommand
-#
-# Specifies a command to be executed to perform a file search.
-# The command will receive the current working directory and filter
-# mask as arguments. The command should return a list of files which
-# will be placed into the file list.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::filesearchcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectioncommand
-#
-# Specifies a command to be executed upon pressing return in the
-# selection entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::selectioncommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filtercommand
-#
-# Specifies a command to be executed upon pressing return in the
-# filter entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::filtercommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectdircommand
-#
-# Specifies a command to be executed following selection of a
-# directory in the directory list.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::selectdircommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectfilecommand
-#
-# Specifies a command to be executed following selection of a
-# file in the files list.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::selectfilecommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -invalid
-#
-# Specify a command to executed should the filter contents be
-# proven invalid.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::invalid {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filetype
-#
-# Specify the type of files which may appear in the file list.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::filetype {
- switch $itk_option(-filetype) {
- regular -
- directory -
- any {
- }
- default {
- error "bad filetype option \"$itk_option(-filetype)\":\
- should be regular, directory, or any"
- }
- }
-
- _updateLists
-}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the file selection box. The value may be
-# specified in any of the forms acceptable to Tk_GetPixels.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::width {
- #
- # The width option was added to the hull in the constructor.
- # So, any width value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-width) != 0} {
- set propagate 0
- } else {
- set propagate 1
- }
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $itk_component(hull)] != $propagate} {
- grid propagate $itk_component(hull) $propagate
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the file selection box. The value may be
-# specified in any of the forms acceptable to Tk_GetPixels.
-# ------------------------------------------------------------------
-configbody iwidgets::Extfileselectionbox::height {
- #
- # The height option was added to the hull in the constructor.
- # So, any height value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-height) != 0} {
- set propagate 0
- } else {
- set propagate 1
- }
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $itk_component(hull)] != $propagate} {
- grid propagate $itk_component(hull) $propagate
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::childsite {} {
- return $itk_component(childsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Returns the current selection.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::get {} {
- return [$itk_component(selection) get]
-}
-
-# ------------------------------------------------------------------
-# METHOD: filter
-#
-# The user has pressed Return in the filter. Make sure the contents
-# contain a valid directory before setting default to directory.
-# Use the invalid option to warn the user of any problems.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::filter {} {
- set newdir [file dirname [$itk_component(filter) get]]
-
- if {! [file exists $newdir]} {
- uplevel #0 "$itk_option(-invalid)"
- return
- }
-
- set _pwd $newdir;
- if {$_pwd == "."} {set _pwd [pwd]};
-
- _updateLists
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _updateLists ?now?
-#
-# Updates the contents of both the file and directory lists, as well
-# resets the positions of the filter, and lists.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_updateLists {{when "later"}} {
- switch -- $when {
- later {
- if {$_updateToken == ""} {
- set _updateToken [after idle [code $this _updateLists now]]
- }
- }
- now {
- if {$itk_option(-dirson)} {_setDirList}
- if {$itk_option(-fileson)} {_setFileList}
-
- if {$itk_option(-filteron)} {
- _setFilter
- }
- if {$itk_option(-selectionon)} {
- $itk_component(selection) icursor end
- }
- if {$itk_option(-dirson)} {
- $itk_component(dirs) justify left
- }
- if {$itk_option(-fileson)} {
- $itk_component(files) justify left
- }
- set _updateToken ""
- }
- default {
- error "bad option \"$when\": should be later or now"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setFilter
-#
-# Set the filter to the current selection in the directory list plus
-# any existing mask in the filter. Translate the two special cases
-# of '.', and '..' directory names to full path names..
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_setFilter {} {
- global tcl_platform
- set prefix [$itk_component(dirs) getcurselection]
- set curFilter [file tail [$itk_component(filter) get]]
-
- while {[regexp {\.$} $prefix]} {
- if {[file tail $prefix] == "."} {
- if {$prefix == "."} {
- if {$_pwd == "."} {
- set _pwd [pwd]
- } elseif {$_pwd == ".."} {
- set _pwd [file dirname [pwd]]
- }
- set prefix $_pwd
- } else {
- set prefix [file dirname $prefix]
- }
- } elseif {[file tail $prefix] == ".."} {
- if {$prefix != ".."} {
- set prefix [file dirname [file dirname $prefix]]
- } else {
- if {$_pwd == "."} {
- set _pwd [pwd]
- } elseif {$_pwd == ".."} {
- set _pwd [file dirname [pwd]]
- }
- set prefix [file dirname $_pwd]
- }
- } else {
- break
- }
- }
-
- if { [file pathtype $prefix] != "absolute" } {
- set prefix [file join $_pwd $prefix]
- }
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $prefix {} prefix
- }
-
- $itk_component(filter) delete entry 0 end
- $itk_component(filter) insert entry 0 [file join $prefix $curFilter]
-
- if {[info level -1] != "_selectDir"} {
- $itk_component(filter) insert list 0 [file join $prefix $curFilter]
- }
-
- #
- # Make sure insertion cursor is at the end.
- #
- $itk_component(filter) icursor end
-
- #
- # Make sure the right most text is visable.
- #
- [$itk_component(filter) component entry] xview moveto 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setSelection
-#
-# Set the contents of the selection entry to either the current
-# selection of the file or directory list dependent on which lists
-# are currently mapped. For the file list, avoid seleciton of the
-# no match string. As for the directory list, translate file names.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_setSelection {} {
- global tcl_platform
- $itk_component(selection) delete entry 0 end
-
- if {$itk_option(-fileson)} {
- set selection [$itk_component(files) getcurselection]
-
- if {$selection != $itk_option(-nomatchstring)} {
- if {[file pathtype $selection] != "absolute"} {
- set selection [file join $_pwd $selection]
- }
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $selection {} selection;
- }
-
- $itk_component(selection) insert entry 0 $selection
- } else {
- $itk_component(files) selection clear 0 end
- }
-
- } else {
- set selection [$itk_component(dirs) getcurselection]
-
- if {[file tail $selection] == "."} {
- if {$selection != "."} {
- set selection [file dirname $selection]
- } else {
- set selection $_pwd
- }
- } elseif {[file tail $selection] == ".."} {
- if {$selection != ".."} {
- set selection [file dirname [file dirname $selection]]
- } else {
- set selection [file join $_pwd ..]
- }
- } else {
- set selection [file join $_pwd $selection]
- }
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $selection {} selection;
- }
-
- $itk_component(selection) insert entry 0 $selection
- }
-
- $itk_component(selection) insert list 0 $selection
- $itk_component(selection) icursor end
-
- #
- # Make sure the right most text is visable.
- #
- [$itk_component(selection) component entry] xview moveto 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setDirList
-#
-# Clear the directory list and dependent on whether the user has
-# defined their own search procedure or not fill the list with their
-# results or those of a glob. Select the first element if it exists.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_setDirList {} {
- $itk_component(dirs) clear
-
- if {$itk_option(-dirsearchcommand) == {}} {
- set cwd $_pwd
-
- foreach i [lsort [glob -nocomplain \
- [file join $cwd .*] [file join $cwd *]]] {
- if {[file isdirectory $i]} {
- set insert "[file tail $i]"
- $itk_component(dirs) insert end "$insert"
- }
- }
-
- } else {
- set mask [file tail [$itk_component(filter) get]]
-
- foreach file [uplevel #0 $itk_option(-dirsearchcommand) $_pwd $mask] {
- $itk_component(dirs) insert end $file
- }
- }
-
- if {[$itk_component(dirs) size]} {
- $itk_component(dirs) selection clear 0 end
- $itk_component(dirs) selection set 0
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setFileList
-#
-# Clear the file list and dependent on whether the user has defined
-# their own search procedure or not fill the list with their results
-# or those of a 'glob'. If the files list has no contents, then set
-# the files list to the 'nomatchstring'. Clear all selections.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_setFileList {} {
- $itk_component(files) clear
- set mask [file tail [$itk_component(filter) get]]
-
- if {$itk_option(-filesearchcommand) == {}} {
- if {$mask == "*"} {
- set files [lsort [glob -nocomplain \
- [file join $_pwd .*] [file join $_pwd *]]]
- } else {
- set files [lsort [glob -nocomplain [file join $_pwd $mask]]]
- }
-
- foreach i $files {
- if {($itk_option(-filetype) == "regular" && \
- ! [file isdirectory $i]) || \
- ($itk_option(-filetype) == "directory" && \
- [file isdirectory $i]) || \
- ($itk_option(-filetype) == "any")} {
- set insert "[file tail $i]"
- $itk_component(files) insert end "$insert"
- }
- }
-
- } else {
- foreach file [uplevel #0 $itk_option(-filesearchcommand) $_pwd $mask] {
- $itk_component(files) insert end $file
- }
- }
-
- if {[$itk_component(files) size] == 0} {
- if {$itk_option(-nomatchstring) != {}} {
- $itk_component(files) insert end $itk_option(-nomatchstring)
- }
- }
-
- $itk_component(files) selection clear 0 end
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectDir
-#
-# For a selection in the directory list, set the filter and possibly
-# the selection entry based on the fileson option.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_selectDir {} {
- _setFilter
-
- if {$itk_option(-fileson)} {} {
- _setSelection
- }
-
- if {$itk_option(-selectdircommand) != {}} {
- uplevel #0 $itk_option(-selectdircommand)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _dblSelectDir
-#
-# For a double click event in the directory list, select the
-# directory, set the default to the selection, and update both the
-# file and directory lists.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_dblSelectDir {} {
- filter
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectFile
-#
-# The user has selected a file. Put the current selection in the
-# file list in the selection entry widget.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_selectFile {} {
- _setSelection
-
- if {$itk_option(-selectfilecommand) != {}} {
- uplevel #0 $itk_option(-selectfilecommand)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectSelection
-#
-# The user has pressed Return in the selection entry widget. Call
-# the defined selection command if it exists.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_selectSelection {} {
- if {$itk_option(-selectioncommand) != {}} {
- uplevel #0 $itk_option(-selectioncommand)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectFilter
-#
-# The user has pressed Return in the filter entry widget. Call the
-# defined selection command if it exists, otherwise just filter.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_selectFilter {} {
- if {$itk_option(-filtercommand) != {}} {
- uplevel #0 $itk_option(-filtercommand)
- } else {
- filter
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _packComponents
-#
-# Pack the selection, items, and child site widgets based on options.
-# Using the -in option of pack, put the childsite around the frame
-# in the hull for n, s, e, and w positions. Make sure and raise
-# the child site since using the 'in' option may obscure the site.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_packComponents {{when "later"}} {
- if {$when == "later"} {
- if {$_packToken == ""} {
- set _packToken [after idle [code $this _packComponents now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- set _packToken ""
-
- #
- # Forget about any previous placements via the grid and
- # reset all the possible minsizes and weights for all
- # the rows and columns.
- #
- foreach component {childsite listpane filter selection} {
- grid forget $itk_component($component)
- }
-
- for {set row 0} {$row < 6} {incr row} {
- grid rowconfigure $_interior $row -minsize 0 -weight 0
- }
-
- for {set col 0} {$col < 3} {incr col} {
- grid columnconfigure $_interior $col -minsize 0 -weight 0
- }
-
- #
- # Place all the components based on the childsite poisition
- # option.
- #
- switch $itk_option(-childsitepos) {
- n { _nPos }
-
- w { _wPos }
-
- s { _sPos }
-
- e { _ePos }
-
- top { _topPos }
-
- bottom { _bottomPos }
-
- default {
- error "bad childsitepos option \"$itk_option(-childsitepos)\":\
- should be n, e, s, w, top, or bottom"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _nPos
-#
-# Position the childsite to the north and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_nPos {} {
- grid $itk_component(childsite) -row 0 -column 0 \
- -columnspan 1 -rowspan 1 -sticky nsew -padx 5
-
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 1 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- grid rowconfigure $_interior 2 -minsize 7
- }
-
- grid $itk_component(listpane) -row 3 -column 0 \
- -columnspan 1 -sticky nsew
-
- grid rowconfigure $_interior 3 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 4 -minsize 7
- grid $itk_component(selection) -row 5 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- }
-
- grid columnconfigure $_interior 0 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _sPos
-#
-# Position the childsite to the south and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_sPos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- grid $itk_component(listpane) -row 2 -column 0 \
- -columnspan 1 -sticky nsew
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- }
-
- grid $itk_component(childsite) -row 5 -column 0 \
- -columnspan 1 -rowspan 1 -sticky nsew -padx 5
-
- grid columnconfigure $_interior 0 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _ePos
-#
-# Position the childsite to the east and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_ePos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- grid $itk_component(listpane) -row 2 -column 0 \
- -columnspan 1 -sticky nsew
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- }
-
- grid $itk_component(childsite) -row 0 -column 1 \
- -rowspan 5 -columnspan 1 -sticky nsew
-
- grid columnconfigure $_interior 0 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _wPos
-#
-# Position the childsite to the west and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_wPos {} {
- grid $itk_component(childsite) -row 0 -column 0 \
- -rowspan 5 -columnspan 1 -sticky nsew
-
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 1 \
- -columnspan 1 -sticky ew -padx 5
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- grid $itk_component(listpane) -row 2 -column 1 \
- -columnspan 1 -sticky nsew
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 1 \
- -columnspan 1 -sticky ew -padx 5
- }
-
- grid columnconfigure $_interior 1 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _topPos
-#
-# Position the childsite below the filter but above the lists and
-# all the other components appropriately based on the individual
-# "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_topPos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- }
-
- grid $itk_component(childsite) -row 1 -column 0 \
- -columnspan 1 -rowspan 1 -sticky nsew -padx 5
-
- grid $itk_component(listpane) -row 2 -column 0 -sticky nsew
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- }
-
- grid columnconfigure $_interior 0 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _bottomPos
-#
-# Position the childsite below the lists and above the selection
-# and all the other components appropriately based on the individual
-# "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Extfileselectionbox::_bottomPos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- grid $itk_component(listpane) -row 2 -column 0 -sticky nsew
-
- grid rowconfigure $_interior 2 -weight 1
-
- grid $itk_component(childsite) -row 3 -column 0 \
- -columnspan 1 -rowspan 1 -sticky nsew -padx 5
-
- if {$itk_option(-selectionon)} {
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 1 -sticky ew -padx 5
- }
-
- grid columnconfigure $_interior 0 -weight 1
-}
diff --git a/itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk b/itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk
deleted file mode 100644
index 06ec10557bf..00000000000
--- a/itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk
+++ /dev/null
@@ -1,182 +0,0 @@
-#
-# 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
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/feedback.itk b/itcl/iwidgets3.0.0/generic/feedback.itk
deleted file mode 100644
index 3e765bec3f8..00000000000
--- a/itcl/iwidgets3.0.0/generic/feedback.itk
+++ /dev/null
@@ -1,212 +0,0 @@
-#
-# Feedback
-# ----------------------------------------------------------------------
-# Implements a Feedback widget, to display feedback on the status of an
-# process to the user. Display is given as a percentage and as a
-# thermometer type bar. Options exist for adding a label and controlling its
-# position.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Kris Raney EMAIL: kraney@spd.dsccc.com
-#
-# @(#) $Id$
-# ----------------------------------------------------------------------
-# Copyright (c) 1996 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.
-# ======================================================================
-
-# Acknowledgements:
-#
-# Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his
-# feedback.tcl code from tk inspect. The original code is copyright 1995
-# Lawrence Berkeley Laboratory.
-#
-# This software is copyright (C) 1994 by the Lawrence Berkeley Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that: (1) source code distributions
-# retain the above copyright notice and this paragraph in its entirety, (2)
-# distributions including binary code include the above copyright notice and
-# this paragraph in its entirety in the documentation or other materials
-# provided with the distribution, and (3) all advertising materials mentioning
-# features or use of this software display the following acknowledgement:
-# ``This product includes software developed by the University of California,
-# Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
-# the University nor the names of its contributors may be used to endorse
-# or promote products derived from this software without specific prior
-# written permission.
-#
-# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-#
-# Default resources.
-#
-option add *Feedback.borderWidth 2 widgetDefault
-option add *Feedback.labelPos n widgetDefault
-option add *Feedback.barHeight 20 widgetDefault
-option add *Feedback.troughColor White widgetDefault
-option add *Feedback.barColor Blue widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Feedback {
- keep -background -cursor -foreground
-}
-
-# ------------------------------------------------------------------
-# FEEDBACK
-# ------------------------------------------------------------------
-class iwidgets::Feedback {
- inherit iwidgets::Labeledwidget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -steps steps Steps 10
-
- public {
- method reset {}
- method step {{inc 1}}
- }
-
- private {
- method _display
-
- variable _barwidth 0
- variable _stepval 0
- }
-}
-
-#
-# Provide a lowercased access method for the Dialogshell class.
-#
-proc ::iwidgets::feedback {pathName args} {
- uplevel ::iwidgets::Feedback $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-itcl::body iwidgets::Feedback::constructor {args} {
- itk_component add trough {
- frame $itk_interior.trough -relief sunken
- } {
- usual
- keep -borderwidth
- rename -background -troughcolor troughColor TroughColor
- rename -height -barheight barHeight Height
- }
-
- itk_component add bar {
- frame $itk_component(trough).bar -relief raised
- } {
- usual
- keep -borderwidth
- rename -background -barcolor barColor BarColor
- rename -height -barheight barHeight Height
- }
- pack $itk_component(bar) -side left -fill y -anchor w
-
- itk_component add percentage {
- label $itk_interior.percentage -text "0%"
- }
- grid $itk_component(trough) -row 1 -column 0 -sticky sew -padx 2 -pady 2
- grid $itk_component(percentage) -row 2 -column 0 -sticky nsew -padx 2 -pady 2
- grid rowconfigure $itk_interior 0 -weight 1
- grid rowconfigure $itk_interior 1 -weight 1
- grid columnconfigure $itk_interior 0 -weight 1
-
- bind $itk_component(hull) <Configure> [itcl::code $this _display]
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-itcl::body iwidgets::Feedback::destructor {} {
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -steps
-#
-# Set the total number of steps.
-# ------------------------------------------------------------------
-itcl::configbody iwidgets::Feedback::steps {
- step 0
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# -----------------------------------------------------------------------------
-# PROTECTED METHOD: _display
-#
-# Displays the bar in the trough with the width set using the current number
-# of steps.
-# -----------------------------------------------------------------------------
-itcl::body iwidgets::Feedback::_display {} {
- update idletasks
- set troughwidth [winfo width $itk_component(trough)]
- set _barwidth [expr \
- (1.0*$troughwidth-(2.0*[$itk_component(trough) cget -borderwidth])) / \
- $itk_option(-steps)]
- set fraction [expr int((1.0*$_stepval)/$itk_option(-steps)*100.0)]
-
- $itk_component(percentage) config -text "$fraction%"
- $itk_component(bar) config -width [expr $_barwidth*$_stepval]
-
- update
-}
-
-# ------------------------------------------------------------------
-# METHOD: reset
-#
-# Resets the status bar to 0
-# ------------------------------------------------------------------
-itcl::body iwidgets::Feedback::reset {} {
- set _stepval 0
- _display
-}
-
-# ------------------------------------------------------------------
-# METHOD: step ?inc?
-#
-# Increase the value of the status bar by inc. Default to 1
-# ------------------------------------------------------------------
-itcl::body iwidgets::Feedback::step {{inc 1}} {
-
- if {$_stepval >= $itk_option(-steps)} {
- return
- }
-
- incr _stepval $inc
- _display
-}
diff --git a/itcl/iwidgets3.0.0/generic/fileselectionbox.itk b/itcl/iwidgets3.0.0/generic/fileselectionbox.itk
deleted file mode 100644
index b164afbfd49..00000000000
--- a/itcl/iwidgets3.0.0/generic/fileselectionbox.itk
+++ /dev/null
@@ -1,1245 +0,0 @@
-#
-# Fileselectionbox
-# ----------------------------------------------------------------------
-# Implements a file selection box in a style similar to the OSF/Motif
-# standard XmFileselectionbox composite widget. The Fileselectionbox
-# is composed of directory and file scrolled lists as well as filter
-# and selection entry fields.
-#
-# ----------------------------------------------------------------------
-# 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 Fileselectionbox {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -insertbackground -insertborderwidth -insertofftime -insertontime \
- -insertwidth -jump -labelfont -selectbackground -selectborderwidth \
- -textbackground -textfont -troughcolor
-}
-
-# ------------------------------------------------------------------
-# FILESELECTIONBOX
-# ------------------------------------------------------------------
-class iwidgets::Fileselectionbox {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -childsitepos childSitePos Position s
- itk_option define -fileson filesOn FilesOn true
- itk_option define -dirson dirsOn DirsOn true
- itk_option define -selectionon selectionOn SelectionOn true
- itk_option define -filteron filterOn FilterOn true
- itk_option define -mask mask Mask {*}
- itk_option define -directory directory Directory {}
- itk_option define -nomatchstring noMatchString NoMatchString {}
- itk_option define -dirsearchcommand dirSearchCommand Command {}
- itk_option define -filesearchcommand fileSearchCommand Command {}
- itk_option define -selectioncommand selectionCommand Command {}
- itk_option define -filtercommand filterCommand Command {}
- itk_option define -selectdircommand selectDirCommand Command {}
- itk_option define -selectfilecommand selectFileCommand Command {}
- itk_option define -invalid invalid Command {bell}
- itk_option define -filetype fileType FileType {regular}
- itk_option define -width width Width 350
- itk_option define -height height Height 300
-
- public {
- method childsite {}
- method get {}
- method filter {}
- }
-
- public {
- method _selectDir {}
- method _dblSelectDir {}
- method _selectFile {}
- method _selectSelection {}
- method _selectFilter {}
- }
-
- protected {
- method _packComponents {{when later}}
- method _updateLists {{when later}}
- }
-
- private {
- method _setFilter {}
- method _setSelection {}
- method _setDirList {}
- method _setFileList {}
-
- method _nPos {}
- method _sPos {}
- method _ePos {}
- method _wPos {}
- method _topPos {}
- method _centerPos {}
- method _bottomPos {}
-
- variable _packToken "" ;# non-null => _packComponents pending
- variable _updateToken "" ;# non-null => _updateLists pending
- variable _pwd "." ;# present working dir
- variable _interior ;# original interior setting
- }
-}
-
-#
-# Provide a lowercased access method for the Fileselectionbox class.
-#
-proc ::iwidgets::fileselectionbox {pathName args} {
- uplevel ::iwidgets::Fileselectionbox $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Fileselectionbox.borderWidth 2 widgetDefault
-
-option add *Fileselectionbox.filterLabel Filter widgetDefault
-option add *Fileselectionbox.dirsLabel Directories widgetDefault
-option add *Fileselectionbox.filesLabel Files widgetDefault
-option add *Fileselectionbox.selectionLabel Selection widgetDefault
-
-option add *Fileselectionbox.width 350 widgetDefault
-option add *Fileselectionbox.height 300 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::constructor {args} {
- #
- # Add back to the hull width and height options and make the
- # borderwidth zero since we don't need it.
- #
- itk_option add hull.width hull.height
- component hull configure -borderwidth 0
-
- set _interior $itk_interior
-
- #
- # Create the filter entry.
- #
- itk_component add filter {
- iwidgets::Entryfield $itk_interior.filter -labelpos nw \
- -command [code $this _selectFilter] -exportselection 0
- } {
- usual
-
- rename -labeltext -filterlabel filterLabel Text
- }
-
- #
- # Create the directory list.
- #
- itk_component add dirs {
- iwidgets::Scrolledlistbox $itk_interior.dirs \
- -selectioncommand [code $this _selectDir] \
- -selectmode single -exportselection 0 \
- -visibleitems 1x1 -labelpos nw \
- -hscrollmode static -vscrollmode static \
- -dblclickcommand [code $this _dblSelectDir]
- } {
- usual
-
- rename -labeltext -dirslabel dirsLabel Text
- }
-
- #
- # Create the files list.
- #
- itk_component add files {
- iwidgets::Scrolledlistbox $itk_interior.files \
- -selectioncommand [code $this _selectFile] \
- -selectmode single -exportselection 0 \
- -visibleitems 1x1 -labelpos nw \
- -hscrollmode static -vscrollmode static
- } {
- usual
-
- rename -labeltext -fileslabel filesLabel Text
- }
-
- #
- # Create the selection entry.
- #
- itk_component add selection {
- iwidgets::Entryfield $itk_interior.selection -labelpos nw \
- -command [code $this _selectSelection] -exportselection 0
- } {
- usual
-
- rename -labeltext -selectionlabel selectionLabel Text
- }
-
- #
- # Create the child site widget.
- #
- itk_component add -protected childsite {
- frame $itk_interior.fsbchildsite
- }
-
- #
- # Set the interior variable to the childsite for derived classes.
- #
- set itk_interior $itk_component(childsite)
-
- #
- # Explicitly handle configs that may have been ignored earlier.
- #
- eval itk_initialize $args
-
- #
- # When idle, pack the childsite and update the lists.
- #
- _packComponents
- _updateLists
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::destructor {} {
- if {$_packToken != ""} {after cancel $_packToken}
- if {$_updateToken != ""} {after cancel $_updateToken}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the selection box.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::childsitepos {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -fileson
-#
-# Specifies whether or not to display the files list.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::fileson {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -dirson
-#
-# Specifies whether or not to display the dirs list.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::dirson {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectionon
-#
-# Specifies whether or not to display the selection entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::selectionon {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filteron
-#
-# Specifies whether or not to display the filter entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::filteron {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -mask
-#
-# Specifies the initial file mask string.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::mask {
- global tcl_platform
- set prefix $_pwd
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $prefix {} prefix;
- }
-
- set curFilter $itk_option(-mask);
- $itk_component(filter) delete 0 end
- $itk_component(filter) insert 0 [file join $_pwd $itk_option(-mask)]
-
- #
- # Make sure the right most text is visable.
- #
- $itk_component(filter) xview moveto 1
-}
-
-# ------------------------------------------------------------------
-# OPTION: -directory
-#
-# Specifies the initial default directory.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::directory {
- if {$itk_option(-directory) != {}} {
- if {! [file exists $itk_option(-directory)]} {
- error "bad directory option \"$itk_option(-directory)\":\
- directory does not exist"
- }
-
- set olddir [pwd]
- cd $itk_option(-directory)
- set _pwd [pwd]
- cd $olddir
-
- configure -mask $itk_option(-mask)
- _selectFilter
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -nomatchstring
-#
-# Specifies the string to be displayed in the files list should
-# not regular files exist in the directory.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::nomatchstring {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -dirsearchcommand
-#
-# Specifies a command to be executed to perform a directory search.
-# The command will receive the current working directory and filter
-# mask as arguments. The command should return a list of files which
-# will be placed into the directory list.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::dirsearchcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filesearchcommand
-#
-# Specifies a command to be executed to perform a file search.
-# The command will receive the current working directory and filter
-# mask as arguments. The command should return a list of files which
-# will be placed into the file list.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::filesearchcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectioncommand
-#
-# Specifies a command to be executed upon pressing return in the
-# selection entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::selectioncommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filtercommand
-#
-# Specifies a command to be executed upon pressing return in the
-# filter entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::filtercommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectdircommand
-#
-# Specifies a command to be executed following selection of a
-# directory in the directory list.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::selectdircommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectfilecommand
-#
-# Specifies a command to be executed following selection of a
-# file in the files list.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::selectfilecommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -invalid
-#
-# Specify a command to executed should the filter contents be
-# proven invalid.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::invalid {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filetype
-#
-# Specify the type of files which may appear in the file list.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::filetype {
- switch $itk_option(-filetype) {
- regular -
- directory -
- any {
- }
- default {
- error "bad filetype option \"$itk_option(-filetype)\":\
- should be regular, directory, or any"
- }
- }
-
- _updateLists
-}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the file selection box. The value may be
-# specified in any of the forms acceptable to Tk_GetPixels.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::width {
- #
- # The width option was added to the hull in the constructor.
- # So, any width value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-width) != 0} {
- set propagate 0
- } else {
- set propagate 1
- }
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $itk_component(hull)] != $propagate} {
- grid propagate $itk_component(hull) $propagate
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the file selection box. The value may be
-# specified in any of the forms acceptable to Tk_GetPixels.
-# ------------------------------------------------------------------
-configbody iwidgets::Fileselectionbox::height {
- #
- # The height option was added to the hull in the constructor.
- # So, any height value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-height) != 0} {
- set propagate 0
- } else {
- set propagate 1
- }
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $itk_component(hull)] != $propagate} {
- grid propagate $itk_component(hull) $propagate
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::childsite {} {
- return $itk_component(childsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Returns the current selection.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::get {} {
- return [$itk_component(selection) get]
-}
-
-# ------------------------------------------------------------------
-# METHOD: filter
-#
-# The user has pressed Return in the filter. Make sure the contents
-# contain a valid directory before setting default to directory.
-# Use the invalid option to warn the user of any problems.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::filter {} {
- set newdir [file dirname [$itk_component(filter) get]]
-
- if {! [file exists $newdir]} {
- uplevel #0 "$itk_option(-invalid)"
- return
- }
-
- set _pwd $newdir;
- if {$_pwd == "."} {set _pwd [pwd]};
-
- _updateLists
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _updateLists ?now?
-#
-# Updates the contents of both the file and directory lists, as well
-# resets the positions of the filter, and lists.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_updateLists {{when "later"}} {
- switch -- $when {
- later {
- if {$_updateToken == ""} {
- set _updateToken [after idle [code $this _updateLists now]]
- }
- }
- now {
- if {$itk_option(-dirson)} {_setDirList}
- if {$itk_option(-fileson)} {_setFileList}
-
- if {$itk_option(-filteron)} {
- _setFilter
- }
- if {$itk_option(-selectionon)} {
- $itk_component(selection) icursor end
- }
- if {$itk_option(-dirson)} {
- $itk_component(dirs) justify left
- }
- if {$itk_option(-fileson)} {
- $itk_component(files) justify left
- }
- set _updateToken ""
- }
- default {
- error "bad option \"$when\": should be later or now"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setFilter
-#
-# Set the filter to the current selection in the directory list plus
-# any existing mask in the filter. Translate the two special cases
-# of '.', and '..' directory names to full path names..
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_setFilter {} {
- global tcl_platform
- set prefix [$itk_component(dirs) getcurselection]
- set curFilter [file tail [$itk_component(filter) get]]
-
- while {[regexp {\.$} $prefix]} {
- if {[file tail $prefix] == "."} {
- if {$prefix == "."} {
- if {$_pwd == "."} {
- set _pwd [pwd]
- } elseif {$_pwd == ".."} {
- set _pwd [file dirname [pwd]]
- }
- set prefix $_pwd
- } else {
- set prefix [file dirname $prefix]
- }
- } elseif {[file tail $prefix] == ".."} {
- if {$prefix != ".."} {
- set prefix [file dirname [file dirname $prefix]]
- } else {
- if {$_pwd == "."} {
- set _pwd [pwd]
- } elseif {$_pwd == ".."} {
- set _pwd [file dirname [pwd]]
- }
- set prefix [file dirname $_pwd]
- }
- } else {
- break
- }
- }
-
- if { [file pathtype $prefix] != "absolute" } {
- set prefix [file join $_pwd $prefix]
- }
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $prefix {} prefix
- }
-
- $itk_component(filter) delete 0 end
- $itk_component(filter) insert 0 [file join $prefix $curFilter]
-
- #
- # Make sure insertion cursor is at the end.
- #
- $itk_component(filter) icursor end
-
- #
- # Make sure the right most text is visable.
- #
- $itk_component(filter) xview moveto 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setSelection
-#
-# Set the contents of the selection entry to either the current
-# selection of the file or directory list dependent on which lists
-# are currently mapped. For the file list, avoid seleciton of the
-# no match string. As for the directory list, translate file names.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_setSelection {} {
- global tcl_platform
- $itk_component(selection) delete 0 end
-
- if {$itk_option(-fileson)} {
- set selection [$itk_component(files) getcurselection]
-
- if {$selection != $itk_option(-nomatchstring)} {
- if {[file pathtype $selection] != "absolute"} {
- set selection [file join $_pwd $selection]
- }
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $selection {} selection;
- }
-
- $itk_component(selection) insert 0 $selection
- } else {
- $itk_component(files) selection clear 0 end
- }
-
- } else {
- set selection [$itk_component(dirs) getcurselection]
-
- if {[file tail $selection] == "."} {
- if {$selection != "."} {
- set selection [file dirname $selection]
- } else {
- set selection $_pwd
- }
- } elseif {[file tail $selection] == ".."} {
- if {$selection != ".."} {
- set selection [file dirname [file dirname $selection]]
- } else {
- set selection [file join $_pwd ..]
- }
- } else {
- set selection [file join $_pwd $selection]
- }
-
- #
- # Remove automounter paths.
- #
- if {$tcl_platform(platform) == "unix"} {
- regsub {^/(tmp_mnt|export)} $selection {} selection;
- }
-
- $itk_component(selection) delete 0 end
- $itk_component(selection) insert 0 $selection
- }
-
- $itk_component(selection) icursor end
-
- #
- # Make sure the right most text is visable.
- #
- $itk_component(selection) xview moveto 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setDirList
-#
-# Clear the directory list and dependent on whether the user has
-# defined their own search procedure or not fill the list with their
-# results or those of a glob. Select the first element if it exists.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_setDirList {} {
- $itk_component(dirs) clear
-
- if {$itk_option(-dirsearchcommand) == {}} {
- foreach i [lsort [glob -nocomplain \
- [file join $_pwd .*] [file join $_pwd *]]] {
- if {[file isdirectory $i]} {
- $itk_component(dirs) insert end [file tail "$i"]
- }
- }
-
- } else {
- set mask [file tail [$itk_component(filter) get]]
-
- foreach file [uplevel #0 $itk_option(-dirsearchcommand) $_pwd $mask] {
- $itk_component(dirs) insert end $file
- }
- }
-
- if {[$itk_component(dirs) size]} {
- $itk_component(dirs) selection clear 0 end
- $itk_component(dirs) selection set 0
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setFileList
-#
-# Clear the file list and dependent on whether the user has defined
-# their own search procedure or not fill the list with their results
-# or those of a 'glob'. If the files list has no contents, then set
-# the files list to the 'nomatchstring'. Clear all selections.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_setFileList {} {
- $itk_component(files) clear
- set mask [file tail [$itk_component(filter) get]]
-
- if {$itk_option(-filesearchcommand) == {}} {
- if {$mask == "*"} {
- set files [lsort [glob -nocomplain \
- [file join $_pwd .*] [file join $_pwd *]]]
- } else {
- set files [lsort [glob -nocomplain [file join $_pwd $mask]]]
- }
-
- foreach i $files {
- if {($itk_option(-filetype) == "regular" && \
- ! [file isdirectory $i]) || \
- ($itk_option(-filetype) == "directory" && \
- [file isdirectory $i]) || \
- ($itk_option(-filetype) == "any")} {
- $itk_component(files) insert end [file tail "$i"]
- }
- }
-
- } else {
- foreach file [uplevel #0 $itk_option(-filesearchcommand) $_pwd $mask] {
- $itk_component(files) insert end $file
- }
- }
-
- if {[$itk_component(files) size] == 0} {
- if {$itk_option(-nomatchstring) != {}} {
- $itk_component(files) insert end $itk_option(-nomatchstring)
- }
- }
-
- $itk_component(files) selection clear 0 end
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectDir
-#
-# For a selection in the directory list, set the filter and possibly
-# the selection entry based on the fileson option.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_selectDir {} {
- _setFilter
-
- if {$itk_option(-fileson)} {} {
- _setSelection
- }
-
- if {$itk_option(-selectdircommand) != {}} {
- uplevel #0 $itk_option(-selectdircommand)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _dblSelectDir
-#
-# For a double click event in the directory list, select the
-# directory, set the default to the selection, and update both the
-# file and directory lists.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_dblSelectDir {} {
- filter
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectFile
-#
-# The user has selected a file. Put the current selection in the
-# file list in the selection entry widget.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_selectFile {} {
- _setSelection
-
- if {$itk_option(-selectfilecommand) != {}} {
- uplevel #0 $itk_option(-selectfilecommand)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectSelection
-#
-# The user has pressed Return in the selection entry widget. Call
-# the defined selection command if it exists.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_selectSelection {} {
- if {$itk_option(-selectioncommand) != {}} {
- uplevel #0 $itk_option(-selectioncommand)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _selectFilter
-#
-# The user has pressed Return in the filter entry widget. Call the
-# defined selection command if it exists, otherwise just filter.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_selectFilter {} {
- if {$itk_option(-filtercommand) != {}} {
- uplevel #0 $itk_option(-filtercommand)
- } else {
- filter
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _packComponents
-#
-# Pack the selection, items, and child site widgets based on options.
-# Using the -in option of pack, put the childsite around the frame
-# in the hull for n, s, e, and w positions. Make sure and raise
-# the child site since using the 'in' option may obscure the site.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_packComponents {{when "later"}} {
- if {$when == "later"} {
- if {$_packToken == ""} {
- set _packToken [after idle [code $this _packComponents now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- set _packToken ""
-
- #
- # Forget about any previous placements via the grid and
- # reset all the possible minsizes and weights for all
- # the rows and columns.
- #
- foreach component {childsite filter dirs files selection} {
- grid forget $itk_component($component)
- }
-
- for {set row 0} {$row < 6} {incr row} {
- grid rowconfigure $_interior $row -minsize 0 -weight 0
- }
-
- for {set col 0} {$col < 4} {incr col} {
- grid columnconfigure $_interior $col -minsize 0 -weight 0
- }
-
- #
- # Place all the components based on the childsite poisition
- # option.
- #
- switch $itk_option(-childsitepos) {
- n { _nPos }
-
- w { _wPos }
-
- s { _sPos }
-
- e { _ePos }
-
- center { _centerPos }
-
- top { _topPos }
-
- bottom { _bottomPos }
-
- default {
- error "bad childsitepos option \"$itk_option(-childsitepos)\":\
- should be n, e, s, w, center, top, or bottom"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _nPos
-#
-# Position the childsite to the north and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_nPos {} {
- grid $itk_component(childsite) -row 0 -column 0 \
- -columnspan 3 -rowspan 1 -sticky nsew
-
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 1 -column 0 \
- -columnspan 3 -sticky ew
- grid rowconfigure $_interior 2 -minsize 7
- }
-
- if {$itk_option(-dirson)} {
- grid $itk_component(dirs) -row 3 -column 0 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-fileson)} {
- grid $itk_component(files) -row 3 -column 2 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-dirson)} {
- if {$itk_option(-fileson)} {
- grid columnconfigure $_interior 1 -minsize 7
- } else {
- grid configure $itk_component(dirs) -columnspan 3 -column 0
- }
- } else {
- if {$itk_option(-fileson)} {
- grid configure $itk_component(files) -columnspan 3 -column 0
- }
- }
-
- grid rowconfigure $_interior 3 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 4 -minsize 7
- grid $itk_component(selection) -row 5 -column 0 \
- -columnspan 3 -sticky ew
- }
-
- grid columnconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 2 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _sPos
-#
-# Position the childsite to the south and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_sPos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 3 -sticky ew
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- if {$itk_option(-dirson)} {
- grid $itk_component(dirs) -row 2 -column 0 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-fileson)} {
- grid $itk_component(files) -row 2 -column 2 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-dirson)} {
- if {$itk_option(-fileson)} {
- grid columnconfigure $_interior 1 -minsize 7
- } else {
- grid configure $itk_component(dirs) -columnspan 3 -column 0
- }
- } else {
- if {$itk_option(-fileson)} {
- grid configure $itk_component(files) -columnspan 3 -column 0
- }
- }
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 3 -sticky ew
- }
-
- grid $itk_component(childsite) -row 5 -column 0 \
- -columnspan 3 -rowspan 1 -sticky nsew
- grid columnconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 2 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _ePos
-#
-# Position the childsite to the east and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_ePos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 3 -sticky ew
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- if {$itk_option(-dirson)} {
- grid $itk_component(dirs) -row 2 -column 0 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-fileson)} {
- grid $itk_component(files) -row 2 -column 2 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-dirson)} {
- if {$itk_option(-fileson)} {
- grid columnconfigure $_interior 1 -minsize 7
- } else {
- grid configure $itk_component(dirs) -columnspan 3 -column 0
- }
- } else {
- if {$itk_option(-fileson)} {
- grid configure $itk_component(files) -columnspan 3 -column 0
- }
- }
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 3 -sticky ew
- }
-
- grid $itk_component(childsite) -row 0 -column 3 \
- -rowspan 5 -columnspan 1 -sticky nsew
- grid columnconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 2 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _wPos
-#
-# Position the childsite to the west and all the other components
-# appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_wPos {} {
- grid $itk_component(childsite) -row 0 -column 0 \
- -rowspan 5 -columnspan 1 -sticky nsew
-
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 1 \
- -columnspan 3 -sticky ew
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- if {$itk_option(-dirson)} {
- grid $itk_component(dirs) -row 2 -column 1 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-fileson)} {
- grid $itk_component(files) -row 2 -column 3 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-dirson)} {
- if {$itk_option(-fileson)} {
- grid columnconfigure $_interior 2 -minsize 7
- } else {
- grid configure $itk_component(dirs) -columnspan 3 -column 1
- }
- } else {
- if {$itk_option(-fileson)} {
- grid configure $itk_component(files) -columnspan 3 -column 1
- }
- }
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 1 \
- -columnspan 3 -sticky ew
- }
-
- grid columnconfigure $_interior 1 -weight 1
- grid columnconfigure $_interior 3 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _topPos
-#
-# Position the childsite below the filter but above the lists and
-# all the other components appropriately based on the individual
-# "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_topPos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 3 -sticky ew
- }
-
- grid $itk_component(childsite) -row 1 -column 0 \
- -columnspan 3 -rowspan 1 -sticky nsew
-
- if {$itk_option(-dirson)} {
- grid $itk_component(dirs) -row 2 -column 0 -sticky nsew
- }
- if {$itk_option(-fileson)} {
- grid $itk_component(files) -row 2 -column 2 -sticky nsew
- }
- if {$itk_option(-dirson)} {
- if {$itk_option(-fileson)} {
- grid columnconfigure $_interior 1 -minsize 7
- } else {
- grid configure $itk_component(dirs) -columnspan 3 -column 0
- }
- } else {
- if {$itk_option(-fileson)} {
- grid configure $itk_component(files) -columnspan 3 -column 0
- }
- }
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 3 -sticky ew
- }
-
- grid columnconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 2 -weight 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _centerPos
-#
-# Position the childsite between the lists and all the other
-# components appropriately based on the individual "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_centerPos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 3 -sticky ew
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- if {$itk_option(-dirson)} {
- grid $itk_component(dirs) -row 2 -column 0 \
- -columnspan 1 -sticky nsew
- }
- if {$itk_option(-fileson)} {
- grid $itk_component(files) -row 2 -column 2 \
- -columnspan 1 -sticky nsew
- }
- grid $itk_component(childsite) -row 2 \
- -columnspan 1 -rowspan 1 -sticky nsew
-
- if {$itk_option(-dirson)} {
- if {$itk_option(-fileson)} {
- grid configure $itk_component(childsite) -column 1
- grid columnconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 2 -weight 1
-
- } else {
- grid configure $itk_component(dirs) -columnspan 2 -column 0
- grid configure $itk_component(childsite) -column 2
- grid columnconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 1 -weight 1
- }
- } else {
- grid configure $itk_component(childsite) -column 0
- if {$itk_option(-fileson)} {
- grid configure $itk_component(files) -columnspan 2 \
- -column 1
- grid columnconfigure $_interior 1 -weight 1
- grid columnconfigure $_interior 2 -weight 1
- } else {
- grid columnconfigure $_interior 0 -weight 1
- }
- }
-
- grid rowconfigure $_interior 2 -weight 1
-
- if {$itk_option(-selectionon)} {
- grid rowconfigure $_interior 3 -minsize 7
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 3 -sticky ew
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _bottomPos
-#
-# Position the childsite below the lists and above the selection
-# and all the other components appropriately based on the individual
-# "on" options.
-# ------------------------------------------------------------------
-body iwidgets::Fileselectionbox::_bottomPos {} {
- if {$itk_option(-filteron)} {
- grid $itk_component(filter) -row 0 -column 0 \
- -columnspan 3 -sticky ew
- grid rowconfigure $_interior 1 -minsize 7
- }
-
- if {$itk_option(-dirson)} {
- grid $itk_component(dirs) -row 2 -column 0 -sticky nsew
- }
- if {$itk_option(-fileson)} {
- grid $itk_component(files) -row 2 -column 2 -sticky nsew
- }
- if {$itk_option(-dirson)} {
- if {$itk_option(-fileson)} {
- grid columnconfigure $_interior 1 -minsize 7
- } else {
- grid configure $itk_component(dirs) -columnspan 3 -column 0
- }
- } else {
- if {$itk_option(-fileson)} {
- grid configure $itk_component(files) -columnspan 3 -column 0
- }
- }
- grid rowconfigure $_interior 2 -weight 1
-
- grid $itk_component(childsite) -row 3 -column 0 \
- -columnspan 3 -rowspan 1 -sticky nsew
-
- if {$itk_option(-selectionon)} {
- grid $itk_component(selection) -row 4 -column 0 \
- -columnspan 3 -sticky ew
- }
-
- grid columnconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 2 -weight 1
-}
diff --git a/itcl/iwidgets3.0.0/generic/fileselectiondialog.itk b/itcl/iwidgets3.0.0/generic/fileselectiondialog.itk
deleted file mode 100644
index 0889e4a6c5c..00000000000
--- a/itcl/iwidgets3.0.0/generic/fileselectiondialog.itk
+++ /dev/null
@@ -1,181 +0,0 @@
-#
-# 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
-# ------------------------------------------------------------------
-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
-# ------------------------------------------------------------------
-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 [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::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
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/finddialog.itk b/itcl/iwidgets3.0.0/generic/finddialog.itk
deleted file mode 100755
index 894d0db4fff..00000000000
--- a/itcl/iwidgets3.0.0/generic/finddialog.itk
+++ /dev/null
@@ -1,488 +0,0 @@
-#
-# Finddialog
-# ----------------------------------------------------------------------
-# This class implements a dialog for searching text. It prompts the
-# user for a search string and the method of searching which includes
-# case sensitive, regular expressions, backwards, and all.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.dsccc.com
-#
-# @(#) RCS: $Id$
-# ----------------------------------------------------------------------
-# Copyright (c) 1996 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 Finddialog {
- keep -background -cursor -foreground -selectcolor
-}
-
-# ------------------------------------------------------------------
-# IPRFINDDIALOG
-# ------------------------------------------------------------------
-class ::iwidgets::Finddialog {
- inherit iwidgets::Dialogshell
-
- constructor {args} {}
-
- itk_option define -selectcolor selectColor Background {}
- itk_option define -clearcommand clearCommand Command {}
- itk_option define -matchcommand matchCommand Command {}
- itk_option define -patternbackground patternBackground Background \#707070
- itk_option define -patternforeground patternForeground Foreground White
- itk_option define -searchbackground searchBackground Background \#c4c4c4
- itk_option define -searchforeground searchForeground Foreground Black
- itk_option define -textwidget textWidget TextWidget {}
-
- public {
- method clear {}
- method find {}
- }
-
- protected {
- method _get {setting}
- method _textExists {}
-
- common _optionValues ;# Current settings of check buttons.
- common _searchPoint ;# Starting location for searches
- common _matchLen ;# Matching pattern string length
- }
-}
-
-#
-# Provide a lowercased access method for the ::finddialog class.
-#
-proc ::iwidgets::finddialog {pathName args} {
- uplevel ::iwidgets::Finddialog $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Finddialog.title "Find" widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body ::iwidgets::Finddialog::constructor {args} {
- #
- # Add the find pattern entryfield.
- #
- itk_component add pattern {
- iwidgets::Entryfield $itk_interior.pattern -labeltext "Find:"
- }
- bind [$itk_component(pattern) component entry] \
- <Return> "[code $this invoke]; break"
-
- #
- # Add the find all checkbutton.
- #
- itk_component add all {
- checkbutton $itk_interior.all \
- -variable [scope _optionValues($this-all)] \
- -text "All"
- }
-
- #
- # Add the case consideration checkbutton.
- #
- itk_component add case {
- checkbutton $itk_interior.case \
- -variable [scope _optionValues($this-case)] \
- -text "Consider Case"
- }
-
- #
- # Add the regular expression checkbutton.
- #
- itk_component add regexp {
- checkbutton $itk_interior.regexp \
- -variable [scope _optionValues($this-regexp)] \
- -text "Use Regular Expression"
- }
-
- #
- # Add the find backwards checkbutton.
- #
- itk_component add backwards {
- checkbutton $itk_interior.backwards \
- -variable [scope _optionValues($this-backwards)] \
- -text "Find Backwards"
- }
-
- #
- # Add the find, clear, and close buttons, making find be the default.
- #
- add Find -text Find -command [code $this find]
- add Clear -text Clear -command [code $this clear]
- add Close -text Close -command [code $this deactivate 0]
-
- default Find
-
- #
- # Use the grid to layout the components.
- #
- grid $itk_component(pattern) -row 0 -column 0 \
- -padx 10 -pady 10 -columnspan 4 -sticky ew
- grid $itk_component(all) -row 1 -column 0
- grid $itk_component(case) -row 1 -column 1
- grid $itk_component(regexp) -row 1 -column 2
- grid $itk_component(backwards) -row 1 -column 3
-
- grid columnconfigure $itk_interior 0 -weight 1
- grid columnconfigure $itk_interior 1 -weight 1
- grid columnconfigure $itk_interior 2 -weight 1
- grid columnconfigure $itk_interior 3 -weight 1
-
- #
- # Initialize all the configuration options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -clearcommand
-#
-# Specifies a command to be invoked following a clear operation.
-# The command is meant to be a means of notification that the
-# clear has taken place and allow other actions to take place such
-# as disabling a find again menu.
-# ------------------------------------------------------------------
-configbody iwidgets::Finddialog::clearcommand {}
-
-# ------------------------------------------------------------------
-# OPTION: -matchcommand
-#
-# Specifies a command to be invoked following a find operation.
-# The command is called with a match point as an argument. Should
-# a match not be found the match point is {}.
-# ------------------------------------------------------------------
-configbody iwidgets::Finddialog::matchcommand {}
-
-# ------------------------------------------------------------------
-# OPTION: -patternbackground
-#
-# Specifies the background color of the text matching the search
-# pattern. It may have any of the forms accepted by Tk_GetColor.
-# ------------------------------------------------------------------
-configbody iwidgets::Finddialog::patternbackground {}
-
-# ------------------------------------------------------------------
-# OPTION: -patternforeground
-#
-# Specifies the foreground color of the pattern matching a search
-# operation. It may have any of the forms accepted by Tk_GetColor.
-# ------------------------------------------------------------------
-configbody iwidgets::Finddialog::patternforeground {}
-
-# ------------------------------------------------------------------
-# OPTION: -searchforeground
-#
-# Specifies the foreground color of the line containing the matching
-# pattern from a search operation. It may have any of the forms
-# accepted by Tk_GetColor.
-# ------------------------------------------------------------------
-configbody iwidgets::Finddialog::searchforeground {}
-
-# ------------------------------------------------------------------
-# OPTION: -searchbackground
-#
-# Specifies the background color of the line containing the matching
-# pattern from a search operation. It may have any of the forms
-# accepted by Tk_GetColor.
-# ------------------------------------------------------------------
-configbody iwidgets::Finddialog::searchbackground {}
-
-# ------------------------------------------------------------------
-# OPTION: -textwidget
-#
-# Specifies the scrolledtext or text widget to be searched.
-# ------------------------------------------------------------------
-configbody iwidgets::Finddialog::textwidget {
- if {$itk_option(-textwidget) != {}} {
- set _searchPoint($itk_option(-textwidget)) 1.0
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: clear
-#
-# Clear the pattern entryfield and the indicators.
-# ------------------------------------------------------------------
-body ::iwidgets::Finddialog::clear {} {
- $itk_component(pattern) clear
-
- if {[_textExists]} {
- set _searchPoint($itk_option(-textwidget)) 1.0
-
- $itk_option(-textwidget) tag remove search-line 1.0 end
- $itk_option(-textwidget) tag remove search-pattern 1.0 end
- }
-
- if {$itk_option(-clearcommand) != {}} {
- eval $itk_option(-clearcommand)
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: find
-#
-# Search for a specific text string in the text widget given by
-# the -textwidget option. Should this option not be set to an
-# existing widget, then a quick exit is made.
-# ------------------------------------------------------------------
-body ::iwidgets::Finddialog::find {} {
- if {! [_textExists]} {
- return
- }
-
- #
- # Clear any existing indicators in the text widget.
- #
- $itk_option(-textwidget) tag remove search-line 1.0 end
- $itk_option(-textwidget) tag remove search-pattern 1.0 end
-
- #
- # Make sure the search pattern isn't just blank. If so, skip this.
- #
- set pattern [_get pattern]
-
- if {[string trim $pattern] == ""} {
- return
- }
-
- #
- # After clearing out any old highlight indicators from a previous
- # search, we'll be building our search command piece-meal based on
- # the current settings of the checkbuttons in the find dialog. The
- # first we'll add is a variable to catch the count of the length
- # of the string matching the pattern.
- #
- set precmd "$itk_option(-textwidget) search \
- -count [list [scope _matchLen($this)]]"
-
- if {! [_get case]} {
- append precmd " -nocase"
- }
-
- if {[_get regexp]} {
- append precmd " -regexp"
- } else {
- append precmd " -exact"
- }
-
- #
- # If we are going to find all matches, then the start point for
- # the search will be the beginning of the text; otherwise, we'll
- # use the last known starting point +/- a character depending on
- # the direction.
- #
- if {[_get all]} {
- set _searchPoint($itk_option(-textwidget)) 1.0
- } else {
- if {[_get backwards]} {
- append precmd " -backwards"
- } else {
- append precmd " -forwards"
- }
- }
-
- #
- # Get the pattern to be matched and add it to the search command.
- # Since it may contain embedded spaces, we'll wrap it in a list.
- #
- append precmd " [list $pattern]"
-
- #
- # If the search is for all matches, then we'll be performing the
- # search until no more matches are found; otherwise, we'll break
- # out of the loop after one search.
- #
- while {1} {
- if {[_get all]} {
- set postcmd " $_searchPoint($itk_option(-textwidget)) end"
-
- } else {
- set postcmd " $_searchPoint($itk_option(-textwidget))"
- }
-
- #
- # Create the final search command out of the pre and post parts
- # and evaluate it which returns the location of the matching string.
- #
- set cmd {}
- append cmd $precmd $postcmd
-
- if {[catch {eval $cmd} matchPoint] != 0} {
- set _searchPoint($itk_option(-textwidget)) 1.0
- return {}
- }
-
- #
- # If a match exists, then we'll make this spot be the new starting
- # position. Then we'll tag the line and the pattern in the line.
- # The foreground and background settings will lite these positions
- # in the text widget up.
- #
- if {$matchPoint != {}} {
- set _searchPoint($itk_option(-textwidget)) $matchPoint
-
- $itk_option(-textwidget) tag add search-line \
- "$_searchPoint($itk_option(-textwidget)) linestart" \
- "$_searchPoint($itk_option(-textwidget))"
- $itk_option(-textwidget) tag add search-line \
- "$_searchPoint($itk_option(-textwidget)) + \
- $_matchLen($this) chars" \
- "$_searchPoint($itk_option(-textwidget)) lineend"
- $itk_option(-textwidget) tag add search-pattern \
- $_searchPoint($itk_option(-textwidget)) \
- "$_searchPoint($itk_option(-textwidget)) + \
- $_matchLen($this) chars"
- }
-
- #
- # Set the search point for the next time through to be one
- # character more or less from the current search point based
- # on the direction.
- #
- if {[_get all] || ! [_get backwards]} {
- set _searchPoint($itk_option(-textwidget)) \
- [$itk_option(-textwidget) index \
- "$_searchPoint($itk_option(-textwidget)) + 1c"]
- } else {
- set _searchPoint($itk_option(-textwidget)) \
- [$itk_option(-textwidget) index \
- "$_searchPoint($itk_option(-textwidget)) - 1c"]
- }
-
- #
- # If this isn't a find all operation or we didn't get a match, exit.
- #
- if {(! [_get all]) || ($matchPoint == {})} {
- break
- }
- }
-
- #
- # Configure the colors for the search-line and search-pattern.
- #
- $itk_option(-textwidget) tag configure search-line \
- -foreground $itk_option(-searchforeground)
- $itk_option(-textwidget) tag configure search-line \
- -background $itk_option(-searchbackground)
- $itk_option(-textwidget) tag configure search-pattern \
- -background $itk_option(-patternbackground)
- $itk_option(-textwidget) tag configure search-pattern \
- -foreground $itk_option(-patternforeground)
-
- #
- # Adjust the view to be the last matched position.
- #
- if {$matchPoint != {}} {
- $itk_option(-textwidget) see $matchPoint
- }
-
- #
- # There may be multiple matches of the pattern on a single line,
- # so we'll set the tag priorities such that the pattern tag is higher.
- #
- $itk_option(-textwidget) tag raise search-pattern search-line
-
- #
- # If a match command is defined, then call it with the match point.
- #
- if {$itk_option(-matchcommand) != {}} {
- [subst $itk_option(-matchcommand)] $matchPoint
- }
-
- #
- # Return the match point to the caller so they know if we found
- # anything and if so where
- #
- return $matchPoint
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _get setting
-#
-# Get the current value for the pattern, case, regexp, or backwards.
-# ------------------------------------------------------------------
-body ::iwidgets::Finddialog::_get {setting} {
- switch $setting {
- pattern {
- return [$itk_component(pattern) get]
- }
- case {
- return $_optionValues($this-case)
- }
- regexp {
- return $_optionValues($this-regexp)
- }
- backwards {
- return $_optionValues($this-backwards)
- }
- all {
- return $_optionValues($this-all)
- }
- default {
- error "bad get setting: \"$setting\", should be pattern,\
- case, regexp, backwards, or all"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _textExists
-#
-# Check the validity of the text widget option. Does it exist and
-# is it of the class Text or Scrolledtext.
-# ------------------------------------------------------------------
-body ::iwidgets::Finddialog::_textExists {} {
- if {$itk_option(-textwidget) == {}} {
- return 0
- }
-
- if {! [winfo exists $itk_option(-textwidget)]} {
- error "bad finddialog text widget value: \"$itk_option(-textwidget)\",\
- the widget doesn't exist"
- }
-
- if {([winfo class $itk_option(-textwidget)] != "Text") &&
- ([itcl::find objects -isa iwidgets::Scrolledtext *::$itk_option(-textwidget)] == "")} {
- error "bad finddialog text widget value: \"$itk_option(-textwidget)\",\
- must be of the class Text or based on Scrolledtext"
- }
-
- return 1
-}
diff --git a/itcl/iwidgets3.0.0/generic/hierarchy.itk b/itcl/iwidgets3.0.0/generic/hierarchy.itk
deleted file mode 100644
index f315fd07b8a..00000000000
--- a/itcl/iwidgets3.0.0/generic/hierarchy.itk
+++ /dev/null
@@ -1,1928 +0,0 @@
-# Hierarchy
-# ----------------------------------------------------------------------
-# Hierarchical data viewer. Manages a list of nodes that can be
-# expanded or collapsed. Individual nodes can be highlighted.
-# Clicking with the right mouse button on any item brings up a
-# special item menu. Clicking on the background area brings up
-# a different popup menu.
-# ----------------------------------------------------------------------
-# AUTHOR: Michael J. McLennan
-# Bell Labs Innovations for Lucent Technologies
-# mmclennan@lucent.com
-#
-# Mark L. Ulferts
-# DSC Communications
-# mulferts@austin.dsccc.com
-#
-# RCS: $Id$
-# ----------------------------------------------------------------------
-# Copyright (c) 1996 Lucent Technologies
-# ======================================================================
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that the copyright notice and warranty disclaimer appear in
-# supporting documentation, and that the names of Lucent Technologies
-# any of their entities not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# Lucent Technologies disclaims all warranties with regard to this
-# software, including all implied warranties of merchantability and
-# fitness. In no event shall Lucent Technologies 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.
-#
-# ----------------------------------------------------------------------
-# Copyright (c) 1996 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 Hierarchy {
- keep -cursor -textfont -font
- keep -background -foreground -textbackground
- keep -selectbackground -selectforeground
-}
-
-# ------------------------------------------------------------------
-# HIERARCHY
-# ------------------------------------------------------------------
-class iwidgets::Hierarchy {
- inherit iwidgets::Scrolledwidget
-
- constructor {args} {}
-
- destructor {}
-
- itk_option define -alwaysquery alwaysQuery AlwaysQuery 0
- itk_option define -closedicon closedIcon Icon {}
- itk_option define -dblclickcommand dblClickCommand Command {}
- itk_option define -expanded expanded Expanded 0
- itk_option define -filter filter Filter 0
- itk_option define -font font Font \
- -*-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*
- itk_option define -height height Height 0
- itk_option define -iconcommand iconCommand Command {}
- itk_option define -icondblcommand iconDblCommand Command {}
- itk_option define -imagecommand imageCommand Command {}
- itk_option define -imagedblcommand imageDblCommand Command {}
- itk_option define -imagemenuloadcommand imageMenuLoadCommand Command {}
- itk_option define -markbackground markBackground Foreground #a0a0a0
- itk_option define -markforeground markForeground Background Black
- itk_option define -nodeicon nodeIcon Icon {}
- itk_option define -openicon openIcon Icon {}
- itk_option define -querycommand queryCommand Command {}
- itk_option define -selectcommand selectCommand Command {}
- itk_option define -selectbackground selectBackground Foreground #c3c3c3
- itk_option define -selectforeground selectForeground Background Black
- itk_option define -textmenuloadcommand textMenuLoadCommand Command {}
- itk_option define -visibleitems visibleItems VisibleItems 80x24
- itk_option define -width width Width 0
-
- public {
- method clear {}
- method collapse {node}
- method current {}
- method draw {{when -now}}
- method expand {node}
- method expanded {node}
- method expState { }
- method mark {op args}
- method prune {node}
- method refresh {node}
- method selection {op args}
- method toggle {node}
-
- method bbox {index}
- method compare {index1 op index2}
- method debug {args} {eval $args}
- method delete {first {last {}}}
- method dlineinfo {index}
- method dump {args}
- method get {index1 {index2 {}}}
- method index {index}
- method insert {args}
- method scan {option args}
- method search {args}
- method see {index}
- method tag {op args}
- method window {option args}
- method xview {args}
- method yview {args}
- }
-
- protected {
- method _contents {uid}
- method _post {x y}
- method _drawLevel {node indent}
- method _select {x y}
- method _deselectSubNodes {uid}
- method _deleteNodeInfo {uid}
- method _getParent {uid}
- method _getHeritage {uid}
- method _isInternalTag {tag}
- method _iconSelect {node icon}
- method _iconDblSelect {node icon}
- method _imageSelect {node}
- method _imageDblClick {node}
- method _imagePost {node image type x y}
- method _double {x y}
- }
-
- private {
- variable _filterCode "" ;# Compact view flag.
- variable _hcounter 0 ;# Counter for hierarchy icons
- variable _icons ;# Array of user icons by uid
- variable _images ;# Array of our icons by uid
- variable _indents ;# Array of indentation by uid
- variable _marked ;# Array of marked nodes by uid
- variable _markers "" ;# List of markers for level being drawn
- variable _nodes ;# List of subnodes by uid
- variable _pending "" ;# Pending draw flag
- variable _posted "" ;# List of tags at posted menu position
- variable _selected ;# Array of selected nodes by uid
- variable _tags ;# Array of user tags by uid
- variable _text ;# Array of displayed text by uid
- variable _states ;# Array of selection state by uid
- variable _ucounter 0 ;# Counter for user icons
- }
-}
-
-#
-# Provide a lowercased access method for the Hierarchy class.
-#
-proc ::iwidgets::hierarchy {pathName args} {
- uplevel ::iwidgets::Hierarchy $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Hierarchy.menuCursor arrow widgetDefault
-option add *Hierarchy.labelPos n widgetDefault
-option add *Hierarchy.tabs 30 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::constructor {args} {
- itk_option remove iwidgets::Labeledwidget::state
-
- #
- # Our -width and -height options are slightly different than
- # those implemented by our base class, so we're going to
- # remove them and redefine our own.
- #
- itk_option remove iwidgets::Scrolledwidget::width
- itk_option remove iwidgets::Scrolledwidget::height
-
- #
- # Create a clipping frame which will provide the border for
- # relief display.
- #
- itk_component add clipper {
- frame $itk_interior.clipper
- } {
- usual
-
- keep -borderwidth -relief -highlightthickness -highlightcolor
- rename -highlightbackground -background background Background
- }
- grid $itk_component(clipper) -row 0 -column 0 -sticky nsew
- grid rowconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 0 -weight 1
-
- #
- # Create a text widget for displaying our hierarchy.
- #
- itk_component add list {
- text $itk_component(clipper).list -wrap none -cursor center_ptr \
- -state disabled -width 1 -height 1 \
- -xscrollcommand \
- [code $this _scrollWidget $itk_interior.horizsb] \
- -yscrollcommand \
- [code $this _scrollWidget $itk_interior.vertsb] \
- -borderwidth 0 -highlightthickness 0
- } {
- usual
-
- keep -spacing1 -spacing2 -spacing3 -tabs
- rename -font -textfont textFont Font
- rename -background -textbackground textBackground Background
- ignore -highlightthickness -highlightcolor
- ignore -insertbackground -insertborderwidth
- ignore -insertontime -insertofftime -insertwidth
- ignore -selectborderwidth
- ignore -borderwidth
- }
- grid $itk_component(list) -row 0 -column 0 -sticky nsew
- grid rowconfigure $itk_component(clipper) 0 -weight 1
- grid columnconfigure $itk_component(clipper) 0 -weight 1
-
- #
- # Configure the command on the vertical scroll bar in the base class.
- #
- $itk_component(vertsb) configure \
- -command [code $itk_component(list) yview]
-
- #
- # Configure the command on the horizontal scroll bar in the base class.
- #
- $itk_component(horizsb) configure \
- -command [code $itk_component(list) xview]
-
- #
- # Configure our text component's tab settings for twenty levels.
- #
- set tabs ""
- for {set i 1} {$i < 20} {incr i} {
- lappend tabs [expr $i*12+4]
- }
- $itk_component(list) configure -tabs $tabs
-
- #
- # Add popup menus that can be configured by the user to add
- # new functionality.
- #
- itk_component add itemMenu {
- menu $itk_component(list).itemmenu -tearoff 0
- } {
- usual
- ignore -tearoff
- rename -cursor -menucursor menuCursor Cursor
- }
-
- itk_component add bgMenu {
- menu $itk_component(list).bgmenu -tearoff 0
- } {
- usual
- ignore -tearoff
- rename -cursor -menucursor menuCursor Cursor
- }
-
- #
- # Adjust the bind tags to remove the class bindings. Also, add
- # bindings for mouse button 1 to do selection and button 3 to
- # display a popup.
- #
- bindtags $itk_component(list) [list $itk_component(list) . all]
-
- bind $itk_component(list) <ButtonPress-1> \
- [code $this _select %x %y]
-
- bind $itk_component(list) <Double-1> \
- [code $this _double %x %y]
-
- bind $itk_component(list) <ButtonPress-3> \
- [code $this _post %x %y]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::destructor {} {
- if {$_pending != ""} {
- after cancel $_pending
- }
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -font
-#
-# Font used for text in the list.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::font {
- $itk_component(list) tag configure info \
- -font $itk_option(-font) -spacing1 6
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectbackground
-#
-# Background color scheme for selected nodes.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::selectbackground {
- $itk_component(list) tag configure hilite \
- -background $itk_option(-selectbackground)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectforeground
-#
-# Foreground color scheme for selected nodes.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::selectforeground {
- $itk_component(list) tag configure hilite \
- -foreground $itk_option(-selectforeground)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -markbackground
-#
-# Background color scheme for marked nodes.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::markbackground {
- $itk_component(list) tag configure lowlite \
- -background $itk_option(-markbackground)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -markforeground
-#
-# Foreground color scheme for marked nodes.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::markforeground {
- $itk_component(list) tag configure lowlite \
- -foreground $itk_option(-markforeground)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -querycommand
-#
-# Command executed to query the contents of each node. If this
-# command contains "%n", it is replaced with the name of the desired
-# node. In its simpilest form it should return the children of the
-# given node as a list which will be depicted in the display.
-#
-# Since the names of the children are used as tags in the underlying
-# text widget, each child must be unique in the hierarchy. Due to
-# the unique requirement, the nodes shall be reffered to as uids
-# or uid in the singular sense.
-#
-# {uid [uid ...]}
-#
-# where uid is a unique id and primary key for the hierarchy entry
-#
-# Should the unique requirement pose a problem, the list returned
-# can take on another more extended form which enables the
-# association of text to be displayed with the uids. The uid must
-# still be unique, but the text does not have to obey the unique
-# rule. In addition, the format also allows the specification of
-# additional tags to be used on the same entry in the hierarchy
-# as the uid and additional icons to be displayed just before
-# the node. The tags and icons are considered to be the property of
-# the user in that the hierarchy widget will not depend on any of
-# their values.
-#
-# {{uid [text [tags [icons]]]} {uid [text [tags [icons]]]} ...}
-#
-# where uid is a unique id and primary key for the hierarchy entry
-# text is the text to be displayed for this uid
-# tags is a list of user tags to be applied to the entry
-# icons is a list of icons to be displayed in front of the text
-#
-# The hierarchy widget does a look ahead from each node to determine
-# if the node has a children. This can be cost some performace with
-# large hierarchies. User's can avoid this by providing a hint in
-# the user tags. A tag of "leaf" or "branch" tells the hierarchy
-# widget the information it needs to know thereby avoiding the look
-# ahead operation.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::querycommand {
- clear
- draw -eventually
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectcommand
-#
-# Command executed to select an item in the list. If this command
-# contains "%n", it is replaced with the name of the selected node.
-# If it contains a "%s", it is replaced with a boolean indicator of
-# the node's current selection status, where a value of 1 denotes
-# that the node is currently selected and 0 that it is not.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::selectcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -dblclickcommand
-#
-# Command executed to double click an item in the list. If this command
-# contains "%n", it is replaced with the name of the selected node.
-# If it contains a "%s", it is replaced with a boolean indicator of
-# the node's current selection status, where a value of 1 denotes
-# that the node is currently selected and 0 that it is not.
-#
-# Douglas R. Howard, Jr.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::dblclickcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -iconcommand
-#
-# Command executed upon selection of user icons. If this command
-# contains "%n", it is replaced with the name of the node the icon
-# belongs to. Should it contain "%i" then the icon name is
-# substituted.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::iconcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -icondblcommand
-#
-# Command executed upon double selection of user icons. If this command
-# contains "%n", it is replaced with the name of the node the icon
-# belongs to. Should it contain "%i" then the icon name is
-# substituted.
-#
-# Douglas R. Howard, Jr.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::icondblcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -imagecommand
-#
-# Command executed upon selection of image icons. If this command
-# contains "%n", it is replaced with the name of the node the icon
-# belongs to. Should it contain "%i" then the icon name is
-# substituted.
-#
-# Douglas R. Howard, Jr.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::imagecommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -imagedblcommand
-#
-# Command executed upon double selection of user icons. If this command
-# contains "%n", it is replaced with the name of the node the icon
-# belongs to.
-#
-# Douglas R. Howard, Jr.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::imagedblcommand {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -alwaysquery
-#
-# Boolean flag which tells the hierarchy widget weather or not
-# each refresh of the display should be via a new query using
-# the -querycommand option or use the values previous found the
-# last time the query was made.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::alwaysquery {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -filter
-#
-# When true only the branch nodes and selected items are displayed.
-# This gives a compact view of important items.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::filter {
- switch -- $itk_option(-filter) {
- 1 - true - yes - on {
- set newCode {set display [info exists _selected($child)]}
- }
- 0 - false - no - off {
- set newCode {set display 1}
- }
- default {
- error "bad filter option \"$itk_option(-filter)\":\
- should be boolean"
- }
- }
- if {$newCode != $_filterCode} {
- set _filterCode $newCode
- draw -eventually
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -expanded
-#
-# When true, the hierarchy will be completely expanded when it
-# is first displayed. A fresh display can be triggered by
-# resetting the -querycommand option.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::expanded {
- switch -- $itk_option(-expanded) {
- 1 - true - yes - on {
- ;# okay
- }
- 0 - false - no - off {
- ;# okay
- }
- default {
- error "bad expanded option \"$itk_option(-expanded)\":\
- should be boolean"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -openicon
-#
-# Specifies the open icon image to be used in the hierarchy. Should
-# one not be provided, then one will be generated, pixmap if
-# possible, bitmap otherwise.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::openicon {
- if {$itk_option(-openicon) == {}} {
- if {[lsearch [image names] openFolder] == -1} {
- if {[lsearch [image types] pixmap] != -1} {
- image create pixmap openFolder -data {
- /* XPM */
- static char * dir_opened [] = {
- "16 16 4 1",
- /* colors */
- ". c grey85 m white g4 grey90",
- "b c black m black g4 black",
- "y c yellow m white g4 grey80",
- "g c grey70 m white g4 grey70",
- /* pixels */
- "................",
- "................",
- "................",
- "..bbbb..........",
- ".bggggb.........",
- "bggggggbbbbbbb..",
- "bggggggggggggb..",
- "bgbbbbbbbbbbbbbb",
- "bgbyyyyyyyyyyybb",
- "bbyyyyyyyyyyyyb.",
- "bbyyyyyyyyyyybb.",
- "byyyyyyyyyyyyb..",
- "bbbbbbbbbbbbbb..",
- "................",
- "................",
- "................"};
- }
- } else {
- image create bitmap openFolder -data {
- #define open_width 16
- #define open_height 16
- static char open_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x42, 0x00,
- 0x81, 0x3f, 0x01, 0x20, 0xf9, 0xff, 0x0d, 0xc0,
- 0x07, 0x40, 0x03, 0x60, 0x01, 0x20, 0x01, 0x30,
- 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- }
- }
- }
- set itk_option(-openicon) openFolder
- } else {
- if {[lsearch [image names] $itk_option(-openicon)] == -1} {
- error "bad openicon option \"$itk_option(-openicon)\":\
- should be an existing image"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -closedicon
-#
-# Specifies the closed icon image to be used in the hierarchy.
-# Should one not be provided, then one will be generated, pixmap if
-# possible, bitmap otherwise.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::closedicon {
- if {$itk_option(-closedicon) == {}} {
- if {[lsearch [image names] closedFolder] == -1} {
- if {[lsearch [image types] pixmap] != -1} {
- image create pixmap closedFolder -data {
- /* XPM */
- static char *dir_closed[] = {
- "16 16 3 1",
- ". c grey85 m white g4 grey90",
- "b c black m black g4 black",
- "y c yellow m white g4 grey80",
- "................",
- "................",
- "................",
- "..bbbb..........",
- ".byyyyb.........",
- "bbbbbbbbbbbbbb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "bbbbbbbbbbbbbb..",
- "................",
- "................",
- "................"};
- }
- } else {
- image create bitmap closedFolder -data {
- #define closed_width 16
- #define closed_height 16
- static char closed_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00,
- 0xfe, 0x7f, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40,
- 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40,
- 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- }
- }
- }
- set itk_option(-closedicon) closedFolder
- } else {
- if {[lsearch [image names] $itk_option(-closedicon)] == -1} {
- error "bad closedicon option \"$itk_option(-closedicon)\":\
- should be an existing image"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -nodeicon
-#
-# Specifies the node icon image to be used in the hierarchy. Should
-# one not be provided, then one will be generated, pixmap if
-# possible, bitmap otherwise.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::nodeicon {
- if {$itk_option(-nodeicon) == {}} {
- if {[lsearch [image names] nodeFolder] == -1} {
- if {[lsearch [image types] pixmap] != -1} {
- image create pixmap nodeFolder -data {
- /* XPM */
- static char *dir_node[] = {
- "16 16 3 1",
- ". c grey85 m white g4 grey90",
- "b c black m black g4 black",
- "y c yellow m white g4 grey80",
- "................",
- "................",
- "................",
- "...bbbbbbbbbbb..",
- "..bybyyyyyyyyb..",
- ".byybyyyyyyyyb..",
- "byyybyyyyyyyyb..",
- "bbbbbyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "byyyyyyyyyyyyb..",
- "bbbbbbbbbbbbbb..",
- "................",
- "................",
- "................"};
- }
- } else {
- image create bitmap nodeFolder -data {
- #define node_width 16
- #define node_height 16
- static char node_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x50, 0x40,
- 0x48, 0x40, 0x44, 0x40, 0x42, 0x40, 0x7e, 0x40,
- 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40,
- 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- }
- }
- }
- set itk_option(-nodeicon) nodeFolder
- } else {
- if {[lsearch [image names] $itk_option(-nodeicon)] == -1} {
- error "bad nodeicon option \"$itk_option(-nodeicon)\":\
- should be an existing image"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the hierarchy widget as an entire unit.
-# The value may be specified in any of the forms acceptable to
-# Tk_GetPixels. Any additional space needed to display the other
-# components such as labels, margins, and scrollbars force the text
-# to be compressed. A value of zero along with the same value for
-# the height causes the value given for the visibleitems option
-# to be applied which administers geometry constraints in a different
-# manner.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::width {
- if {$itk_option(-width) != 0} {
- set shell [lindex [grid info $itk_component(clipper)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $shell]} {
- grid propagate $shell no
- }
-
- $itk_component(list) configure -width 1
- $shell configure \
- -width [winfo pixels $shell $itk_option(-width)]
- } else {
- configure -visibleitems $itk_option(-visibleitems)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the hierarchy widget as an entire unit.
-# The value may be specified in any of the forms acceptable to
-# Tk_GetPixels. Any additional space needed to display the other
-# components such as labels, margins, and scrollbars force the text
-# to be compressed. A value of zero along with the same value for
-# the width causes the value given for the visibleitems option
-# to be applied which administers geometry constraints in a different
-# manner.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::height {
- if {$itk_option(-height) != 0} {
- set shell [lindex [grid info $itk_component(clipper)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $shell]} {
- grid propagate $shell no
- }
-
- $itk_component(list) configure -height 1
- $shell configure \
- -height [winfo pixels $shell $itk_option(-height)]
- } else {
- configure -visibleitems $itk_option(-visibleitems)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -visibleitems
-#
-# Specified the widthxheight in characters and lines for the text.
-# This option is only administered if the width and height options
-# are both set to zero, otherwise they take precedence. With the
-# visibleitems option engaged, geometry constraints are maintained
-# only on the text. The size of the other components such as
-# labels, margins, and scroll bars, are additive and independent,
-# effecting the overall size of the scrolled text. In contrast,
-# should the width and height options have non zero values, they
-# are applied to the scrolled text as a whole. The text is
-# compressed or expanded to maintain the geometry constraints.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::visibleitems {
- if {[regexp {^[0-9]+x[0-9]+$} $itk_option(-visibleitems)]} {
- if {($itk_option(-width) == 0) && \
- ($itk_option(-height) == 0)} {
- set chars [lindex [split $itk_option(-visibleitems) x] 0]
- set lines [lindex [split $itk_option(-visibleitems) x] 1]
-
- set shell [lindex [grid info $itk_component(clipper)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {! [grid propagate $shell]} {
- grid propagate $shell yes
- }
-
- $itk_component(list) configure -width $chars -height $lines
- }
-
- } else {
- error "bad visibleitems option\
- \"$itk_option(-visibleitems)\": should be\
- widthxheight"
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -textmenuloadcommand
-#
-# Dynamically loads the popup menu based on what was selected.
-#
-# Douglas R. Howard, Jr.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::textmenuloadcommand {}
-
-# ------------------------------------------------------------------
-# OPTION: -imagemenuloadcommand
-#
-# Dynamically loads the popup menu based on what was selected.
-#
-# Douglas R. Howard, Jr.
-# ------------------------------------------------------------------
-configbody iwidgets::Hierarchy::imagemenuloadcommand {}
-
-
-# ------------------------------------------------------------------
-# PUBLIC METHODS
-# ------------------------------------------------------------------
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: clear
-#
-# Removes all items from the display including all tags and icons.
-# The display will remain empty until the -filter or -querycommand
-# options are set.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::clear {} {
- $itk_component(list) configure -state normal -cursor watch
- $itk_component(list) delete 1.0 end
- $itk_component(list) configure -state disabled -cursor $itk_option(-cursor)
-
- catch {unset _nodes}
- catch {unset _text}
- catch {unset _tags}
- catch {unset _icons}
- catch {unset _states}
- catch {unset _images}
- catch {unset _indents}
-
- return
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: selection option ?uid uid...?
-#
-# Handles all operations controlling selections in the hierarchy.
-# Selections may be cleared, added, removed, or queried. The add and
-# remove options accept a series of unique ids.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::selection {op args} {
- switch -- $op {
- clear {
- $itk_component(list) tag remove hilite 1.0 end
- catch {unset _selected}
- return
- }
- add {
- foreach node $args {
- set _selected($node) 1
- catch {
- $itk_component(list) tag add hilite \
- "$node.first" "$node.last"
- }
- }
- }
- remove {
- foreach node $args {
- catch {
- unset _selected($node)
- $itk_component(list) tag remove hilite \
- "$node.first" "$node.last"
- }
- }
- }
- get {
- return [array names _selected]
- }
- default {
- error "bad selection operation \"$op\":\
- should be add, remove, clear or get"
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: mark option ?arg arg...?
-#
-# Handles all operations controlling marks in the hierarchy. Marks may
-# be cleared, added, removed, or queried. The add and remove options
-# accept a series of unique ids.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::mark {op args} {
- switch -- $op {
- clear {
- $itk_component(list) tag remove lowlite 1.0 end
- catch {unset _marked}
- return
- }
- add {
- foreach node $args {
- set _marked($node) 1
- catch {
- $itk_component(list) tag add lowlite \
- "$node.first" "$node.last"
- }
- }
- }
- remove {
- foreach node $args {
- catch {
- unset _marked($node)
- $itk_component(list) tag remove lowlite \
- "$node.first" "$node.last"
- }
- }
- }
- get {
- return [array names _marked]
- }
- default {
- error "bad mark operation \"$op\":\
- should be add, remove, clear or get"
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: current
-#
-# Returns the node that was most recently selected by the right mouse
-# button when the item menu was posted. Usually used by the code
-# in the item menu to figure out what item is being manipulated.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::current {} {
- return $_posted
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: expand node
-#
-# Expands the hierarchy beneath the specified node. Since this can take
-# a moment for large hierarchies, the cursor will be changed to a watch
-# during the expansion.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::expand {node} {
- if {! [info exists _states($node)]} {
- error "bad expand node argument: \"$node\", the node doesn't exist"
- }
-
- if {!$_states($node) && \
- (([lsearch $_tags($node) branch] != -1) || \
- ([llength [_contents $node]] > 0))} {
- $itk_component(list) configure -state normal -cursor watch
- update
-
- #
- # Get the indentation level for the node.
- #
- set indent $_indents($node)
-
- set _markers ""
- $itk_component(list) mark set insert "$node:start"
- _drawLevel $node $indent
-
- #
- # Following the draw, all our markers need adjusting.
- #
- foreach {name index} $_markers {
- $itk_component(list) mark set $name $index
- }
-
- #
- # Set the image to be the open icon, denote the new state,
- # and set the cursor back to normal along with the state.
- #
- $_images($node) configure -image $itk_option(-openicon)
-
- set _states($node) 1
-
- $itk_component(list) configure -state disabled \
- -cursor $itk_option(-cursor)
- }
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: collapse node
-#
-# Collapses the hierarchy beneath the specified node. Since this can
-# take a moment for large hierarchies, the cursor will be changed to a
-# watch during the expansion.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::collapse {node} {
- if {! [info exists _states($node)]} {
- error "bad collapse node argument: \"$node\", the node doesn't exist"
- }
-
- if {[info exists _states($node)] && $_states($node) && \
- (([lsearch $_tags($node) branch] != -1) || \
- ([llength [_contents $node]] > 0))} {
- $itk_component(list) configure -state normal -cursor watch
- update
-
- _deselectSubNodes $node
-
- $itk_component(list) delete "$node:start" "$node:end"
-
- catch {$_images($node) configure -image $itk_option(-closedicon)}
-
- set _states($node) 0
-
- $itk_component(list) configure -state disabled \
- -cursor $itk_option(-cursor)
- }
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: toggle node
-#
-# Toggles the hierarchy beneath the specified node. If the hierarchy
-# is currently expanded, then it is collapsed, and vice-versa.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::toggle {node} {
- if {! [info exists _states($node)]} {
- error "bad toggle node argument: \"$node\", the node doesn't exist"
- }
-
- if {$_states($node)} {
- collapse $node
- } else {
- expand $node
- }
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: prune node
-#
-# Removes a particular node from the hierarchy.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::prune {node} {
- #
- # While we're working, change the state and cursor so we can
- # edit the text and give a busy visual clue.
- #
- $itk_component(list) configure -state normal -cursor watch
-
- #
- # Recursively delete all the subnode information from our internal
- # arrays and remove all the tags.
- #
- _deleteNodeInfo $node
-
- #
- # If the mark $node:end exists then the node has decendents so
- # so we'll remove from the mark $node:start to $node:end in order
- # to delete all the subnodes below it in the text.
- #
- if {[lsearch [$itk_component(list) mark names] $node:end] != -1} {
- $itk_component(list) delete $node:start $node:end
- $itk_component(list) mark unset $node:end
- }
-
- #
- # Next we need to remove the node itself. Using the ranges for
- # its tag we'll remove it from line start to the end plus one
- # character which takes us to the start of the next node.
- #
- foreach {start end} [$itk_component(list) tag ranges $node] {
- $itk_component(list) delete "$start linestart" "$end + 1 char"
- }
-
- #
- # Delete the tag for this node.
- #
- $itk_component(list) tag delete $node
-
- #
- # The node must be removed from the list of subnodes for its parent.
- # We don't really have a clean way to do upwards referencing, so
- # the dirty way will have to do. We'll cycle through each node
- # and if this node is in its list of subnodes, we'll remove it.
- #
- foreach uid [array names _nodes] {
- if {[set index [lsearch $_nodes($uid) $node]] != -1} {
- set _nodes($uid) [lreplace $_nodes($uid) $index $index]
- }
- }
-
- #
- # We're done, so change the state and cursor back to their
- # original values.
- #
- $itk_component(list) configure -state disabled -cursor $itk_option(-cursor)
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: draw ?when?
-#
-# Performs a complete draw of the entire hierarchy.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::draw {{when -now}} {
- if {$when == "-eventually"} {
- if {$_pending == ""} {
- set _pending [after idle [code $this draw -now]]
- }
- return
- } elseif {$when != "-now"} {
- error "bad when option \"$when\": should be -eventually or -now"
- }
- $itk_component(list) configure -state normal -cursor watch
- update
-
- $itk_component(list) delete 1.0 end
- catch {unset _images}
- set _markers ""
-
- _drawLevel "" ""
-
- foreach {name index} $_markers {
- $itk_component(list) mark set $name $index
- }
-
- $itk_component(list) configure -state disabled -cursor $itk_option(-cursor)
- set _pending ""
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: refresh node
-#
-# Performs a redraw of a specific node. If that node is currently
-# not visible, then no action is taken.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::refresh {node} {
- if {! [info exists _nodes($node)]} {
- error "bad refresh node argument: \"$node\", the node doesn't exist"
- }
-
-
- if {! $_states($node)} {return}
-
- foreach parent [_getHeritage $node] {
- if {! $_states($parent)} {return}
- }
-
- $itk_component(list) configure -state normal -cursor watch
- $itk_component(list) delete $node:start $node:end
-
- set _markers ""
- $itk_component(list) mark set insert "$node:start"
- set indent $_indents($node)
-
- _drawLevel $node $indent
-
- foreach {name index} $_markers {
- $itk_component(list) mark set $name $index
- }
-
- $itk_component(list) configure -state disabled -cursor $itk_option(-cursor)
-}
-
-# ------------------------------------------------------------------
-# THIN WRAPPED TEXT METHODS:
-#
-# The following methods are thin wraps of standard text methods.
-# Consult the Tk text man pages for functionallity and argument
-# documentation.
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: bbox index
-#
-# Returns four element list describing the bounding box for the list
-# item at index
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::bbox {index} {
- return [$itk_component(list) bbox $index]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD compare index1 op index2
-#
-# Compare indices according to relational operator.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::compare {index1 op index2} {
- return [$itk_component(list) compare $index1 $op $index2]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD delete first ?last?
-#
-# Delete a range of characters from the text.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::delete {first {last {}}} {
- $itk_component(list) configure -state normal -cursor watch
- $itk_component(list) delete $first $last
- $itk_component(list) configure -state disabled -cursor $itk_option(-cursor)
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD dump ?switches? index1 ?index2?
-#
-# Returns information about the contents of the text widget from
-# index1 to index2.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::dump {args} {
- return [eval $itk_component(list) dump $args]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD dlineinfo index
-#
-# Returns a five element list describing the area occupied by the
-# display line containing index.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::dlineinfo {index} {
- return [$itk_component(list) dlineinfo $index]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD get index1 ?index2?
-#
-# Return text from start index to end index.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::get {index1 {index2 {}}} {
- return [$itk_component(list) get $index1 $index2]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD index index
-#
-# Return position corresponding to index.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::index {index} {
- return [$itk_component(list) index $index]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD insert index chars ?tagList?
-#
-# Insert text at index.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::insert {args} {
- $itk_component(list) configure -state normal -cursor watch
- eval $itk_component(list) insert $args
- $itk_component(list) configure -state disabled -cursor $itk_option(-cursor)
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD scan option args
-#
-# Implements scanning on texts.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::scan {option args} {
- eval $itk_component(list) scan $option $args
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD search ?switches? pattern index ?varName?
-#
-# Searches the text for characters matching a pattern.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::search {args} {
- return [eval $itk_component(list) search $args]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD see index
-#
-# Adjusts the view in the window so the character at index is
-# visible.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::see {index} {
- $itk_component(list) see $index
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD tag option ?arg arg ...?
-#
-# Manipulate tags dependent on options.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::tag {op args} {
- return [eval $itk_component(list) tag $op $args]
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD window option ?arg arg ...?
-#
-# Manipulate embedded windows.
-# ------------------------------------------------------------------
-body iwidgets::Hierarchy::window {option args} {
- return [eval $itk_component(list) window $option $args]
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: xview args
-#
-# Thin wrap of the text widget's xview command.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::xview {args} {
- return [eval itk_component(list) xview $args]
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: yview args
-#
-# Thin wrap of the text widget's yview command.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::yview {args} {
- return [eval $itk_component(list) yview $args]
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: expanded node
-#
-# Tells if a node is expanded or collapsed
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::expanded {node} {
- if {! [info exists _states($node)]} {
- error "bad collapse node argument: \"$node\", the node doesn't exist"
- }
-
- return $_states($node)
-}
-
-# ----------------------------------------------------------------------
-# PUBLIC METHOD: expState
-#
-# Returns a list of all expanded nodes
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::expState {} {
- set nodes [_contents ""]
- set open ""
- set i 0
- while {1} {
- if {[info exists _states([lindex $nodes $i])] &&
- $_states([lindex $nodes $i])} {
- lappend open [lindex $nodes $i]
- foreach child [_contents [lindex $nodes $i]] {
- lappend nodes $child
- }
- }
- incr i
- if {$i >= [llength $nodes]} {break}
- }
-
- return $open
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHODS
-# ------------------------------------------------------------------
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _drawLevel node indent
-#
-# Used internally by draw to draw one level of the hierarchy.
-# Draws all of the nodes under node, using the indent string to
-# indent nodes.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_drawLevel {node indent} {
- lappend _markers "$node:start" [$itk_component(list) index insert]
- set bg [$itk_component(list) cget -background]
-
- #
- # Obtain the list of subnodes for this node and cycle through
- # each one displaying it in the hierarchy.
- #
- foreach child [_contents $node] {
- set _images($child) "$itk_component(list).hicon[incr _hcounter]"
-
- if {![info exists _states($child)]} {
- set _states($child) $itk_option(-expanded)
- }
-
- #
- # Check the user tags to see if they have been kind enough
- # to tell us ahead of time what type of node we are dealing
- # with branch or leaf. If they neglected to do so, then
- # get the contents of the child node to see if it has children
- # itself.
- #
- set display 0
-
- if {[lsearch $_tags($child) leaf] != -1} {
- set type leaf
- } elseif {[lsearch $_tags($child) branch] != -1} {
- set type branch
- } else {
- if {[llength [_contents $child]] == 0} {
- set type leaf
- } else {
- set type branch
- }
- }
-
- #
- # Now that we know the type of node, branch or leaf, we know
- # the type of icon to use.
- #
- if {$type == "leaf"} {
- set icon $itk_option(-nodeicon)
- eval $_filterCode
- } else {
- if {$_states($child)} {
- set icon $itk_option(-openicon)
- } else {
- set icon $itk_option(-closedicon)
- }
- set display 1
- }
-
- #
- # If display is set then we're going to be drawing this node.
- # Save off the indentation level for this node and do the indent.
- #
- if {$display} {
- set _indents($child) "$indent\t"
- $itk_component(list) insert insert $indent
-
- #
- # Add the branch or leaf icon and setup a binding to toggle
- # its expanded/collapsed state.
- #
- label $_images($child) -image $icon -background $bg
- # DRH - enhanced and added features that handle image clicking,
- # double clicking, and right clicking behavior
- bind $_images($child) <ButtonPress-1> \
- "[code $this toggle $child]; [code $this _imageSelect $child]"
- bind $_images($child) <Double-1> [code $this _imageDblClick $child]
- bind $_images($child) <ButtonPress-3> \
- [code $this _imagePost $child $_images($child) $type %x %y]
- $itk_component(list) window create insert -window $_images($child)
-
- #
- # If any user icons exist then draw them as well. The little
- # regexp is just to check and see if they've passed in a
- # command which needs to be evaluated as opposed to just
- # a variable. Also, attach a binding to call them if their
- # icon is selected.
- #
- if {[info exists _icons($child)]} {
- foreach image $_icons($child) {
- set wid "$itk_component(list).uicon[incr _ucounter]"
-
- if {[regexp {\[.*\]} $image]} {
- eval label $wid -image $image -background $bg
- } else {
- label $wid -image $image -background $bg
- }
-
- # DRH - this will bind events to the icons to allow
- # clicking, double clicking, and right clicking actions.
- bind $wid <ButtonPress-1> \
- [code $this _iconSelect $child $image]
- bind $wid <Double-1> \
- [code $this _iconDblSelect $child $image]
- bind $wid <ButtonPress-3> \
- [code $this _imagePost $child $wid $type %x %y]
- $itk_component(list) window create insert -window $wid
- }
- }
-
- #
- # Create the list of tags to be applied to the text. Start
- # out with a tag of "info" and append "hilite" if the node
- # is currently selected, finally add the tags given by the
- # user.
- #
- set texttags [list "info" $child]
-
- if {[info exists _selected($child)]} {
- lappend texttags hilite
- }
-
- foreach tag $_tags($child) {
- lappend texttags $tag
- }
-
- #
- # Insert the text for the node along with the tags and
- # append to the markers the start of this node. The text
- # has been broken at newlines into a list. We'll make sure
- # that each line is at the same indentation position.
- #
- set firstline 1
- foreach line $_text($child) {
- if {$firstline} {
- $itk_component(list) insert insert " "
- } else {
- $itk_component(list) insert insert "$indent\t"
- }
-
- $itk_component(list) insert insert $line $texttags "\n"
- set firstline 0
- }
-
- lappend _markers "$child:start" [$itk_component(list) index insert]
-
- #
- # If the state of the node is open, proceed to draw the next
- # node below it in the hierarchy.
- #
- if {$_states($child)} {
- _drawLevel $child "$indent\t"
- }
- }
- }
-
- lappend _markers "$node:end" [$itk_component(list) index insert]
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _contents uid
-#
-# Used internally to get the contents of a particular node. If this
-# is the first time the node has been seen or the -alwaysquery
-# option is set, the -querycommand code is executed to query the node
-# list, and the list is stored until the next time it is needed.
-#
-# The querycommand may return not only the list of subnodes for the
-# node but additional information on the tags and icons to be used.
-# The return value must be parsed based on the number of elements in
-# the list where the format is a list of lists:
-#
-# {{uid [text [tags [icons]]]} {uid [text [tags [icons]]]} ...}
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_contents {uid} {
- if {! $itk_option(-alwaysquery) && [info exists _nodes($uid)]} {
- return $_nodes($uid)
- }
-
- #
- # Substitute any %n's for the node name whose children we're
- # interested in obtaining.
- #
- set cmd $itk_option(-querycommand)
- regsub -all {%n} $cmd [list $uid] cmd
-
- set nodeinfolist [uplevel \#0 $cmd]
-
- #
- # Cycle through the node information returned by the query
- # command determining if additional information such as text,
- # user tags, or user icons have been provided. For text,
- # break it into a list at any newline characters.
- #
- set _nodes($uid) {}
-
- foreach nodeinfo $nodeinfolist {
- set subnodeuid [lindex $nodeinfo 0]
- lappend _nodes($uid) $subnodeuid
-
- set llen [llength $nodeinfo]
-
- if {$llen == 0 || $llen > 4} {
- error "invalid number of elements returned by query\
- command for node: \"$uid\",\
- should be uid \[text \[tags \[icons\]\]\]"
- }
-
- if {$llen == 1} {
- set _text($subnodeuid) [split $subnodeuid \n]
- }
- if {$llen > 1} {
- set _text($subnodeuid) [split [lindex $nodeinfo 1] \n]
- }
- if {$llen > 2} {
- set _tags($subnodeuid) [lindex $nodeinfo 2]
- } else {
- set _tags($subnodeuid) unknown
- }
- if {$llen > 3} {
- set _icons($subnodeuid) [lindex $nodeinfo 3]
- }
- }
-
- #
- # Return the list of nodes.
- #
- return $_nodes($uid)
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _post x y
-#
-# Used internally to post the popup menu at the coordinate (x,y)
-# relative to the widget. If (x,y) is on an item, then the itemMenu
-# component is posted. Otherwise, the bgMenu is posted.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_post {x y} {
- set rx [expr [winfo rootx $itk_component(list)]+$x]
- set ry [expr [winfo rooty $itk_component(list)]+$y]
-
- set index [$itk_component(list) index @$x,$y]
-
- #
- # The posted variable will hold the list of tags which exist at
- # this x,y position that will be passed back to the user. They
- # don't need to know about our internal tags, info, hilite, and
- # lowlite, so remove them from the list.
- #
- set _posted {}
-
- foreach tag [$itk_component(list) tag names $index] {
- if {![_isInternalTag $tag]} {
- lappend _posted $tag
- }
- }
-
- #
- # If we have tags then do the popup at this position.
- #
- if {$_posted != {}} {
- # DRH - here is where the user's function for dynamic popup
- # menu loading is done, if the user has specified to do so with the
- # "-textmenuloadcommand"
- if {$itk_option(-textmenuloadcommand) != {}} {
- eval $itk_option(-textmenuloadcommand)
- }
- tk_popup $itk_component(itemMenu) $rx $ry
- } else {
- tk_popup $itk_component(bgMenu) $rx $ry
- }
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _imagePost node image type x y
-#
-# Used internally to post the popup menu at the coordinate (x,y)
-# relative to the widget. If (x,y) is on an image, then the itemMenu
-# component is posted.
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_imagePost {node image type x y} {
- set rx [expr [winfo rootx $image]+$x]
- set ry [expr [winfo rooty $image]+$y]
-
- #
- # The posted variable will hold the list of tags which exist at
- # this x,y position that will be passed back to the user. They
- # don't need to know about our internal tags, info, hilite, and
- # lowlite, so remove them from the list.
- #
- set _posted {}
-
- lappend _posted $node $type
-
- #
- # If we have tags then do the popup at this position.
- #
- if {$itk_option(-imagemenuloadcommand) != {}} {
- eval $itk_option(-imagemenuloadcommand)
- }
- tk_popup $itk_component(itemMenu) $rx $ry
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _select x y
-#
-# Used internally to select an item at the coordinate (x,y) relative
-# to the widget. The command associated with the -selectcommand
-# option is execute following % character substitutions. If %n
-# appears in the command, the selected node is substituted. If %s
-# appears, a boolean value representing the current selection state
-# will be substituted.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_select {x y} {
- if {$itk_option(-selectcommand) != {}} {
- if {[set seltags [$itk_component(list) tag names @$x,$y]] != {}} {
- foreach tag $seltags {
- if {![_isInternalTag $tag]} {
- lappend node $tag
- }
- }
-
- if {[lsearch $seltags "hilite"] == -1} {
- set selectstatus 0
- } else {
- set selectstatus 1
- }
-
- set cmd $itk_option(-selectcommand)
- regsub -all {%n} $cmd [list $node] cmd
- regsub -all {%s} $cmd [list $selectstatus] cmd
-
- uplevel #0 $cmd
- }
- }
-
- return
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _double x y
-#
-# Used internally to double click an item at the coordinate (x,y) relative
-# to the widget. The command associated with the -dblclickcommand
-# option is execute following % character substitutions. If %n
-# appears in the command, the selected node is substituted. If %s
-# appears, a boolean value representing the current selection state
-# will be substituted.
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_double {x y} {
- if {$itk_option(-dblclickcommand) != {}} {
- if {[set seltags [$itk_component(list) tag names @$x,$y]] != {}} {
- foreach tag $seltags {
- if {![_isInternalTag $tag]} {
- lappend node $tag
- }
- }
-
- if {[lsearch $seltags "hilite"] == -1} {
- set selectstatus 0
- } else {
- set selectstatus 1
- }
-
- set cmd $itk_option(-dblclickcommand)
- regsub -all {%n} $cmd [list $node] cmd
- regsub -all {%s} $cmd [list $selectstatus] cmd
-
- uplevel #0 $cmd
- }
- }
-
- return
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _iconSelect node icon
-#
-# Used internally to upon selection of user icons. The -iconcommand
-# is executed after substitution of the node for %n and icon for %i.
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_iconSelect {node icon} {
- set cmd $itk_option(-iconcommand)
- regsub -all {%n} $cmd [list $node] cmd
- regsub -all {%i} $cmd [list $icon] cmd
-
- uplevel \#0 $cmd
-
- return {}
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _iconDblSelect node icon
-#
-# Used internally to upon double selection of user icons. The
-# -icondblcommand is executed after substitution of the node for %n and
-# icon for %i.
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_iconDblSelect {node icon} {
- if {$itk_option(-icondblcommand) != {}} {
- set cmd $itk_option(-icondblcommand)
- regsub -all {%n} $cmd [list $node] cmd
- regsub -all {%i} $cmd [list $icon] cmd
-
- uplevel \#0 $cmd
- }
- return {}
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _imageSelect node icon
-#
-# Used internally to upon selection of user icons. The -imagecommand
-# is executed after substitution of the node for %n.
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_imageSelect {node} {
- if {$itk_option(-imagecommand) != {}} {
- set cmd $itk_option(-imagecommand)
- regsub -all {%n} $cmd [list $node] cmd
-
- uplevel \#0 $cmd
- }
- return {}
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _imageDblClick node
-#
-# Used internally to upon double selection of images. The
-# -imagedblcommand is executed.
-#
-# Douglas R. Howard, Jr.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_imageDblClick {node} {
- if {$itk_option(-imagedblcommand) != {}} {
- set cmd $itk_option(-imagedblcommand)
- regsub -all {%n} $cmd [list $node] cmd
-
- uplevel \#0 $cmd
- }
- return {}
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _deselectSubNodes uid
-#
-# Used internally to recursively deselect all the nodes beneath a
-# particular node.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_deselectSubNodes {uid} {
- foreach node $_nodes($uid) {
- if {[array names _selected $node] != {}} {
- unset _selected($node)
- }
-
- if {[array names _nodes $node] != {}} {
- _deselectSubNodes $node
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _deleteNodeInfo uid
-#
-# Used internally to recursively delete all the information about a
-# node and its decendents.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_deleteNodeInfo {uid} {
- #
- # Recursively call ourseleves as we go down the hierarchy beneath
- # this node.
- #
- if {[info exists _nodes($uid)]} {
- foreach node $_nodes($uid) {
- if {[array names _nodes $node] != {}} {
- _deleteNodeInfo $node
- }
- }
- }
-
- #
- # Unset any entries in our arrays for the node.
- #
- catch {unset _nodes($uid)}
- catch {unset _text($uid)}
- catch {unset _tags($uid)}
- catch {unset _icons($uid)}
- catch {unset _states($uid)}
- catch {unset _images($uid)}
- catch {unset _indents($uid)}
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _getParent uid
-#
-# Used internally to determine the parent for a node.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_getParent {uid} {
- foreach node [array names _nodes] {
- if {[set index [lsearch $_nodes($node) $uid]] != -1} {
- return $node
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _getHeritage uid
-#
-# Used internally to determine the list of parents for a node.
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_getHeritage {uid} {
- set parents {}
-
- if {[set parent [_getParent $uid]] != {}} {
- lappend parents $parent
- }
-
- return $parents
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD (could be proc?): _isInternalTag tag
-#
-# Used internally to tags not to used for user callback commands
-# ----------------------------------------------------------------------
-body iwidgets::Hierarchy::_isInternalTag {tag} {
- set ii [expr [lsearch -exact {info hilite lowlite unknown} $tag] != -1];
- return $ii;
-}
diff --git a/itcl/iwidgets3.0.0/generic/hyperhelp.itk b/itcl/iwidgets3.0.0/generic/hyperhelp.itk
deleted file mode 100644
index 8eb5e80be44..00000000000
--- a/itcl/iwidgets3.0.0/generic/hyperhelp.itk
+++ /dev/null
@@ -1,504 +0,0 @@
-#
-# Hyperhelp
-# ----------------------------------------------------------------------
-# Implements a help facility using html formatted hypertext files.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Kris Raney EMAIL: kraney@spd.dsccc.com
-#
-# @(#) $Id$
-# ----------------------------------------------------------------------
-# Copyright (c) 1996 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.
-# ======================================================================
-
-#
-# Acknowledgements:
-#
-# Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his
-# help.tcl code from tk inspect.
-
-#
-# Default resources.
-#
-option add *Hyperhelp.width 575 widgetDefault
-option add *Hyperhelp.height 450 widgetDefault
-option add *Hyperhelp.modality none widgetDefault
-option add *Hyperhelp.vscrollMode static widgetDefault
-option add *Hyperhelp.hscrollMode static widgetDefault
-option add *Hyperhelp.maxHistory 20 widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Hyperhelp {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -foreground -highlightcolor -highlightthickness \
- -selectbackground -selectborderwidth -selectforeground \
- -textbackground
-}
-
-# ------------------------------------------------------------------
-# HYPERHELP
-# ------------------------------------------------------------------
-class iwidgets::Hyperhelp {
- inherit iwidgets::Shell
-
- constructor {args} {}
-
- itk_option define -topics topics Topics {}
- itk_option define -helpdir helpdir Directory .
- itk_option define -title title Title "Help"
- itk_option define -closecmd closeCmd CloseCmd {}
- itk_option define -maxhistory maxHistory MaxHistory 20
-
- public variable beforelink {}
- public variable afterlink {}
-
- public method showtopic {topic}
- public method followlink {link}
- public method forward {}
- public method back {}
- public method updatefeedback {n}
-
- protected method _readtopic {file {anchorpoint {}}}
- protected method _pageforward {}
- protected method _pageback {}
- protected method _lineforward {}
- protected method _lineback {}
- protected method _fill_go_menu {}
-
- protected variable _history {} ;# History list of viewed pages
- protected variable _history_ndx -1 ;# current position in history list
- protected variable _history_len 0 ;# length of history list
- protected variable _histdir -1 ;# direction in history we just came
- ;# from
- protected variable _len 0 ;# length of text to be rendered
- protected variable _file {} ;# current topic
-
- private variable _remaining 0 ;# remaining text to be rendered
- private variable _rendering 0 ;# flag - in process of rendering
-}
-
-#
-# Provide a lowercased access method for the Scrolledlistbox class.
-#
-proc ::iwidgets::hyperhelp {pathName args} {
- uplevel ::iwidgets::Hyperhelp $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::constructor {args} {
- itk_option remove iwidgets::Shell::padx iwidgets::Shell::pady
-
- #
- # Create a pulldown menu
- #
- itk_component add -private menubar {
- frame $itk_interior.menu -relief raised -bd 2
- } {
- keep -background -cursor
- }
- pack $itk_component(menubar) -side top -fill x
-
- itk_component add -private topicmb {
- menubutton $itk_component(menubar).topicmb -text "Topics" \
- -menu $itk_component(menubar).topicmb.topicmenu \
- -underline 0 -padx 8 -pady 2
- } {
- keep -background -cursor -font -foreground \
- -activebackground -activeforeground
- }
- pack $itk_component(topicmb) -side left
-
- itk_component add -private topicmenu {
- menu $itk_component(topicmb).topicmenu -tearoff no
- } {
- keep -background -cursor -font -foreground \
- -activebackground -activeforeground
- }
-
- itk_component add -private navmb {
- menubutton $itk_component(menubar).navmb -text "Navigate" \
- -menu $itk_component(menubar).navmb.navmenu \
- -underline 0 -padx 8 -pady 2
- } {
- keep -background -cursor -font -foreground \
- -activebackground -activeforeground
- }
- pack $itk_component(navmb) -side left
-
- itk_component add -private navmenu {
- menu $itk_component(navmb).navmenu -tearoff no
- } {
- keep -background -cursor -font -foreground \
- -activebackground -activeforeground
- }
- set m $itk_component(navmenu)
- $m add command -label "Forward" -underline 0 -state disabled \
- -command [code $this forward] -accelerator f
- $m add command -label "Back" -underline 0 -state disabled \
- -command [code $this back] -accelerator b
- $m add cascade -label "Go" -underline 0 -menu $m.go
-
- itk_component add -private navgo {
- menu $itk_component(navmenu).go -postcommand [code $this _fill_go_menu]
- } {
- keep -background -cursor -font -foreground \
- -activebackground -activeforeground
- }
-
- #
- # Create a scrolledhtml object to display help pages
- #
- itk_component add scrtxt {
- iwidgets::scrolledhtml $itk_interior.scrtxt \
- -linkcommand "$this followlink" -feedback "$this updatefeedback"
- } {
- keep -hscrollmode -vscrollmode -background -textbackground \
- -fontname -fontsize -fixedfont -link \
- -linkhighlight -borderwidth -cursor -sbwidth -scrollmargin \
- -width -height -foreground -highlightcolor -visibleitems \
- -highlightthickness -padx -pady -activerelief \
- -relief -selectbackground -selectborderwidth \
- -selectforeground -setgrid -wrap -unknownimage
- }
- pack $itk_component(scrtxt) -fill both -expand yes
-
- #
- # Bind shortcut keys
- #
- bind $itk_component(hull) <Key-f> [code $this forward]
- bind $itk_component(hull) <Key-b> [code $this back]
- bind $itk_component(hull) <Alt-Right> [code $this forward]
- bind $itk_component(hull) <Alt-Left> [code $this back]
- bind $itk_component(hull) <Key-space> [code $this _pageforward]
- bind $itk_component(hull) <Key-Next> [code $this _pageforward]
- bind $itk_component(hull) <Key-BackSpace> [code $this _pageback]
- bind $itk_component(hull) <Key-Prior> [code $this _pageback]
- bind $itk_component(hull) <Key-Delete> [code $this _pageback]
- bind $itk_component(hull) <Key-Down> [code $this _lineforward]
- bind $itk_component(hull) <Key-Up> [code $this _lineback]
-
- wm title $itk_component(hull) "Help"
-
- eval itk_initialize $args
- if {[lsearch -exact $args -closecmd] == -1} {
- configure -closecmd [code $this deactivate]
- }
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -topics
-#
-# Specifies the topics to display on the menu. For each topic, there should
-# be a file named <helpdir>/<topic>.html
-# ------------------------------------------------------------------
-configbody iwidgets::Hyperhelp::topics {
- set m $itk_component(topicmenu)
- $m delete 0 last
- foreach topic $itk_option(-topics) {
- if {[lindex $topic 1] == {} } {
- $m add radiobutton -variable topic \
- -value $topic \
- -label $topic \
- -command [list $this showtopic $topic]
- } else {
- if {[string index [file dirname [lindex $topic 1]] 0] != "/" && \
- [string index [file dirname [lindex $topic 1]] 0] != "~"} {
- set link $itk_option(-helpdir)/[lindex $topic 1]
- } else {
- set link [lindex $topic 1]
- }
- $m add radiobutton -variable topic \
- -value [lindex $topic 0] \
- -label [lindex $topic 0] \
- -command [list $this followlink $link]
- }
- }
- $m add separator
- $m add command -label "Close Help" -underline 0 \
- -command $itk_option(-closecmd)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -title
-#
-# Specify the window title.
-# ------------------------------------------------------------------
-configbody iwidgets::Hyperhelp::title {
- wm title $itk_component(hull) $itk_option(-title)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -helpdir
-#
-# Set location of help files
-# ------------------------------------------------------------------
-configbody iwidgets::Hyperhelp::helpdir {
- if {[file pathtype $itk_option(-helpdir)] == "relative"} {
- configure -helpdir [file join [pwd] $itk_option(-helpdir)]
- } else {
- set _history {}
- set _history_len 0
- set _history_ndx -1
- $itk_component(navmenu) entryconfig 0 -state disabled
- $itk_component(navmenu) entryconfig 1 -state disabled
- configure -topics $itk_option(-topics)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -closecmd
-#
-# Specify the command to execute when close is selected from the menu
-# ------------------------------------------------------------------
-configbody iwidgets::Hyperhelp::closecmd {
- $itk_component(topicmenu) entryconfigure last -command $itk_option(-closecmd)
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: showtopic topic
-#
-# render text of help topic <topic>. The text is expected to be found in
-# <helpdir>/<topic>.html
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::showtopic {topic} {
- if ![regexp {(.*)#(.*)} $topic dummy topicname anchorpart] {
- set topicname $topic
- set anchorpart {}
- }
- if {$topicname == ""} {
- set topicname $_file
- set filepath $_file
- } else {
- set filepath $itk_option(-helpdir)/$topicname.html
- }
- if {[incr _history_ndx] < $itk_option(-maxhistory)} {
- set _history [lrange $_history 0 [expr $_history_ndx - 1]]
- set _history_len [expr $_history_ndx + 1]
- } else {
- incr _history_ndx -1
- set _history [lrange $_history 1 $_history_ndx]
- set _history_len [expr $_history_ndx + 1]
- }
- lappend _history [list $topicname $filepath $anchorpart]
- _readtopic $filepath $anchorpart
-}
-
-# ------------------------------------------------------------------
-# METHOD: followlink link
-#
-# Callback for click on a link. Shows new topic.
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::followlink {link} {
- if {[string compare $beforelink ""] != 0} {
- eval $beforelink $link
- }
- if ![regexp {(.*)#(.*)} $link dummy filepart anchorpart] {
- set filepart $link
- set anchorpart {}
- }
- if {$filepart != "" && [string index [file dirname $filepart] 0] != "/" && \
- [string index [file dirname $filepart] 0] != "~"} {
- set filepart [$itk_component(scrtxt) pwd]/$filepart
- set hfile $filepart
- } else {
- set hfile $_file
- }
- incr _history_ndx
- set _history [lrange $_history 0 [expr $_history_ndx - 1]]
- set _history_len [expr $_history_ndx + 1]
- lappend _history [list [file rootname [file tail $hfile]] $hfile $anchorpart]
- set ret [_readtopic $filepart $anchorpart]
- if {[string compare $afterlink ""] != 0} {
- eval $afterlink $link
- }
- return $ret
-}
-
-# ------------------------------------------------------------------
-# METHOD: forward
-#
-# Show topic one forward in history list
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::forward {} {
- if {$_rendering || ($_history_ndx+1) >= $_history_len} return
- incr _history_ndx
- eval _readtopic [lrange [lindex $_history $_history_ndx] 1 end]
-}
-
-# ------------------------------------------------------------------
-# METHOD: back
-#
-# Show topic one back in history list
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::back {} {
- if {$_rendering || $_history_ndx <= 0} return
- incr _history_ndx -1
- set _histdir 1
- eval _readtopic [lrange [lindex $_history $_history_ndx] 1 end]
-}
-
-# ------------------------------------------------------------------
-# METHOD: updatefeedback remaining
-#
-# Callback from text to update feedback widget
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::updatefeedback {n} {
- if {($_remaining - $n) > .1*$_len} {
- [$itk_interior.feedbackshell childsite].helpfeedback step [expr $_remaining - $n]
- update idletasks
- set _remaining $n
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _readtopic
-#
-# Read in file, render it in text area, and jump to anchorpoint
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::_readtopic {file {anchorpoint {}}} {
- if {$file != ""} {
- if {[string compare $file $_file] != 0} {
- if {[catch {set f [open $file r]} err]} {
- incr _history_ndx $_histdir
- set _history_len [expr $_history_ndx + 1]
- set _histdir -1
- set m $itk_component(navmenu)
- if {($_history_ndx+1) < $_history_len} {
- $m entryconfig 0 -state normal
- } else {
- $m entryconfig 0 -state disabled
- }
- if {$_history_ndx > 0} {
- $m entryconfig 1 -state normal
- } else {
- $m entryconfig 1 -state disabled
- }
- error $err
- }
- set _file $file
- set txt [read $f]
- iwidgets::shell $itk_interior.feedbackshell -title "Rendering HTML" -padx 1 -pady 1
- iwidgets::Feedback [$itk_interior.feedbackshell childsite].helpfeedback \
- -steps [set _len [string length $txt]] \
- -labeltext "Rendering HTML" -labelpos n
- pack [$itk_interior.feedbackshell childsite].helpfeedback
- $itk_interior.feedbackshell center $itk_interior
- $itk_interior.feedbackshell activate
- set _remaining $_len
- set _rendering 1
- if [catch {$itk_component(scrtxt) render $txt [file dirname $file]} err] {
- if [regexp "</pre>" $err] {
- $itk_component(scrtxt) render "<tt>$err</tt>"
- } else {
- $itk_component(scrtxt) render "<pre>$err</pre>"
- }
- }
- wm title $itk_component(hull) "Help: $file"
- delete object [$itk_interior.feedbackshell childsite].helpfeedback
- delete object $itk_interior.feedbackshell
- set _rendering 0
- }
- }
- set m $itk_component(navmenu)
- if {($_history_ndx+1) < $_history_len} {
- $m entryconfig 0 -state normal
- } else {
- $m entryconfig 0 -state disabled
- }
- if {$_history_ndx > 0} {
- $m entryconfig 1 -state normal
- } else {
- $m entryconfig 1 -state disabled
- }
- if {$anchorpoint != "{}"} {
- $itk_component(scrtxt) import -link #$anchorpoint
- } else {
- $itk_component(scrtxt) import -link #
- }
- set _histdir -1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _fill_go_menu
-#
-# update go submenu with current history
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::_fill_go_menu {} {
- set m $itk_component(navgo)
- catch {$m delete 0 last}
- for {set i [expr $_history_len - 1]} {$i >= 0} {incr i -1} {
- set topic [lindex [lindex $_history $i] 0]
- set filepath [lindex [lindex $_history $i] 1]
- set anchor [lindex [lindex $_history $i] 2]
- $m add command -label $topic \
- -command [list $this followlink $filepath#$anchor]
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _pageforward
-#
-# Callback for page forward shortcut key
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::_pageforward {} {
- $itk_component(scrtxt) yview scroll 1 pages
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _pageback
-#
-# Callback for page back shortcut key
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::_pageback {} {
- $itk_component(scrtxt) yview scroll -1 pages
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _lineforward
-#
-# Callback for line forward shortcut key
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::_lineforward {} {
- $itk_component(scrtxt) yview scroll 1 units
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _lineback
-#
-# Callback for line back shortcut key
-# ------------------------------------------------------------------
-body iwidgets::Hyperhelp::_lineback {} {
- $itk_component(scrtxt) yview scroll -1 units
-}
diff --git a/itcl/iwidgets3.0.0/generic/labeledframe.itk b/itcl/iwidgets3.0.0/generic/labeledframe.itk
deleted file mode 100644
index 0291c2053d2..00000000000
--- a/itcl/iwidgets3.0.0/generic/labeledframe.itk
+++ /dev/null
@@ -1,522 +0,0 @@
-#
-# Labeledframe
-# ----------------------------------------------------------------------
-# Implements a hull frame with a grooved relief, a label, and a
-# frame childsite.
-#
-# The frame childsite can be filled with any widget via a derived class
-# or though the use of the childsite method. This class was designed
-# to be a general purpose base class for supporting the combination of
-# a labeled frame and a childsite. The options include the ability to
-# position the label at configurable locations within the grooved relief
-# of the hull frame, and control the display of the label.
-#
-# To following demonstrates the different values which the "-labelpos"
-# option may be set to and the resulting layout of the label when
-# one executes the following command with "-labeltext" set to "LABEL":
-#
-# example:
-# labeledframe .w -labeltext LABEL -labelpos <ne,n,nw,se,s,sw,en,e,es,wn,s,ws>
-#
-# ne n nw se s sw
-#
-# *LABEL**** **LABEL** ****LABEL* ********** ********* **********
-# * * * * * * * * * * * *
-# * * * * * * * * * * * *
-# * * * * * * * * * * * *
-# ********** ********* ********** *LABEL**** **LABEL** ****LABEL*
-#
-# en e es wn s ws
-#
-# ********** ********* ********* ********* ********* **********
-# * * * * * * * * * * * *
-# L * * * * * * L * * * *
-# A * L * * * * A * L * L
-# B * A * L * * B * A * A
-# E * B * A * * E * B * B
-# L * E * B * * L * E * E
-# * * L * E * * * * L * L
-# * * * * L * * * * * * *
-# ********** ********** ********* ********** ********* **********
-#
-# ----------------------------------------------------------------------
-# AUTHOR: John A. Tucker EMAIL: jatucker@spd.dsccc.com
-#
-# ======================================================================
-# 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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Labeledframe.labelMargin 10 widgetDefault
-option add *Labeledframe.labelFont \
- "-Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*" widgetDefault
-option add *Labeledframe.labelPos n widgetDefault
-option add *Labeledframe.labelBorderWidth 2 widgetDefault
-option add *Labeledframe.labelRelief groove widgetDefault
-
-
-#
-# Usual options.
-#
-itk::usual Labeledframe {
- keep -background -cursor -labelfont -foreground -labelrelief -labelborderwidth
-}
-
-class iwidgets::Labeledframe {
-
- inherit itk::Widget
-
- itk_option define -ipadx iPadX IPad 0
- itk_option define -ipady iPadY IPad 0
-
- itk_option define -labelmargin labelMargin LabelMargin 10
- itk_option define -labelpos labelPos LabelPos n
- itk_option define -labeltext labelText LabelText ""
-
- constructor {args} {}
- destructor {}
-
- #
- # Public methods
- #
- public method childsite {}
- public method clientHandlesConfigure {{yes 1}}
-
- #
- # Protected methods
- #
-
- protected {
- method _positionLabel {{when later}}
- method _collapseMargin {}
- method _setMarginThickness {value}
- method smt {value} { _setMarginThickness $value }
- }
-
- #
- # Private methods/data
- #
- private {
- proc _initTable {}
-
- variable _reposition "" ;# non-null => _positionLabel pending
- variable dontUpdate 0
-
- common _LAYOUT_TABLE
- }
-}
-
-#
-# Provide a lowercased access method for the Labeledframe class.
-#
-proc ::iwidgets::labeledframe {pathName args} {
- uplevel ::iwidgets::Labeledframe $pathName $args
-}
-
-# -----------------------------------------------------------------------------
-# CONSTRUCTOR
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::constructor { args } {
- #
- # Create a window with the same name as this object
- #
-
- itk_component add labelFrame {
- frame $itk_interior.lf \
- -relief groove \
- -class [namespace tail [info class]]
- } {
- keep -background -cursor
- rename -relief -labelrelief labelRelief LabelRelief
- rename -borderwidth -labelborderwidth labelBorderWidth LabelBorderWidth
- rename -highlightbackground -background background Background
- rename -highlightcolor -background background Background
- }
-
- #
- # Create the childsite frame window
- # _______
- # |_____|
- # |_|X|_|
- # |_____|
- #
- itk_component add childsite {
- frame $itk_component(labelFrame).childsite -highlightthickness 0 -bd 0
- }
-
- #
- # Create the label to be positioned within the grooved relief
- # of the labelFrame frame.
- #
- itk_component add label {
- label $itk_component(labelFrame).label -highlightthickness 0 -bd 0
- } {
- usual
- rename -bitmap -labelbitmap labelBitmap Bitmap
- rename -font -labelfont labelFont Font
- rename -image -labelimage labelImage Image
- #rename -text -labeltext labelText Text
- rename -textvariable -labelvariable labelVariable Variable
- ignore -highlightthickness -highlightcolor -text
- }
-
- grid $itk_component(childsite) -row 1 -column 1 -sticky nsew
- grid columnconfigure $itk_component(labelFrame) 1 -weight 1
- grid rowconfigure $itk_component(labelFrame) 1 -weight 1
-
- lappend after_script [code $this _positionLabel]
- bind $itk_component(label) <Configure> +[code $this _positionLabel]
-
- pack $itk_component(labelFrame) -fill both -expand 1
-
- #
- # Initialize the class array of layout configuration options. Since
- # this is a one time only thing.
- #
- _initTable
-
- eval itk_initialize $args
-
- #
- # When idle, position the label.
- #
- _positionLabel
-}
-
-# -----------------------------------------------------------------------------
-# DESTRUCTOR
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::destructor {} {
- debug "In Labeledframe destructor for $this, reposition is $_reposition"
- if {$_reposition != ""} {
- debug "Canceling reposition $_reposition for $this"
- after cancel $_reposition
- set _reposition DESTRUCTOR
- }
-}
-
-# -----------------------------------------------------------------------------
-# OPTIONS
-# -----------------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -ipadx
-#
-# Specifies the width of the horizontal gap from the border to the
-# the child site.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledframe::ipadx {
- grid configure $itk_component(childsite) -padx $itk_option(-ipadx)
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# OPTION: -ipady
-#
-# Specifies the width of the vertical gap from the border to the
-# the child site.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledframe::ipady {
- grid configure $itk_component(childsite) -pady $itk_option(-ipady)
- _positionLabel
-}
-
-# -----------------------------------------------------------------------------
-# OPTION: -labelmargin
-#
-# Set the margin of the most adjacent side of the label to the labelFrame
-# relief.
-# ----------------------------------------------------------------------------
-configbody iwidgets::Labeledframe::labelmargin {
- _positionLabel
-}
-
-# -----------------------------------------------------------------------------
-# OPTION: -labelpos
-#
-# Set the position of the label within the relief of the labelFrame frame
-# widget.
-# ----------------------------------------------------------------------------
-configbody iwidgets::Labeledframe::labelpos {
- _positionLabel
-}
-
-# -----------------------------------------------------------------------------
-# OPTION: -labelpos
-#
-# Set the position of the label within the relief of the labelFrame frame
-# widget.
-# ----------------------------------------------------------------------------
-configbody iwidgets::Labeledframe::labeltext {
- $itk_component(label) configure -text $itk_option(-labeltext)
- _positionLabel
-}
-
-# -----------------------------------------------------------------------------
-# PROCS
-# -----------------------------------------------------------------------------
-
-# -----------------------------------------------------------------------------
-# PRIVATE PROC: _initTable
-#
-# Initializes the _LAYOUT_TABLE common variable of the Labeledframe
-# class. The initialization is performed in its own proc ( as opposed
-# to in the class definition ) so that the initialization occurs only
-# once.
-#
-# _LAYOUT_TABLE common array description:
-# Provides a table of the configuration option values
-# used to place the label widget within the grooved relief of the labelFrame
-# frame for each of the 12 possible "-labelpos" values.
-#
-# Each of the 12 rows is layed out as follows:
-# {"-relx" "-rely" <rowconfigure|columnconfigure> <row/column number>}
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::_initTable {} {
- array set _LAYOUT_TABLE {
- nw-relx 0.0 nw-rely 0.0 nw-wrap 0 nw-conf rowconfigure nw-num 0
- n-relx 0.5 n-rely 0.0 n-wrap 0 n-conf rowconfigure n-num 0
- ne-relx 1.0 ne-rely 0.0 ne-wrap 0 ne-conf rowconfigure ne-num 0
-
- sw-relx 0.0 sw-rely 1.0 sw-wrap 0 sw-conf rowconfigure sw-num 2
- s-relx 0.5 s-rely 1.0 s-wrap 0 s-conf rowconfigure s-num 2
- se-relx 1.0 se-rely 1.0 se-wrap 0 se-conf rowconfigure se-num 2
-
- en-relx 1.0 en-rely 0.0 en-wrap 1 en-conf columnconfigure en-num 2
- e-relx 1.0 e-rely 0.5 e-wrap 1 e-conf columnconfigure e-num 2
- es-relx 1.0 es-rely 1.0 es-wrap 1 es-conf columnconfigure es-num 2
-
- wn-relx 0.0 wn-rely 0.0 wn-wrap 1 wn-conf columnconfigure wn-num 0
- w-relx 0.0 w-rely 0.5 w-wrap 1 w-conf columnconfigure w-num 0
- ws-relx 0.0 ws-rely 1.0 ws-wrap 1 ws-conf columnconfigure ws-num 0
- }
-
- #
- # Since this is a one time only thing, we'll redefine the proc to be empty
- # afterwards so it only happens once.
- #
- # NOTE: Be careful to use the "body" command, or the proc will get lost!
- #
- itcl::body ::iwidgets::Labeledframe::_initTable {} {}
-}
-
-# -----------------------------------------------------------------------------
-# METHODS
-# -----------------------------------------------------------------------------
-
-# -----------------------------------------------------------------------------
-# PUBLIC METHOD:: childsite
-#
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::childsite {} {
- return $itk_component(childsite)
-}
-
-# -----------------------------------------------------------------------------
-# PUBLIC METHOD:: clientHandlesConfigure
-#
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::clientHandlesConfigure {{yes 1}} {
- if {$yes} {
- set dontUpdate 1
- bind $itk_component(label) <Configure> { }
- return [code $this _positionLabel now]
- } else {
- bind $itk_component(label) <Configure> [code $this _positionLabel]
- set dontUpdate 0
- }
-}
-# -----------------------------------------------------------------------------
-# PROTECTED METHOD: _positionLabel ?when?
-#
-# Places the label in the relief of the labelFrame. If "when" is "now", the
-# change is applied immediately. If it is "later" or it is not
-# specified, then the change is applied later, when the application
-# is idle.
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::_positionLabel {{when later}} {
-
- if {$when == "later"} {
- if {$_reposition != ""} {
- after cancel $_reposition
- }
- set _reposition [after idle [code $this _positionLabel now]]
- return
- }
-
- set pos $itk_option(-labelpos)
-
- #
- # If there is not an entry for the "relx" value associated with
- # the given "-labelpos" option value, then it invalid.
- #
- if { [catch {set relx $_LAYOUT_TABLE($pos-relx)}] } {
- error "bad labelpos option\"$itk_option(-labelpos)\": should be\
- nw, n, ne, sw, s, se, en, e, es, wn, w, or ws"
- }
-
- if {!$dontUpdate} {
- update idletasks
- if {[string compare $_reposition DESTRUCTOR] == 0} {
- # OOPS... We are in the process of being destroyed. Get out of here...
- debug "Stuck in _postionLabel during destruction"
- return
- }
- }
-
- $itk_component(label) configure -wraplength $_LAYOUT_TABLE($pos-wrap)
-
- # If there is no text in the label, do not add it to the computation.
-
- if {$itk_option(-labeltext) == ""} {
- set minsize 0
- if {[place slaves $itk_component(labelFrame)] != ""} {
- place forget $itk_component(label)
- }
- _setMarginThickness 0
- } else {
- set labelWidth [winfo reqwidth $itk_component(label)]
- set labelHeight [winfo reqheight $itk_component(label)]
- set borderwidth $itk_option(-labelborderwidth)
- set margin $itk_option(-labelmargin)
-
- switch $pos {
- nw {
- set labelThickness $labelHeight
- set minsize [expr $labelThickness/2.0]
- set xPos [expr $minsize+$borderwidth+$margin]
- set yPos -$minsize
- }
- n {
- set labelThickness $labelHeight
- set minsize [expr $labelThickness/2.0]
- set xPos [expr -$labelWidth/2.0]
- set yPos -$minsize
- }
- ne {
- set labelThickness $labelHeight
- set minsize [expr $labelThickness/2.0]
- set xPos [expr -($minsize+$borderwidth+$margin+$labelWidth)]
- set yPos -$minsize
- }
-
- sw {
- set labelThickness $labelHeight
- set minsize [expr $labelThickness/2.0]
- set xPos [expr $minsize+$borderwidth+$margin]
- set yPos -$minsize
- }
- s {
- set labelThickness $labelHeight
- set minsize [expr $labelThickness/2.0]
- set xPos [expr -$labelWidth/2.0]
- set yPos [expr -$labelHeight/2.0]
- }
- se {
- set labelThickness $labelHeight
- set minsize [expr $labelThickness/2.0]
- set xPos [expr -($minsize+$borderwidth+$margin+$labelWidth)]
- set yPos [expr -$labelHeight/2.0]
- }
-
- wn {
- set labelThickness $labelWidth
- set minsize [expr $labelThickness/2.0]
- set xPos -$minsize
- set yPos [expr $minsize+$margin+$borderwidth]
- }
- w {
- set labelThickness $labelWidth
- set minsize [expr $labelThickness/2.0]
- set xPos -$minsize
- set yPos [expr -($labelHeight/2.0)]
- }
- ws {
- set labelThickness $labelWidth
- set minsize [expr $labelThickness/2.0]
- set xPos -$minsize
- set yPos [expr -($minsize+$borderwidth+$margin+$labelHeight)]
- }
-
- en {
- set labelThickness $labelWidth
- set minsize [expr $labelThickness/2.0]
- set xPos -$minsize
- set yPos [expr $minsize+$borderwidth+$margin]
- }
- e {
- set labelThickness $labelWidth
- set minsize [expr $labelThickness/2.0]
- set xPos -$minsize
- set yPos [expr -($labelHeight/2.0)]
- }
- es {
- set labelThickness $labelWidth
- set minsize [expr $labelThickness/2.0]
- set xPos -$minsize
- set yPos [expr -($minsize+$borderwidth+$margin+$labelHeight)]
- }
- }
- _setMarginThickness $minsize
-
- place $itk_component(label) \
- -relx $_LAYOUT_TABLE($pos-relx) -x $xPos \
- -rely $_LAYOUT_TABLE($pos-rely) -y $yPos \
- -anchor nw
- }
-
- set what $_LAYOUT_TABLE($pos-conf)
- set number $_LAYOUT_TABLE($pos-num)
-
- grid $what $itk_component(labelFrame) $number -minsize $minsize
-
- set _reposition ""
-}
-
-# -----------------------------------------------------------------------------
-# PROTECTED METHOD: _collapseMargin
-#
-# Resets the "-minsize" of all rows and columns of the labelFrame's grid
-# used to set the label margin to 0
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::_collapseMargin {} {
- grid columnconfigure $itk_component(labelFrame) 0 -minsize 0
- grid columnconfigure $itk_component(labelFrame) 2 -minsize 0
- grid rowconfigure $itk_component(labelFrame) 0 -minsize 0
- grid rowconfigure $itk_component(labelFrame) 2 -minsize 0
-}
-
-# -----------------------------------------------------------------------------
-# PROTECTED METHOD: _setMarginThickness
-#
-# Set the margin thickness ( i.e. the hidden "-highlightthickness"
-# of the labelFrame ) to the input value.
-#
-# -----------------------------------------------------------------------------
-body iwidgets::Labeledframe::_setMarginThickness {value} {
- $itk_component(labelFrame) configure -highlightthickness $value
-}
-
-
diff --git a/itcl/iwidgets3.0.0/generic/labeledwidget.itk b/itcl/iwidgets3.0.0/generic/labeledwidget.itk
deleted file mode 100644
index 6c20ff110ab..00000000000
--- a/itcl/iwidgets3.0.0/generic/labeledwidget.itk
+++ /dev/null
@@ -1,437 +0,0 @@
-#
-# Labeledwidget
-# ----------------------------------------------------------------------
-# Implements a labeled widget which contains a label and child site.
-# The child site is a frame which can filled with any widget via a
-# derived class or though the use of the childsite method. This class
-# was designed to be a general purpose base class for supporting the
-# combination of label widget and a childsite, where a label may be
-# text, bitmap or image. The options include the ability to position
-# the label around the childsite widget, modify the font and margin,
-# and control the display of the label.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Labeledwidget {
- keep -background -cursor -foreground -labelfont
-}
-
-# ------------------------------------------------------------------
-# LABELEDWIDGET
-# ------------------------------------------------------------------
-class iwidgets::Labeledwidget {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -disabledforeground disabledForeground \
- DisabledForeground \#a3a3a3
- itk_option define -labelpos labelPos Position w
- itk_option define -labelmargin labelMargin Margin 2
- itk_option define -labeltext labelText Text {}
- itk_option define -labelvariable labelVariable Variable {}
- itk_option define -labelbitmap labelBitmap Bitmap {}
- itk_option define -labelimage labelImage Image {}
- itk_option define -state state State normal
-
- public method childsite
-
- protected method _positionLabel {{when later}}
-
- proc alignlabels {args} {}
-
- protected variable _reposition "" ;# non-null => _positionLabel pending
-}
-
-#
-# Provide a lowercased access method for the Labeledwidget class.
-#
-proc ::iwidgets::labeledwidget {pathName args} {
- uplevel ::iwidgets::Labeledwidget $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Labeledwidget::constructor {args} {
- #
- # Create a frame for the childsite widget.
- #
- itk_component add -protected lwchildsite {
- frame $itk_interior.lwchildsite
- }
-
- #
- # Create label.
- #
- itk_component add label {
- label $itk_interior.label
- } {
- usual
-
- rename -font -labelfont labelFont Font
- ignore -highlightcolor -highlightthickness
- }
-
- #
- # Set the interior to be the childsite for derived classes.
- #
- set itk_interior $itk_component(lwchildsite)
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-
- #
- # When idle, position the label.
- #
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Labeledwidget::destructor {} {
- if {$_reposition != ""} {after cancel $_reposition}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -disabledforeground
-#
-# Specified the foreground to be used on the label when disabled.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::disabledforeground {}
-
-# ------------------------------------------------------------------
-# OPTION: -labelpos
-#
-# Set the position of the label on the labeled widget. The margin
-# between the label and childsite comes along for the ride.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::labelpos {
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# OPTION: -labelmargin
-#
-# Specifies the distance between the widget and label.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::labelmargin {
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# OPTION: -labeltext
-#
-# Specifies the label text.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::labeltext {
- $itk_component(label) configure -text $itk_option(-labeltext)
-
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# OPTION: -labelvariable
-#
-# Specifies the label text variable.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::labelvariable {
- $itk_component(label) configure -textvariable $itk_option(-labelvariable)
-
- uplevel [list trace variable \
- $itk_option(-labelvariable) w [code _positionLabel]]
-
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# OPTION: -labelbitmap
-#
-# Specifies the label bitmap.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::labelbitmap {
- $itk_component(label) configure -bitmap $itk_option(-labelbitmap)
-
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# OPTION: -labelimage
-#
-# Specifies the label image.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::labelimage {
- $itk_component(label) configure -image $itk_option(-labelimage)
-
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# OPTION: -state
-#
-# Specifies the state of the label.
-# ------------------------------------------------------------------
-configbody iwidgets::Labeledwidget::state {
- _positionLabel
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Labeledwidget::childsite {} {
- return $itk_component(lwchildsite)
-}
-
-# ------------------------------------------------------------------
-# PROCEDURE: alignlabels widget ?widget ...?
-#
-# The alignlabels procedure takes a list of widgets derived from
-# the Labeledwidget class and adjusts the label margin to align
-# the labels.
-# ------------------------------------------------------------------
-body iwidgets::Labeledwidget::alignlabels {args} {
- update
- set maxLabelWidth 0
-
- #
- # Verify that all the widgets are of type Labeledwidget and
- # determine the size of the maximum length label string.
- #
- foreach iwid $args {
- set objcmd [itcl::find objects -isa Labeledwidget *::$iwid]
-
- if {$objcmd == ""} {
- error "$iwid is not a \"Labeledwidget\""
- }
-
- set csWidth [winfo reqwidth $iwid.lwchildsite]
- set shellWidth [winfo reqwidth $iwid]
-
- if {[expr $shellWidth - $csWidth] > $maxLabelWidth} {
- set maxLabelWidth [expr $shellWidth - $csWidth]
- }
- }
-
- #
- # Adjust the margins for the labels such that the child sites and
- # labels line up.
- #
- foreach iwid $args {
- set csWidth [winfo reqwidth $iwid.lwchildsite]
- set shellWidth [winfo reqwidth $iwid]
-
- set labelSize [expr $shellWidth - $csWidth]
-
- if {$maxLabelWidth > $labelSize} {
- set objcmd [itcl::find objects -isa Labeledwidget *::$iwid]
- set dist [expr $maxLabelWidth - \
- ($labelSize - [$objcmd cget -labelmargin])]
-
- $objcmd configure -labelmargin $dist
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _positionLabel ?when?
-#
-# Packs the label and label margin. If "when" is "now", the
-# change is applied immediately. If it is "later" or it is not
-# specified, then the change is applied later, when the application
-# is idle.
-# ------------------------------------------------------------------
-body iwidgets::Labeledwidget::_positionLabel {{when later}} {
- if {$when == "later"} {
- if {$_reposition == ""} {
- set _reposition [after idle [code $this _positionLabel now]]
- }
- return
-
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- #
- # If we have a label, be it text, bitmap, or image continue.
- #
- if {($itk_option(-labeltext) != {}) || \
- ($itk_option(-labelbitmap) != {}) || \
- ($itk_option(-labelimage) != {}) || \
- ($itk_option(-labelvariable) != {})} {
-
- #
- # Set the foreground color based on the state.
- #
- if {[info exists itk_option(-state)]} {
- switch -- $itk_option(-state) {
- disabled {
- $itk_component(label) configure \
- -foreground $itk_option(-disabledforeground)
- }
- normal {
- $itk_component(label) configure \
- -foreground $itk_option(-foreground)
- }
- }
- }
-
- set parent [winfo parent $itk_component(lwchildsite)]
-
- #
- # Switch on the label position option. Using the grid,
- # adjust the row/column setting of the label, margin, and
- # and childsite. The margin height/width is adjust based
- # on the orientation as well. Finally, set the weights such
- # that the childsite takes the heat on expansion and shrinkage.
- #
- switch $itk_option(-labelpos) {
- nw -
- n -
- ne {
- grid $itk_component(label) -row 0 -column 0 \
- -sticky $itk_option(-labelpos)
- grid $itk_component(lwchildsite) -row 2 -column 0 \
- -sticky nsew
-
- grid rowconfigure $parent 0 -weight 0 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize \
- [winfo pixels $itk_component(label) \
- $itk_option(-labelmargin)]
- grid rowconfigure $parent 2 -weight 1 -minsize 0
-
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize 0
- grid columnconfigure $parent 2 -weight 0 -minsize 0
- }
-
- en -
- e -
- es {
- grid $itk_component(lwchildsite) -row 0 -column 0 \
- -sticky nsew
- grid $itk_component(label) -row 0 -column 2 \
- -sticky $itk_option(-labelpos)
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize 0
- grid rowconfigure $parent 2 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize \
- [winfo pixels $itk_component(label) \
- $itk_option(-labelmargin)]
- grid columnconfigure $parent 2 -weight 0 -minsize 0
- }
-
- se -
- s -
- sw {
- grid $itk_component(lwchildsite) -row 0 -column 0 \
- -sticky nsew
- grid $itk_component(label) -row 2 -column 0 \
- -sticky $itk_option(-labelpos)
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize \
- [winfo pixels $itk_component(label) \
- $itk_option(-labelmargin)]
- grid rowconfigure $parent 2 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize 0
- grid columnconfigure $parent 2 -weight 0 -minsize 0
- }
-
- wn -
- w -
- ws {
- grid $itk_component(lwchildsite) -row 0 -column 2 \
- -sticky nsew
- grid $itk_component(label) -row 0 -column 0 \
- -sticky $itk_option(-labelpos)
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize 0
- grid rowconfigure $parent 2 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 0 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize \
- [winfo pixels $itk_component(label) \
- $itk_option(-labelmargin)]
- grid columnconfigure $parent 2 -weight 1 -minsize 0
- }
-
- default {
- error "bad labelpos option\
- \"$itk_option(-labelpos)\": should be\
- nw, n, ne, sw, s, se, en, e, es, wn, w, or ws"
- }
- }
-
- #
- # Else, neither the label text, bitmap, or image have a value, so
- # forget them so they don't appear and manage only the childsite.
- #
- } else {
- grid forget $itk_component(label)
-
- grid $itk_component(lwchildsite) -row 0 -column 0 -sticky nsew
-
- set parent [winfo parent $itk_component(lwchildsite)]
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize 0
- grid rowconfigure $parent 2 -weight 0 -minsize 0
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize 0
- grid columnconfigure $parent 2 -weight 0 -minsize 0
- }
-
- #
- # Reset the resposition flag.
- #
- set _reposition ""
-}
diff --git a/itcl/iwidgets3.0.0/generic/mainwindow.itk b/itcl/iwidgets3.0.0/generic/mainwindow.itk
deleted file mode 100644
index b5cc895e88e..00000000000
--- a/itcl/iwidgets3.0.0/generic/mainwindow.itk
+++ /dev/null
@@ -1,313 +0,0 @@
-#
-# Mainwindow
-# ----------------------------------------------------------------------
-# This class implements a mainwindow containing a menubar, toolbar,
-# mousebar, childsite, status line, and help line. Each item may
-# be filled and configured to suit individual needs.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.dsccc.com
-#
-# @(#) RCS: $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.
-# ======================================================================
-
-# ------------------------------------------------------------------
-# MAINWINDOW
-# ------------------------------------------------------------------
-class iwidgets::Mainwindow {
- inherit iwidgets::Shell
-
- constructor {args} {}
-
- itk_option define -helpline helpLine HelpLine 1
- itk_option define -statusline statusLine StatusLine 1
-
- public {
- method childsite {}
- method menubar {args}
- method mousebar {args}
- method msgd {args}
- method toolbar {args}
- }
-
- protected {
- method _exitCB {}
-
- common _helpVar
- common _statusVar
- }
-}
-
-#
-# Provide a lowercased access method for the ::iwidgets::Mainwindow class.
-#
-proc iwidgets::mainwindow {pathName args} {
- uplevel ::iwidgets::Mainwindow $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Mainwindow::constructor {args} {
- itk_option add hull.width hull.height
-
- pack propagate $itk_component(hull) no
-
- wm protocol $itk_component(hull) WM_DELETE_WINDOW [code $this _exitCB]
-
- #
- # Create a menubar, renaming the font, foreground, and background
- # so they may be separately set. The help variable will be setup
- # as well.
- #
- itk_component add menubar {
- iwidgets::Menubar $itk_interior.menubar \
- -helpvariable [scope _helpVar($this)]
- } {
- keep -disabledforeground -cursor \
- -highlightbackground -highlightthickness
- rename -font \
- -menubarfont menuBarFont Font
- rename -foreground \
- -menubarforeground menuBarForeground Foreground
- rename -background \
- -menubarbackground menuBarBackground Background
- }
-
- #
- # Add a toolbar beneath the menubar.
- #
- itk_component add toolbar {
- iwidgets::Toolbar $itk_interior.toolbar -orient horizontal \
- -helpvariable [scope _helpVar($this)]
- } {
- keep -balloonbackground -balloondelay1 -balloondelay2 \
- -balloonfont -balloonforeground -disabledforeground -cursor \
- -highlightbackground -highlightthickness
- rename -font -toolbarfont toolbarFont Font
- rename -foreground -toolbarforeground toolbarForeground Foreground
- rename -background -toolbarbackground toolbarBackground Background
- }
-
- #
- # Add a mouse bar on the left.
- #
- itk_component add mousebar {
- iwidgets::Toolbar $itk_interior.mousebar -orient vertical \
- -helpvariable [scope _helpVar($this)]
- } {
- keep -balloonbackground -balloondelay1 -balloondelay2 \
- -balloonfont -balloonforeground -disabledforeground -cursor \
- -highlightbackground -highlightthickness
- rename -font -toolbarfont toolbarFont Font
- rename -foreground -toolbarforeground toolbarForeground Foreground
- rename -background -toolbarbackground toolbarBackground Background
- }
-
- #
- # Create the childsite window window.
- #
- itk_component add -protected mwchildsite {
- frame $itk_interior.mwchildsite
- }
-
- #
- # Add the help and system status lines
- #
- itk_component add -protected lineframe {
- frame $itk_interior.lineframe
- }
-
- itk_component add help {
- label $itk_component(lineframe).help \
- -textvariable [scope _helpVar($this)] \
- -relief sunken -borderwidth 2 -width 10
- }
-
- itk_component add status {
- label $itk_component(lineframe).status \
- -textvariable [scope _statusVar($this)] \
- -relief sunken -borderwidth 2 -width 10
- }
-
- #
- # Create the message dialog for use throughout the mainwindow.
- #
- itk_component add msgd {
- iwidgets::Messagedialog $itk_interior.msgd -modality application
- } {
- usual
- ignore -modality
- }
-
- #
- # Use the grid to pack together the menubar, toolbar, mousebar,
- # childsite, and status area.
- #
- grid $itk_component(menubar) -row 0 -column 0 -columnspan 2 -sticky ew
- grid $itk_component(toolbar) -row 1 -column 0 -columnspan 2 -sticky ew
- grid $itk_component(mousebar) -row 2 -column 0 -sticky ns
- grid $itk_component(mwchildsite) -row 2 -column 1 -sticky nsew \
- -padx 5 -pady 5
- grid $itk_component(lineframe) -row 3 -column 0 -columnspan 2 -sticky ew
-
- grid columnconfigure $itk_interior 1 -weight 1
- grid rowconfigure $itk_interior 2 -weight 1
-
- #
- # Set the interior to be the childsite for derived classes.
- #
- set itk_interior $itk_component(mwchildsite)
-
- #
- # Initialize all the configuration options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -helpline
-#
-# Specifies whether or not to display the help line. The value
-# may be given in any of the forms acceptable to Tk_GetBoolean.
-# ------------------------------------------------------------------
-configbody iwidgets::Mainwindow::helpline {
- if {$itk_option(-helpline)} {
- pack $itk_component(help) -side left -fill x -expand yes -padx 2
- } else {
- pack forget $itk_component(help)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -statusline
-#
-# Specifies whether or not to display the status line. The value
-# may be given in any of the forms acceptable to Tk_GetBoolean.
-# ------------------------------------------------------------------
-configbody iwidgets::Mainwindow::statusline {
- if {$itk_option(-statusline)} {
- pack $itk_component(status) -side right -fill x -expand yes -padx 2
- } else {
- pack forget $itk_component(status)
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Return the childsite widget.
-# ------------------------------------------------------------------
-body iwidgets::Mainwindow::childsite {} {
- return $itk_component(mwchildsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: menubar ?args?
-#
-# Evaluate the args against the Menubar component.
-# ------------------------------------------------------------------
-body iwidgets::Mainwindow::menubar {args} {
- if {[llength $args] == 0} {
- return $itk_component(menubar)
- } else {
- return [eval $itk_component(menubar) $args]
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: toolbar ?args?
-#
-# Evaluate the args against the Toolbar component.
-# ------------------------------------------------------------------
-body iwidgets::Mainwindow::toolbar {args} {
- if {[llength $args] == 0} {
- return $itk_component(toolbar)
- } else {
- return [eval $itk_component(toolbar) $args]
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: mousebar ?args?
-#
-# Evaluate the args against the Mousebar component.
-# ------------------------------------------------------------------
-body iwidgets::Mainwindow::mousebar {args} {
- if {[llength $args] == 0} {
- return $itk_component(mousebar)
- } else {
- return [eval $itk_component(mousebar) $args]
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: msgd ?args?
-#
-# Evaluate the args against the Messagedialog component.
-# ------------------------------------------------------------------
-body iwidgets::Mainwindow::msgd {args} {
- if {[llength $args] == 0} {
- return $itk_component(msgd)
- } else {
- return [eval $itk_component(msgd) $args]
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _exitCB
-#
-# Menu callback for the exit option from the file menu. The method
-# confirms the user's request to exit the application prior to
-# taking the action.
-# ------------------------------------------------------------------
-body iwidgets::Mainwindow::_exitCB {} {
- #
- # Configure the message dialog for confirmation of the exit request.
- #
- msgd configure -title Confirmation -bitmap questhead \
- -text "Exit confirmation\n\
- Are you sure ?"
- msgd buttonconfigure OK -text Yes
- msgd buttonconfigure Cancel -text No
- msgd default Cancel
- msgd center $itk_component(hull)
-
- #
- # Activate the message dialog and given a positive response
- # proceed to exit the application
- #
- if {[msgd activate]} {
- ::exit
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/menubar.itk b/itcl/iwidgets3.0.0/generic/menubar.itk
deleted file mode 100644
index 1b6e0b25329..00000000000
--- a/itcl/iwidgets3.0.0/generic/menubar.itk
+++ /dev/null
@@ -1,2244 +0,0 @@
-#
-# Menubar widget
-# ----------------------------------------------------------------------
-# The Menubar command creates a new window (given by the pathName
-# argument) and makes it into a Pull down menu widget. Additional
-# options, described above may be specified on the command line or
-# in the option database to configure aspects of the Menubar such
-# as its colors and font. The Menubar command returns its pathName
-# argument. At the time this command is invoked, there must not exist
-# a window named pathName, but pathName's parent must exist.
-#
-# A Menubar is a widget that simplifies the task of creating
-# menu hierarchies. It encapsulates a frame widget, as well
-# as menubuttons, menus, and menu entries. The Menubar allows
-# menus to be specified and refer enced in a more consistent
-# manner than using Tk to build menus directly. First, Menubar
-# allows a menu tree to be expressed in a hierachical "language".
-# The Menubar accepts a menuButtons option that allows a list of
-# menubuttons to be added to the Menubar. In turn, each menubutton
-# accepts a menu option that spec ifies a list of menu entries
-# to be added to the menubutton's menu (as well as an option
-# set for the menu). Cascade entries in turn, accept a menu
-# option that specifies a list of menu entries to be added to
-# the cascade's menu (as well as an option set for the menu). In
-# this manner, a complete menu grammar can be expressed to the
-# Menubar. Additionally, the Menubar allows each component of
-# the Menubar system to be referenced by a simple componentPathName
-# syntax. Finally, the Menubar extends the option set of menu
-# entries to include the helpStr option used to implement status
-# bar help.
-#
-# WISH LIST:
-# This section lists possible future enhancements.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Bill W. Scott EMAIL: bscott@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 Menubar {
- keep -activebackground -activeborderwidth -activeforeground \
- -anchor -background -borderwidth -cursor -disabledforeground \
- -font -foreground -highlightbackground -highlightthickness \
- -highlightcolor -justify -padx -pady -wraplength
-}
-
-class iwidgets::Menubar {
- inherit itk::Widget
-
- constructor { args } {}
-
- itk_option define -foreground foreground Foreground Black
- itk_option define -activebackground activeBackground Foreground "#ececec"
- itk_option define -activeborderwidth activeBorderWidth BorderWidth 2
- itk_option define -activeforeground activeForeground Background black
- itk_option define -anchor anchor Anchor center
- itk_option define -borderwidth borderWidth BorderWidth 2
- itk_option define \
- -disabledforeground disabledForeground DisabledForeground #a3a3a3
- itk_option define \
- -font font Font "-Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*"
- itk_option define \
- -highlightbackground highlightBackground HighlightBackground #d9d9d9
- itk_option define -highlightcolor highlightColor HighlightColor Black
- itk_option define \
- -highlightthickness highlightThickness HighlightThickness 0
- itk_option define -justify justify Justify center
- itk_option define -padx padX Pad 4p
- itk_option define -pady padY Pad 3p
- itk_option define -wraplength wrapLength WrapLength 0
- itk_option define -menubuttons menuButtons MenuButtons {}
- itk_option define -helpvariable helpVariable HelpVariable {}
-
- public {
- method add { type path args } { }
- method delete { args } { }
- method index { path } { }
- method insert { beforeComponent type name args }
- method invoke { entryPath } { }
- method menucget { args } { }
- method menuconfigure { path args } { }
- method path { args } { }
- method type { path } { }
- method yposition { entryPath } { }
- }
-
- private {
- method menubutton { menuName args } { }
- method options { args } { }
- method command { cmdName args } { }
- method checkbutton { chkName args } { }
- method radiobutton { radName args } { }
- method separator { sepName args } { }
- method cascade { casName args } { }
- method _helpHandler { menuPath } { }
- method _addMenuButton { buttonName args} { }
- method _insertMenuButton { beforeMenuPath buttonName args} { }
- method _makeMenuButton {buttonName args} { }
- method _makeMenu \
- { componentName widgetName menuPath menuEvalStr } { }
- method _substEvalStr { evalStr } { }
- method _deleteMenu { menuPath {menuPath2 {}} } { }
- method _deleteAMenu { path } { }
- method _addEntry { type path args } { }
- method _addCascade { tkMenuPath path args } { }
- method _insertEntry { beforeEntryPath type name args } { }
- method _insertCascade { bfIndex tkMenuPath path args } { }
- method _deleteEntry { entryPath {entryPath2 {}} } { }
- method _configureMenu { path tkPath {option {}} args } { }
- method _configureMenuOption { type path args } { }
- method _configureMenuEntry { path index {option {}} args } { }
- method _unsetPaths { parent } { }
- method _entryPathToTkMenuPath {entryPath} { }
- method _getTkIndex { tkMenuPath tkIndex} { }
- method _getPdIndex { tkMenuPath tkIndex } { }
- method _getMenuList { } { }
- method _getEntryList { menu } { }
- method _parsePath { path } { }
- method _getSymbolicPath { parent segment } { }
- method _getCallerLevel { }
-
- variable _parseLevel 0 ;# The parse level depth
- variable _callerLevel #0 ;# abs level of caller
- variable _pathMap ;# Array indexed by Menubar's path
- ;# naming, yields tk menu path
- variable _entryIndex -1 ;# current entry help is displayed
- ;# for during help <motion> events
-
- variable _tkMenuPath ;# last tk menu being added to
- variable _ourMenuPath ;# our last valid path constructed.
-
- variable _menuOption ;# The -menu option
- variable _helpString ;# The -helpstr optio
- }
-}
-
-#
-# Use option database to override default resources.
-#
-option add *Menubar*Menu*tearOff false widgetDefault
-option add *Menubar*Menubutton*relief flat widgetDefault
-option add *Menubar*Menu*relief raised widgetDefault
-
-#
-# Provide a lowercase access method for the menubar class
-#
-proc ::iwidgets::menubar { args } {
- uplevel ::iwidgets::Menubar $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Menubar::constructor { args } {
- component hull configure -borderwidth 0
-
- #
- # Create the Menubar Frame that will hold the menus.
- #
- # might want to make -relief and -bd options with defaults
- itk_component add menubar {
- frame $itk_interior.menubar -relief raised -bd 2
- } {
- keep -cursor -background -width -height
- }
- pack $itk_component(menubar) -fill both -expand yes
-
- # Map our pathname to class to the actual menubar frame
- set _pathMap(.) $itk_component(menubar)
-
- eval itk_initialize $args
-
- #
- # HACK HACK HACK
- # Tk expects some variables to be defined and due to some
- # unknown reason we confuse its normal ordering. So, if
- # the user creates a menubutton with no menu it will fail
- # when clicked on with a "Error: can't read $tkPriv(oldGrab):
- # no such element in array". So by setting it to null we
- # avoid this error.
- uplevel #0 "set tkPriv(oldGrab) {}"
-
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-# This first set of options are for configuring menus and/or menubuttons
-# at the menu level.
-#
-# ------------------------------------------------------------------
-# OPTION -foreground
-#
-# menu
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::foreground {
-}
-
-# ------------------------------------------------------------------
-# OPTION -activebackground
-#
-# menu
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::activebackground {
-}
-
-# ------------------------------------------------------------------
-# OPTION -activeborderwidth
-#
-# menu
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::activeborderwidth {
-}
-
-# ------------------------------------------------------------------
-# OPTION -activeforeground
-#
-# menu
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::activeforeground {
-}
-
-# ------------------------------------------------------------------
-# OPTION -anchor
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::anchor {
-}
-
-# ------------------------------------------------------------------
-# OPTION -borderwidth
-#
-# menu
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::borderwidth {
-}
-
-# ------------------------------------------------------------------
-# OPTION -disabledforeground
-#
-# menu
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::disabledforeground {
-}
-
-# ------------------------------------------------------------------
-# OPTION -font
-#
-# menu
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::font {
-}
-
-# ------------------------------------------------------------------
-# OPTION -highlightbackground
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::highlightbackground {
-}
-
-# ------------------------------------------------------------------
-# OPTION -highlightcolor
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::highlightcolor {
-}
-
-# ------------------------------------------------------------------
-# OPTION -highlightthickness
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::highlightthickness {
-}
-
-# ------------------------------------------------------------------
-# OPTION -justify
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::justify {
-}
-
-# ------------------------------------------------------------------
-# OPTION -padx
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::padx {
-}
-
-# ------------------------------------------------------------------
-# OPTION -pady
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::pady {
-}
-
-# ------------------------------------------------------------------
-# OPTION -wraplength
-#
-# menubutton
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::wraplength {
-}
-
-# ------------------------------------------------------------------
-# OPTION -menubuttons
-#
-# The menuButton option is a string which specifies the arrangement
-# of menubuttons on the Menubar frame. Each menubutton entry is
-# delimited by the newline character. Each entry is treated as
-# an add command to the Menubar.
-#
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::menubuttons {
- if { $itk_option(-menubuttons) != {} } {
-
- # IF one exists already, delete the old one and create
- # a new one
- if { ! [catch {_parsePath .0}] } {
- delete .0 .last
- }
-
- #
- # Determine the context level to evaluate the option string at
- #
- set _callerLevel [_getCallerLevel]
-
- #
- # Parse the option string in their scope, then execute it in
- # our scope.
- #
- incr _parseLevel
- _substEvalStr itk_option(-menubuttons)
- eval $itk_option(-menubuttons)
-
- # reset so that we know we aren't parsing in a scope currently.
- incr _parseLevel -1
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION -helpvariable
-#
-# Specifies the global variable to update whenever the mouse is in
-# motion over a menu entry. This global variable is updated with the
-# current value of the active menu entry's helpStr. Other widgets
-# can "watch" this variable with the trace command, or as is the
-# case with entry or label widgets, they can set their textVariable
-# to the same global variable. This allows for a simple implementation
-# of a help status bar. Whenever the mouse leaves a menu entry,
-# the helpVariable is set to the empty string {}.
-# ------------------------------------------------------------------
-configbody iwidgets::Menubar::helpvariable {
- if {"" != $itk_option(-helpvariable) &&
- ![string match ::* $itk_option(-helpvariable)] &&
- ![string match @itcl* $itk_option(-helpvariable)]} {
- set itk_option(-helpvariable) "::$itk_option(-helpvariable)"
- }
-}
-
-
-# -------------------------------------------------------------
-#
-# METHOD: add type path args
-#
-# Adds either a menu to the menu bar or a menu entry to a
-# menu pane.
-#
-# If the type is one of cascade, checkbutton, command,
-# radiobutton, or separator it adds a new entry to the bottom
-# of the menu denoted by the menuPath prefix of componentPath-
-# Name. The new entry's type is given by type. If additional
-# arguments are present, they specify options available to
-# component type Entry. See the man pages for menu(n) in the
-# section on Entries. In addition all entries accept an added
-# option, helpStr:
-#
-# -helpstr value
-#
-# Specifes the string to associate with the entry.
-# When the mouse moves over the associated entry, the variable
-# denoted by helpVariable is set. Another widget can bind to
-# the helpVariable and thus display status help.
-#
-# If the type is menubutton, it adds a new menubut-
-# ton to the menu bar. If additional arguments are present,
-# they specify options available to component type MenuButton.
-#
-# If the type is menubutton or cascade, the menu
-# option is available in addition to normal Tk options for
-# these to types.
-#
-# -menu menuSpec
-#
-# This is only valid for componentPathNames of type
-# menubutton or cascade. Specifes an option set and/or a set
-# of entries to place on a menu and associate with the menu-
-# button or cascade. The option keyword allows the menu widget
-# to be configured. Each item in the menuSpec is treated as
-# add commands (each with the possibility of having other
-# -menu options). In this way a menu can be recursively built.
-#
-# The last segment of componentPathName cannot be
-# one of the keywords last, menu, end. Additionally, it may
-# not be a number. However the componentPathName may be refer-
-# enced in this manner (see discussion of Component Path
-# Names).
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::add { type path args } {
- if ![regexp \
- {^(menubutton|command|cascade|separator|radiobutton|checkbutton)$} \
- $type] {
- error "bad type \"$type\": must be one of the following:\
- \"command\", \"checkbutton\", \"radiobutton\",\
- \"separator\", \"cascade\", or \"menubutton\""
- }
- regexp {[^.]+$} $path segName
- if [regexp {^(menu|last|end|[0-9]+)$} $segName] {
- error "bad name \"$segName\": user created component \
- path names may not end with \
- \"end\", \"last\", \"menu\", \
- or be an integer"
- }
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # OK, either add a menu
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { $type == "menubutton" } {
- # grab the last component name (the menu name)
- eval _addMenuButton $segName $args
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Or add an entry
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- } else {
- eval _addEntry $type $path $args
- }
-}
-
-
-# -------------------------------------------------------------
-#
-# METHOD: delete entryPath ?entryPath2?
-#
-# If componentPathName is of component type MenuButton or
-# Menu, delete operates on menus. If componentPathName is of
-# component type Entry, delete operates on menu entries.
-#
-# This command deletes all components between com-
-# ponentPathName and componentPathName2 inclusive. If com-
-# ponentPathName2 is omitted then it defaults to com-
-# ponentPathName. Returns an empty string.
-#
-# If componentPathName is of type Menubar, then all menus
-# and the menu bar frame will be destroyed. In this case com-
-# ponentPathName2 is ignored.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::delete { args } {
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Handle out of bounds in arg lengths
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { [llength $args] > 0 && [llength $args] <=2 } {
-
- # Path Conversions
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- set path [_parsePath [lindex $args 0]]
-
- set pathOrIndex $_pathMap($path)
-
- # Menu Entry
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { [regexp {^[0-9]+$} $pathOrIndex] } {
- eval "_deleteEntry $args"
-
- # Menu
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- } else {
- eval "_deleteMenu $args"
- }
- } else {
- error "wrong # args: should be \
- \"$itk_component(hull) delete pathName ?pathName2?\""
- }
- return ""
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: index path
-#
-# If componentPathName is of type menubutton or menu, it
-# returns the position of the menu/menubutton on the Menubar
-# frame.
-#
-# If componentPathName is of type command, separator,
-# radiobutton, checkbutton, or cascade, it returns the menu
-# widget's numerical index for the entry corresponding to com-
-# ponentPathName. If path is not found or the Menubar frame is
-# passed in, -1 is returned.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::index { path } {
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Path conversions
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { [catch {set fullPath [_parsePath $path]} ] } {
- return -1
- }
- if { [catch {set tkPathOrIndex $_pathMap($fullPath)} ] } {
- return -1
- }
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # If integer, return the value, otherwise look up the menu position
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { [regexp {^[0-9]+$} $tkPathOrIndex] } {
- set index $tkPathOrIndex
- } else {
- set index [lsearch [_getMenuList] $fullPath]
- }
-
- return $index
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: insert beforeComponent type name ?option value?
-#
-# Insert a new component named name before the component
-# specified by componentPathName.
-#
-# If componentPathName is of type MenuButton or Menu, the
-# new component inserted is of type Menu and given the name
-# name. In this case valid option value pairs are those
-# accepted by menubuttons.
-#
-# If componentPathName is of type Entry, the new com-
-# ponent inserted is of type Entry and given the name name. In
-# this case valid option value pairs are those accepted by
-# menu entries.
-#
-# name cannot be one of the keywords last, menu, end.
-# dditionally, it may not be a number. However the com-
-# ponentPathName may be referenced in this manner (see discus-
-# sion of Component Path Names).
-#
-# Returns -1 if the menubar frame is passed in.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::insert { beforeComponent type name args } {
- if ![regexp \
- {^(menubutton|command|cascade|separator|radiobutton|checkbutton)$} \
- $type] {
- error "bad type \"$type\": must be one of the following:\
- \"command\", \"checkbutton\", \"radiobutton\",\
- \"separator\", \"cascade\", or \"menubutton\""
- }
- regexp {[^.]+$} $name segName
- if [regexp {^(menu|last|end|[0-9]+)$} $segName] {
- error "bad name \"$name\": user created component \
- path names may not end with \
- \"end\", \"last\", \"menu\", \
- or be an integer"
- }
-
- set beforeComponent [_parsePath $beforeComponent]
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Choose menu insertion or entry insertion
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { $type == "menubutton" } {
- eval _insertMenuButton $beforeComponent $name $args
- } else {
- eval _insertEntry $beforeComponent $type $name $args
- }
-}
-
-
-# -------------------------------------------------------------
-#
-# METHOD: invoke entryPath
-#
-# Invoke the action of the menu entry denoted by
-# entryComponentPathName. See the sections on the individual
-# entries in the menu(n) man pages. If the menu entry is dis-
-# abled then nothing happens. If the entry has a command
-# associated with it then the result of that command is
-# returned as the result of the invoke widget command. Other-
-# wise the result is an empty string.
-#
-# If componentPathName is not a menu entry, an error is
-# issued.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::invoke { entryPath } {
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Path Conversions
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- set entryPath [_parsePath $entryPath]
- set index $_pathMap($entryPath)
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Error Processing
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- # first verify that beforeEntryPath is actually a path to
- # an entry and not to menu, menubutton, etc.
- if { ! [regexp {^[0-9]+$} $index] } {
- error "bad entry path: beforeEntryPath is not an entry"
- }
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Call invoke command
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- # get the tk menu path to call
- set tkMenuPath [_entryPathToTkMenuPath $entryPath]
-
- # call the menu's invoke command, adjusting index based on tearoff
- $tkMenuPath invoke [_getTkIndex $tkMenuPath $index]
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: menucget componentPath option
-#
-# Returns the current value of the configuration option
-# given by option. The component type of componentPathName
-# determines the valid available options.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::menucget { path opt } {
- return [lindex [menuconfigure $path $opt] 4]
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: menuconfigure componentPath ?option? ?value option value...?
-#
-# Query or modify the configuration options of the sub-
-# component of the Menubar specified by componentPathName. If
-# no option is specified, returns a list describing all of the
-# available options for componentPathName (see
-# Tk_ConfigureInfo for information on the format of this
-# list). If option is specified with no value, then the com-
-# mand returns a list describing the one named option (this
-# list will be identical to the corresponding sublist of the
-# value returned if no option is specified). If one or more
-# option-value pairs are specified, then the command modifies
-# the given widget option(s) to have the given value(s); in
-# this case the command returns an empty string. The component
-# type of componentPathName determines the valid available
-# options.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::menuconfigure { path args } {
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Path Conversions
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- set path [_parsePath $path]
- set tkPathOrIndex $_pathMap($path)
-
- # Case: Menu entry being configured
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { [regexp {^[0-9]+$} $tkPathOrIndex] } {
- eval "_configureMenuEntry $path $tkPathOrIndex $args"
-
- # Case: Menu (button and pane) being configured.
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- } else {
- eval _configureMenu $path $tkPathOrIndex $args
- }
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: path
-#
-# SYNOPIS: path ?<mode>? <pattern>
-#
-# Returns a fully formed component path that matches pat-
-# tern. If no match is found it returns -1. The mode argument
-# indicates how the search is to be matched against pattern
-# and it must have one of the following values:
-#
-# -glob Pattern is a glob-style pattern which is
-# matched against each component path using the same rules as
-# the string match command.
-#
-# -regexp Pattern is treated as a regular expression
-# and matched against each component path using the same
-# rules as the regexp command.
-#
-# The default mode is -glob.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::path { args } {
-
- set len [llength $args]
- if { $len < 1 || $len > 2 } {
- error "wrong # args: should be \
- \"$itk_component(hull) path ?mode?> <pattern>\""
- }
-
- set pathList [array names _pathMap]
-
- set len [llength $args]
- switch -- $len {
- 1 {
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Case: no search modes given
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- set pattern [lindex $args 0]
- set found [lindex $pathList [lsearch -glob $pathList $pattern]]
- }
- 2 {
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Case: search modes present (-glob, -regexp)
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- set options [lindex $args 0]
- set pattern [lindex $args 1]
- set found \
- [lindex $pathList [lsearch $options $pathList $pattern]]
- }
- default {
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Case: wrong # arguments
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- error "wrong # args: \
- should be \"$itk_component(hull) path ?-glob? ?-regexp? pattern\""
- }
- }
-
- return $found
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: type path
-#
-# Returns the type of the component given by entryCom-
-# ponentPathName. For menu entries, this is the type argument
-# passed to the add/insert widget command when the entry was
-# created, such as command or separator. Othewise it is either
-# a menubutton or a menu.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::type { path } {
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Path Conversions
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- set path [_parsePath $path]
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Error Handling: does the path exist?
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { [catch {set index $_pathMap($path)} ] } {
- error "bad path \"$path\""
- }
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # ENTRY, Ask TK for type
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- if { [regexp {^[0-9]+$} $index] } {
- # get the menu path from the entry path name
- set tkMenuPath [_entryPathToTkMenuPath $path]
-
- # call the menu's type command, adjusting index based on tearoff
- set type [$tkMenuPath type [_getTkIndex $tkMenuPath $index]]
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # MENUBUTTON, MENU, or FRAME
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- } else {
- # should not happen, but have a path that is not a valid window.
- if { [catch {set className [winfo class $_pathMap($path)]}] } {
- error "serious error: \"$path\" is not a valid window"
- }
- # get the classname, look it up, get index, us it to look up type
- set type [ lindex \
- {frame menubutton menu} \
- [lsearch { Frame Menubutton Menu } $className] \
- ]
- }
- return $type
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: yposition entryPath
-#
-# Returns a decimal string giving the y-coordinate within
-# the menu window of the topmost pixel in the entry specified
-# by componentPathName. If the componentPathName is not an
-# entry, an error is issued.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::yposition { entryPath } {
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Path Conversions
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- set entryPath [_parsePath $entryPath]
- set index $_pathMap($entryPath)
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Error Handling
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- # first verify that entryPath is actually a path to
- # an entry and not to menu, menubutton, etc.
- if { ! [regexp {^[0-9]+$} $index] } {
- error "bad value: entryPath is not an entry"
- }
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Call yposition command
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
- # get the menu path from the entry path name
- set tkMenuPath [_entryPathToTkMenuPath $entryPath]
-
- # call the menu's yposition command, adjusting index based on tearoff
- return [$tkMenuPath yposition [_getTkIndex $tkMenuPath $index]]
-
-}
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# PARSING METHODS
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# -------------------------------------------------------------
-#
-# PARSING METHOD: menubutton
-#
-# This method is invoked via an evaluation of the -menubuttons
-# option for the Menubar.
-#
-# It adds a new menubutton and processes any -menu options
-# for creating entries on the menu pane associated with the
-# menubutton
-# -------------------------------------------------------------
-body iwidgets::Menubar::menubutton { menuName args } {
- eval "add menubutton .$menuName $args"
-}
-
-# -------------------------------------------------------------
-#
-# PARSING METHOD: options
-#
-# This method is invoked via an evaluation of the -menu
-# option for menubutton commands.
-#
-# It configures the current menu ($_ourMenuPath) with the options
-# that follow (args)
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::options { args } {
- eval "$_tkMenuPath configure $args"
-}
-
-
-# -------------------------------------------------------------
-#
-# PARSING METHOD: command
-#
-# This method is invoked via an evaluation of the -menu
-# option for menubutton commands.
-#
-# It adds a new command entry to the current menu, $_ourMenuPath
-# naming it $cmdName. Since this is the most common case when
-# creating menus, streamline it by duplicating some code from
-# the add{} method.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::command { cmdName args } {
- set path $_ourMenuPath.$cmdName
-
- # error checking
- regsub {.*[.]} $path "" segName
- if [regexp {^(menu|last|end|[0-9]+)$} $segName] {
- error "bad name \"$segName\": user created component \
- path names may not end with \
- \"end\", \"last\", \"menu\", \
- or be an integer"
- }
-
- eval _addEntry command $path $args
-}
-
-# -------------------------------------------------------------
-#
-# PARSING METHOD: checkbutton
-#
-# This method is invoked via an evaluation of the -menu
-# option for menubutton/cascade commands.
-#
-# It adds a new checkbutton entry to the current menu, $_ourMenuPath
-# naming it $chkName.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::checkbutton { chkName args } {
- eval "add checkbutton $_ourMenuPath.$chkName $args"
-}
-
-# -------------------------------------------------------------
-#
-# PARSING METHOD: radiobutton
-#
-# This method is invoked via an evaluation of the -menu
-# option for menubutton/cascade commands.
-#
-# It adds a new radiobutton entry to the current menu, $_ourMenuPath
-# naming it $radName.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::radiobutton { radName args } {
- eval "add radiobutton $_ourMenuPath.$radName $args"
-}
-
-# -------------------------------------------------------------
-#
-# PARSING METHOD: separator
-#
-# This method is invoked via an evaluation of the -menu
-# option for menubutton/cascade commands.
-#
-# It adds a new separator entry to the current menu, $_ourMenuPath
-# naming it $sepName.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::separator { sepName args } {
- eval $_tkMenuPath add separator
- set _pathMap($_ourMenuPath.$sepName) [_getPdIndex $_tkMenuPath end]
-}
-
-# -------------------------------------------------------------
-#
-# PARSING METHOD: cascade
-#
-# This method is invoked via an evaluation of the -menu
-# option for menubutton/cascade commands.
-#
-# It adds a new cascade entry to the current menu, $_ourMenuPath
-# naming it $casName. It processes the -menu option if present,
-# adding a new menu pane and its associated entries found.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::cascade { casName args } {
-
- # Save the current menu we are adding to, cascade can change
- # the current menu through -menu options.
- set saveOMP $_ourMenuPath
- set saveTKP $_tkMenuPath
-
- eval "add cascade $_ourMenuPath.$casName $args"
-
- # Restore the saved menu states so that the next entries of
- # the -menu/-menubuttons we are processing will be at correct level.
- set _ourMenuPath $saveOMP
- set _tkMenuPath $saveTKP
-}
-
-# ... A P I S U P P O R T M E T H O D S...
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# MENU ADD, INSERT, DELETE
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _addMenuButton
-#
-# Makes a new menubutton & associated -menu, pack appended
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_addMenuButton { buttonName args} {
-
- eval "_makeMenuButton $buttonName $args"
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Pack at end, adjust for help buttonName
- # ''''''''''''''''''''''''''''''''''
- if { $buttonName == "help" } {
- pack $itk_component($buttonName) -side right
- } else {
- pack $itk_component($buttonName) -side left
- }
-
- return $itk_component($buttonName)
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _insertMenuButton
-#
-# inserts a menubutton named $buttonName on a menu bar before
-# another menubutton specified by $beforeMenuPath
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_insertMenuButton { beforeMenuPath buttonName args} {
-
- eval "_makeMenuButton $buttonName $args"
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Pack before the $beforeMenuPath
- # ''''''''''''''''''''''''''''''''
- set beforeTkMenu $_pathMap($beforeMenuPath)
- regsub {[.]menu$} $beforeTkMenu "" beforeTkMenu
- pack $itk_component(menubar).$buttonName \
- -side left \
- -before $beforeTkMenu
-
- return $itk_component($buttonName)
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _makeMenuButton
-#
-# creates a menubutton named buttonName on the menubar with args.
-# The -menu option if present will trigger attaching a menu pane.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_makeMenuButton {buttonName args} {
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Capture the -menu option if present
- # '''''''''''''''''''''''''''''''''''
- array set temp $args
- if { [::info exists temp(-menu)] } {
- # We only keep this in case of menuconfigure or menucget
- set _menuOption(.$buttonName) $temp(-menu)
- set menuEvalStr $temp(-menu)
- } else {
- set menuEvalStr {}
- }
-
- # attach the actual menu widget to the menubutton's arg list
- set temp(-menu) $itk_component(menubar).$buttonName.menu
- set args [array get temp]
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Create menubutton component
- # ''''''''''''''''''''''''''''''''
- itk_component add $buttonName {
- eval ::menubutton \
- $itk_component(menubar).$buttonName \
- $args
- } {
- keep \
- -activebackground \
- -activeforeground \
- -anchor \
- -background \
- -borderwidth \
- -cursor \
- -disabledforeground \
- -font \
- -foreground \
- -highlightbackground \
- -highlightcolor \
- -highlightthickness \
- -justify \
- -padx \
- -pady \
- -wraplength
- }
-
- set _pathMap(.$buttonName) $itk_component($buttonName)
-
- _makeMenu \
- $buttonName-menu \
- $itk_component($buttonName).menu \
- .$buttonName \
- $menuEvalStr
-
- return $itk_component($buttonName)
-
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _makeMenu
-#
-# Creates a menu.
-# It then evaluates the $menuEvalStr to create entries on the menu.
-#
-# Assumes the existence of $itk_component($buttonName)
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_makeMenu \
- { componentName widgetName menuPath menuEvalStr } {
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Create menu component
- # ''''''''''''''''''''''''''''''''
- itk_component add $componentName {
- ::menu $widgetName
- } {
- keep \
- -activebackground \
- -activeborderwidth \
- -activeforeground \
- -background \
- -borderwidth \
- -cursor \
- -disabledforeground \
- -font \
- -foreground
- }
-
- set _pathMap($menuPath.menu) $itk_component($componentName)
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Attach help handler to this menu
- # ''''''''''''''''''''''''''''''''
- bind $itk_component($componentName) <<MenuSelect>> \
- [code $this _helpHandler $menuPath.menu]
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Handle -menu
- #'''''''''''''''''''''''''''''''''
- set _ourMenuPath $menuPath
- set _tkMenuPath $itk_component($componentName)
-
- #
- # A zero parseLevel says we are at the top of the parse tree,
- # so get the context scope level and do a subst for the menuEvalStr.
- #
- if { $_parseLevel == 0 } {
- set _callerLevel [_getCallerLevel]
- }
-
- #
- # bump up the parse level, so if we get called via the 'eval $menuEvalStr'
- # we know to skip the above steps...
- #
- incr _parseLevel
- eval $menuEvalStr
-
- #
- # leaving, so done with this parse level, so bump it back down
- #
- incr _parseLevel -1
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _substEvalStr
-#
-# This performs the substitution and evaluation of $ [], \ found
-# in the -menubutton/-menus options
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_substEvalStr { evalStr } {
- upvar $evalStr evalStrRef
- set evalStrRef [uplevel $_callerLevel [list subst $evalStrRef]]
-}
-
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _deleteMenu
-#
-# _deleteMenu menuPath ?menuPath2?
-#
-# deletes menuPath or from menuPath to menuPath2
-#
-# Menu paths may be formed in one of two ways
-# .MENUBAR.menuName where menuName is the name of the menu
-# .MENUBAR.menuName.menu where menuName is the name of the menu
-#
-# The basic rule is '.menu' is not needed.
-# -------------------------------------------------------------
-body iwidgets::Menubar::_deleteMenu { menuPath {menuPath2 {}} } {
-
- if { $menuPath2 == "" } {
- # get a corrected path (subst for number, last, end)
- set path [_parsePath $menuPath]
-
- _deleteAMenu $path
-
- } else {
- # gets the list of menus in interface order
- set menuList [_getMenuList]
-
- # ... get the start menu and the last menu ...
-
- # get a corrected path (subst for number, last, end)
- set menuStartPath [_parsePath $menuPath]
-
- regsub {[.]menu$} $menuStartPath "" menuStartPath
-
- set menuEndPath [_parsePath $menuPath2]
-
- regsub {[.]menu$} $menuEndPath "" menuEndPath
-
- # get the menu position (0 based) of the start and end menus.
- set start [lsearch -exact $menuList $menuStartPath]
- if { $start == -1 } {
- error "bad menu path \"$menuStartPath\": \
- should be one of $menuList"
- }
- set end [lsearch -exact $menuList $menuEndPath]
- if { $end == -1 } {
- error "bad menu path \"$menuEndPath\": \
- should be one of $menuList"
- }
-
- # now create the list from this range of menus
- set delList [lrange $menuList $start $end]
-
- # walk thru them deleting each menu.
- # this list has no .menu on the end.
- foreach m $delList {
- _deleteAMenu $m.menu
- }
- }
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _deleteAMenu
-#
-# _deleteMenu menuPath
-#
-# deletes a single Menu (menubutton and menu pane with entries)
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_deleteAMenu { path } {
-
- # We will normalize the path to not include the '.menu' if
- # it is on the path already.
-
- regsub {[.]menu$} $path "" menuButtonPath
- regsub {.*[.]} $menuButtonPath "" buttonName
-
- # Loop through and destroy any cascades, etc on menu.
- set entryList [_getEntryList $menuButtonPath]
- foreach entry $entryList {
- _deleteEntry $entry
- }
-
- # Delete the menubutton and menu components...
- destroy $itk_component($buttonName-menu)
- destroy $itk_component($buttonName)
-
- # This is because of some itcl bug that doesn't delete
- # the component on the destroy in some cases...
- catch {itk_component delete $buttonName-menu}
- catch {itk_component delete $buttonName}
-
- # unset our paths
- _unsetPaths $menuButtonPath
-
-}
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# ENTRY ADD, INSERT, DELETE
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _addEntry
-#
-# Adds an entry to menu.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_addEntry { type path args } {
-
- # Error Checking
- # ''''''''''''''
- # the path should not end with '.menu'
- # Not needed -- already checked by add{}
- # if { [regexp {[.]menu$} $path] } {
- # error "bad entry path: \"$path\". \
- # The name \"menu\" is reserved for menu panes"
- # }
-
- # get the tkMenuPath
- set tkMenuPath [_entryPathToTkMenuPath $path]
- if { $tkMenuPath == "" } {
- error "bad entry path: \"$path\". The menu path prefix is not valid"
- }
-
- # get the -helpstr option if present
- array set temp $args
- if { [::info exists temp(-helpstr)] } {
- set helpStr $temp(-helpstr)
- unset temp(-helpstr)
- } else {
- set helpStr {}
- }
- set args [array get temp]
-
- # Handle CASCADE
- # ''''''''''''''
- # if this is a cascade go ahead and add in the menu...
- if { $type == "cascade" } {
- eval [list _addCascade $tkMenuPath $path] $args
- # Handle Non-CASCADE
- # ''''''''''''''''''
- } else {
- # add the entry
- eval [list $tkMenuPath add $type] $args
- set _pathMap($path) [_getPdIndex $tkMenuPath end]
- }
-
- # Remember the help string
- set _helpString($path) $helpStr
-
- return $_pathMap($path)
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _addCascade
-#
-# Creates a cascade button. Handles the -menu option
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_addCascade { tkMenuPath path args } {
-
- # get the cascade name from our path
- regsub {.*[.]} $path "" cascadeName
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Capture the -menu option if present
- # '''''''''''''''''''''''''''''''''''
- array set temp $args
- if { [::info exists temp(-menu)] } {
- set menuEvalStr $temp(-menu)
- } else {
- set menuEvalStr {}
- }
-
- # attach the menu pane
- set temp(-menu) $tkMenuPath.$cascadeName
- set args [array get temp]
-
- # Create the cascade entry
- eval $tkMenuPath add cascade $args
-
- # Keep the -menu string in case of menuconfigure or menucget
- if { $menuEvalStr != "" } {
- set _menuOption($path) $menuEvalStr
- }
-
- # update our pathmap
- set _pathMap($path) [_getPdIndex $tkMenuPath end]
-
- _makeMenu \
- $cascadeName-menu \
- $tkMenuPath.$cascadeName \
- $path \
- $menuEvalStr
-
- #return $itk_component($cascadeName)
-
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _insertEntry
-#
-# inserts an entry on a menu before entry given by beforeEntryPath.
-# The added entry is of type TYPE and its name is NAME. ARGS are
-# passed for customization of the entry.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_insertEntry { beforeEntryPath type name args } {
-
- # convert entryPath to an index value
- set bfIndex $_pathMap($beforeEntryPath)
-
- # first verify that beforeEntryPath is actually a path to
- # an entry and not to menu, menubutton, etc.
- if { ! [regexp {^[0-9]+$} $bfIndex] } {
- error "bad entry path: beforeEntryPath is not an entry"
- }
-
- # get the menu path from the entry path name
- regsub {[.][^.]*$} $beforeEntryPath "" menuPathPrefix
- set tkMenuPath $_pathMap($menuPathPrefix.menu)
-
- # INDEX is zero based at this point.
-
- # ENTRIES is a zero based list...
- set entries [_getEntryList $menuPathPrefix]
-
- #
- # Adjust the entries after the inserted item, to have
- # the correct index numbers. Note, we stay zero based
- # even though tk flips back and forth depending on tearoffs.
- #
- for {set i $bfIndex} {$i < [llength $entries]} {incr i} {
- # path==entry path in numerical order
- set path [lindex $entries $i]
-
- # add one to each entry after the inserted one.
- set _pathMap($path) [expr $i + 1]
- }
-
- # get the -helpstr option if present
- array set temp $args
- if { [::info exists temp(-helpstr)] } {
- set helpStr $temp(-helpstr)
- unset temp(-helpstr)
- } else {
- set helpStr {}
- }
- set args [array get temp]
-
- set path $menuPathPrefix.$name
-
- # Handle CASCADE
- # ''''''''''''''
- # if this is a cascade go ahead and add in the menu...
- if { [string match cascade $type] } {
-
- if { [ catch {eval "_insertCascade \
- $bfIndex $tkMenuPath $path $args"} errMsg ]} {
- for {set i $bfIndex} {$i < [llength $entries]} {incr i} {
- # path==entry path in numerical order
- set path [lindex $entries $i]
-
- # sub the one we added earlier.
- set _pathMap($path) [expr $_pathMap($path) - 1]
- # @@ delete $hs
- }
- error $errMsg
- }
-
- # Handle Entry
- # ''''''''''''''
- } else {
-
- # give us a zero or 1-based index based on tear-off menu status
- # invoke the menu's insert command
- if { [catch {eval "$tkMenuPath insert \
- [_getTkIndex $tkMenuPath $bfIndex] $type $args"} errMsg]} {
- for {set i $bfIndex} {$i < [llength $entries]} {incr i} {
- # path==entry path in numerical order
- set path [lindex $entries $i]
-
- # sub the one we added earlier.
- set _pathMap($path) [expr $_pathMap($path) - 1]
- # @@ delete $hs
- }
- error $errMsg
- }
-
-
- # add the helpstr option to our options list (attach to entry)
- set _helpString($path) $helpStr
-
- # Insert the new entry path into pathmap giving it an index value
- set _pathMap($menuPathPrefix.$name) $bfIndex
-
- }
-
- return [_getTkIndex $tkMenuPath $bfIndex]
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _insertCascade
-#
-# Creates a cascade button. Handles the -menu option
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_insertCascade { bfIndex tkMenuPath path args } {
-
- # get the cascade name from our path
- regsub {.*[.]} $path "" cascadeName
-
- #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Capture the -menu option if present
- # '''''''''''''''''''''''''''''''''''
- array set temp $args
- if { [::info exists temp(-menu)] } {
- # Keep the -menu string in case of menuconfigure or menucget
- set _menuOption($path) $temp(-menu)
- set menuEvalStr $temp(-menu)
- } else {
- set menuEvalStr {}
- }
-
- # attach the menu pane
- set temp(-menu) $tkMenuPath.$cascadeName
- set args [array get temp]
-
- # give us a zero or 1-based index based on tear-off menu status
- # invoke the menu's insert command
- eval "$tkMenuPath insert \
- [_getTkIndex $tkMenuPath $bfIndex] cascade $args"
-
- # Insert the new entry path into pathmap giving it an index value
- set _pathMap($path) $bfIndex
- _makeMenu \
- $cascadeName-menu \
- $tkMenuPath.$cascadeName \
- $path \
- $menuEvalStr
-
- #return $itk_component($cascadeName)
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _deleteEntry
-#
-# _deleteEntry entryPath ?entryPath2?
-#
-# either
-# deletes the entry entryPath
-# or
-# deletes the entries from entryPath to entryPath2
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_deleteEntry { entryPath {entryPath2 {}} } {
-
- if { $entryPath2 == "" } {
- # get a corrected path (subst for number, last, end)
- set path [_parsePath $entryPath]
-
- set entryIndex $_pathMap($path)
- if { $entryIndex == -1 } {
- error "bad value for pathName: \
- $entryPath in call to delet"
- }
-
- # get the type, if cascade, we will want to delete menu
- set type [type $path]
-
- # ... munge up the menu name ...
-
- # the tkMenuPath is looked up with the .menu added to lookup
- # strip off the entry component
- regsub {[.][^.]*$} $path "" menuPath
- set tkMenuPath $_pathMap($menuPath.menu)
-
- # get the ordered entry list
- set entries [_getEntryList $menuPath]
-
- # ... Fix up path entry indices ...
-
- # delete the path from the map
- unset _pathMap([lindex $entries $entryIndex])
-
- # Subtract off 1 for each entry below the deleted one.
- for {set i [expr $entryIndex + 1]} \
- {$i < [llength $entries]} \
- {incr i} {
- set epath [lindex $entries $i]
- incr _pathMap($epath) -1
- }
-
- # ... Delete the menu entry widget ...
-
- # delete the menu entry, ajusting index for TK
- $tkMenuPath delete [_getTkIndex $tkMenuPath $entryIndex]
-
- if { $type == "cascade" } {
- regsub {.*[.]} $path "" cascadeName
- destroy $itk_component($cascadeName-menu)
-
- # This is because of some itcl bug that doesn't delete
- # the component on the destroy in some cases...
- catch {itk_component delete $cascadeName-menu}
-
- _unsetPaths $path
- }
-
- } else {
- # get a corrected path (subst for number, last, end)
- set path1 [_parsePath $entryPath]
- set path2 [_parsePath $entryPath2]
-
- set fromEntryIndex $_pathMap($path1)
- if { $fromEntryIndex == -1 } {
- error "bad value for entryPath1: \
- $entryPath in call to delet"
- }
- set toEntryIndex $_pathMap($path2)
- if { $toEntryIndex == -1 } {
- error "bad value for entryPath2: \
- $entryPath2 in call to delet"
- }
- # ... munge up the menu name ...
-
- # the tkMenuPath is looked up with the .menu added to lookup
- # strip off the entry component
- regsub {[.][^.]*$} $path1 "" menuPath
- set tkMenuPath $_pathMap($menuPath.menu)
-
- # get the ordered entry list
- set entries [_getEntryList $menuPath]
-
- # ... Fix up path entry indices ...
-
- # delete the range from the pathMap list
- for {set i $fromEntryIndex} {$i <= $toEntryIndex} {incr i} {
- unset _pathMap([lindex $entries $i])
- }
-
- # Subtract off 1 for each entry below the deleted range.
- # Loop from one below the bottom delete entry to end list
- for {set i [expr $toEntryIndex + 1]} \
- {$i < [llength $entries]} \
- {incr i} {
- # take this path and sets its index back by size of
- # deleted range.
- set path [lindex $entries $i]
- set _pathMap($path) \
- [expr $_pathMap($path) - \
- (($toEntryIndex - $fromEntryIndex) + 1)]
- }
-
- # ... Delete the menu entry widget ...
-
- # delete the menu entry, ajusting index for TK
- $tkMenuPath delete \
- [_getTkIndex $tkMenuPath $fromEntryIndex] \
- [_getTkIndex $tkMenuPath $toEntryIndex]
-
- }
-}
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# CONFIGURATION SUPPORT
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _configureMenu
-#
-# This configures a menu. A menu is a true tk widget, thus we
-# pass the tkPath variable. This path may point to either a
-# menu button (does not end with the name 'menu', or a menu
-# which ends with the name 'menu'
-#
-# path : our Menubar path name to this menu button or menu pane.
-# if we end with the name '.menu' then it is a menu pane.
-# tkPath : the path to the corresponding Tk menubutton or menu.
-# args : the args for configuration
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_configureMenu { path tkPath {option {}} args } {
-
- set class [winfo class $tkPath]
-
- if { $option == "" } {
- # No arguments: return all options
- set configList [$tkPath configure]
-
- if { [info exists _menuOption($path)] } {
- lappend configList [list -menu menu Menu {} $_menuOption($path)]
- } else {
- lappend configList [list -menu menu Menu {} {}]
- }
- if { [info exists _helpString($path)] } {
- lappend configList [list -helpstr helpStr HelpStr {} \
- $_helpString($path)]
- } else {
- lappend configList [list -helpstr helpStr HelpStr {} {}]
- }
- return $configList
-
- } elseif {$args == "" } {
- if { $option == "-menu" } {
- if { [info exists _menuOption($path)] } {
- return [list -menu menu Menu {} $_menuOption($path)]
- } else {
- return [list -menu menu Menu {} {}]
- }
- } elseif { $option == "-helpstr" } {
- if { [info exists _helpString($path)] } {
- return [list -helpstr helpStr HelpStr {} $_helpString($path)]
- } else {
- return [list -helpstr helpStr HelpStr {} {}]
- }
- } else {
- # ... OTHERWISE, let Tk get it.
- return [$tkPath configure $option]
- }
- } else {
- set args [concat $option $args]
-
- # If this is a menubutton, and has -menu option, process it
- if { $class == "Menubutton" && [regexp -- {-menu} $args] } {
- eval _configureMenuOption menubutton $path $args
- } else {
- eval $tkPath configure $args
- }
- return ""
- }
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _configureMenuOption
-#
-# Allows for configuration of the -menu option on
-# menubuttons and cascades
-#
-# find out if we are the last menu, or are before one.
-# delete the old menu.
-# if we are the last, then add us back at the end
-# if we are before another menu, get the beforePath
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_configureMenuOption { type path args } {
-
- regsub {[.][^.]*$} $path "" pathPrefix
-
- if { $type == "menubutton" } {
- set menuList [_getMenuList]
- set pos [lsearch $menuList $path]
- if { $pos == [expr [llength $menuList] - 1] } {
- set insert false
- } else {
- set insert true
- }
- } elseif { $type == "cascade" } {
- set lastEntryPath [_parsePath $pathPrefix.last]
- if { $lastEntryPath == $path } {
- set insert false
- } else {
- set insert true
- }
- set pos [index $path]
-
- }
-
-
- eval "delete $pathPrefix.$pos"
- if { $insert } {
- # get name from path...
- regsub {.*[.]} $path "" name
-
- eval insert $pathPrefix.$pos $type \
- $name $args
- } else {
- eval add $type $path $args
- }
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _configureMenuEntry
-#
-# This configures a menu entry. A menu entry is either a command,
-# radiobutton, separator, checkbutton, or a cascade. These have
-# a corresponding Tk index value for the corresponding tk menu
-# path.
-#
-# path : our Menubar path name to this menu entry.
-# index : the t
-# args : the args for configuration
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_configureMenuEntry { path index {option {}} args } {
-
- set type [type $path]
-
- # set len [llength $args]
-
- # get the menu path from the entry path name
- set tkMenuPath [_entryPathToTkMenuPath $path]
-
- if { $option == "" } {
- set configList [$tkMenuPath entryconfigure \
- [_getTkIndex $tkMenuPath $index]]
-
- if { $type == "cascade" } {
- if { [info exists _menuOption($path)] } {
- lappend configList [list -menu menu Menu {} \
- $_menuOption($path)]
- } else {
- lappend configList [list -menu menu Menu {} {}]
- }
- }
- if { [info exists _helpString($path)] } {
- lappend configList [list -helpstr helpStr HelpStr {} \
- $_helpString($path)]
- } else {
- lappend configList [list -helpstr helpStr HelpStr {} {}]
- }
- return $configList
-
- } elseif { $args == "" } {
- if { $option == "-menu" } {
- if { [info exists _menuOption($path)] } {
- return [list -menu menu Menu {} $_menuOption($path)]
- } else {
- return [list -menu menu Menu {} {}]
- }
- } elseif { $option == "-helpstr" } {
- if { [info exists _helpString($path)] } {
- return [list -helpstr helpStr HelpStr {} \
- $_helpString($path)]
- } else {
- return [list -helpstr helpStr HelpStr {} {}]
- }
- } else {
- # ... OTHERWISE, let Tk get it.
- return [$tkMenuPath entryconfigure \
- [_getTkIndex $tkMenuPath $index] $option]
- }
- } else {
- array set temp [concat $option $args]
-
- # ... Store -helpstr val,strip out -helpstr val from args
- if { [::info exists temp(-helpstr)] } {
- set _helpString($path) $temp(-helpstr)
- unset temp(-helpstr)
- }
-
- set args [array get temp]
- if { $type == "cascade" && [::info exists temp(-menu)] } {
- eval "_configureMenuOption cascade $path $args"
- } else {
- # invoke the menu's entryconfigure command
- # being careful to ajust the INDEX to be 0 or 1 based
- # depending on the tearoff status
- # if the stripping process brought us down to no options
- # to set, then forget the configure of widget.
- if { [llength $args] != 0 } {
- eval $tkMenuPath entryconfigure \
- [_getTkIndex $tkMenuPath $index] $args
- }
- }
- return ""
- }
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _unsetPaths
-#
-# comment
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_unsetPaths { parent } {
-
- # first get the complete list of all menu paths
- set pathList [array names _pathMap]
-
- # for each path that matches parent prefix, unset it.
- foreach path $pathList {
- if { [regexp [subst -nocommands {^$parent}] $path] } {
- unset _pathMap($path)
- }
- }
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _entryPathToTkMenuPath
-#
-# Takes an entry path like .mbar.file.new and changes it to
-# .mbar.file.menu and performs a lookup in the pathMap to
-# get the corresponding menu widget name for tk
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_entryPathToTkMenuPath {entryPath} {
-
- # get the menu path from the entry path name
- # by stripping off the entry component of the path
- regsub {[.][^.]*$} $entryPath "" menuPath
-
- # the tkMenuPath is looked up with the .menu added to lookup
- if { [catch {set tkMenuPath $_pathMap($menuPath.menu)}] } {
- return ""
- } else {
- return $_pathMap($menuPath.menu)
- }
-}
-
-
-# -------------------------------------------------------------
-#
-# These two methods address the issue of menu entry indices being
-# zero-based when the menu is not a tearoff menu and 1-based when
-# it is a tearoff menu. Our strategy is to hide this difference.
-#
-# _getTkIndex returns the index as tk likes it: 0 based for non-tearoff
-# and 1 based for tearoff menus.
-#
-# _getPdIndex (get pulldown index) always returns it as 0 based.
-#
-# -------------------------------------------------------------
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _getTkIndex
-#
-# give us a zero or 1-based answer depending on the tearoff
-# status of the menu. If the menu denoted by tkMenuPath is a
-# tearoff menu it returns a 1-based result, otherwise a
-# zero-based result.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_getTkIndex { tkMenuPath tkIndex} {
-
- # if there is a tear off make it 1-based index
- if { [$tkMenuPath cget -tearoff] } {
- incr tkIndex
- }
-
- return $tkIndex
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _getPdIndex
-#
-# Take a tk index and give me a zero based numerical index
-#
-# Ask the menu widget for the index of the entry denoted by
-# 'tkIndex'. Then if the menu is a tearoff adjust the value
-# to be zero based.
-#
-# This method returns the index as if tearoffs did not exist.
-# Always returns a zero-based index.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_getPdIndex { tkMenuPath tkIndex } {
-
- # get the index from the tk menu
- # this 0 based for non-tearoff and 1-based for tearoffs
- set pdIndex [$tkMenuPath index $tkIndex]
-
- # if there is a tear off make it 0-based index
- if { [$tkMenuPath cget -tearoff] } {
- incr pdIndex -1
- }
-
- return $pdIndex
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _getMenuList
-#
-# Returns the list of menus in the order they are on the interface
-# returned list is a list of our menu paths
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_getMenuList { } {
- # get the menus that are packed
- set tkPathList [pack slaves $itk_component(menubar)]
-
- regsub -- {[.]} $itk_component(hull) "" mbName
- regsub -all -- "\[.\]$mbName\[.\]menubar\[.\]" $tkPathList "." menuPathList
-
- return $menuPathList
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _getEntryList
-#
-#
-# This method looks at a menupath and gets all the entries and
-# returns a list of all the entry path names in numerical order
-# based on their index values.
-#
-# MENU is the path to a menu, like .mbar.file.menu or .mbar.file
-# we will calculate a menuPath from this: .mbar.file
-# then we will build a list of entries in this menu excluding the
-# path .mbar.file.menu
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_getEntryList { menu } {
-
- # if it ends with menu, clip it off
- regsub {[.]menu$} $menu "" menuPath
-
- # first get the complete list of all menu paths
- set pathList [array names _pathMap]
-
- set numEntries 0
- # iterate over the pathList and put on menuPathList those
- # that match the menuPattern
- foreach path $pathList {
- # if this path is on the menuPath's branch
- if { [regexp [subst -nocommands {$menuPath[.][^.]*$}] $path] } {
- # if not a menu itself
- if { ! [regexp {[.]menu$} $path] } {
- set orderedList($_pathMap($path)) $path
- incr numEntries
- }
- }
- }
- set entryList {}
-
- for {set i 0} {$i < $numEntries} {incr i} {
- lappend entryList $orderedList($i)
- }
-
- return $entryList
-
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _parsePath
-#
-# given path, PATH, _parsePath splits the path name into its
-# component segments. It then puts the name back together one
-# segment at a time and calls _getSymbolicPath to replace the
-# keywords 'last' and 'end' as well as numeric digits.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_parsePath { path } {
- set segments [split [string trimleft $path .] .]
-
- set concatPath ""
- foreach seg $segments {
-
- set concatPath [_getSymbolicPath $concatPath $seg]
-
- if { [catch {set _pathMap($concatPath)} ] } {
- error "bad path: \"$path\" does not exist. \"$seg\" not valid"
- }
- }
- return $concatPath
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _getSymbolicPath
-#
-# Given a PATH, _getSymbolicPath looks for the last segment of
-# PATH to contain: a number, the keywords last or end. If one
-# of these it figures out how to get us the actual pathname
-# to the searched widget
-#
-# Implementor's notes:
-# Surely there is a shorter way to do this. The only diff
-# for non-numeric is getting the llength of the correct list
-# It is hard to know this upfront so it seems harder to generalize.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_getSymbolicPath { parent segment } {
-
- # if the segment is a number, then look it up positionally
- # MATCH numeric index
- if { [regexp {^[0-9]+$} $segment] } {
-
- # if we have no parent, then we area menubutton
- if { $parent == {} } {
- set returnPath [lindex [_getMenuList] $segment]
- } else {
- set returnPath [lindex [_getEntryList $parent.menu] $segment]
- }
-
- # MATCH 'end' or 'last' keywords.
- } elseif { $segment == "end" || $segment == "last" } {
-
- # if we have no parent, then we are a menubutton
- if { $parent == {} } {
- set returnPath [lindex [_getMenuList] end]
- } else {
- set returnPath [lindex [_getEntryList $parent.menu] end]
- }
- } else {
- set returnPath $parent.$segment
- }
-
- return $returnPath
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _helpHandler
-#
-# Bound to the <Motion> event on a menu pane. This puts the
-# help string associated with the menu entry into the
-# status widget help area. If no help exists for the current
-# entry, the status widget is cleared.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_helpHandler { menuPath } {
-
- if { $itk_option(-helpvariable) == {} } {
- return
- }
-
- set tkMenuWidget $_pathMap($menuPath)
-
- set entryIndex [$tkMenuWidget index active]
-
- # already on this item?
- if { $entryIndex == $_entryIndex } {
- return
- }
-
- set _entryIndex $entryIndex
-
- if {"none" != $entryIndex} {
- set entries [_getEntryList $menuPath]
-
- set menuEntryHit \
- [lindex $entries [_getPdIndex $tkMenuWidget $entryIndex]]
-
- # blank out the old one
- set $itk_option(-helpvariable) {}
-
- # if there is a help string for this entry
- if { [::info exists _helpString($menuEntryHit)] } {
- set $itk_option(-helpvariable) $_helpString($menuEntryHit)
- }
- } else {
- set $itk_option(-helpvariable) {}
- set _entryIndex -1
- }
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _getCallerLevel
-#
-# Starts at stack frame #0 and works down till we either hit
-# a ::Menubar stack frame or an ::itk::Archetype stack frame
-# (the latter happens when a configure is called via the 'component'
-# method
-#
-# Returns the level of the actual caller of the menubar command
-# in the form of #num where num is the level number caller stack frame.
-#
-# -------------------------------------------------------------
-body iwidgets::Menubar::_getCallerLevel { } {
-
- set levelName {}
- set levelsAreValid true
- set level 0
- set callerLevel #$level
-
- while { $levelsAreValid } {
- # Hit the end of the stack frame
- if [catch {uplevel #$level {namespace current}}] {
- set levelsAreValid false
- set callerLevel #[expr $level - 1]
- # still going
- } else {
- set newLevelName [uplevel #$level {namespace current}]
- # See if we have run into the first ::Menubar level
- if { $newLevelName == "::itk::Archetype" || \
- $newLevelName == "::iwidgets::Menubar" } {
- # If so, we are done-- set the callerLevel
- set levelsAreValid false
- set callerLevel #[expr $level - 1]
- } else {
- set levelName $newLevelName
- }
- }
- incr level
- }
- return $callerLevel
-}
-
-
-#
-# The default tkMenuFind proc in menu.tcl only looks for menubuttons
-# in frames. Since our menubuttons are within the Menubar class, the
-# default proc won't find them during menu traversal. This proc
-# redefines the default proc to remedy the problem.
-#-----------------------------------------------------------
-# BUG FIX: csmith (Chad Smith: csmith@adc.com), 3/30/99
-#-----------------------------------------------------------
-# The line, "set qchild ..." below had a typo. It should be
-# "info command $child" instead of "winfo command $child".
-#-----------------------------------------------------------
-proc tkMenuFind {w char} {
- global tkPriv
- set char [string tolower $char]
-
- foreach child [winfo child $w] {
- switch [winfo class $child] {
- Menubutton {
- set qchild [info command $child]
- set char2 [string index [$qchild cget -text] \
- [$qchild cget -underline]]
- if {([string compare $char [string tolower $char2]] == 0)
- || ($char == "")} {
- if {[$qchild cget -state] != "disabled"} {
- return $child
- }
- }
- }
- Frame -
- Menubar {
- set match [tkMenuFind $child $char]
- if {$match != ""} {
- return $match
- }
- }
- }
- }
- return {}
-}
-
-
diff --git a/itcl/iwidgets3.0.0/generic/messagebox.itk b/itcl/iwidgets3.0.0/generic/messagebox.itk
deleted file mode 100644
index 3710ed37ee4..00000000000
--- a/itcl/iwidgets3.0.0/generic/messagebox.itk
+++ /dev/null
@@ -1,403 +0,0 @@
-#
-# Messagebox
-# ----------------------------------------------------------------------
-# Implements an information messages area widget with scrollbars.
-# Message types can be user defined and configured. Their options
-# include foreground, background, font, bell, and their display
-# mode of on or off. This allows message types to defined as needed,
-# removed when no longer so, and modified when necessary. An export
-# method is provided for file I/O.
-#
-# The number of lines that can be displayed may be limited with
-# the default being 1000. When this limit is reached, the oldest line
-# is removed. There is also support for saving the contents to a
-# file, using a file selection dialog.
-# ----------------------------------------------------------------------
-#
-# History:
-# 01/16/97 - Alfredo Jahn Renamed from InfoMsgBox to MessageBox
-# Initial release...
-# 01/20/97 - Alfredo Jahn Add a popup window so that 3rd mouse
-# button can be used to configure/access the message area.
-# New methods added: _post and _toggleDebug.
-# 01/30/97 - Alfredo Jahn Add -filename option
-# 05/11/97 - Mark Ulferts Added the ability to define and configure
-# new types. Changed print method to be issue.
-# 09/05/97 - John Tucker Added export method.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Alfredo Jahn V EMAIL: ajahn@spd.dsccc.com
-# Mark L. Ulferts mulferts@austin.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 Messagebox {
- keep -activebackground -activeforeground -background -borderwidth \
- -cursor -highlightcolor -highlightthickness \
- -jump -labelfont -textbackground -troughcolor
-}
-
-# ------------------------------------------------------------------
-# MSGTYPE
-# ------------------------------------------------------------------
-
-class iwidgets::MsgType {
- constructor {args} {eval configure $args}
-
- public variable background \#d9d9d9
- public variable bell 0
- public variable font -*-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*
- public variable foreground Black
- public variable show 1
-}
-
-# ------------------------------------------------------------------
-# MESSAGEBOX
-# ------------------------------------------------------------------
-class iwidgets::Messagebox {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -filename fileName FileName ""
- itk_option define -maxlines maxLines MaxLines 1000
- itk_option define -savedir saveDir SaveDir "[pwd]"
-
- public {
- method clear {}
- method export {filename}
- method find {}
- method issue {string {type DEFAULT} args}
- method save {}
- method type {op tag args}
- }
-
- protected {
- variable _unique 0
- variable _types {}
- variable _interior {}
-
- method _post {x y}
- }
-}
-
-#
-# Provide a lowercased access method for the Messagebox class.
-#
-proc ::iwidgets::messagebox {pathName args} {
- uplevel ::iwidgets::Messagebox $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Messagebox.labelPos n widgetDefault
-option add *Messagebox.cursor top_left_arrow widgetDefault
-option add *Messagebox.height 0 widgetDefault
-option add *Messagebox.width 0 widgetDefault
-option add *Messagebox.visibleItems 80x24 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::constructor {args} {
- set _interior $itk_interior
-
- #
- # Create the text area.
- #
- itk_component add text {
- iwidgets::Scrolledtext $itk_interior.text -width 1 -height 1 \
- -state disabled -wrap none
- } {
- keep -borderwidth -cursor -exportselection -highlightcolor \
- -highlightthickness -padx -pady -relief -setgrid -spacing1 \
- -spacing2 -spacing3
-
- keep -activerelief -elementborderwidth -jump -troughcolor
-
- keep -hscrollmode -height -sbwidth -scrollmargin -textbackground \
- -visibleitems -vscrollmode -width
-
- keep -labelbitmap -labelfont -labelimage -labelmargin \
- -labelpos -labeltext -labelvariable
- }
- grid $itk_component(text) -row 0 -column 0 -sticky nsew
- grid rowconfigure $_interior 0 -weight 1
- grid columnconfigure $_interior 0 -weight 1
-
- #
- # Setup right mouse button binding to post a user configurable
- # popup menu and diable the binding for left mouse clicks.
- #
- bind [$itk_component(text) component text] <ButtonPress-1> "break"
- bind [$itk_component(text) component text] \
- <ButtonPress-3> [code $this _post %x %y]
-
- #
- # Create the small popup menu that can be configurable by users.
- #
- itk_component add itemMenu {
- menu $itk_component(hull).itemmenu -tearoff 0
- } {
- keep -background -font -foreground \
- -activebackground -activeforeground
- ignore -tearoff
- }
-
- #
- # Add clear and svae options to the popup menu.
- #
- $itk_component(itemMenu) add command -label "Clear" \
- -command [code $this clear]
- $itk_component(itemMenu) add command -label "Save" \
- -command [code $this save]
- $itk_component(itemMenu) add command -label "Find" \
- -command [code $this find]
-
- #
- # Create a standard type to be used if no others are specified.
- #
- type add DEFAULT
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::destructor {} {
- foreach type $_types {
- type remove $type
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD clear
-#
-# Clear the text area.
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::clear {} {
- $itk_component(text) configure -state normal
-
- $itk_component(text) delete 1.0 end
-
- $itk_component(text) configure -state disabled
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: type <op> <tag> <args>
-#
-# The type method supports several subcommands. Types can be added
-# removed and configured. All the subcommands use the MsgType class
-# to implement the functionaility.
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::type {op tag args} {
- switch $op {
- add {
- eval iwidgets::MsgType $this$tag $args
-
- lappend _types $tag
-
- $itk_component(text) tag configure $tag \
- -font [$this$tag cget -font] \
- -background [$this$tag cget -background] \
- -foreground [$this$tag cget -foreground]
-
- return $tag
- }
-
- remove {
- if {[set index [lsearch $_types $tag]] != -1} {
- delete object $this$tag
- set _types [lreplace $_types $index $index]
-
- return
- } else {
- error "bad message type: \"$tag\", does not exist"
- }
- }
-
- configure {
- if {[set index [lsearch $_types $tag]] != -1} {
- set retVal [eval $this$tag configure $args]
-
- $itk_component(text) tag configure $tag \
- -font [$this$tag cget -font] \
- -background [$this$tag cget -background] \
- -foreground [$this$tag cget -foreground]
-
- return $retVal
-
- } else {
- error "bad message type: \"$tag\", does not exist"
- }
- }
-
- cget {
- if {[set index [lsearch $_types $tag]] != -1} {
- return [eval $this$tag cget $args]
- } else {
- error "bad message type: \"$tag\", does not exist"
- }
- }
-
- default {
- error "bad type operation: \"$op\", should be add,\
- remove, configure or cget"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: issue string ?type? args
-#
-# Print the string out to the Messagebox. Check the options of the
-# message type to see if it should be displayed or if the bell
-# should be wrong.
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::issue {string {type DEFAULT} args} {
- if {[lsearch $_types $type] == -1} {
- error "bad message type: \"$type\", use the type\
- command to create a new types"
- }
-
- #
- # If the type is currently configured to be displayed, then insert
- # it in the text widget, add the tag to the line and move the
- # vertical scroll bar to the bottom.
- #
- set tag $this$type
-
- if {[$tag cget -show]} {
- $itk_component(text) configure -state normal
-
- #
- # Find end of last message.
- #
- set prevend [$itk_component(text) index "end - 1 chars"]
-
- $itk_component(text) insert end "$string\n" $args
-
- $itk_component(text) tag add $type $prevend "end - 1 chars"
- $itk_component(text) yview end
-
- #
- # Sound a beep if the message type is configured such.
- #
- if {[$tag cget -bell]} {
- bell
- }
-
- #
- # If we reached our max lines limit, then remove enough lines to
- # get it back under.
- #
- set lineCount [lindex [split [$itk_component(text) index end] "."] 0]
-
- if { $lineCount > $itk_option(-maxlines) } {
- set numLines [expr $lineCount - $itk_option(-maxlines) -1]
-
- $itk_component(text) delete 1.0 $numLines.0
- }
-
- $itk_component(text) configure -state disabled
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: save
-#
-# Save contents of messages area to a file using a fileselectionbox.
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::save {} {
- set saveFile ""
- set filter ""
-
- set saveFile [tk_getSaveFile -title "Save Messages" \
- -initialdir $itk_option(-savedir) \
- -initialfile $itk_option(-filename)]
-
- if { $saveFile != "" } {
- $itk_component(text) export $saveFile
- issue "Contents saved to $pathname" INFO
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: find
-#
-# Search the contents of messages area for a specific string.
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::find {} {
- if {! [info exists itk_component(findd)]} {
- itk_component add findd {
- iwidgets::Finddialog $itk_interior.findd \
- -textwidget $itk_component(text)
- }
- }
-
- $itk_component(findd) center $itk_component(text)
- $itk_component(findd) activate
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _post
-#
-# Used internally to post the popup menu at the coordinate (x,y)
-# relative to the widget.
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::_post {x y} {
- set rx [expr [winfo rootx $itk_component(text)]+$x]
- set ry [expr [winfo rooty $itk_component(text)]+$y]
-
- tk_popup $itk_component(itemMenu) $rx $ry
-}
-
-
-# ------------------------------------------------------------------
-# METHOD export filename
-#
-# write text to a file (export filename)
-# ------------------------------------------------------------------
-body iwidgets::Messagebox::export {filename} {
- set f [open $filename w]
-
- set txt [$itk_component(text) get 1.0 end]
- puts $f $txt
-
- flush $f
- close $f
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/messagedialog.itk b/itcl/iwidgets3.0.0/generic/messagedialog.itk
deleted file mode 100644
index ba1927a194f..00000000000
--- a/itcl/iwidgets3.0.0/generic/messagedialog.itk
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# Messagedialog
-# ----------------------------------------------------------------------
-# Implements a message dialog composite widget. The Messagedialog is
-# derived from the Dialog class and is composed of an image and text
-# component. The image will accept both images as well as bitmaps.
-# The text can extend mutliple lines by embedding newlines.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Messagedialog {
- keep -background -cursor -font -foreground -modality
- keep -wraplength -justify
-}
-
-# ------------------------------------------------------------------
-# MESSAGEDIALOG
-# ------------------------------------------------------------------
-class iwidgets::Messagedialog {
- inherit iwidgets::Dialog
-
- constructor {args} {}
-
- itk_option define -imagepos imagePos Position w
-}
-
-#
-# Provide a lowercased access method for the Messagedialog class.
-#
-proc ::iwidgets::messagedialog {pathName args} {
- uplevel ::iwidgets::Messagedialog $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Messagedialog.title "Message Dialog" widgetDefault
-option add *Messagedialog.master "." widgetDefault
-option add *Messagedialog.textPadX 20 widgetDefault
-option add *Messagedialog.textPadY 20 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Messagedialog::constructor {args} {
- #
- # Create the image component which may be either a bitmap or image.
- #
- itk_component add image {
- label $itk_interior.image
- } {
- keep -background -bitmap -cursor -foreground -image
- }
-
- #
- # Create the text message component. The message may extend over
- # several lines by embedding '\n' characters.
- #
- itk_component add message {
- label $itk_interior.message
- } {
- keep -background -cursor -font -foreground -text
- keep -wraplength -justify
-
- rename -padx -textpadx textPadX Pad
- rename -pady -textpady textPadY Pad
- }
-
- #
- # Hide the apply and help buttons.
- #
- hide Apply
- hide Help
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -imagepos
-#
-# Specifies the image position relative to the message: n, s,
-# e, or w. The default is w.
-# ------------------------------------------------------------------
-configbody iwidgets::Messagedialog::imagepos {
- switch $itk_option(-imagepos) {
- n {
- grid $itk_component(image) -row 0 -column 0
- grid $itk_component(message) -row 1 -column 0
- }
- s {
- grid $itk_component(message) -row 0 -column 0
- grid $itk_component(image) -row 1 -column 0
- }
- e {
- grid $itk_component(message) -row 0 -column 0
- grid $itk_component(image) -row 0 -column 1
- }
- w {
- grid $itk_component(image) -row 0 -column 0
- grid $itk_component(message) -row 0 -column 1
- }
-
- default {
- error "bad imagepos option \"$itk_option(-imagepos)\":\
- should be n, e, s, or w"
- }
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/notebook.itk b/itcl/iwidgets3.0.0/generic/notebook.itk
deleted file mode 100644
index a83a7984933..00000000000
--- a/itcl/iwidgets3.0.0/generic/notebook.itk
+++ /dev/null
@@ -1,946 +0,0 @@
-#
-# Notebook Widget
-# ----------------------------------------------------------------------
-# The Notebook command creates a new window (given by the pathName
-# argument) and makes it into a Notebook widget. Additional options,
-# described above may be specified on the command line or in the
-# option database to configure aspects of the Notebook such as its
-# colors, font, and text. The Notebook command returns its pathName
-# argument. At the time this command is invoked, there must not exist
-# a window named pathName, but path Name's parent must exist.
-#
-# A Notebook is a widget that contains a set of pages. It displays one
-# page from the set as the selected page. When a page is selected, the
-# page's contents are displayed in the page area. When first created a
-# Notebook has no pages. Pages may be added or deleted using widget commands
-# described below.
-#
-# A special option may be provided to the Notebook. The -auto option
-# specifies whether the Nptebook will automatically handle the unpacking
-# and packing of pages when pages are selected. A value of true signifies
-# that the notebook will automatically manage it. This is the default
-# value. A value of false signifies the notebook will not perform automatic
-# switching of pages.
-#
-# WISH LIST:
-# This section lists possible future enhancements.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Bill W. Scott EMAIL: bscott@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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Notebook.background #d9d9d9 widgetDefault
-option add *Notebook.auto true widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Notebook {
- keep -background -cursor
-}
-
-# ------------------------------------------------------------------
-# NOTEBOOK
-# ------------------------------------------------------------------
-class iwidgets::Notebook {
- inherit itk::Widget
-
- constructor {args} {}
-
- itk_option define -background background Background #d9d9d9
- itk_option define -auto auto Auto true
- itk_option define -scrollcommand scrollCommand ScrollCommand {}
-
- public method add { args }
- public method childsite { args }
- public method delete { args }
- public method index { args }
- public method insert { args }
- public method prev { }
- public method next { }
- public method pageconfigure { args }
- public method pagecget { index option }
- public method select { index }
- public method view { args }
-
- private method _childSites { }
- private method _scrollCommand { }
- private method _index { pathList index select}
- private method _createPage { args }
- private method _deletePages { fromPage toPage }
- private method _configurePages { args }
- private method _tabCommand { }
-
- private variable _currPage -1 ;# numerical index of current page selected
- private variable _pages {} ;# list of Page components
- private variable _uniqueID 0 ;# one-up number for unique page numbering
-
-}
-
-#
-# Provide a lowercase access method for the Notebook class
-#
-proc ::iwidgets::notebook {pathName args} {
- uplevel ::iwidgets::Notebook $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Notebook::constructor {args} {
- #
- # Create the outermost frame to maintain geometry.
- #
- itk_component add cs {
- frame $itk_interior.cs
- } {
- keep -cursor -background -width -height
- }
- pack $itk_component(cs) -fill both -expand yes
- pack propagate $itk_component(cs) no
-
- eval itk_initialize $args
-
- # force bg of all pages to reflect Notebook's background.
- _configurePages -background $itk_option(-background)
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-# ------------------------------------------------------------------
-# OPTION -background
-#
-# Sets the bg color of all the pages in the Notebook.
-# ------------------------------------------------------------------
-configbody iwidgets::Notebook::background {
- if {$itk_option(-background) != {}} {
- _configurePages -background $itk_option(-background)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION -auto
-#
-# Determines whether pages are automatically unpacked and
-# packed when pages get selected.
-# ------------------------------------------------------------------
-configbody iwidgets::Notebook::auto {
- if {$itk_option(-auto) != {}} {
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION -scrollcommand
-#
-# Command string to be invoked when the notebook
-# has any changes to its current page, or number of pages.
-#
-# typically for scrollbars.
-# ------------------------------------------------------------------
-configbody iwidgets::Notebook::scrollcommand {
- if {$itk_option(-scrollcommand) != {}} {
- _scrollCommand
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: add add ?<option> <value>...?
-#
-# Creates a page and appends it to the list of pages.
-# processes pageconfigure for the page added.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::add { args } {
- # The args list should be an even # of params, if not then
- # prob missing value for last item in args list. Signal error.
- set len [llength $args]
- if { [expr $len % 2] } {
- error "value for \"[lindex $args [expr $len - 1]]\" missing"
- }
-
- # add a Page component
- set pathName [eval _createPage $args]
- lappend _pages $pathName
-
- # update scroller
- _scrollCommand
-
- # return childsite for the Page component
- return [eval $pathName childsite]
-}
-
-# ------------------------------------------------------------------
-# METHOD: childsite ?<index>?
-#
-# If index is supplied, returns the child site widget corresponding
-# to the page index. If called with no arguments, returns a list
-# of all child sites
-# ------------------------------------------------------------------
-body iwidgets::Notebook::childsite { args } {
- set len [llength $args]
-
- switch $len {
- 0 {
- # ... called with no arguments, return a list
- if { [llength $args] == 0 } {
- return [_childSites]
- }
- }
- 1 {
- set index [lindex $args 0]
- # ... otherwise, return child site for the index given
- # empty notebook
- if { $_pages == {} } {
- error "can't get childsite,\
- no pages in the notebook \"$itk_component(hull)\""
- }
-
- set index [_index $_pages $index $_currPage]
-
- # index out of range
- if { $index < 0 || $index >= [llength $_pages] } {
- error "bad Notebook page index in childsite method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- }
-
- set pathName [lindex $_pages $index]
-
- set cs [eval $pathName childsite]
- return $cs
- }
- default {
- # ... too many parameters passed
- error "wrong # args: should be\
- \"$itk_component(hull) childsite ?index?\""
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete <index1> ?<index2>?
-#
-# Deletes a page or range of pages from the notebook
-# ------------------------------------------------------------------
-body iwidgets::Notebook::delete { args } {
- # empty notebook
- if { $_pages == {} } {
- error "can't delete page, no pages in the notebook\
- \"$itk_component(hull)\""
- }
-
- set len [llength $args]
- switch -- $len {
- 1 {
- set fromPage [_index $_pages [lindex $args 0] $_currPage]
-
- if { $fromPage < 0 || $fromPage >= [llength $_pages] } {
- error "bad Notebook page index in delete method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- }
-
- set toPage $fromPage
- _deletePages $fromPage $toPage
- }
-
- 2 {
- set fromPage [_index $_pages [lindex $args 0] $_currPage]
-
- if { $fromPage < 0 || $fromPage >= [llength $_pages] } {
- error "bad Notebook page index1 in delete method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- }
-
- set toPage [_index $_pages [lindex $args 1] $_currPage]
-
- if { $toPage < 0 || $toPage >= [llength $_pages] } {
- error "bad Notebook page index2 in delete method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- error "bad Notebook page index2"
- }
-
- if { $fromPage > $toPage } {
- error "bad Notebook page index1 in delete method:\
- index1 is greater than index2"
- }
-
- _deletePages $fromPage $toPage
-
- }
-
- default {
- # ... too few/many parameters passed
- error "wrong # args: should be\
- \"$itk_component(hull) delete index1 ?index2?\""
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: index <index>
-#
-# Given an index identifier returns the numeric index of the page
-# ------------------------------------------------------------------
-body iwidgets::Notebook::index { args } {
- if { [llength $args] != 1 } {
- error "wrong # args: should be\
- \"$itk_component(hull) index index\""
- }
-
- set index $args
-
- set number [_index $_pages $index $_currPage]
-
- return $number
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert <index> ?<option> <value>...?
-#
-# Inserts a page before a index. The before page may
-# be specified as a label or a page position.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::insert { args } {
- # ... Error: no args passed
- set len [llength $args]
- if { $len == 0 } {
- error "wrong # args: should be\
- \"$itk_component(hull) insert index ?option value?\""
- }
-
- # ... set up index and args
- set index [lindex $args 0]
- set args [lrange $args 1 $len]
-
- # ... Error: unmatched option value pair (len is odd)
- # The args list should be an even # of params, if not then
- # prob missing value for last item in args list. Signal error.
- set len [llength $args]
- if { [expr $len % 2] } {
- error "value for \"[lindex $args [expr $len - 1]]\" missing"
- }
-
- # ... Error: catch notebook empty
- if { $_pages == {} } {
- error "can't insert page, no pages in the notebook\
- \"$itk_component(hull)\""
- }
-
- # ok, get the page
- set page [_index $_pages $index $_currPage]
-
- # ... Error: catch bad value for before page.
- if { $page < 0 || $page >= [llength $_pages] } {
- error "bad Notebook page index in insert method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- }
-
- # ... Start the business of inserting
- # create the new page and get its path name...
- set pathName [eval _createPage $args]
-
- # grab the name of the page currently selected. (to keep in sync)
- set currPathName [lindex $_pages $_currPage]
-
- # insert pathName before $page
- set _pages [linsert $_pages $page $pathName]
-
- # keep the _currPage in sync with the insert.
- set _currPage [lsearch -exact $_pages $currPathName]
-
- # give scrollcommand chance to update
- _scrollCommand
-
- # give them child site back...
- return [eval $pathName childsite]
-}
-
-# ------------------------------------------------------------------
-# METHOD: prev
-#
-# Selects the previous page. Wraps at first back to last page.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::prev { } {
- # catch empty notebook
- if { $_pages == {} } {
- error "can't move to previous page,\
- no pages in the notebook \"$itk_component(hull)\""
- }
-
- # bump to the previous page and wrap if necessary
- set prev [expr $_currPage - 1]
- if { $prev < 0 } {
- set prev [expr [llength $_pages] - 1]
- }
-
- select $prev
-
- return $prev
-}
-
-# ------------------------------------------------------------------
-# METHOD: next
-#
-# Selects the next page. Wraps at last back to first page.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::next { } {
- # catch empty notebook
- if { $_pages == {} } {
- error "can't move to next page,\
- no pages in the notebook \"$itk_component(hull)\""
- }
-
- # bump to the next page and wrap if necessary
- set next [expr $_currPage + 1]
- if { $next >= [llength $_pages] } {
- set next 0
- }
-
- select $next
-
- return $next
-}
-
-# ------------------------------------------------------------------
-# METHOD: pageconfigure <index> ?<option> <value>...?
-#
-# Performs configure on a given page denoted by index. Index may
-# be a page number or a pattern matching the label associated with
-# a page.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::pageconfigure { args } {
- # ... Error: no args passed
- set len [llength $args]
- if { $len == 0 } {
- error "wrong # args: should be\
- \"$itk_component(hull) pageconfigure index ?option value?\""
- }
-
- # ... set up index and args
- set index [lindex $args 0]
- set args [lrange $args 1 $len]
-
- set page [_index $_pages $index $_currPage]
-
- # ... Error: page out of range
- if { $page < 0 || $page >= [llength $_pages] } {
- error "bad Notebook page index in pageconfigure method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- }
-
- # Configure the page component
- set pathName [lindex $_pages $page]
- return [eval $pathName configure $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: pagecget <index> <option>
-#
-# Performs cget on a given page denoted by index. Index may
-# be a page number or a pattern matching the label associated with
-# a page.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::pagecget { index option } {
- set page [_index $_pages $index $_currPage]
-
- # ... Error: page out of range
- if { $page < 0 || $page >= [llength $_pages] } {
- error "bad Notebook page index in pagecget method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- }
-
- # Get the page info.
- set pathName [lindex $_pages $page]
- return [$pathName cget $option]
-}
-
-# ------------------------------------------------------------------
-# METHOD: select <index>
-#
-# Select a page by index. Hide the last _currPage if it existed.
-# Then show the new one if it exists. Returns the currently
-# selected page or -1 if tried to do a select select when there is
-# no selection.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::select { index } {
- global page$itk_component(hull)
-
- # ... Error: empty notebook
- if { $_pages == {} } {
- error "can't select page $index,\
- no pages in the notebook \"$itk_component(hull)\""
- }
-
- # if there is not current selection just ignore trying this selection
- if { $index == "select" && $_currPage == -1 } {
- return -1
- }
-
- set reqPage [_index $_pages $index $_currPage]
-
- if { $reqPage < 0 || $reqPage >= [llength $_pages] } {
- error "bad Notebook page index in select method:\
- should be between 0 and [expr [llength $_pages] - 1]"
- }
-
- # if we already have this page selected, then ignore selection.
- if { $reqPage == $_currPage } {
- return $_currPage
- }
-
- # if we are handling packing and unpacking the unpack if we can
- if { $itk_option(-auto) } {
- # if there is a current page packed, then unpack it
- if { $_currPage != -1 } {
- set currPathName [lindex $_pages $_currPage]
- pack forget $currPathName
- }
- }
-
- # set this now so that the -command cmd can do an 'index select'
- # to operate on this page.
- set _currPage $reqPage
-
- # invoke the command for this page
- set cmd [lindex [pageconfigure $index -command] 4]
- eval $cmd
-
- # give scrollcommand chance to update
- _scrollCommand
-
- # if we are handling packing and unpacking the pack if we can
- if { $itk_option(-auto) } {
- set reqPathName [lindex $_pages $reqPage]
- pack $reqPathName -anchor nw -fill both -expand yes
- }
-
- return $_currPage
-}
-
-
-# ------------------------------------------------------------------
-# METHOD: view
-#
-# Return the current page
-#
-# view <index>
-#
-# Selects the page denoted by index to be current page
-#
-# view 'moveto' <fraction>
-#
-# Selects the page by using fraction amount
-#
-# view 'scroll' <num> <what>
-#
-# Selects the page by using num as indicator of next or previous
-# ------------------------------------------------------------------
-body iwidgets::Notebook::view { args } {
- set len [llength $args]
- switch -- $len {
- 0 {
- # Return current page
- return $_currPage
- }
- 1 {
- # Select by index
- select [lindex $args 0]
- }
- 2 {
- # Select using moveto
- set arg [lindex $args 0]
- if { $arg == "moveto" } {
- set fraction [lindex $args 1]
- if { [catch { set page \
- [expr round($fraction/(1.0/[llength $_pages]))]}]} {
- error "expected floating-point number \
- but got \"$fraction\""
- }
- if { $page == [llength $_pages] } {
- incr page -1
- }
-
- if { $page >= 0 && $page < [llength $_pages] } {
- select $page
- }
- } else {
- error "expected \"moveto\" but got $arg"
- }
- }
- 3 {
- # Select using scroll keyword
- set arg [lindex $args 0]
- if { $arg == "scroll" } {
- set amount [lindex $args 1]
- # check for integer value
- if { ! [regexp {^[-]*[0-9]*$} $amount] } {
- error "expected integer but got \"$amount\""
- }
- set page [expr $_currPage + $amount]
- if { $page >= 0 && $page < [llength $_pages] } {
- select $page
- }
-
- } else {
- error "expected \"scroll\" but got $arg"
- }
- }
- default {
- set arg [lindex $args 0]
- if { $arg == "moveto" } {
- error "wrong # args: should be\
- \"$itk_component(hull) view moveto fraction\""
- } elseif { $arg == "scroll" } {
- error "wrong # args: should be\
- \"$itk_component(hull) view scroll units|pages\""
- } else {
- error "wrong # args: should be\
- \"$itk_component(hull) view index\""
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _childSites
-#
-# Returns a list of child sites for all pages in the notebook.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::_childSites { } {
- # empty notebook
- if { $_pages == {} } {
- error "can't get childsite list,\
- no pages in the notebook \"$itk_component(hull)\""
- }
-
- set csList {}
-
- foreach pathName $_pages {
- lappend csList [eval $pathName childsite]
- }
-
- return $csList
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _scrollCommand
-#
-# If there is a -scrollcommand set up, then call the tcl command
-# and suffix onto it the standard 4 numbers scrollbars get.
-#
-# Invoke the scrollcommand, this is like the y/xscrollcommand
-# it is designed to talk to scrollbars and the the
-# tabset also knows how to obey scrollbar protocol.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::_scrollCommand { } {
- if { $itk_option(-scrollcommand) != {} } {
- if { $_currPage != -1 } {
- set relTop [expr ($_currPage*1.0) / [llength $_pages]]
- set relBottom [expr (($_currPage+1)*1.0) / [llength $_pages]]
- set scrollCommand "$itk_option(-scrollcommand) $relTop $relBottom"
- } else {
- set scrollCommand "$itk_option(-scrollcommand) 0 1"
- }
- uplevel #0 $scrollCommand
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _index
-#
-# pathList : list of path names to search thru if index is a label
-# index : either number, 'select', 'end', or pattern
-# select : current selection
-#
-# _index takes takes the value $index converts it to
-# a numeric identifier. If the value is not already
-# an integer it looks it up in the $pathList array.
-# If it fails it returns -1
-# ------------------------------------------------------------------
-body iwidgets::Notebook::_index { pathList index select} {
- switch -- $index {
- select {
- set number $select
- }
- end {
- set number [expr [llength $pathList] -1]
- }
- default {
- # is it a number already?
- if { [regexp {^[0-9]+$} $index] } {
- set number $index
- if { $number < 0 || $number >= [llength $pathList] } {
- set number -1
- }
-
- # otherwise it is a label
- } else {
- # look thru the pathList of pathNames and
- # get each label and compare with index.
- # if we get a match then set number to postion in $pathList
- # and break out.
- # otherwise number is still -1
- set i 0
- set number -1
- foreach pathName $pathList {
- set label [lindex [$pathName configure -label] 4]
- if { [string match $label $index] } {
- set number $i
- break
- }
- incr i
- }
- }
- }
- }
-
- return $number
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _createPage
-#
-# Creates a page, using unique page naming, propagates background
-# and keeps unique id up to date.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::_createPage { args } {
- #
- # create an internal name for the page: .n.cs.page0, .n.cs.page1, etc.
- #
- set pathName $itk_component(cs).page$_uniqueID
-
- eval iwidgets::Page $pathName -background $itk_option(-background) $args
-
- incr _uniqueID
- return $pathName
-
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _deletePages
-#
-# Deletes pages from $fromPage to $toPage.
-#
-# Operates in two passes, destroys all the widgets
-# Then removes the pathName from the page list
-#
-# Also keeps the current selection in bounds.
-# ------------------------------------------------------------------
-body iwidgets::Notebook::_deletePages { fromPage toPage } {
- for { set page $fromPage } { $page <= $toPage } { incr page } {
- # kill the widget
- set pathName [lindex $_pages $page]
- destroy $pathName
- }
-
- # physically remove the page
- set _pages [lreplace $_pages $fromPage $toPage]
-
- # If we deleted a selected page set our selection to none
- if { $_currPage >= $fromPage && $_currPage <= $toPage } {
- set _currPage -1
- }
-
- # make sure _currPage stays in sync with new numbering...
- if { $_pages == {} } {
- # if deleted only remaining page,
- # reset current page to undefined
- set _currPage -1
-
- # or if the current page was the last page, it needs come back
- } elseif { $_currPage >= [llength $_pages] } {
- incr _currPage -1
- if { $_currPage < 0 } {
- # but only to zero
- set _currPage 0
- }
- }
-
- # give scrollcommand chance to update
- _scrollCommand
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _configurePages
-#
-# Does the pageconfigure method on each page in the notebook
-# ------------------------------------------------------------------
-body iwidgets::Notebook::_configurePages { args } {
- # make sure we have pages
- if { [catch {set _pages}] } {
- return
- }
-
- # go thru all pages and pageconfigure them.
- foreach pathName $_pages {
- eval "$pathName configure $args"
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _tabCommand
-#
-# Calls the command that was passed in through the
-# $itk_option(-tabcommand) argument.
-#
-# This method is up for debate... do we need the -tabcommand option?
-# ------------------------------------------------------------------
-body iwidgets::Notebook::_tabCommand { } {
- global page$itk_component(hull)
-
- if { $itk_option(-tabcommand) != {} } {
- set newTabCmdStr $itk_option(-tabcommand)
- lappend newTabCmdStr [set page$itk_component(hull)]
-
- #eval $newTabCmdStr
- uplevel #0 $newTabCmdStr
- }
-}
-
-#
-# Page widget
-# ------------------------------------------------------------------
-#
-# The Page command creates a new window (given by the pathName argument)
-# and makes it into a Page widget. Additional options, described above
-# may be specified on the com mand line or in the option database to
-# configure aspects of the Page such as its back ground, cursor, and
-# geometry. The Page command returns its pathName argument. At the time
-# this command is invoked, there must not exist a window named pathName,
-# but path Name's parent must exist.
-#
-# A Page is a frame that holds a child site. It is nothing more than a
-# frame widget with some intelligence built in. Its primary purpose is
-# to support the Notebook's concept of a page. It allows another widget
-# like the Notebook to treat a page as a single object. The Page has an
-# associated label and knows how to return its child site.
-#
-# ------------------------------------------------------------------
-# AUTHOR: Bill W. Scott EMAIL: bscott@spd.dsccc.com
-#
-# ------------------------------------------------------------------
-# Copyright (c) 1995 DSC Communications Corp.
-# ======================================================================
-# Permission is hereby granted, without written agreement and without
-# license or royalty fees, to use, copy, modify, and distribute this
-# software and its documentation for any purpose, provided that the
-# above copyright notice and the following two paragraphs appear in
-# all copies of this software.
-#
-# IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
-# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
-# IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-# DAMAGE.
-#
-# THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-# ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
-# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-# ======================================================================
-#
-# Option database default resources:
-#
-option add *Page.disabledForeground #a3a3a3 widgetDefault
-option add *Page.label {} widgetDefault
-option add *Page.command {} widgetDefault
-
-class iwidgets::Page {
- inherit itk::Widget
-
- constructor {args} {}
-
- itk_option define \
- -disabledforeground disabledForeground DisabledForeground #a3a3a3
- itk_option define -label label Label {}
- itk_option define -command command Command {}
-
- public method childsite { }
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Page::constructor {args} {
- #
- # Create the outermost frame to maintain geometry.
- #
- itk_component add cs {
- frame $itk_interior.cs
- } {
- keep -cursor -background -width -height
- }
- pack $itk_component(cs) -fill both -expand yes
- pack propagate $itk_component(cs) no
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-# ------------------------------------------------------------------
-# OPTION -disabledforeground
-#
-# Sets the disabledForeground color of this page
-# ------------------------------------------------------------------
-configbody iwidgets::Page::disabledforeground {
-}
-
-# ------------------------------------------------------------------
-# OPTION -label
-#
-# Sets the label of this page. The label is a string identifier
-# for this page.
-# ------------------------------------------------------------------
-configbody iwidgets::Page::label {
-}
-
-# ------------------------------------------------------------------
-# OPTION -command
-#
-# The Tcl Command to associate with this page.
-# ------------------------------------------------------------------
-configbody iwidgets::Page::command {
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the child site widget of this page
-# ------------------------------------------------------------------
-body iwidgets::Page::childsite { } {
- return $itk_component(cs)
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/optionmenu.itk b/itcl/iwidgets3.0.0/generic/optionmenu.itk
deleted file mode 100644
index f0fd8b998cd..00000000000
--- a/itcl/iwidgets3.0.0/generic/optionmenu.itk
+++ /dev/null
@@ -1,660 +0,0 @@
-#
-# Optionmenu
-# ----------------------------------------------------------------------
-# Implements an option menu widget with options to manage it.
-# An option menu displays a frame containing a label and a button.
-# A pop-up menu will allow for the value of the button to change.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Alfredo Jahn Phone: (214) 519-3545
-# Email: ajahn@spd.dsccc.com
-# alfredo@wn.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.
-# ======================================================================
-
-#
-# Default resources.
-#
-
-option add *Optionmenu.highlightThickness 1 widgetDefault
-option add *Optionmenu.borderWidth 2 widgetDefault
-option add *Optionmenu.labelPos w widgetDefault
-option add *Optionmenu.labelMargin 2 widgetDefault
-option add *Optionmenu.popupCursor arrow widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Optionmenu {
- keep -activebackground -activeborderwidth -activeforeground \
- -background -borderwidth -cursor -disabledforeground -font \
- -foreground -highlightcolor -highlightthickness -labelfont \
- -popupcursor
-}
-
-# ------------------------------------------------------------------
-# OPTONMENU
-# ------------------------------------------------------------------
-class iwidgets::Optionmenu {
- inherit iwidgets::Labeledwidget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -clicktime clickTime ClickTime 150
- itk_option define -command command Command {}
- itk_option define -cyclicon cyclicOn CyclicOn true
- itk_option define -width width Width 0
- itk_option define -font font Font -Adobe-Helvetica-Bold-R-Normal--*-120-*
- itk_option define -borderwidth borderWidth BorderWidth 2
- itk_option define -highlightthickness highlightThickness HighlightThickness 1
- itk_option define -state state State normal
-
- public {
- method index {index}
- method delete {first {last {}}}
- method disable {index}
- method enable {args}
- method get {{first "current"} {last ""}}
- method insert {index string args}
- method popupMenu {args}
- method select {index}
- method sort {{mode "increasing"}}
- }
-
- protected {
- variable _calcSize "" ;# non-null => _calcSize pending
- }
-
- private {
- method _buttonRelease {time}
- method _getNextItem {index}
- method _next {}
- method _postMenu {time}
- method _previous {}
- method _setItem {item}
- method _setSize {{when later}}
- method _setitems {items} ;# Set the list of menu entries
-
- variable _postTime 0
- variable _items {} ;# List of popup menu entries
- variable _numitems 0 ;# List of popup menu entries
-
- variable _currentItem "" ;# Active menu selection
- }
-}
-
-#
-# Provide a lowercased access method for the Optionmenu class.
-#
-proc ::iwidgets::optionmenu {pathName args} {
- uplevel ::iwidgets::Optionmenu $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::constructor {args} {
- global tcl_platform
-
- component hull configure -highlightthickness 0
-
- itk_component add menuBtn {
- menubutton $itk_interior.menuBtn -relief raised -indicatoron on \
- -textvariable [scope _currentItem] -takefocus 1 \
- -menu $itk_interior.menuBtn.menu
- } {
- usual
- keep -borderwidth
- if {$tcl_platform(platform) != "unix"} {
- ignore -activebackground -activeforeground
- }
- }
- pack $itk_interior.menuBtn -fill x
- pack propagate $itk_interior no
-
- itk_component add popupMenu {
- menu $itk_interior.menuBtn.menu -tearoff no
- } {
- usual
- ignore -tearoff
- keep -activeborderwidth -borderwidth
- rename -cursor -popupcursor popupCursor Cursor
- }
-
- #
- # Bind to button release for all components.
- #
- bind $itk_component(menuBtn) <ButtonPress-1> \
- "[code $this _postMenu %t]; break"
- bind $itk_component(menuBtn) <KeyPress-space> \
- "[code $this _postMenu %t]; break"
- bind $itk_component(popupMenu) <ButtonRelease-1> \
- [code $this _buttonRelease %t]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::destructor {} {
- if {$_calcSize != ""} {after cancel $_calcSize}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION -clicktime
-#
-# Interval time (in msec) used to determine that a single mouse
-# click has occurred. Used to post menu on a quick mouse click.
-# **WARNING** changing this value may cause the sigle-click
-# functionality to not work properly!
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::clicktime {}
-
-# ------------------------------------------------------------------
-# OPTION -command
-#
-# Specifies a command to be evaluated upon change in option menu.
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::command {}
-
-# ------------------------------------------------------------------
-# OPTION -cyclicon
-#
-# Turns on/off the 3rd mouse button capability. This feature
-# allows the right mouse button to cycle through the popup
-# menu list without poping it up. <shift>M3 cycles through
-# the menu in reverse order.
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::cyclicon {
- if {$itk_option(-cyclicon)} {
- bind $itk_component(menuBtn) <3> [code $this _next]
- bind $itk_component(menuBtn) <Shift-3> [code $this _previous]
- bind $itk_component(menuBtn) <KeyPress-Down> [code $this _next]
- bind $itk_component(menuBtn) <KeyPress-Up> [code $this _previous]
- } else {
- bind $itk_component(menuBtn) <3> break
- bind $itk_component(menuBtn) <Shift-3> break
- bind $itk_component(menuBtn) <KeyPress-Down> break
- bind $itk_component(menuBtn) <KeyPress-Up> break
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION -width
-#
-# Allows the menu label width to be set to a fixed size
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::width {
- _setSize
-}
-
-# ------------------------------------------------------------------
-# OPTION -font
-#
-# Change all fonts for this widget. Also re-calculate height based
-# on font size (used to line up menu items over menu button label).
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::font {
- _setSize
-}
-
-# ------------------------------------------------------------------
-# OPTION -borderwidth
-#
-# Change borderwidth for this widget. Also re-calculate height based
-# on font size (used to line up menu items over menu button label).
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::borderwidth {
- _setSize
-}
-
-# ------------------------------------------------------------------
-# OPTION -highlightthickness
-#
-# Change highlightthickness for this widget. Also re-calculate
-# height based on font size (used to line up menu items over
-# menu button label).
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::highlightthickness {
- _setSize
-}
-
-# ------------------------------------------------------------------
-# OPTION -state
-#
-# Specified one of two states for the Optionmenu: normal, or
-# disabled. If the Optionmenu is disabled, then option menu
-# selection is ignored.
-# ------------------------------------------------------------------
-configbody iwidgets::Optionmenu::state {
- switch $itk_option(-state) {
- normal {
- $itk_component(menuBtn) config -state normal
- $itk_component(label) config -fg $itk_option(-foreground)
- }
- disabled {
- $itk_component(menuBtn) config -state disabled
- $itk_component(label) config -fg $itk_option(-disabledforeground)
- }
- default {
- error "bad state option \"$itk_option(-state)\":\
- should be disabled or normal"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Return the numerical index corresponding to index.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::index {index} {
-
- if {[regexp {(^[0-9]+$)} $index]} {
- set idx [$itk_component(popupMenu) index $index]
-
- if {$idx == "none"} {
- return 0
- }
- return [expr {$index > $idx ? $_numitems : $idx}]
-
- } elseif {$index == "end"} {
- return $_numitems
-
- } elseif {$index == "select"} {
- return [lsearch $_items $_currentItem]
-
- }
-
- set numValue [lsearch -glob $_items $index]
-
- if {$numValue == -1} {
- error "bad Optionmenu index \"$index\""
- }
- return $numValue
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete first ?last?
-#
-# Remove an item (or range of items) from the popup menu.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::delete {first {last {}}} {
-
- set first [index $first]
- set last [expr {$last != {} ? [index $last] : $first}]
- set nextAvail $_currentItem
-
- #
- # If current item is in delete range point to next available.
- #
- if {$_numitems > 1 &&
- ([lsearch -exact [lrange $_items $first $last] [get]] != -1)} {
- set nextAvail [_getNextItem $last]
- }
-
- _setitems [lreplace $_items $first $last]
-
- #
- # Make sure "nextAvail" is still in the list.
- #
- set index [lsearch -exact $_items $nextAvail]
- _setItem [expr {$index != -1 ? $nextAvail : ""}]
-}
-
-# ------------------------------------------------------------------
-# METHOD: disable index
-#
-# Disable a menu item in the option menu. This will prevent the user
-# from being able to select this item from the menu. This only effects
-# the state of the item in the menu, in other words, should the item
-# be the currently selected item, the user is responsible for
-# determining this condition and taking appropriate action.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::disable {index} {
- set index [index $index]
- $itk_component(popupMenu) entryconfigure $index -state disabled
-}
-
-# ------------------------------------------------------------------
-# METHOD: enable index
-#
-# Enable a menu item in the option menu. This will allow the user
-# to select this item from the menu.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::enable {index} {
- set index [index $index]
- $itk_component(popupMenu) entryconfigure $index -state normal
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Returns the current menu item.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::get {{first "current"} {last ""}} {
- if {"current" == $first} {
- return $_currentItem
- }
-
- set first [index $first]
- if {"" == $last} {
- return [$itk_component(popupMenu) entrycget $first -label]
- }
-
- if {"end" == $last} {
- set last [$itk_component(popupMenu) index end]
- } else {
- set last [index $last]
- }
- set rval ""
- while {$first <= $last} {
- lappend rval [$itk_component(popupMenu) entrycget $first -label]
- incr first
- }
- return $rval
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert index string ?string?
-#
-# Insert an item in the popup menu.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::insert {index string args} {
- set index [index $index]
- set args [linsert $args 0 $string]
- _setitems [eval linsert {$_items} $index $args]
- return ""
-}
-
-# ------------------------------------------------------------------
-# METHOD: select index
-#
-# Select an item from the popup menu to display on the menu label
-# button.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::select {index} {
- set index [index $index]
- if {$index > [expr $_numitems - 1]} {
- incr index -1
- }
- _setItem [lindex $_items $index]
-}
-
-# ------------------------------------------------------------------
-# METHOD: popupMenu
-#
-# Evaluates the specified args against the popup menu component
-# and returns the result.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::popupMenu {args} {
- return [eval $itk_component(popupMenu) $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: sort mode
-#
-# Sort the current menu in either "ascending" or "descending" order.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::sort {{mode "increasing"}} {
- switch $mode {
- ascending -
- increasing {
- _setitems [lsort -increasing $_items]
- }
- descending -
- decreasing {
- _setitems [lsort -decreasing $_items]
- }
- default {
- error "bad sort argument \"$mode\": should be ascending,\
- descending, increasing, or decreasing"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _buttonRelease
-#
-# Display the popup menu. Menu position is calculated.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_buttonRelease {time} {
- if {[expr abs([expr $_postTime - $time])] <= $itk_option(-clicktime)} {
- return -code break
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _getNextItem index
-#
-# Allows either a string or index number to be passed in, and returns
-# the next item in the list in string format. Wrap around is automatic.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_getNextItem {index} {
-
- if {[incr index] >= $_numitems} {
- set index 0 ;# wrap around
- }
- return [lindex $_items $index]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _next
-#
-# Sets the current option label to next item in list if that item is
-# not disbaled.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_next {} {
- if {$itk_option(-state) != "normal"} {
- return
- }
- set i [lsearch -exact $_items $_currentItem]
-
- for {set cnt 0} {$cnt < $_numitems} {incr cnt} {
-
- if {[incr i] >= $_numitems} {
- set i 0
- }
-
- if {[$itk_component(popupMenu) entrycget $i -state] != "disabled"} {
- _setItem [lindex $_items $i]
- break
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _previous
-#
-# Sets the current option label to previous item in list if that
-# item is not disbaled.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_previous {} {
- if {$itk_option(-state) != "normal"} {
- return
- }
-
- set i [lsearch -exact $_items $_currentItem]
-
- for {set cnt 0} {$cnt < $_numitems} {incr cnt} {
- set i [expr $i - 1]
-
- if {$i < 0} {
- set i [expr $_numitems - 1]
- }
-
- if {[$itk_component(popupMenu) entrycget $i -state] != "disabled"} {
- _setItem [lindex $_items $i]
- break
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _postMenu time
-#
-# Display the popup menu. Menu position is calculated.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_postMenu {time} {
- #
- # Don't bother to post if menu is empty.
- #
- if {[llength $_items] > 0 && $itk_option(-state) == "normal"} {
- set _postTime $time
- set itemIndex [lsearch -exact $_items $_currentItem]
-
- set margin [expr $itk_option(-borderwidth) \
- + $itk_option(-highlightthickness)]
-
- set x [expr [winfo rootx $itk_component(menuBtn)] + $margin]
- set y [expr [winfo rooty $itk_component(menuBtn)] \
- - [$itk_component(popupMenu) yposition $itemIndex] + $margin]
-
- tk_popup $itk_component(popupMenu) $x $y
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setItem
-#
-# Set the menu button label to item, then dismiss the popup menu.
-# Also check if item has been changed. If so, also call user-supplied
-# command.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_setItem {item} {
- if {$_currentItem != $item} {
- set _currentItem $item
- if {[winfo ismapped $itk_component(hull)]} {
- uplevel #0 $itk_option(-command)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setitems items
-#
-# Create a list of items available on the menu. Used to create the
-# popup menu.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_setitems {items_} {
-
- #
- # Delete the old menu entries, and set the new list of
- # menu entries to those specified in "items_".
- #
- $itk_component(popupMenu) delete 0 last
- set _items ""
- set _numitems [llength $items_]
-
- #
- # Clear the menu button label.
- #
- if {$_numitems == 0} {
- _setItem ""
- return
- }
-
- set savedCurrentItem $_currentItem
-
- foreach opt $items_ {
- lappend _items $opt
- $itk_component(popupMenu) add command -label $opt \
- -command [code $this _setItem $opt]
- }
- set first [lindex $_items 0]
-
- #
- # Make sure "savedCurrentItem" is still in the list.
- #
- if {$first != ""} {
- set i [lsearch -exact $_items $savedCurrentItem]
- #-------------------------------------------------------------
- # BEGIN BUG FIX: csmith (Chad Smith: csmith@adc.com), 11/18/99
- #-------------------------------------------------------------
- # The previous code fragment:
- # <select [expr {$i != -1 ? $savedCurrentItem : $first}]>
- # is faulty because of exponential numbers. For example,
- # 2e-4 is numerically equal to 2e-04, but the string representation
- # is of course different. As a result, the select invocation
- # fails, and an error message is printed.
- #-------------------------------------------------------------
- if {$i != -1} {
- select $savedCurrentItem
- } else {
- select $first
- }
- #-------------------------------------------------------------
- # END BUG FIX
- #-------------------------------------------------------------
- } else {
- _setItem ""
- }
-
- _setSize
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setSize ?when?
-#
-# Set the size of the option menu. If "when" is "now", the change
-# is applied immediately. If it is "later" or it is not specified,
-# then the change is applied later, when the application is idle.
-# ------------------------------------------------------------------
-body iwidgets::Optionmenu::_setSize {{when later}} {
-
- if {$when == "later"} {
- if {$_calcSize == ""} {
- set _calcSize [after idle [code $this _setSize now]]
- }
- return
- }
-
- set margin [expr 2*($itk_option(-borderwidth) \
- + $itk_option(-highlightthickness))]
-
- if {"0" != $itk_option(-width)} {
- set width $itk_option(-width)
- } else {
- set width [expr [winfo reqwidth $itk_component(popupMenu)]+$margin+20]
- }
- set height [winfo reqheight $itk_component(menuBtn)]
- $itk_component(lwchildsite) configure -width $width -height $height
-
- set _calcSize ""
-}
diff --git a/itcl/iwidgets3.0.0/generic/pane.itk b/itcl/iwidgets3.0.0/generic/pane.itk
deleted file mode 100644
index b7260f3815c..00000000000
--- a/itcl/iwidgets3.0.0/generic/pane.itk
+++ /dev/null
@@ -1,128 +0,0 @@
-#
-# Paned
-# ----------------------------------------------------------------------
-# Implements a pane for a paned window widget. The pane is itself a
-# frame with a child site for other widgets. The pane class performs
-# basic option management.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Pane {
- keep -background -cursor
-}
-
-# ------------------------------------------------------------------
-# PANE
-# ------------------------------------------------------------------
-class iwidgets::Pane {
- inherit itk::Widget
-
- constructor {args} {}
-
- itk_option define -minimum minimum Minimum 10
- itk_option define -margin margin Margin 8
-
- public method childSite {} {}
-}
-
-#
-# Provide a lowercased access method for the Pane class.
-#
-proc ::iwidgets::pane {pathName args} {
- uplevel ::iwidgets::Pane $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Pane::constructor {args} {
- #
- # Create the pane childsite.
- #
- itk_component add childsite {
- frame $itk_interior.childsite
- } {
- keep -background -cursor
- }
- pack $itk_component(childsite) -fill both -expand yes
-
- #
- # Set the itk_interior variable to be the childsite for derived
- # classes.
- #
- set itk_interior $itk_component(childsite)
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -minimum
-#
-# Specifies the minimum size that the pane may reach.
-# ------------------------------------------------------------------
-configbody iwidgets::Pane::minimum {
- set pixels \
- [winfo pixels $itk_component(hull) $itk_option(-minimum)]
-
- set itk_option(-minimum) $pixels
-}
-
-# ------------------------------------------------------------------
-# OPTION: -margin
-#
-# Specifies the border distance between the pane and pane contents.
-# This is done by setting the borderwidth of the pane to the margin.
-# ------------------------------------------------------------------
-configbody iwidgets::Pane::margin {
- set pixels [winfo pixels $itk_component(hull) $itk_option(-margin)]
- set itk_option(-margin) $pixels
-
- $itk_component(childsite) configure \
- -borderwidth $itk_option(-margin)
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childSite
-#
-# Return the pane child site path name.
-# ------------------------------------------------------------------
-body iwidgets::Pane::childSite {} {
- return $itk_component(childsite)
-}
diff --git a/itcl/iwidgets3.0.0/generic/panedwindow.itk b/itcl/iwidgets3.0.0/generic/panedwindow.itk
deleted file mode 100644
index 644d1d6c8f7..00000000000
--- a/itcl/iwidgets3.0.0/generic/panedwindow.itk
+++ /dev/null
@@ -1,892 +0,0 @@
-#
-# Panedwindow
-# ----------------------------------------------------------------------
-# Implements a multiple paned window widget capable of orienting the panes
-# either vertically or horizontally. Each pane is itself a frame acting
-# as a child site for other widgets. The border separating each pane
-# contains a sash which allows user positioning of the panes relative to
-# one another.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Panedwindow {
- keep -background -cursor -sashcursor
-}
-
-# ------------------------------------------------------------------
-# PANEDWINDOW
-# ------------------------------------------------------------------
-class iwidgets::Panedwindow {
- inherit itk::Widget
-
- constructor {args} {}
-
- itk_option define -orient orient Orient horizontal
- itk_option define -sashborderwidth sashBorderWidth SashBorderWidth 2
- itk_option define -sashcursor sashCursor SashCursor crosshair
- itk_option define -sashwidth sashWidth SashWidth 10
- itk_option define -sashheight sashHeight SashHeight 10
- itk_option define -thickness thickness Thickness 3
- itk_option define -sashindent sashIndent SashIndent -10
-
- public method index {index}
- public method childsite {args}
- public method fraction {percentage1 percentage2 args}
- public method add {tag args}
- public method insert {index tag args}
- public method delete {index}
- public method hide {index}
- public method show {index}
- public method paneconfigure {index args}
- public method reset {}
-
- protected method _pwConfigureEventHandler {width height}
- protected method _startGrip {where num}
- protected method _endGrip {where num}
- protected method _configGrip {where num}
- protected method _handleGrip {where num}
- protected method _moveSash {where num}
-
- private method _setFracArray {}
- private method _setActivePanes {}
- private method _calcFraction {where num}
- private method _makeSashes {}
- private method _placeSash {i}
- private method _placePanes {{start 0} {end end}}
-
- private variable _initialized 0 ;# Denotes initialized state.
- private variable _panes {} ;# List of panes.
- private variable _activePanes {} ;# List of active panes.
- private variable _sashes {} ;# List of sashes.
- private variable _separators {} ;# List of separators.
- private variable _frac ;# Array of fraction percentages.
- private variable _lowerlimit ;# Margin distance above/left of sash.
- private variable _upperlimit ;# Margin distance below/right of sash.
- private variable _dimension ;# Width/Height at start of drag.
- private variable _sashloc ;# Array of dist of sash from above/left.
- private variable _pixels ;# Array of dist of sash from above/left.
- private variable _minheight ;# Array of min heights for panes.
- private variable _minsashmoved ;# Lowest sash moved during dragging.
- private variable _maxsashmoved ;# Highest sash moved during dragging.
- private variable _dragging 0 ;# Boolean for dragging enabled.
- private variable _movecount 0 ;# Kludge counter to get sashes to
- ;# display without calling update
- ;# idletasks too often.
- private variable _width 0 ;# hull's width.
- private variable _height 0 ;# hull's height.
- private variable _unique -1 ;# Unique number for pane names.
-}
-
-#
-# Provide a lowercased access method for the Panedwindow class.
-#
-proc ::iwidgets::panedwindow {pathName args} {
- uplevel ::iwidgets::Panedwindow $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Panedwindow.width 10 widgetDefault
-option add *Panedwindow.height 10 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::constructor {args} {
- itk_option add hull.width hull.height
-
- pack propagate $itk_component(hull) no
-
- #
- # Add binding for the configure event.
- #
- bind pw-config-$this <Configure> [code $this _pwConfigureEventHandler %w %h]
- bindtags $itk_component(hull) \
- [linsert [bindtags $itk_component(hull)] 0 pw-config-$this]
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -orient
-#
-# Specifies the orientation of the sashes. Once the paned window
-# has been mapped, set the sash bindings and place the panes.
-# ------------------------------------------------------------------
-configbody iwidgets::Panedwindow::orient {
- if {$_initialized} {
- switch $itk_option(-orient) {
- vertical {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- bind $itk_component(sash$i) <Button-1> \
- [code $this _startGrip %x $i]
- bind $itk_component(sash$i) <B1-Motion> \
- [code $this _handleGrip %x $i]
- bind $itk_component(sash$i) <B1-ButtonRelease-1> \
- [code $this _endGrip %x $i]
- bind $itk_component(sash$i) <Configure> \
- [code $this _configGrip %x $i]
- }
-
- _setFracArray
- _makeSashes
- _placePanes
- }
-
- horizontal {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- bind $itk_component(sash$i) <Button-1> \
- [code $this _startGrip %y $i]
- bind $itk_component(sash$i) <B1-Motion> \
- [code $this _handleGrip %y $i]
- bind $itk_component(sash$i) <B1-ButtonRelease-1> \
- [code $this _endGrip %y $i]
- bind $itk_component(sash$i) <Configure> \
- [code $this _configGrip %y $i]
- }
-
- _setFracArray
- _makeSashes
- _placePanes
- }
-
- default {
- error "bad orientation option \"$itk_option(-orient)\":\
- should be horizontal or vertical"
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -sashborderwidth
-#
-# Specifies a non-negative value indicating the width of the 3-D
-# border to draw around the outside of the sash.
-# ------------------------------------------------------------------
-configbody iwidgets::Panedwindow::sashborderwidth {
- set pixels [winfo pixels $itk_component(hull) \
- $itk_option(-sashborderwidth)]
- set itk_option(-sashborderwidth) $pixels
-
- if {$_initialized} {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- $itk_component(sash$i) configure \
- -borderwidth $itk_option(-sashborderwidth)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -sashcursor
-#
-# Specifies the type of cursor to be used when over the sash.
-# ------------------------------------------------------------------
-configbody iwidgets::Panedwindow::sashcursor {
- if {$_initialized} {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- $itk_component(sash$i) configure -cursor $itk_option(-sashcursor)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -sashwidth
-#
-# Specifies the width of the sash.
-# ------------------------------------------------------------------
-configbody iwidgets::Panedwindow::sashwidth {
- set pixels [winfo pixels $itk_component(hull) \
- $itk_option(-sashwidth)]
- set itk_option(-sashwidth) $pixels
-
- if {$_initialized} {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- $itk_component(sash$i) configure \
- -width $itk_option(-sashwidth)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -sashheight
-#
-# Specifies the height of the sash,
-# ------------------------------------------------------------------
-configbody iwidgets::Panedwindow::sashheight {
- set pixels [winfo pixels $itk_component(hull) \
- $itk_option(-sashheight)]
- set itk_option(-sashheight) $pixels
-
- if {$_initialized} {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- $itk_component(sash$i) configure \
- -height $itk_option(-sashheight)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -thickness
-#
-# Specifies the thickness of the separators. It sets the width and
-# height of the separator to the thickness value and the borderwidth
-# to half the thickness.
-# ------------------------------------------------------------------
-configbody iwidgets::Panedwindow::thickness {
- set pixels [winfo pixels $itk_component(hull) \
- $itk_option(-thickness)]
- set itk_option(-thickness) $pixels
-
- if {$_initialized} {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- $itk_component(separator$i) configure \
- -height $itk_option(-thickness)
- $itk_component(separator$i) configure \
- -width $itk_option(-thickness)
- $itk_component(separator$i) configure \
- -borderwidth [expr $itk_option(-thickness) / 2]
- }
-
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- _placeSash $i
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -sashindent
-#
-# Specifies the placement of the sash along the panes. A positive
-# value causes the sash to be offset from the near (left/top) side
-# of the pane, and a negative value causes the sash to be offset from
-# the far (right/bottom) side. If the offset is greater than the
-# width, then the sash is placed flush against the side.
-# ------------------------------------------------------------------
-configbody iwidgets::Panedwindow::sashindent {
- set pixels [winfo pixels $itk_component(hull) \
- $itk_option(-sashindent)]
- set itk_option(-sashindent) $pixels
-
- if {$_initialized} {
- for {set i 1} {$i < [llength $_activePanes]} {incr i} {
- _placeSash $i
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Searches the panes in the paned window for the one with the
-# requested tag, numerical index, or keyword "end". Returns the pane's
-# numerical index if found, otherwise error.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::index {index} {
- if {[llength $_panes] > 0} {
- if {[regexp {(^[0-9]+$)} $index]} {
- if {$index < [llength $_panes]} {
- return $index
- } else {
- error "Panedwindow index \"$index\" is out of range"
- }
-
- } elseif {$index == "end"} {
- return [expr [llength $_panes] - 1]
-
- } else {
- if {[set idx [lsearch $_panes $index]] != -1} {
- return $idx
- }
-
- error "bad Panedwindow index \"$index\": must be number, end,\
- or pattern"
- }
-
- } else {
- error "Panedwindow \"$itk_component(hull)\" has no panes"
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: childsite ?index?
-#
-# Given an index return the specifc childsite path name. Invoked
-# without an index return a list of all the child site panes. The
-# list is ordered from the near side (left/top).
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::childsite {args} {
- if {! $_initialized} {
- set _initialized 1
- reset
- }
-
- if {[llength $args] == 0} {
- set children {}
-
- foreach pane $_panes {
- lappend children [$itk_component($pane) childSite]
- }
-
- return $children
-
- } else {
- set index [index [lindex $args 0]]
- return [$itk_component([lindex $_panes $index]) childSite]
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: fraction percentage percentage ?percentage ...?
-#
-# Sets the visible percentage of the panes. Specifies a list of
-# percentages which are applied to the currently visible panes from
-# the near side (left/top). The number of percentages must be equal
-# to the current number of visible (mapped) panes and add up to 100.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::fraction {percentage1 percentage2 args} {
- set args [linsert $args 0 $percentage1 $percentage2]
-
- if {[llength $args] == [llength $_activePanes]} {
- set sum 0
-
- for {set i 0} {$i < [llength $args]} {incr i} {
- set sum [expr $sum + [lindex $args $i]]
- }
-
- if {$sum == 100} {
- set perc 0.0
-
- for {set i 0} {$i < [llength $_activePanes]} {incr i} {
- set _frac($i) $perc
- set perc [expr $perc + [expr [lindex $args $i] / 100.0]]
- }
-
- set _frac($i) 1.0
-
- if {[winfo ismapped $itk_component(hull)]} {
- _placePanes
- }
-
- } else {
- error "bad fraction arguments \"$args\": they should add\
- up to 100"
- }
-
- } else {
- error "wrong # args: should be \"$itk_component(hull)\
- fraction percentage percentage ?percentage ...?\",\
- where the number of percentages is\
- [llength $_activePanes] and equal 100"
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: add tag ?option value option value ...?
-#
-# Add a new pane to the paned window to the far (right/bottom) side.
-# The method takes additional options which are passed on to the
-# pane constructor. These include -margin, and -minimum. The path
-# of the pane is returned.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::add {tag args} {
- #
- # Create panes.
- #
- itk_component add $tag {
- eval iwidgets::Pane $itk_interior.pane[incr _unique] $args
- } {
- keep -background -cursor
- }
-
- lappend _panes $tag
- lappend _activePanes $tag
-
- reset
-
- return $itk_component($tag)
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert index tag ?option value option value ...?
-#
-# Insert the specified pane in the paned window just before the one
-# given by index. Any additional options which are passed on to the
-# pane constructor. These include -margin, -minimum. The path of
-# the pane is returned.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::insert {index tag args} {
- #
- # Create panes.
- #
- itk_component add $tag {
- eval iwidgets::Pane $itk_interior.pane[incr _unique] $args
- } {
- keep -background -cursor
- }
-
- set index [index $index]
- set _panes [linsert $_panes $index $tag]
- lappend _activePanes $tag
-
- reset
-
- return $itk_component($tag)
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete index
-#
-# Delete the specified pane.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::delete {index} {
- set index [index $index]
- set tag [lindex $_panes $index]
-
- destroy $itk_component($tag)
-
- set _panes [lreplace $_panes $index $index]
-
- reset
-}
-
-# ------------------------------------------------------------------
-# METHOD: hide index
-#
-# Remove the specified pane from the paned window.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::hide {index} {
- set index [index $index]
- set tag [lindex $_panes $index]
-
- if {[set idx [lsearch -exact $_activePanes $tag]] != -1} {
- set _activePanes [lreplace $_activePanes $idx $idx]
- }
-
- reset
-}
-
-# ------------------------------------------------------------------
-# METHOD: show index
-#
-# Display the specified pane in the paned window.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::show {index} {
- set index [index $index]
- set tag [lindex $_panes $index]
-
- if {[lsearch -exact $_activePanes $tag] == -1} {
- lappend _activePanes $tag
- }
-
- reset
-}
-
-# ------------------------------------------------------------------
-# METHOD: paneconfigure index ?option? ?value option value ...?
-#
-# Configure a specified pane. This method allows configuration of
-# panes from the Panedwindow level. The options may have any of the
-# values accepted by the add method.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::paneconfigure {index args} {
- set index [index $index]
- set tag [lindex $_panes $index]
-
- return [uplevel $itk_component($tag) configure $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: reset
-#
-# Redisplay the panes based on the default percentages of the panes.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::reset {} {
- if {$_initialized && [llength $_panes]} {
- _setActivePanes
- _setFracArray
-
- _makeSashes
- _placePanes
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _pwConfigureEventHandler
-#
-# Performs operations necessary following a configure event. This
-# includes placing the panes.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_pwConfigureEventHandler {width height} {
- set _width $width
- set _height $height
- if {$_initialized} {
- _placePanes
- } else {
- set _initialized 1
- reset
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _startGrip where num
-#
-# Starts the sash drag and drop operation. At the start of the drag
-# operation all the information is known as for the upper and lower
-# limits for sash movement. The calculation is made at this time and
-# stored in protected variables for later access during the drag
-# handling routines.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_startGrip {where num} {
- if {$itk_option(-orient) == "horizontal"} {
- set _dimension $_height
- } else {
- set _dimension $_width
- }
-
- set _minsashmoved $num
- set _maxsashmoved $num
- set totMinHeight 0
- set cnt [llength $_activePanes]
- set _sashloc(0) 0
- set _pixels($cnt) [expr int($_dimension)]
- for {set i 0} {$i < $cnt} {incr i} {
- set _pixels($i) [expr int($_frac($i) * $_dimension)]
- set margaft [$itk_component([lindex $_activePanes $i]) cget -margin]
- set minaft [$itk_component([lindex $_activePanes $i]) cget -minimum]
- set _minheight($i) [expr $minaft + (2 * $margaft)]
- incr totMinHeight $_minheight($i)
- }
- set _dragging [expr $_dimension > $totMinHeight]
-
- grab $itk_component(sash$num)
- raise $itk_component(separator$num)
- raise $itk_component(sash$num)
-
- $itk_component(sash$num) configure -relief sunken
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _endGrip where num
-#
-# Ends the sash drag and drop operation.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_endGrip {where num} {
- $itk_component(sash$num) configure -relief raised
- grab release $itk_component(sash$num)
- if {$_dragging} {
- _calcFraction [expr $_sashloc($num) + $where] $num
- _placePanes [expr $_minsashmoved - 1] $_maxsashmoved
- set _dragging 0
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _configGrip where num
-#
-# Configure action for sash.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_configGrip {where num} {
- set _sashloc($num) $where
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _handleGrip where num
-#
-# Motion action for sash.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_handleGrip {where num} {
- if {$_dragging} {
- _moveSash [expr $where + $_sashloc($num)] $num
- incr _movecount
- if {$_movecount>4} {
- set _movecount 0
- update idletasks
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _moveSash where num
-#
-# Move the sash to the absolute pixel location
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_moveSash {where num} {
- set _minsashmoved [expr ($_minsashmoved<$num)?$_minsashmoved:$num]
- set _maxsashmoved [expr ($_maxsashmoved>$num)?$_maxsashmoved:$num]
- set oldfrac $_frac($num)
- _calcFraction $where $num
- if {$_frac($num)!=$oldfrac} { _placeSash $num }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setFracArray
-#
-# Calculates the percentages for the fraction array which lists the
-# percentages for each pane.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_setFracArray {} {
- set perc 0.0
- if {[llength $_activePanes] != 0} {
- set percIncr [expr 1.0 / [llength $_activePanes]]
- }
-
- for {set i 0} {$i < [llength $_activePanes]} {incr i} {
- set _frac($i) $perc
- set perc [expr $perc + $percIncr]
- }
-
- set _frac($i) 1.0
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setActivePanes
-#
-# Resets the active pane list.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_setActivePanes {} {
- set _prevActivePanes $_activePanes
-
- set _activePanes {}
-
- foreach pane $_panes {
- if {[lsearch -exact $_prevActivePanes $pane] != -1} {
- lappend _activePanes $pane
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _calcFraction where num
-#
-# Determines the fraction for the sash. Make sure the fraction does
-# not go past the minimum for the pane on each side of the separator.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_calcFraction {where num} {
-
- set _lowerlimit \
- [expr $_pixels([expr $num - 1]) + $_minheight([expr $num - 1])]
- set _upperlimit \
- [expr $_pixels([expr $num + 1]) - $_minheight($num)]
-
- set dir [expr $where - $_pixels($num)]
-
- if {$where < $_lowerlimit && $dir <= 0} {
- if {$num == 1} {
- set _pixels($num) $_lowerlimit
- } {
- _moveSash [expr $where - $_minheight([expr $num - 1])] [expr $num -1]
- set _pixels($num) \
- [expr $_pixels([expr $num - 1]) + $_minheight([expr $num - 1])]
- }
- } elseif {$where > $_upperlimit && $dir >= 0} {
- if {[expr $num + 1] == [llength $_activePanes]} {
- set _pixels($num) $_upperlimit
- } {
- _moveSash [expr $where + $_minheight($num)] [expr $num +1]
- set _pixels($num) \
- [expr $_pixels([expr $num + 1]) - $_minheight($num)]
- }
- } else {
- set _pixels($num) $where
- }
- set _frac($num) [expr $_pixels($num).0 / $_dimension]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _makeSashes
-#
-# Removes any previous sashes and separators and creates new one.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_makeSashes {} {
- #
- # Remove any existing sashes and separators.
- #
- foreach sash $_sashes {
- destroy $itk_component($sash)
- }
-
- foreach separator $_separators {
- destroy $itk_component($separator)
- }
-
- set _sashes {}
- set _separators {}
-
- #
- # Create one less separator and sash than the number of panes.
- #
- for {set id 1} {$id < [llength $_activePanes]} {incr id} {
- itk_component add sash$id {
- frame $itk_interior.sash$id -relief raised \
- -borderwidth $itk_option(-sashborderwidth) \
- -cursor $itk_option(-sashcursor) \
- -width $itk_option(-sashwidth) \
- -height $itk_option(-sashheight)
- } {
- keep -background
- }
-
- lappend _sashes sash$id
-
- switch $itk_option(-orient) {
- vertical {
- bind $itk_component(sash$id) <Button-1> \
- [code $this _startGrip %x $id]
- bind $itk_component(sash$id) <B1-Motion> \
- [code $this _handleGrip %x $id]
- bind $itk_component(sash$id) <B1-ButtonRelease-1> \
- [code $this _endGrip %x $id]
- bind $itk_component(sash$id) <Configure> \
- [code $this _configGrip %x $id]
- }
-
- horizontal {
- bind $itk_component(sash$id) <Button-1> \
- [code $this _startGrip %y $id]
- bind $itk_component(sash$id) <B1-Motion> \
- [code $this _handleGrip %y $id]
- bind $itk_component(sash$id) <B1-ButtonRelease-1> \
- [code $this _endGrip %y $id]
- bind $itk_component(sash$id) <Configure> \
- [code $this _configGrip %y $id]
- }
- }
-
- itk_component add separator$id {
- frame $itk_interior.separator$id -relief sunken \
- -height $itk_option(-thickness) \
- -width $itk_option(-thickness) \
- -borderwidth [expr $itk_option(-thickness) / 2]
- } {
- keep -background -cursor
- }
-
- lappend _separators separator$id
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _placeSash i
-#
-# Places the position of the sash and separator.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_placeSash {i} {
- if {$itk_option(-orient) == "horizontal"} {
- place $itk_component(separator$i) -in $itk_component(hull) \
- -x 0 -relwidth 1 -rely $_frac($i) -anchor w \
- -height $itk_option(-thickness)
-
- if {$itk_option(-sashindent) < 0} {
- set sashPos [expr $_width + $itk_option(-sashindent)]
- set sashAnchor e
- } else {
- set sashPos $itk_option(-sashindent)
- set sashAnchor w
- }
-
- place $itk_component(sash$i) -in $itk_component(hull) \
- -x $sashPos -rely $_frac($i) -anchor $sashAnchor
-
- } else {
- place $itk_component(separator$i) -in $itk_component(hull) \
- -y 0 -relheight 1 -relx $_frac($i) -anchor n \
- -width $itk_option(-thickness)
-
- if {$itk_option(-sashindent) < 0} {
- set sashPos [expr $_height + $itk_option(-sashindent)]
- set sashAnchor s
- } else {
- set sashPos $itk_option(-sashindent)
- set sashAnchor n
- }
-
- place $itk_component(sash$i) -in $itk_component(hull) \
- -y $sashPos -relx $_frac($i) -anchor $sashAnchor
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _placePanes
-#
-# Resets the panes of the window following movement of the sash.
-# ------------------------------------------------------------------
-body iwidgets::Panedwindow::_placePanes {{start 0} {end end}} {
- if {$end=="end"} { set end [expr [llength $_activePanes] - 1] }
- set _updatePanes [lrange $_activePanes $start $end]
- if {$_updatePanes == $_activePanes} {
- set _forgetPanes $_panes
- } {
- set _forgetPanes $_updatePanes
- }
- foreach pane $_forgetPanes {
- place forget $itk_component($pane)
- }
-
-
- if {$itk_option(-orient) == "horizontal"} {
- set i $start
- foreach pane $_updatePanes {
- place $itk_component($pane) -in $itk_component(hull) \
- -x 0 -rely $_frac($i) -relwidth 1 \
- -relheight [expr $_frac([expr $i + 1]) - $_frac($i)]
- incr i
- }
-
- } else {
- set i $start
- foreach pane $_updatePanes {
- place $itk_component($pane) -in $itk_component(hull) \
- -y 0 -relx $_frac($i) -relheight 1 \
- -relwidth [expr $_frac([expr $i + 1]) - $_frac($i)]
- incr i
- }
-
- }
-
- for {set i [expr $start+1]} {$i <= $end} {incr i} {
- if {[array names itk_component separator$i] != ""} {
- _placeSash $i
- raise $itk_component(separator$i)
- raise $itk_component(sash$i)
- }
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/promptdialog.itk b/itcl/iwidgets3.0.0/generic/promptdialog.itk
deleted file mode 100644
index 0348fb958e6..00000000000
--- a/itcl/iwidgets3.0.0/generic/promptdialog.itk
+++ /dev/null
@@ -1,199 +0,0 @@
-#
-# Promptdialog
-# ----------------------------------------------------------------------
-# Implements a prompt dialog similar to the OSF/Motif standard prompt
-# dialog composite widget. The Promptdialog is derived from the
-# Dialog class and is composed of a EntryField with methods to
-# manipulate the dialog buttons.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Promptdialog {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -labelfont -modality \
- -selectbackground -selectborderwidth -selectforeground \
- -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# PROMPTDIALOG
-# ------------------------------------------------------------------
-class iwidgets::Promptdialog {
- inherit iwidgets::Dialog
-
- constructor {args} {}
-
- public method get {}
- public method clear {}
- public method insert {args}
- public method delete {args}
- public method icursor {args}
- public method index {args}
- public method scan {args}
- public method selection {args}
- method xview {args}
-}
-
-#
-# Provide a lowercased access method for the Dialogshell class.
-#
-proc ::iwidgets::promptdialog {pathName args} {
- uplevel ::iwidgets::Promptdialog $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Promptdialog.labelText Selection widgetDefault
-option add *Promptdialog.labelPos nw widgetDefault
-option add *Promptdialog.title "Prompt Dialog" widgetDefault
-option add *Promptdialog.master "." widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::constructor {args} {
- #
- # Set the borderwidth to zero.
- #
- component hull configure -borderwidth 0
-
- #
- # Create an entry field widget.
- #
- itk_component add prompt {
- iwidgets::Entryfield $itk_interior.prompt -command [code $this invoke]
- } {
- usual
-
- keep -exportselection -invalid -labelpos -labeltext -relief \
- -show -textbackground -textfont -validate
- }
-
- pack $itk_component(prompt) -fill x -expand yes
- set itk_interior [childsite]
-
- hide Help
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::get {} {
- return [$itk_component(prompt) get]
-}
-
-# ------------------------------------------------------------------
-# METHOD: clear
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::clear {} {
- eval $itk_component(prompt) clear
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert args
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::insert {args} {
- eval $itk_component(prompt) insert $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete first ?last?
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::delete {args} {
- eval $itk_component(prompt) delete $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: icursor
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::icursor {args} {
- eval $itk_component(prompt) icursor $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: index
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::index {args} {
- return [eval $itk_component(prompt) index $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: scan option args
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::scan {args} {
- eval $itk_component(prompt) scan $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: selection args
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::selection {args} {
- eval $itk_component(prompt) selection $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: xview args
-#
-# Thinwrapped method of entry field class.
-# ------------------------------------------------------------------
-body iwidgets::Promptdialog::xview {args} {
- eval $itk_component(prompt) xview $args
-}
-
-
diff --git a/itcl/iwidgets3.0.0/generic/pushbutton.itk b/itcl/iwidgets3.0.0/generic/pushbutton.itk
deleted file mode 100644
index 5961458a89b..00000000000
--- a/itcl/iwidgets3.0.0/generic/pushbutton.itk
+++ /dev/null
@@ -1,356 +0,0 @@
-#
-# Pushbutton
-# ----------------------------------------------------------------------
-# Implements a Motif-like Pushbutton with an optional default ring.
-#
-# WISH LIST:
-# 1) Allow bitmaps and text on the same button face (Tk limitation).
-# 2) provide arm and disarm bitmaps.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.dsccc.com
-# Bret A. Schuhmacher EMAIL: bas@wn.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 Pushbutton {
- keep -activebackground -activeforeground -background -borderwidth \
- -cursor -disabledforeground -font -foreground -highlightbackground \
- -highlightcolor -highlightthickness
-}
-
-# ------------------------------------------------------------------
-# PUSHBUTTON
-# ------------------------------------------------------------------
-class iwidgets::Pushbutton {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -padx padX Pad 11
- itk_option define -pady padY Pad 4
- itk_option define -font font Font \
- -Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*
- itk_option define -text text Text {}
- itk_option define -bitmap bitmap Bitmap {}
- itk_option define -image image Image {}
- itk_option define -highlightthickness highlightThickness \
- HighlightThickness 2
- itk_option define -borderwidth borderWidth BorderWidth 2
- itk_option define -defaultring defaultRing DefaultRing 0
- itk_option define -defaultringpad defaultRingPad Pad 4
- itk_option define -height height Height 0
- itk_option define -width width Width 0
- itk_option define -takefocus takeFocus TakeFocus 0
-
- public method flash {}
- public method invoke {}
-
- protected method _relayout {{when later}}
- protected variable _reposition "" ;# non-null => _relayout pending
-}
-
-#
-# Provide a lowercased access method for the Pushbutton class.
-#
-proc ::iwidgets::pushbutton {pathName args} {
- uplevel ::iwidgets::Pushbutton $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Pushbutton.borderWidth 2 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Pushbutton::constructor {args} {
- #
- # Reconfigure the hull to act as the outer sunken ring of
- # the pushbutton, complete with focus ring.
- #
- itk_option add hull.borderwidth hull.relief
- itk_option add hull.highlightcolor
- itk_option add hull.highlightbackground
-
- component hull configure \
- -borderwidth [$this cget -borderwidth]
-
- pack propagate $itk_component(hull) no
-
- itk_component add pushbutton {
- button $itk_component(hull).pushbutton \
- } {
- usual
- keep -underline -wraplength -state -command
- }
- pack $itk_component(pushbutton) -expand 1 -fill both
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-
- #
- # Layout the pushbutton.
- #
- _relayout
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Pushbutton::destructor {} {
- if {$_reposition != ""} {after cancel $_reposition}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -padx
-#
-# Specifies the extra space surrounding the label in the x direction.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::padx {
- $itk_component(pushbutton) configure -padx $itk_option(-padx)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -pady
-#
-# Specifies the extra space surrounding the label in the y direction.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::pady {
- $itk_component(pushbutton) configure -pady $itk_option(-pady)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -font
-#
-# Specifies the label font.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::font {
- $itk_component(pushbutton) configure -font $itk_option(-font)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -text
-#
-# Specifies the label text.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::text {
- $itk_component(pushbutton) configure -text $itk_option(-text)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -bitmap
-#
-# Specifies the label bitmap.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::bitmap {
- $itk_component(pushbutton) configure -bitmap $itk_option(-bitmap)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -image
-#
-# Specifies the label image.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::image {
- $itk_component(pushbutton) configure -image $itk_option(-image)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -highlightthickness
-#
-# Specifies the thickness of the highlight ring.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::highlightthickness {
- $itk_component(pushbutton) configure \
- -highlightthickness $itk_option(-highlightthickness)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -borderwidth
-#
-# Specifies the width of the relief border.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::borderwidth {
- $itk_component(pushbutton) configure -borderwidth $itk_option(-borderwidth)
-
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -defaultring
-#
-# Boolean describing whether the button displays its default ring.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::defaultring {
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -defaultringpad
-#
-# The size of the padded default ring around the button.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::defaultringpad {
- pack $itk_component(pushbutton) \
- -padx $itk_option(-defaultringpad) \
- -pady $itk_option(-defaultringpad)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the button inclusive of any default ring.
-# A value of zero lets the push button determine the height based
-# on the requested height plus highlightring and defaultringpad.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::height {
- _relayout
-}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the button inclusive of any default ring.
-# A value of zero lets the push button determine the width based
-# on the requested width plus highlightring and defaultringpad.
-# ------------------------------------------------------------------
-configbody iwidgets::Pushbutton::width {
- _relayout
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: flash
-#
-# Thin wrap of standard button widget flash method.
-# ------------------------------------------------------------------
-body iwidgets::Pushbutton::flash {} {
- $itk_component(pushbutton) flash
-}
-
-# ------------------------------------------------------------------
-# METHOD: invoke
-#
-# Thin wrap of standard button widget invoke method.
-# ------------------------------------------------------------------
-body iwidgets::Pushbutton::invoke {} {
- $itk_component(pushbutton) invoke
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _relayout ?when?
-#
-# Adjust the width and height of the Pushbutton to accomadate all the
-# current options settings. Add back in the highlightthickness to
-# the button such that the correct reqwidth and reqheight are computed.
-# Set the width and height based on the reqwidth/reqheight,
-# highlightthickness, and ringpad. Finally, configure the defaultring
-# properly. If "when" is "now", the change is applied immediately. If
-# it is "later" or it is not specified, then the change is applied later,
-# when the application is idle.
-# ------------------------------------------------------------------
-body iwidgets::Pushbutton::_relayout {{when later}} {
- if {$when == "later"} {
- if {$_reposition == ""} {
- set _reposition [after idle [code $this _relayout now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- set _reposition ""
-
- if {$itk_option(-width) == 0} {
- set w [expr [winfo reqwidth $itk_component(pushbutton)] \
- + 2 * $itk_option(-highlightthickness) \
- + 2 * $itk_option(-borderwidth) \
- + 2 * $itk_option(-defaultringpad)]
- } else {
- set w $itk_option(-width)
- }
-
- if {$itk_option(-height) == 0} {
- set h [expr [winfo reqheight $itk_component(pushbutton)] \
- + 2 * $itk_option(-highlightthickness) \
- + 2 * $itk_option(-borderwidth) \
- + 2 * $itk_option(-defaultringpad)]
- } else {
- set h $itk_option(-height)
- }
-
- component hull configure -width $w -height $h
-
- if {$itk_option(-defaultring)} {
- component hull configure -relief sunken \
- -highlightthickness [$this cget -highlightthickness] \
- -takefocus 1
-
- configure -takefocus 1
-
- component pushbutton configure \
- -highlightthickness 0 -takefocus 0
-
- } else {
- component hull configure -relief flat \
- -highlightthickness 0 -takefocus 0
-
- component pushbutton configure \
- -highlightthickness [$this cget -highlightthickness] \
- -takefocus 1
-
- configure -takefocus 0
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/radiobox.itk b/itcl/iwidgets3.0.0/generic/radiobox.itk
deleted file mode 100644
index 7ec9a31da5d..00000000000
--- a/itcl/iwidgets3.0.0/generic/radiobox.itk
+++ /dev/null
@@ -1,354 +0,0 @@
-#
-# Radiobox
-# ----------------------------------------------------------------------
-# Implements a radiobuttonbox. Supports adding, inserting, deleting,
-# selecting, and deselecting of radiobuttons by tag and index.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Michael J. McLennan EMAIL: mmclennan@lucent.com
-# Mark L. Ulferts EMAIL: mulferts@austin.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 Radiobox {
- keep -background -borderwidth -cursor -disabledforeground \
- -foreground -labelfont -selectcolor
-}
-
-# ------------------------------------------------------------------
-# RADIOBOX
-# ------------------------------------------------------------------
-class iwidgets::Radiobox {
- inherit iwidgets::Labeledframe
-
- constructor {args} {}
-
- itk_option define -disabledforeground \
- disabledForeground DisabledForeground {}
- itk_option define -selectcolor selectColor Background {}
- itk_option define -command command Command {}
- itk_option define -orient orient Orient vertical
-
- public {
- method add {tag args}
- method buttonconfigure {index args}
- method delete {index}
- method deselect {index}
- method flash {index}
- method get {}
- method index {index}
- method insert {index tag args}
- method select {index}
- }
-
- protected method _command { name1 name2 opt }
-
- private {
- method gettag {index} ;# Get the tag of the checkbutton associated
- ;# with a numeric index
-
- method _rearrange {} ;# List of radiobutton tags.
- variable _buttons {} ;# List of radiobutton tags.
- common _modes ;# Current selection.
- variable _unique 0 ;# Unique id for choice creation.
- }
-}
-
-#
-# Provide a lowercased access method for the Radiobox class.
-#
-proc ::iwidgets::radiobox {pathName args} {
- uplevel ::iwidgets::Radiobox $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Radiobox.labelMargin 10 widgetDefault
-option add *Radiobox.labelFont \
- "-Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*" widgetDefault
-option add *Radiobox.labelPos nw widgetDefault
-option add *Radiobox.borderWidth 2 widgetDefault
-option add *Radiobox.relief groove widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::constructor {args} {
- trace variable [scope _modes($this)] w [code $this _command]
-
- grid columnconfigure $itk_component(childsite) 0 -weight 1
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -command
-#
-# Specifies a command to be evaluated upon change in the radiobox
-# ------------------------------------------------------------------
-configbody iwidgets::Radiobox::command {}
-
-# ------------------------------------------------------------------
-# OPTION: -orient
-#
-# Allows the user to orient the radiobuttons either horizontally
-# or vertically.
-# ------------------------------------------------------------------
-configbody iwidgets::Radiobox::orient {
- if {$itk_option(-orient) == "horizontal" ||
- $itk_option(-orient) == "vertical"} {
- _rearrange
- } else {
- error "Bad orientation: $itk_option(-orient). Should be\
- \"horizontal\" or \"vertical\"."
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Searches the radiobutton tags in the radiobox for the one with the
-# requested tag, numerical index, or keyword "end". Returns the
-# choices's numerical index if found, otherwise error.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::index {index} {
- if {[llength $_buttons] > 0} {
- if {[regexp {(^[0-9]+$)} $index]} {
- if {$index < [llength $_buttons]} {
- return $index
- } else {
- error "Radiobox index \"$index\" is out of range"
- }
-
- } elseif {$index == "end"} {
- return [expr [llength $_buttons] - 1]
-
- } else {
- if {[set idx [lsearch $_buttons $index]] != -1} {
- return $idx
- }
-
- error "bad Radiobox index \"$index\": must be number, end,\
- or pattern"
- }
-
- } else {
- error "Radiobox \"$itk_component(hull)\" has no radiobuttons"
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: add tag ?option value option value ...?
-#
-# Add a new tagged radiobutton to the radiobox at the end. The method
-# takes additional options which are passed on to the radiobutton
-# constructor. These include most of the typical radiobutton
-# options. The tag is returned.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::add {tag args} {
- itk_component add $tag {
- eval radiobutton $itk_component(childsite).rb[incr _unique] \
- -variable [list [scope _modes($this)]] \
- -anchor w \
- -justify left \
- -highlightthickness 0 \
- -value $tag $args
- } {
- usual
- ignore -highlightthickness -highlightcolor
- rename -font -labelfont labelFont Font
- }
- lappend _buttons $tag
- grid $itk_component($tag)
- after idle [code $this _rearrange]
-
- return $tag
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert index tag ?option value option value ...?
-#
-# Insert the tagged radiobutton in the radiobox just before the
-# one given by index. Any additional options are passed on to the
-# radiobutton constructor. These include the typical radiobutton
-# options. The tag is returned.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::insert {index tag args} {
- itk_component add $tag {
- eval radiobutton $itk_component(childsite).rb[incr _unique] \
- -variable [list [scope _modes($this)]] \
- -highlightthickness 0 \
- -anchor w \
- -justify left \
- -value $tag $args
- } {
- usual
- ignore -highlightthickness -highlightcolor
- rename -font -labelfont labelFont Font
- }
- set index [index $index]
- set before [lindex $_buttons $index]
- set _buttons [linsert $_buttons $index $tag]
- grid $itk_component($tag)
- after idle [code $this _rearrange]
-
- return $tag
-}
-
-# ------------------------------------------------------------------
-# METHOD: _rearrange
-#
-# Rearrange the buttons in the childsite frame using the grid
-# geometry manager. This method was modified by Chad Smith on 3/9/00
-# to take into consideration the newly added -orient config option.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::_rearrange {} {
- if {[set count [llength $_buttons]] > 0} {
- if {$itk_option(-orient) == "vertical"} {
- set row 0
- foreach tag $_buttons {
- grid configure $itk_component($tag) -col 0 -row $row -sticky nw
- grid rowconfigure $itk_component(childsite) $row -weight 0
- incr row
- }
- grid rowconfigure $itk_component(childsite) [expr $count-1] \
- -weight 1
- } else {
- set col 0
- foreach tag $_buttons {
- grid configure $itk_component($tag) -col $col -row 0 -sticky nw
- grid columnconfigure $itk_component(childsite) $col -weight 1
- incr col
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete index
-#
-# Delete the specified radiobutton.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::delete {index} {
-
- set tag [gettag $index]
- set index [index $index]
-
- destroy $itk_component($tag)
-
- set _buttons [lreplace $_buttons $index $index]
-
- if {$_modes($this) == $tag} {
- set _modes($this) {}
- }
- after idle [code $this _rearrange]
- return
-}
-
-# ------------------------------------------------------------------
-# METHOD: select index
-#
-# Select the specified radiobutton.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::select {index} {
- set tag [gettag $index]
- $itk_component($tag) invoke
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Return the tag of the currently selected radiobutton.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::get {} {
- return $_modes($this)
-}
-
-# ------------------------------------------------------------------
-# METHOD: deselect index
-#
-# Deselect the specified radiobutton.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::deselect {index} {
- set tag [gettag $index]
- $itk_component($tag) deselect
-}
-
-# ------------------------------------------------------------------
-# METHOD: flash index
-#
-# Flash the specified radiobutton.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::flash {index} {
- set tag [gettag $index]
- $itk_component($tag) flash
-}
-
-# ------------------------------------------------------------------
-# METHOD: buttonconfigure index ?option? ?value option value ...?
-#
-# Configure a specified radiobutton. This method allows configuration
-# of radiobuttons from the Radiobox level. The options may have any
-# of the values accepted by the add method.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::buttonconfigure {index args} {
- set tag [gettag $index]
- eval $itk_component($tag) configure $args
-}
-
-# ------------------------------------------------------------------
-# CALLBACK METHOD: _command name1 name2 opt
-#
-# Tied to the trace on _modes($this). Whenever our -variable for our
-# radiobuttons change, this method is invoked. It in turn calls
-# the user specified tcl script given by -command.
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::_command { name1 name2 opt } {
- uplevel #0 $itk_option(-command)
-}
-
-# ------------------------------------------------------------------
-# METHOD: gettag index
-#
-# Return the tag of the checkbutton associated with a specified
-# numeric index
-# ------------------------------------------------------------------
-body iwidgets::Radiobox::gettag {index} {
- return [lindex $_buttons [index $index]]
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/regexpfield.itk b/itcl/iwidgets3.0.0/generic/regexpfield.itk
deleted file mode 100755
index d7e2e7c50b7..00000000000
--- a/itcl/iwidgets3.0.0/generic/regexpfield.itk
+++ /dev/null
@@ -1,455 +0,0 @@
-#
-# Regexpfield
-# ----------------------------------------------------------------------
-# Implements a text entry widget which accepts input that matches its
-# regular expression, and invalidates input which doesn't.
-#
-#
-# ----------------------------------------------------------------------
-# AUTHOR: John A. Tucker E-mail: jatucker@austin.dsccc.com
-#
-# ----------------------------------------------------------------------
-# 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 Regexpfield {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -labelfont \
- -selectbackground -selectborderwidth -selectforeground \
- -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# ENTRYFIELD
-# ------------------------------------------------------------------
-class iwidgets::Regexpfield {
- inherit iwidgets::Labeledwidget
-
- constructor {args} {}
-
- itk_option define -childsitepos childSitePos Position e
- itk_option define -command command Command {}
- itk_option define -fixed fixed Fixed 0
- itk_option define -focuscommand focusCommand Command {}
- itk_option define -invalid invalid Command bell
- itk_option define -regexp regexp Regexp {.*}
- itk_option define -nocase nocase Nocase 0
-
- public {
- method childsite {}
- method get {}
- method delete {args}
- method icursor {args}
- method index {args}
- method insert {args}
- method scan {args}
- method selection {args}
- method xview {args}
- method clear {}
- }
-
- protected {
- method _focusCommand {}
- method _keyPress {char sym state}
- }
-
- private {
- method _peek {char}
- }
-}
-
-#
-# Provide a lowercased access method for the Regexpfield class.
-#
-proc ::iwidgets::regexpfield {pathName args} {
- uplevel ::iwidgets::Regexpfield $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::constructor {args} {
- component hull configure -borderwidth 0
-
- itk_component add entry {
- entry $itk_interior.entry
- } {
- keep -borderwidth -cursor -exportselection \
- -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -justify \
- -relief -selectbackground -selectborderwidth \
- -selectforeground -show -state -textvariable -width
-
- rename -font -textfont textFont Font
- rename -highlightbackground -background background Background
- rename -background -textbackground textBackground Background
- }
-
- #
- # Create the child site widget.
- #
- itk_component add -protected efchildsite {
- frame $itk_interior.efchildsite
- }
- set itk_interior $itk_component(efchildsite)
-
- #
- # Regexpfield instance bindings.
- #
- bind $itk_component(entry) <KeyPress> [code $this _keyPress %A %K %s]
- bind $itk_component(entry) <FocusIn> [code $this _focusCommand]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -command
-#
-# Command associated upon detection of Return key press event
-# ------------------------------------------------------------------
-configbody iwidgets::Regexpfield::command {}
-
-# ------------------------------------------------------------------
-# OPTION: -focuscommand
-#
-# Command associated upon detection of focus.
-# ------------------------------------------------------------------
-configbody iwidgets::Regexpfield::focuscommand {}
-
-# ------------------------------------------------------------------
-# OPTION: -regexp
-#
-# Specify a regular expression to use in performing validation
-# of the content of the entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Regexpfield::regexp {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -invalid
-#
-# Specify a command to executed should the current Regexpfield contents
-# be proven invalid.
-# ------------------------------------------------------------------
-configbody iwidgets::Regexpfield::invalid {}
-
-# ------------------------------------------------------------------
-# OPTION: -fixed
-#
-# Restrict entry to 0 (unlimited) chars. The value is the maximum
-# number of chars the user may type into the field, regardles of
-# field width, i.e. the field width may be 20, but the user will
-# only be able to type -fixed number of characters into it (or
-# unlimited if -fixed = 0).
-# ------------------------------------------------------------------
-configbody iwidgets::Regexpfield::fixed {
- if {[regexp {[^0-9]} $itk_option(-fixed)] || \
- ($itk_option(-fixed) < 0)} {
- error "bad fixed option \"$itk_option(-fixed)\",\
- should be positive integer"
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Regexpfield::childsitepos {
- set parent [winfo parent $itk_component(entry)]
-
- switch $itk_option(-childsitepos) {
- n {
- grid $itk_component(efchildsite) -row 0 -column 0 -sticky ew
- grid $itk_component(entry) -row 1 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 0
- grid rowconfigure $parent 1 -weight 1
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- e {
- grid $itk_component(efchildsite) -row 0 -column 1 -sticky ns
- grid $itk_component(entry) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- s {
- grid $itk_component(efchildsite) -row 1 -column 0 -sticky ew
- grid $itk_component(entry) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- w {
- grid $itk_component(efchildsite) -row 0 -column 0 -sticky ns
- grid $itk_component(entry) -row 0 -column 1 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 0
- grid columnconfigure $parent 1 -weight 1
- }
-
- default {
- error "bad childsite option\
- \"$itk_option(-childsitepos)\":\
- should be n, e, s, or w"
- }
- }
-}
-# ------------------------------------------------------------------
-# OPTION: -nocase
-#
-# Specifies whether or not lowercase characters can match either
-# lowercase or uppercase letters in string.
-# ------------------------------------------------------------------
-configbody iwidgets::Regexpfield::nocase {
-
- switch $itk_option(-nocase) {
- 0 - 1 {
-
- }
-
- default {
- error "bad nocase option \"$itk_option(-nocase)\":\
- should be 0 or 1"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::childsite {} {
- return $itk_component(efchildsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Thin wrap of the standard entry widget get method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::get {} {
- return [$itk_component(entry) get]
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete
-#
-# Thin wrap of the standard entry widget delete method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::delete {args} {
- return [eval $itk_component(entry) delete $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: icursor
-#
-# Thin wrap of the standard entry widget icursor method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::icursor {args} {
- return [eval $itk_component(entry) icursor $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: index
-#
-# Thin wrap of the standard entry widget index method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::index {args} {
- return [eval $itk_component(entry) index $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert
-#
-# Thin wrap of the standard entry widget index method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::insert {args} {
- return [eval $itk_component(entry) insert $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: scan
-#
-# Thin wrap of the standard entry widget scan method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::scan {args} {
- return [eval $itk_component(entry) scan $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: selection
-#
-# Thin wrap of the standard entry widget selection method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::selection {args} {
- return [eval $itk_component(entry) selection $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: xview
-#
-# Thin wrap of the standard entry widget xview method.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::xview {args} {
- return [eval $itk_component(entry) xview $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: clear
-#
-# Delete the current entry contents.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::clear {} {
- $itk_component(entry) delete 0 end
- icursor 0
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _peek char
-#
-# The peek procedure returns the value of the Regexpfield with the
-# char inserted at the insert position.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::_peek {char} {
- set str [get]
-
- set insertPos [index insert]
- set firstPart [string range $str 0 [expr $insertPos - 1]]
- set lastPart [string range $str $insertPos end]
-
- append rtnVal $firstPart $char $lastPart
- return $rtnVal
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _focusCommand
-#
-# Method bound to focus event which evaluates the current command
-# specified in the focuscommand option
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::_focusCommand {} {
- uplevel #0 $itk_option(-focuscommand)
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _keyPress
-#
-# Monitor the key press event checking for return keys, fixed width
-# specification, and optional validation procedures.
-# ------------------------------------------------------------------
-body iwidgets::Regexpfield::_keyPress {char sym state} {
- #
- # A Return key invokes the optionally specified command option.
- #
- if {$sym == "Return"} {
- uplevel #0 $itk_option(-command)
- return -code break 1
- }
-
- #
- # Tabs, BackSpace, and Delete are passed on for other bindings.
- #
- if {($sym == "Tab") || ($sym == "BackSpace") || ($sym == "Delete")} {
- return -code continue 1
- }
-
- #
- # Character is not printable or the state is greater than one which
- # means a modifier was used such as a control, meta key, or control
- # or meta key with numlock down.
- #
- if {($char == "") || \
- ($state == 4) || ($state == 8) || \
- ($state == 36) || ($state == 40)} {
- return -code continue 1
- }
-
- #
- # If the fixed length option is not zero, then verify that the
- # current length plus one will not exceed the limit. If so then
- # invoke the invalid command procedure.
- #
- if {$itk_option(-fixed) != 0} {
- if {[string length [get]] >= $itk_option(-fixed)} {
- uplevel #0 $itk_option(-invalid)
- return -code break 0
- }
- }
-
- set flags ""
-
- #
- # Get the new value of the Regexpfield with the char inserted at the
- # insert position.
- #
- # If the new value doesn't match up with the pattern stored in the
- # -regexp option, then the invalid procedure is called.
- #
- # If the value of the "-nocase" option is true, then add the
- # "-nocase" flag to the list of flags.
- #
- set newVal [_peek $char]
-
- if {$itk_option(-nocase)} {
- set valid [::regexp -nocase -- $itk_option(-regexp) $newVal]
- } else {
- set valid [::regexp $itk_option(-regexp) $newVal]
- }
-
- if {!$valid} {
- uplevel #0 $itk_option(-invalid)
- return -code break 0
- }
-
- return -code continue 1
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/roman.itcl b/itcl/iwidgets3.0.0/generic/roman.itcl
deleted file mode 100644
index 2fe5164a0f3..00000000000
--- a/itcl/iwidgets3.0.0/generic/roman.itcl
+++ /dev/null
@@ -1,28 +0,0 @@
-namespace eval ::iwidgets {
- set romand(val) {1000 900 500 400 100 90 50 40 10 9 5 4 1}
- set romand(upper) { M CM D CD C XC L XL X IX V IV I}
- set romand(lower) { m cm d cd c xc l xl x ix v iv i}
-
- proc roman2 {n {case upper}} {
- global romand
- set r ""
- foreach val $romand(val) sym $romand($case) {
- while {$n >= $val} {
- set r "$r$sym"
- incr n -$val
- }
- }
- return $r
- }
-
- proc roman {n {case upper}} {
- global romand
- set r ""
- foreach val $romand(val) sym $romand($case) {
- for {} {$n >= $val} {incr n -$val} {
- set r "$r$sym"
- }
- }
- return $r
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/scopedobject.itcl b/itcl/iwidgets3.0.0/generic/scopedobject.itcl
deleted file mode 100755
index 8a274c77777..00000000000
--- a/itcl/iwidgets3.0.0/generic/scopedobject.itcl
+++ /dev/null
@@ -1,181 +0,0 @@
-#
-# Scopedobject
-# -----------------------------------------------------------------------------
-# Implements a base class for defining Itcl classes which posses
-# scoped behavior like Tcl variables. The objects are only accessible
-# within the procedure in which they are instantiated and are deleted
-# when the procedure returns.
-#
-# Option(s):
-#
-# -enterscopecommand: Tcl command to invoke when a object enters scope
-# (i.e. when it is created ...).
-#
-# -exitscopecommand: Tcl command to invoke when a object exits scope
-# (i.e. when it is deleted ...).
-#
-# Note(s):
-#
-# Although a Scopedobject instance will automatically destroy itself
-# when it goes out of scope, one may explicity delete an instance
-# before it destroys itself.
-#
-# Example(s):
-#
-# Creating an instance at local scope in a procedure provides
-# an opportunity for tracing the entry and exiting of that
-# procedure. Users can register their proc/method tracing handlers
-# with the Scopedobject class via either of the following two ways:
-#
-# 1.) configure the "-exitscopecommand" on a Scopedobject instance;
-# e.g.
-# #!/usr/local/bin/wish
-#
-# proc tracedProc {} {
-# scopedobject #auto \
-# -exitscopecommand {puts "enter tracedProc"} \
-# -exitscopecommand {puts "exit tracedProc"}
-# }
-#
-# 2.) deriving from the Scopedobject and implementing the exit handling
-# in their derived classes destructor.
-# e.g.
-#
-# #!/usr/local/bin/wish
-#
-# class Proctrace {
-# inherit Scopedobject
-#
-# proc procname {} {
-# return [info level -1]
-# }
-#
-# constructor {args} {
-# puts "enter [procname]"
-# eval configure $args
-# }
-#
-# destructor {
-# puts "exit [procname]"
-# }
-# }
-#
-# proc tracedProc {} {
-# Proctrace #auto
-# }
-#
-# -----------------------------------------------------------------------------
-# AUTHOR: John Tucker
-# DSC Communications Corp
-# -----------------------------------------------------------------------------
-
-class iwidgets::Scopedobject {
-
- #
- # OPTIONS:
- #
- public {
- variable enterscopecommand {}
- variable exitscopecommand {}
- }
-
- #
- # PUBLIC:
- #
- constructor {args} {}
- destructor {}
-
- #
- # PRIVATE:
- #
- private {
-
- # Implements the Tcl trace command callback which is responsible
- # for destroying a Scopedobject instance when its corresponding
- # Tcl variable goes out of scope.
- #
- method _traceCommand {varName varValue op}
-
- # Stores the stack level of the invoking procedure in which
- # a Scopedobject instance in created.
- #
- variable _level 0
- }
-}
-
-#
-# Provide a lowercased access method for the Scopedobject class.
-#
-proc ::iwidgets::scopedobject {pathName args} {
- uplevel ::iwidgets::Scopedobject $pathName $args
-}
-
-#--------------------------------------------------------------------------------
-# CONSTRUCTOR
-#--------------------------------------------------------------------------------
-body iwidgets::Scopedobject::constructor {args} {
-
- # Create a local variable in the procedure which this instance was created,
- # and then register out instance deletion command (i.e. _traceCommand)
- # to be called whenever the local variable is unset.
- #
- # If this is a derived class, then we will need to perform the variable creation
- # and tracing N levels up the stack frame, where:
- # N = depth of inheritance hierarchy.
- #
- set depth [llength [$this info heritage]]
- set _level "#[uplevel $depth info level]"
- uplevel $_level set _localVar($this) $this
- uplevel $_level trace variable _localVar($this) u \"[code $this _traceCommand]\"
-
- eval configure $args
-
- if {$enterscopecommand != {}} {
- eval $enterscopecommand
- }
-}
-
-#--------------------------------------------------------------------------------
-# DESTRUCTOR
-#--------------------------------------------------------------------------------
-body iwidgets::Scopedobject::destructor {} {
-
- uplevel $_level trace vdelete _localVar($this) u \"[code $this _traceCommand]\"
-
- if {$exitscopecommand != {}} {
- eval $exitscopecommand
- }
-}
-
-#--------------------------------------------------------------------------------#
-#
-# METHOD: _traceCommand
-#
-# PURPOSE:
-# Callback used to destroy instances when their locally created variable
-# goes out of scope.
-#
-body iwidgets::Scopedobject::_traceCommand {varName varValue op} {
- delete object $this
-}
-
-#------------------------------------------------------------------------------
-#
-# OPTION: -enterscopecommand
-#
-# PURPOSE:
-# Specifies a Tcl command to invoke when a object enters scope.
-#
-configbody iwidgets::Scopedobject::enterscopecommand {
-}
-
-#------------------------------------------------------------------------------
-#
-# OPTION: -exitscopecommand
-#
-# PURPOSE:
-# Specifies a Tcl command to invoke when an object exits scope.
-#
-configbody iwidgets::Scopedobject::exitscopecommand {
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/scrolledcanvas.itk b/itcl/iwidgets3.0.0/generic/scrolledcanvas.itk
deleted file mode 100644
index 22b237dcfc8..00000000000
--- a/itcl/iwidgets3.0.0/generic/scrolledcanvas.itk
+++ /dev/null
@@ -1,477 +0,0 @@
-#
-# Scrolledcanvas
-# ----------------------------------------------------------------------
-# Implements horizontal and vertical scrollbars around a canvas childsite
-# Includes options to control display of scrollbars. The standard
-# canvas options and methods are supported.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark Ulferts mulferts@austin.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 Scrolledcanvas {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -insertbackground -insertborderwidth -insertofftime -insertontime \
- -insertwidth -jump -labelfont -selectbackground -selectborderwidth \
- -selectforeground -textbackground -troughcolor
-}
-
-# ------------------------------------------------------------------
-# SCROLLEDCANVAS
-# ------------------------------------------------------------------
-class iwidgets::Scrolledcanvas {
- inherit iwidgets::Scrolledwidget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -autoresize autoResize AutoResize 1
- itk_option define -automargin autoMargin AutoMargin 0
-
- public method childsite {}
- public method justify {direction}
-
- public method addtag {args}
- public method bbox {args}
- public method bind {args}
- public method canvasx {args}
- public method canvasy {args}
- public method coords {args}
- public method create {args}
- public method dchars {args}
- public method delete {args}
- public method dtag {args}
- public method find {args}
- public method focus {args}
- public method gettags {args}
- public method icursor {args}
- public method index {args}
- public method insert {args}
- public method itemconfigure {args}
- public method itemcget {args}
- public method lower {args}
- public method move {args}
- public method postscript {args}
- public method raise {args}
- public method scale {args}
- public method scan {args}
- public method select {args}
- public method type {args}
- public method xview {args}
- public method yview {args}
-}
-
-#
-# Provide a lowercased access method for the Scrolledcanvas class.
-#
-proc ::iwidgets::scrolledcanvas {pathName args} {
- uplevel ::iwidgets::Scrolledcanvas $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Scrolledcanvas.width 200 widgetDefault
-option add *Scrolledcanvas.height 230 widgetDefault
-option add *Scrolledcanvas.labelPos n widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::constructor {args} {
- #
- # Create a clipping frame which will provide the border for
- # relief display.
- #
- itk_component add clipper {
- frame $itk_interior.clipper
- } {
- usual
-
- keep -borderwidth -relief -highlightthickness -highlightcolor
- rename -highlightbackground -background background Background
- }
- grid $itk_component(clipper) -row 1 -column 1 -sticky nsew
- grid rowconfigure $_interior 1 -weight 1
- grid columnconfigure $_interior 1 -weight 1
-
- #
- # Create a canvas to scroll
- #
- itk_component add canvas {
- canvas $itk_component(clipper).canvas \
- -height 1.0 -width 1.0 \
- -scrollregion "0 0 1 1" \
- -xscrollcommand \
- [code $this _scrollWidget $itk_interior.horizsb] \
- -yscrollcommand \
- [code $this _scrollWidget $itk_interior.vertsb]
- } {
- usual
-
- ignore -highlightthickness -highlightcolor
-
- keep -closeenough -confine -scrollregion
- keep -xscrollincrement -yscrollincrement
-
- rename -background -textbackground textBackground Background
- }
- grid $itk_component(canvas) -row 0 -column 0 -sticky nsew
- grid rowconfigure $itk_component(clipper) 0 -weight 1
- grid columnconfigure $itk_component(clipper) 0 -weight 1
-
- #
- # Configure the command on the vertical scroll bar in the base class.
- #
- $itk_component(vertsb) configure \
- -command [code $itk_component(canvas) yview]
-
- #
- # Configure the command on the horizontal scroll bar in the base class.
- #
- $itk_component(horizsb) configure \
- -command [code $itk_component(canvas) xview]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::destructor {} {
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -autoresize
-#
-# Automatically adjusts the scrolled region to be the bounding
-# box covering all the items in the canvas following the execution
-# of any method which creates or destroys items. Thus, as new
-# items are added, the scrollbars adjust accordingly.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledcanvas::autoresize {
- if {$itk_option(-autoresize)} {
- set bbox [$itk_component(canvas) bbox all]
-
- if {$bbox != {}} {
- set marg $itk_option(-automargin)
- set bbox [lreplace $bbox 0 0 [expr [lindex $bbox 0] - $marg]]
- set bbox [lreplace $bbox 1 1 [expr [lindex $bbox 1] - $marg]]
- set bbox [lreplace $bbox 2 2 [expr [lindex $bbox 2] + $marg]]
- set bbox [lreplace $bbox 3 3 [expr [lindex $bbox 3] + $marg]]
- }
-
- $itk_component(canvas) configure -scrollregion $bbox
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::childsite {} {
- return $itk_component(canvas)
-}
-
-# ------------------------------------------------------------------
-# METHOD: justify
-#
-# Justifies the canvas scrolled region in one of four directions: top,
-# bottom, left, or right.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::justify {direction} {
- if {[winfo ismapped $itk_component(canvas)]} {
- update idletasks
-
- switch $direction {
- left {
- $itk_component(canvas) xview moveto 0
- }
- right {
- $itk_component(canvas) xview moveto 1
- }
- top {
- $itk_component(canvas) yview moveto 0
- }
- bottom {
- $itk_component(canvas) yview moveto 1
- }
- default {
- error "bad justify argument \"$direction\": should be\
- left, right, top, or bottom"
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# CANVAS METHODS:
-#
-# The following methods are thin wraps of standard canvas methods.
-# Consult the Tk canvas man pages for functionallity and argument
-# documentation
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: addtag tag searchSpec ?arg arg ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::addtag {args} {
- return [eval $itk_component(canvas) addtag $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: bbox tagOrId ?tagOrId tagOrId ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::bbox {args} {
- return [eval $itk_component(canvas) bbox $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: bind tagOrId ?sequence? ?command?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::bind {args} {
- return [eval $itk_component(canvas) bind $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: canvasx screenx ?gridspacing?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::canvasx {args} {
- return [eval $itk_component(canvas) canvasx $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: canvasy screeny ?gridspacing?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::canvasy {args} {
- return [eval $itk_component(canvas) canvasy $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: coords tagOrId ?x0 y0 ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::coords {args} {
- return [eval $itk_component(canvas) coords $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: create type x y ?x y ...? ?option value ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::create {args} {
- set retval [eval $itk_component(canvas) create $args]
-
- configure -autoresize $itk_option(-autoresize)
-
- return $retval
-}
-
-# ------------------------------------------------------------------
-# METHOD: dchars tagOrId first ?last?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::dchars {args} {
- return [eval $itk_component(canvas) dchars $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete tagOrId ?tagOrId tagOrId ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::delete {args} {
- set retval [eval $itk_component(canvas) delete $args]
-
- configure -autoresize $itk_option(-autoresize)
-
- return $retval
-}
-
-# ------------------------------------------------------------------
-# METHOD: dtag tagOrId ?tagToDelete?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::dtag {args} {
- eval $itk_component(canvas) dtag $args
-
- configure -autoresize $itk_option(-autoresize)
-}
-
-# ------------------------------------------------------------------
-# METHOD: find searchCommand ?arg arg ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::find {args} {
- return [eval $itk_component(canvas) find $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: focus ?tagOrId?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::focus {args} {
- return [eval $itk_component(canvas) focus $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: gettags tagOrId
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::gettags {args} {
- return [eval $itk_component(canvas) gettags $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: icursor tagOrId index
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::icursor {args} {
- eval $itk_component(canvas) icursor $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: index tagOrId index
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::index {args} {
- return [eval $itk_component(canvas) index $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert tagOrId beforeThis string
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::insert {args} {
- eval $itk_component(canvas) insert $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: itemconfigure tagOrId ?option? ?value? ?option value ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::itemconfigure {args} {
- set retval [eval $itk_component(canvas) itemconfigure $args]
-
- configure -autoresize $itk_option(-autoresize)
-
- return $retval
-}
-
-# ------------------------------------------------------------------
-# METHOD: itemcget tagOrId ?option?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::itemcget {args} {
- set retval [eval $itk_component(canvas) itemcget $args]
-
- return $retval
-}
-
-# ------------------------------------------------------------------
-# METHOD: lower tagOrId ?belowThis?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::lower {args} {
- eval $itk_component(canvas) lower $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: move tagOrId xAmount yAmount
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::move {args} {
- eval $itk_component(canvas) move $args
-
- configure -autoresize $itk_option(-autoresize)
-}
-
-# ------------------------------------------------------------------
-# METHOD: postscript ?option value ...?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::postscript {args} {
- #
- # Make sure the fontmap is in scope.
- #
- set fontmap ""
- regexp -- {-fontmap +([^ ]+)} $args all fontmap
-
- if {$fontmap != ""} {
- global $fontmap
- }
-
- return [eval $itk_component(canvas) postscript $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: raise tagOrId ?aboveThis?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::raise {args} {
- eval $itk_component(canvas) raise $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: scale tagOrId xOrigin yOrigin xScale yScale
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::scale {args} {
- eval $itk_component(canvas) scale $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: scan option args
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::scan {args} {
- eval $itk_component(canvas) scan $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: select option ?tagOrId arg?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::select {args} {
- eval $itk_component(canvas) select $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: type tagOrId
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::type {args} {
- return [eval $itk_component(canvas) type $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: xview index
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::xview {args} {
- eval $itk_component(canvas) xview $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: yview index
-# ------------------------------------------------------------------
-body iwidgets::Scrolledcanvas::yview {args} {
- eval $itk_component(canvas) yview $args
-}
diff --git a/itcl/iwidgets3.0.0/generic/scrolledframe.itk b/itcl/iwidgets3.0.0/generic/scrolledframe.itk
deleted file mode 100644
index ec01c37de46..00000000000
--- a/itcl/iwidgets3.0.0/generic/scrolledframe.itk
+++ /dev/null
@@ -1,250 +0,0 @@
-#
-# Scrolledframe
-# ----------------------------------------------------------------------
-# Implements horizontal and vertical scrollbars around a childsite
-# frame. Includes options to control display of scrollbars.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark Ulferts mulferts@austin.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 Scrolledframe {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -jump -labelfont -troughcolor
-}
-
-# ------------------------------------------------------------------
-# SCROLLEDFRAME
-# ------------------------------------------------------------------
-class iwidgets::Scrolledframe {
- inherit iwidgets::Scrolledwidget
-
- constructor {args} {}
- destructor {}
-
- public method childsite {}
- public method justify {direction}
- public method xview {args}
- public method yview {args}
-
- protected method _configureCanvas {}
- protected method _configureFrame {}
-}
-
-#
-# Provide a lowercased access method for the Scrolledframe class.
-#
-proc ::iwidgets::scrolledframe {pathName args} {
- uplevel ::iwidgets::Scrolledframe $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Scrolledframe.width 100 widgetDefault
-option add *Scrolledframe.height 100 widgetDefault
-option add *Scrolledframe.labelPos n widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::constructor {args} {
- itk_option remove iwidgets::Labeledwidget::state
-
- #
- # Create a clipping frame which will provide the border for
- # relief display.
- #
- itk_component add clipper {
- frame $itk_interior.clipper
- } {
- usual
-
- keep -borderwidth -relief
- }
- grid $itk_component(clipper) -row 1 -column 1 -sticky nsew
- grid rowconfigure $_interior 1 -weight 1
- grid columnconfigure $_interior 1 -weight 1
-
- #
- # Create a canvas to scroll
- #
- itk_component add canvas {
- canvas $itk_component(clipper).canvas \
- -height 1.0 -width 1.0 \
- -scrollregion "0 0 1 1" \
- -xscrollcommand \
- [code $this _scrollWidget $itk_interior.horizsb] \
- -yscrollcommand \
- [code $this _scrollWidget $itk_interior.vertsb] \
- -highlightthickness 0 -takefocus 0
- } {
- ignore -highlightcolor -highlightthickness
- keep -background -cursor
- }
- grid $itk_component(canvas) -row 0 -column 0 -sticky nsew
- grid rowconfigure $itk_component(clipper) 0 -weight 1
- grid columnconfigure $itk_component(clipper) 0 -weight 1
-
- #
- # Configure the command on the vertical scroll bar in the base class.
- #
- $itk_component(vertsb) configure \
- -command [code $itk_component(canvas) yview]
-
- #
- # Configure the command on the horizontal scroll bar in the base class.
- #
- $itk_component(horizsb) configure \
- -command [code $itk_component(canvas) xview]
-
- #
- # Handle configure events on the canvas to adjust the frame size
- # according to the scrollregion.
- #
- bind $itk_component(canvas) <Configure> [code $this _configureCanvas]
-
- #
- # Create a Frame inside canvas to hold widgets to be scrolled
- #
- itk_component add -protected sfchildsite {
- frame $itk_component(canvas).sfchildsite
- } {
- keep -background -cursor
- }
- pack $itk_component(sfchildsite) -fill both -expand yes
- $itk_component(canvas) create window 0 0 -tags frameTag \
- -window $itk_component(sfchildsite) -anchor nw
- set itk_interior $itk_component(sfchildsite)
- bind $itk_component(sfchildsite) <Configure> [code $this _configureFrame]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::destructor {} {
-}
-
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::childsite {} {
- return $itk_component(sfchildsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: justify
-#
-# Justifies the scrolled region in one of four directions: top,
-# bottom, left, or right.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::justify {direction} {
- if {[winfo ismapped $itk_component(canvas)]} {
- update idletasks
-
- switch $direction {
- left {
- $itk_component(canvas) xview moveto 0
- }
- right {
- $itk_component(canvas) xview moveto 1
- }
- top {
- $itk_component(canvas) yview moveto 0
- }
- bottom {
- $itk_component(canvas) yview moveto 1
- }
- default {
- error "bad justify argument \"$direction\": should be\
- left, right, top, or bottom"
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: xview index
-#
-# Adjust the view in the frame so that character position index
-# is displayed at the left edge of the widget.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::xview {args} {
- return [eval $itk_component(canvas) xview $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: yview index
-#
-# Adjust the view in the frame so that character position index
-# is displayed at the top edge of the widget.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::yview {args} {
- return [eval $itk_component(canvas) yview $args]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _configureCanvas
-#
-# Responds to configure events on the canvas widget. When canvas
-# changes size, adjust frame size.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::_configureCanvas {} {
- set sr [$itk_component(canvas) cget -scrollregion]
- set srw [lindex $sr 2]
- set srh [lindex $sr 3]
-
- $itk_component(sfchildsite) configure -height $srh -width $srw
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _configureFrame
-#
-# Responds to configure events on the frame widget. When the frame
-# changes size, adjust scrolling region size.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledframe::_configureFrame {} {
- $itk_component(canvas) configure \
- -scrollregion [$itk_component(canvas) bbox frameTag]
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/scrolledhtml.itk b/itcl/iwidgets3.0.0/generic/scrolledhtml.itk
deleted file mode 100644
index 66c0e3d42e6..00000000000
--- a/itcl/iwidgets3.0.0/generic/scrolledhtml.itk
+++ /dev/null
@@ -1,2545 +0,0 @@
-# Scrolledhtml
-# ----------------------------------------------------------------------
-# Implements a scrolled html text widget by inheritance from scrolledtext
-# Import reads from an html file, while export still writes plain text
-# Also provides a render command, to display html text passed in as an
-# argument.
-#
-# This widget is HTML3.2 compliant, with the following exceptions:
-# a) nothing requiring a connection to an HTTP server is supported
-# b) some of the image alignments aren't supported, because they're not
-# supported by the text widget
-# c) the br attributes that go with the image alignments aren't implemented
-# d) background images are not supported, because they're not supported
-# by the text widget
-# e) automatic table/table cell sizing doesn't work very well.
-#
-# WISH LIST:
-# This section lists possible future enhancements.
-#
-# 1) size tables better using dlineinfo.
-# 2) make images scroll smoothly off top like they do off bottom. (limitation
-# of text widget?)
-# 3) add ability to get non-local URLs
-# a) support forms
-# b) support imagemaps
-# 4) keep track of visited links
-# 5) add tclets support
-#
-# BUGS:
-# Cells in a table can be caused to overlap. ex:
-# <table border width="100%">
-# <tr><td>cell1</td><td align=right rowspan=2>cell2</td></tr>
-# <tr><td colspan=2>cell3 w/ overlap</td>
-# </table>
-# It hasn't been fixed because 1) it's a pain to fix, 2) the fix would slow
-# tables down by a significant amount, and 3) netscape has the same
-# bug, as of V3.01, and no one seems to care.
-#
-# In order to size tables properly, they must be visible, which causes an
-# annoying jump from table to table through the document at render time.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Kris Raney EMAIL: kraney@spd.dsccc.com
-#
-# @(#) $Id$
-# ----------------------------------------------------------------------
-# Copyright (c) 1996 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.
-# ======================================================================
-
-# Acknowledgements:
-#
-# Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his
-# tkhtml.tcl code from tk inspect. The original code is copyright 1995
-# Lawrence Berkeley Laboratory.
-#
-# This software is copyright (C) 1995 by the Lawrence Berkeley Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that: (1) source code distributions
-# retain the above copyright notice and this paragraph in its entirety, (2)
-# distributions including binary code include the above copyright notice and
-# this paragraph in its entirety in the documentation or other materials
-# provided with the distribution, and (3) all advertising materials mentioning
-# features or use of this software display the following acknowledgement:
-# ``This product includes software developed by the University of California,
-# Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
-# the University nor the names of its contributors may be used to endorse
-# or promote products derived from this software without specific prior
-# written permission.
-#
-# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
-# This code is based on Angel Li's (angel@flipper.rsmas.miami.edu) HTML
-
-
-#
-# Default resources.
-#
-option add *Scrolledhtml.borderWidth 2 widgetDefault
-option add *Scrolledhtml.relief sunken widgetDefault
-option add *Scrolledhtml.scrollMargin 3 widgetDefault
-option add *Scrolledhtml.width 500 widgetDefault
-option add *Scrolledhtml.height 600 widgetDefault
-option add *Scrolledhtml.visibleItems 80x24 widgetDefault
-option add *Scrolledhtml.vscrollMode static widgetDefault
-option add *Scrolledhtml.hscrollMode static widgetDefault
-option add *Scrolledhtml.labelPos n widgetDefault
-option add *Scrolledhtml.wrap word widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Scrolledhtml {
- keep -fontname -fontsize -fixedfont -link -alink -linkhighlight \
- -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -insertbackground -insertborderwidth -insertofftime -insertontime \
- -insertwidth -jump -labelfont -selectbackground -selectborderwidth \
- -selectforeground -textbackground -textfont -troughcolor -unknownimage
-}
-
-# ------------------------------------------------------------------
-# SCROLLEDHTML
-# ------------------------------------------------------------------
-class iwidgets::Scrolledhtml {
- inherit iwidgets::Scrolledtext
-
- constructor {args} {}
- destructor {}
-
- itk_option define -feedback feedBack FeedBack {}
- itk_option define -linkcommand linkCommand LinkCommand {}
- itk_option define -fontname fontname FontName times
- itk_option define -fixedfont fixedFont FixedFont courier
- itk_option define -fontsize fontSize FontSize medium
- itk_option define -link link Link blue
- itk_option define -alink alink ALink red
- itk_option define -linkhighlight alink ALink red
- itk_option define -unknownimage unknownimage File {}
- itk_option define -textbackground textBackground Background {}
- itk_option define -update update Update 1
- itk_option define -debug debug Debug 0
-
- public method import {args}
- public method clear {}
- public method render {html {wd .}}
- public method title {} {return $_title}
- public method pwd {} {return $_cwd}
-
- protected method _setup {}
- protected method _set_tag {}
- protected method _reconfig_tags {}
- protected method _append_text {text}
- protected method _do {text}
- protected method _definefont {name foundry family weight slant registry}
- protected method _peek {instack}
- protected method _push {instack value}
- protected method _pop {instack}
- protected method _parse_fields {array_var string}
- protected method _href_click {cmd href}
- protected method _set_align {align}
- protected method _fixtablewidth {hottext table multiplier}
-
- protected method _header {level args}
- protected method _/header {level}
-
- protected method _entity_a {args}
- protected method _entity_/a {}
- protected method _entity_address {}
- protected method _entity_/address {}
- protected method _entity_b {}
- protected method _entity_/b {}
- protected method _entity_base {{args {}}}
- protected method _entity_basefont {{args {}}}
- protected method _entity_big {}
- protected method _entity_/big {}
- protected method _entity_blockquote {}
- protected method _entity_/blockquote {}
- protected method _entity_body {{args {}}}
- protected method _entity_/body {}
- protected method _entity_br {{args {}}}
- protected method _entity_center {}
- protected method _entity_/center {}
- protected method _entity_cite {}
- protected method _entity_/cite {}
- protected method _entity_code {}
- protected method _entity_/code {}
- protected method _entity_dir {{args {}}}
- protected method _entity_/dir {}
- protected method _entity_div {{args {}}}
- protected method _entity_dl {{args {}}}
- protected method _entity_/dl {}
- protected method _entity_dt {}
- protected method _entity_dd {}
- protected method _entity_dfn {}
- protected method _entity_/dfn {}
- protected method _entity_em {}
- protected method _entity_/em {}
- protected method _entity_font {{args {}}}
- protected method _entity_/font {}
- protected method _entity_h1 {{args {}}}
- protected method _entity_/h1 {}
- protected method _entity_h2 {{args {}}}
- protected method _entity_/h2 {}
- protected method _entity_h3 {{args {}}}
- protected method _entity_/h3 {}
- protected method _entity_h4 {{args {}}}
- protected method _entity_/h4 {}
- protected method _entity_h5 {{args {}}}
- protected method _entity_/h5 {}
- protected method _entity_h6 {{args {}}}
- protected method _entity_/h6 {}
- protected method _entity_hr {{args {}}}
- protected method _entity_i {}
- protected method _entity_/i {}
- protected method _entity_img {{args {}}}
- protected method _entity_kbd {}
- protected method _entity_/kbd {}
- protected method _entity_li {{args {}}}
- protected method _entity_listing {}
- protected method _entity_/listing {}
- protected method _entity_menu {{args {}}}
- protected method _entity_/menu {}
- protected method _entity_ol {{args {}}}
- protected method _entity_/ol {}
- protected method _entity_p {{args {}}}
- protected method _entity_pre {{args {}}}
- protected method _entity_/pre {}
- protected method _entity_samp {}
- protected method _entity_/samp {}
- protected method _entity_small {}
- protected method _entity_/small {}
- protected method _entity_sub {}
- protected method _entity_/sub {}
- protected method _entity_sup {}
- protected method _entity_/sup {}
- protected method _entity_strong {}
- protected method _entity_/strong {}
- protected method _entity_table {{args {}}}
- protected method _entity_/table {}
- protected method _entity_td {{args {}}}
- protected method _entity_/td {}
- protected method _entity_th {{args {}}}
- protected method _entity_/th {}
- protected method _entity_title {}
- protected method _entity_/title {}
- protected method _entity_tr {{args {}}}
- protected method _entity_/tr {}
- protected method _entity_tt {}
- protected method _entity_/tt {}
- protected method _entity_u {}
- protected method _entity_/u {}
- protected method _entity_ul {{args {}}}
- protected method _entity_/ul {}
- protected method _entity_var {}
- protected method _entity_/var {}
-
- protected variable _title {} ;# The title of the html document
- protected variable _licount 1 ;# list element count
- protected variable _listyle bullet ;# list element style
- protected variable _lipic {} ;# picture to use as bullet
- protected variable _color black ;# current text color
- protected variable _bgcolor #d9d9d9 ;# current background color
- protected variable _link blue ;# current link color
- protected variable _alink red ;# current highlight link color
- protected variable _smallpoints "60 80 100 120 140 180 240" ;# font point
- protected variable _mediumpoints "80 100 120 140 180 240 360" ;# sizes for
- protected variable _largepoints "100 120 140 180 240 360 480" ;# various
- protected variable _hugepoints "120 140 180 240 360 480 640" ;# fontsizes
- protected variable _font times ;# name of current font
- protected variable _rulerheight 6 ;#
- protected variable _indentincr 4 ;# increment to indent by
- protected variable _counter -1 ;# counter to give unique numbers
- protected variable _left 0 ;# initial left margin
- protected variable _left2 0 ;# subsequent left margin
- protected variable _right 0 ;# right margin
- protected variable _justify L ;# text justification
- protected variable _offset 0 ;# text offset (super/subscript)
- protected variable _textweight 0 ;# boldness of text
- protected variable _textslant 0 ;# whether to use italics
- protected variable _underline 0 ;# whether to use underline
- protected variable _verbatim 0 ;# whether to skip formatting
- protected variable _pre 0 ;# preformatted text
- protected variable _intitle 0 ;# in <title>...</title>
- protected variable _anchorcount 0 ;# number of anchors
- protected variable _stack ;# array of stacks
- protected variable _pointsndx 2 ;#
- protected variable _fontnames ;# list of accepted font names
- protected variable _fontinfo ;# array of font info given font name
- protected variable _tag ;#
- protected variable _tagl ;#
- protected variable _tagfont ;#
- protected variable _cwd . ;# base directory of current page
- protected variable _anchor ;# array of indexes by anchorname
- protected variable _defaulttextbackground;# default text background
- protected variable _intable 0 ;# whether we are in a table now
- protected variable _hottext ;# widget where text currently goes
- protected variable _basefontsize 2 ;# as named
- protected variable _unknownimg {} ;# name of unknown image
- protected variable _images {} ;# list of images we created
- protected variable _prevpos {} ;# temporary used for table updates
- protected variable _prevtext {} ;# temporary used for table updates
-
- private variable _initialized 0
-
- private variable _defUnknownImg [image create photo -data {
-R0lGODdhHwAgAPQAAP///wAAAMzMzC9PT76+vvnTogCR/1WRVaoAVf//qvT09OKdcWlcx19f
-X9/f339/f8vN/J2d/aq2qoKCggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-ACwAAAAAHwAgAAAF/iAgjqRDnmiKmqOkqsTaToDjvudTttLjOITJbTQhGI+iQE0xMvZqQIDw
-NAEiAcqRVdKAGh0NyVCkuyqZBEmwofgRrFIxSaI0JmuA9KTrthIicWMTAQ8xWHgSe15AVgcJ
-eVMjDwECOkome22Mb0cHCzEPOiQPgwGXCjomakedA0VgY1IPDZcuP3l5YkcRDwMHqDQoEzq2
-Pz8IQkK7Bw8HDg+xO26PCAgRDcpGswEK2Dh9ItUMDdirPYUKwTKMjwDV1gHlR2oCkSmcI9UE
-BabYrGnQoolgBCGckX7yWJWDYaUMAYSRFECAwMXeiU1BHpKTB4CBR4+oBOb5By1UNgUfXj0C
-8HaP079sBCCkZIAKWst/OGPOhNBNHQmXOeftJBASRVCcEiIojQDBwIOeRo+SpGXKFFGbP6Xi
-nLWxEMsmWpEOC9XDYtigYtKSwsH2xdq2cEfRmFS1rt27eE09CAEAOw==
-}]
-}
-
-#
-# Provide a lowercased access method for the Scrolledhtml class.
-#
-proc ::iwidgets::scrolledhtml {pathName args} {
- uplevel ::iwidgets::Scrolledhtml $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::constructor {args} {
- # define the fonts we're going to use
- set _fontnames ""
- _definefont helvetica adobe helvetica "medium bold" "r o" iso8859
- _definefont courier adobe courier "medium bold" "r o" iso8859
- _definefont times adobe times "medium bold" "r i" iso8859
- _definefont symbol adobe symbol "medium medium" "r r" adobe
-
- $itk_component(text) configure -state disabled
-
- eval itk_initialize $args
- if {[lsearch -exact $args -linkcommand] == -1} {
- configure -linkcommand [code $this import -link]
- }
- set _initialized 1
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::destructor {} {
- foreach x $_images {
- image delete $x
- }
- if {$_unknownimg != $_defUnknownImg} {
- image delete $_unknownimg
- }
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -fontsize
-#
-# Set the general size of the font.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledhtml::fontsize {
- switch $itk_option(-fontsize) {
- small { }
- medium { }
- large { }
- huge { }
- default {
- error "bad fontsize option\
- \"$itk_option(-fontsize)\": should\
- be small, medium, large, or huge"
- }
- }
- _reconfig_tags
-}
-
-# ------------------------------------------------------------------
-# OPTION: -fixedfont
-#
-# Set the fixed font name
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledhtml::fixedfont {
- if {[lsearch -exact $_fontnames $itk_option(-fixedfont)] == -1} {
- error "Invalid font name \"$itk_option(-fixedfont)\". Must be one of \
- $_fontnames"
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -fontname
-#
-# Set the default font name
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledhtml::fontname {
- if {[lsearch -exact $_fontnames $itk_option(-fontname)] == -1} {
- error "Invalid font name \"$itk_option(-fontname)\". Must be one of \
- $_fontnames"
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -textbackground
-#
-# Set the default text background
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledhtml::textbackground {
- set _defaulttextbackground $itk_option(-textbackground)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -linkhighlight
-#
-# same as alink
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledhtml::linkhighlight {
- configure -alink $itk_option(-linkhighlight)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -unknownimage
-#
-# set image to use as substitute for images that aren't found
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledhtml::unknownimage {
- set oldimage $_unknownimg
- if {$itk_option(-unknownimage) != {}} {
- set uki $itk_option(-unknownimage)
- if [catch { set _unknownimg [image create photo -file $uki] } err] {
- error "Couldn't create image $uki:\n$err\nUnknown image not found"
- }
- } else {
- set _unknownimg $_defUnknownImg
- }
- if {$oldimage != {} && $oldimage != $_defUnknownImg} {
- image delete $oldimage
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -update
-#
-# boolean indicating whether to update during rendering
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledhtml::update {
- switch -- $itk_option(-update) {
- 0 {}
- 1 {}
- true {
- configure -update 1
- }
- yes {
- configure -update 1
- }
- false {
- configure -update 0
- }
- yes {
- configure -update 0
- }
- default {
- error "invalid -update; must be boolean"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: clear
-#
-# Clears the text out
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::clear {} {
- $itk_component(text) config -state normal
- $itk_component(text) delete 1.0 end
- foreach x $_images {
- image delete $x
- }
- set _images {}
- _setup
- $itk_component(text) config -state disabled
-}
-
-# ------------------------------------------------------------------
-# METHOD import ?-link? filename?#anchorname?
-#
-# read html text from a file (import filename) if the keyword link is present,
-# pathname is relative to last page, otherwise it is relative to current
-# directory. This allows the user to use a linkcommand of
-# "<widgetname> import -link"
-#
-# if '#anchorname' is appended to the filename, the page is displayed starting
-# at the anchor named 'anchorname' If an anchor is specified without a filename,
-# the current page is assumed.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::import {args} {
- set len [llength $args]
- if {$len != 1 && $len != 2} {
- error "wrong # args: should be \
- \"$itk_component(hull) import ?-link? filename\""
- }
- set linkname [lindex $args [expr $len - 1]]
-
- #
- # Seperate filename#anchorname
- #
- if ![regexp {(.*)#(.*)} $linkname dummy filename anchorname] {
- set filename $linkname
- }
- if {$filename!=""} {
- #
- # Check for -link option
- #
- switch -- $len {
- 1 {
- #
- # open file & set cwd to that file's directory
- #
- set f [open $filename r]
- set _cwd [file dirname $filename]
- }
- 2 {
- switch -- [lindex $args 0] {
- -link {
- #
- # got -link, so set path relative to current locale, if path
- # is a relative pathname
- #
- if {[string compare "." [file dirname $filename]] == 0} {
- set f [open $_cwd/$filename r]
- } else {
- if {[string index [file dirname $filename] 0] != "/" &&\
- [string index [file dirname $filename] 0] != "~"} {
- set f [open $_cwd/$filename r]
- append _cwd /
- append _cwd [file dirname $filename]
- } else {
- set f [open $filename r]
- set _cwd [file dirname $filename]
- }
- }
- }
- default {
- # got something other than -link
- error "invalid format: should be \
- \"$itk_component(hull) import ?-link? filename\""
- }
- }
- }
- }
- set txt [read $f]
- close $f
- render $txt $_cwd
- }
-
- #
- # if an anchor was requested, move that anchor into view
- #
- if [ info exists anchorname] {
- if {$anchorname!=""} {
- if [info exists _anchor($anchorname)] {
- $itk_component(text) see end
- $itk_component(text) see $_anchor($anchorname)
- }
- } else {
- $itk_component(text) see 0.0
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: render text ?wd?
-#
-# Clear the text, then render html formatted text. Optional wd argument
-# sets the base directory for any links or images.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::render {html {wd .}} {
- #
- # blank text and reset all state variables
- #
- clear
- set _cwd $wd
-
- #
- # make text writable
- #
- $itk_component(text) config -state normal
- set continuerendering 1
- _set_tag
- while {$continuerendering} {
- # normal state
- while {[set len [string length $html]]} {
- # look for text up to the next <> element
- if [regexp -indices "^\[^<\]+" $html match] {
- set text [string range $html 0 [lindex $match 1]]
- _append_text "$text"
- set html \
- [string range $html [expr [lindex $match 1]+1] end]
- }
- # we're either at a <>, or at the eot
- if [regexp -indices "^<((\[^>\"\]+|(\"\[^\"\]*\"))*)>" $html match entity] {
- regsub -all "\n" [string range $html [lindex $entity 0] \
- [lindex $entity 1]] "" entity
- set cmd [string tolower [lindex $entity 0]]
- if {[info command _entity_$cmd]!=""} {
- if {[catch {eval _entity_$cmd [lrange $entity 1 end]} bad]} {
- if {$itk_option(-debug)} {
- global errorInfo
- puts stderr "render: _entity_$cmd [lrange $entity 1 end] = Error:$bad\n$errorInfo"
- }
- }
- }
- set html \
- [string range $html [expr [lindex $match 1]+1] end]
- }
- if {$itk_option(-feedback) != {} } {
- eval $itk_option(-feedback) $len
- }
- if $_verbatim break
- }
- # we reach here if html is empty, or _verbatim is 1
- if !$len break
- # _verbatim must be 1
- # append text until next tag is reached
- if [regexp -indices "<.*>" $html match] {
- set text [string range $html 0 [expr [lindex $match 0]-1]]
- set html [string range $html [expr [lindex $match 0]] end]
- } else {
- set text $html
- set html ""
- }
- _append_text "$text"
- }
- $itk_component(text) config -state disabled
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _setup
-#
-# Reset all state variables to prepare for a new page.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_setup {} {
- set _font $itk_option(-fontname)
- set _left 0
- set _left2 0
- set _right 0
- set _justify L
- set _textweight 0
- set _textslant 0
- set _underline 0
- set _verbatim 0
- set _pre 0
- set _title {}
- set _intitle 0
- set _anchorcount 0
- set _intable 0
- set _hottext $itk_component(text)
- set _stack(font) {}
- set _stack(color) {}
- set _stack(bgcolor) {}
- set _stack(link) {}
- set _stack(alink) {}
- set _stack(justify) {}
- set _stack(listyle) {}
- set _stack(lipic) {}
- set _stack(href) {}
- set _stack(pointsndx) {}
- set _stack(left) {}
- set _stack(left2) {}
- set _stack(offset) {}
- set _stack(table) {}
- set _stack(tablewidth) {}
- set _stack(row) {}
- set _stack(column) {}
- set _stack(hottext) {}
- set _stack(tableborder) {}
- set _stack(cellpadding) {}
- set _stack(cellspacing) {}
- set _stack(licount) {}
- set _basefontsize 2
- set _pointsndx 2
- set _counter -1
- set _bgcolor $_defaulttextbackground
- set _color $itk_option(-foreground)
- set _link $itk_option(-link)
- set _alink $itk_option(-alink)
- config -textbackground $_bgcolor
- foreach x [array names _anchor] { unset _anchor($x) }
- $itk_component(text) tag config hr -relief sunken -borderwidth 2 \
- -font -*-*-*-*-*-*-$_rulerheight-*-*-*-*-*-*-*
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _definefont name foundry family weight slant registry
-#
-# define font information used to generate font value from font name
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_definefont \
- {name foundry family weight slant registry} {
- if {[lsearch -exact $_fontnames $name] == -1 } {
- lappend _fontnames $name
- }
- set _fontinfo($name) \
- [list $foundry $family $weight $slant $registry]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _append_text text
-#
-# append text in the format described by the state variables
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_append_text {text} {
- if {!$_intable && $itk_option(-update)} {update}
- if {[string first "&" $text] != -1} {
- regsub -nocase -all "&amp;" $text {\&} text
- regsub -nocase -all "&lt;" $text "<" text
- regsub -nocase -all "&gt;" $text ">" text
- regsub -nocase -all "&quot;" $text "\"" text
- }
- if !$_verbatim {
- if !$_pre {
- set text [string trim $text "\n\r"]
- regsub -all "\[ \n\r\t\]+" $text " " text
- }
- if ![string length $text] return
- }
- if {!$_pre && !$_intitle} {
- if {[catch {$_hottext get "end - 2c"} p]} {
- set p ""
- }
- set n [string index $text 0]
- if {$n == " " && $p == " "} {
- set text [string range $text 1 end]
- }
- if {[catch {$_hottext insert end $text $_tag}]} {
- set pht [winfo parent $_hottext]
- catch {$pht insert end $text $_tag}
- }
- return
- }
- if {$_pre && !$_intitle} {
- if {[catch {$_hottext insert end $text $_tag}]} {
- set pht [winfo parent $_hottext]
- catch {$pht insert end $text $_tag}
- }
- return
- }
- append _title $text
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _set_tag
-#
-# generate a tag
-# ------------------------------------------------------------------
-# a tag is constructed as: font?B?I?U?Points-LeftLeft2RightColorJustify
-body iwidgets::Scrolledhtml::_set_tag {} {
- set i -1
- foreach var {foundry family weight slant registry} {
- set $var [lindex $_fontinfo($_font) \
- [incr i]]
- }
- set x_font "-$foundry-$family-"
- set _tag $_font
- set args {}
- if {$_textweight > 0} {
- append _tag "B"
- append x_font [lindex $weight 1]-
- } else {
- append x_font [lindex $weight 0]-
- }
- if {$_textslant > 0} {
- append _tag "I"
- append x_font [lindex $slant 1]-
- } else {
- append x_font [lindex $slant 0]-
- }
- if {$_underline > 0} {
- append _tag "U"
- append args " -underline 1"
- }
- switch $_justify {
- L { append args " -justify left" }
- R { append args " -justify right" }
- C { append args " -justify center" }
- }
- append args " -offset $_offset"
-
- set pts [lindex [set [format "_%spoints" $itk_option(-fontsize)]] \
- $_pointsndx]
- append _tag $_pointsndx - $_left \
- $_left2 $_right \
- $_color $_justify
- append x_font "normal-*-*-$pts-*-*-*-*-$registry-*"
- if $_anchorcount {
- set href [_peek href]
- set href_tag href[incr _counter]
- set tags [list $_tag $href_tag]
- if { $itk_option(-linkcommand)!= {} } {
- $_hottext tag bind $href_tag <1> \
- [list uplevel #0 $itk_option(-linkcommand) $href]
- }
- $_hottext tag bind $href_tag <Enter> \
- [list $_hottext tag configure $href_tag \
- -foreground $_alink]
- $_hottext tag bind $href_tag <Leave> \
- [list $_hottext tag configure $href_tag \
- -foreground $_color]
- } else {
- set tags $_tag
- }
- if {![info exists _tagl($_tag)]} {
- set _tagfont($_tag) 1
- eval $_hottext tag configure $_tag \
- -foreground ${_color} \
- -lmargin1 ${_left}m \
- -lmargin2 ${_left2}m $args
- if [catch {eval $_hottext tag configure $_tag \
- -font $x_font} err] {
- _definefont $_font * $family $weight $slant *
- regsub \$foundry $x_font * x_font
- regsub \$registry $x_font * x_font
- catch {eval $_hottext tag configure $_tag -font $x_font}
- }
- }
- if [info exists href_tag] {
- $_hottext tag raise $href_tag $_tag
- }
- set _tag $tags
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _reconfig_tags
-#
-# reconfigure tags following a configuration change
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_reconfig_tags {} {
- if $_initialized {
- foreach tag [$itk_component(text) tag names] {
- foreach efont $_fontnames {
- if [regexp "${efont}(B?)(I?)(U?)(\[1-9\]\[0-9\]*)-" $tag t b i u points] {
- set j -1
- set _font $efont
- foreach var {foundry family weight slant registry} {
- set $var [lindex $_fontinfo($_font) [incr j]]
- }
- set x_font "-$foundry-$family-"
- if {$b == "B"} {
- append x_font [lindex $weight 1]-
- } else {
- append x_font [lindex $weight 0]-
- }
- if {$i == "I"} {
- append x_font [lindex $slant 1]-
- } else {
- append x_font [lindex $slant 0]-
- }
- set pts [lindex [set [format \
- "_%spoints" $itk_option(-fontsize)]] $points]
- append x_font "normal-*-*-$pts-*-*-*-*-$registry-*"
- $itk_component(text) tag config $tag -font $x_font
- break
- }
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _push instack value
-#
-# push value onto stack(instack)
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_push {instack value} {
- set _stack($instack) [linsert $_stack($instack) 0 $value]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _pop instack
-#
-# pop value from stack(instack)
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_pop {instack} {
- if {$_stack($instack) == ""} {
- error "popping empty _stack $instack"
- }
- set val [lindex $_stack($instack) 0]
- set _stack($instack) [lrange $_stack($instack) 1 end]
- return $val
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _peek instack
-#
-# peek at top value on stack(instack)
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_peek {instack} {
- return [lindex $_stack($instack) 0]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _parse_fields array_var string
-#
-# parse fields from a href or image tag. At the moment, doesn't support
-# spaces in field values. (e.g. alt="not avaliable")
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_parse_fields {array_var string} {
- upvar $array_var array
- if {$string != "{}" } {
- regsub -all "( *)=( *)" $string = string
- regsub -all {\\\"} $string \" string
- while {$string != ""} {
- if ![regexp "^ *(\[^ \n\r=\]+)=\"(\[^\"\n\r\t\]*)(.*)" $string \
- dummy field value newstring] {
- if ![regexp "^ *(\[^ \n\r=\]+)=(\[^\n\r\t \]*)(.*)" $string \
- dummy field value newstring] {
- if ![regexp "^ *(\[^ \n\r\]+)(.*)" $string dummy field newstring] {
- error "malformed command field; field = \"$string\""
- continue
- }
- set value ""
- }
- }
- set array([string tolower $field]) $value
- set string "$newstring"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _href_click
-#
-# process a click on an href
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_href_click {cmd href} {
- uplevel #0 $cmd $href
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _set_align
-#
-# set text alignment
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_set_align {align} {
- switch [string tolower $align] {
- center {
- set _justify C
- }
- left {
- set _justify L
- }
- right {
- set _justify R
- }
- default {}
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _fixtablewidth
-#
-# fix table width & height
-# essentially, with nested tables the outer table must be configured before
-# the inner table, but the idle tasks get queued up in the opposite order,
-# so process later idle tasks before sizing yourself.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_fixtablewidth {hottext table multiplier} {
- update idletasks
- $hottext see $_anchor($table)
- update idletasks
- $table configure \
- -width [expr $multiplier * [winfo width $hottext] - \
- 2* [$hottext cget -padx] - \
- 2* [$hottext cget -borderwidth] ] \
- -height [winfo height $table]
- grid propagate $table 0
-}
-
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _header level
-#
-# generic entity to set state for <hn> tag
-# Accepts argument of the form ?align=[left,right,center]? ?src=<image pname>?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_header {level args} {
- eval _parse_fields ar $args
- _push justify $_justify
- if [info exists ar(align)] {
- _entity_p align=$ar(align)
- } else {
- _entity_p
- }
- if [info exists ar(src)] {
- _entity_img src=$ar(src)
- }
- _push pointsndx $_pointsndx
- set _pointsndx [expr 7-$level]
- incr _textweight
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _/header level
-#
-# generic entity to set state for </hn> tag
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_/header {level} {
- set _justify [_pop justify]
- set _pointsndx [_pop pointsndx]
- incr _textweight -1
- _set_tag
- _entity_p
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_a
-#
-# add an anchor. Accepts arguments of the form ?href=filename#anchorpoint?
-# ?name=anchorname?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_a {args} {
- _parse_fields ar $args
- _push color $_color
- if [info exists ar(href)] {
- _push href $ar(href)
- incr _anchorcount
- set _color $_link
- _entity_u
- } else {
- _push href {}
- }
- if [info exists ar(name)] {
- set _anchor($ar(name)) [$itk_component(text) index end]
- }
- if [info exists ar(id)] {
- set _anchor($ar(id)) [$itk_component(text) index end]
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/a
-#
-# End anchor
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/a {} {
- set href [_pop href]
- if {$href != {}} {
- incr _anchorcount -1
- set _color [_pop color]
- _entity_/u
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_address
-#
-# display an address
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_address {} {
- _entity_br
- _entity_i
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/address
-#
-# change state back from address display
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/address {} {
- _entity_/i
- _entity_br
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_b
-#
-# Change current font to bold
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_b {} {
- incr _textweight
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/b
-#
-# change current font back from bold
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/b {} {
- incr _textweight -1
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_base
-#
-# set the cwd of the document
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_base {{args {}}} {
- _parse_fields ar $args
- if [info exists ar(href)] {
- set _cwd [file dirname $ar(href)]
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_basefont
-#
-# set base font size
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_basefont {{args {}}} {
- _parse_fields ar $args
- if {[info exists ar(size)]} {
- set _basefontsize $ar(size)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_big
-#
-# Change current font to a bigger size
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_big {} {
- _push pointsndx $_pointsndx
- if {[incr _pointsndx 2] > 6} {
- set _pointsndx 6
- }
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/big
-#
-# change current font back from bigger size
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/big {} {
- set _pointsndx [_pop pointsndx]
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_blockquote
-#
-# display a block quote
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_blockquote {} {
- _entity_p
- _push left $_left
- incr _left $_indentincr
- _push left2 $_left2
- set _left2 $_left
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/blockquote
-#
-# change back from blockquote
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/blockquote {} {
- _entity_p
- set _left [_pop left]
- set _left2 [_pop left2]
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_body
-#
-# begin body text. Takes argument of the form ?bgcolor=<color>? ?text=<color>?
-# ?link=<color>?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_body {{args {}}} {
- _parse_fields ar $args
- if [info exists ar(bgcolor)] {
- set _bgcolor $ar(bgcolor)
- set temp $itk_option(-textbackground)
- config -textbackground $_bgcolor
- set _defaulttextbackground $temp
- }
- if [info exists ar(text)] {
- set _color $ar(text)
- }
- if [info exists ar(link)] {
- set _link $ar(link)
- }
- if [info exists ar(alink)] {
- set _alink $ar(alink)
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/body
-#
-# end body text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/body {} {
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_br
-#
-# line break
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_br {{args {}}} {
- $_hottext insert end "\n"
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_center
-#
-# change justification to center
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_center {} {
- _push justify $_justify
- set _justify C
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/center
-#
-# change state back from center
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/center {} {
- set _justify [_pop justify]
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_cite
-#
-# display citation
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_cite {} {
- _entity_i
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/cite
-#
-# change state back from citation
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/cite {} {
- _entity_/i
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_code
-#
-# display code listing
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_code {} {
- _entity_pre
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/code
-#
-# end code listing
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/code {} {
- _entity_/pre
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_dir
-#
-# display dir list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_dir {{args {}}} {
- _entity_ul plain $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/dir
-#
-# end dir list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/dir {} {
- _entity_/ul
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_div
-#
-# divide text. same as <p>
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_div {{args {}}} {
- _entity_p $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_dl
-#
-# begin definition list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_dl {{args {}}} {
- if {$_left == 0} {
- _entity_p
- }
- _push left $_left
- _push left2 $_left2
- if {$_left2 == $_left } {
- incr _left2 [expr $_indentincr+3]
- } else {
- incr _left2 $_indentincr
- }
- incr _left $_indentincr
- _push listyle $_listyle
- _push licount $_licount
- set _listyle none
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/dl
-#
-# end definition list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/dl {} {
- set _left [_pop left]
- set _left2 [_pop left2]
- set _listyle [_pop listyle]
- set _licount [_pop licount]
- _set_tag
- if {$_left == 0} {
- _entity_p
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_dt
-#
-# definition term
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_dt {} {
- set _left [expr $_left2 - 3]
- _set_tag
- _entity_p
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_dd
-#
-# definition definition
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_dd {} {
- set _left $_left2
- _set_tag
- _entity_br
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_dfn
-#
-# display defining instance of a term
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_dfn {} {
- _entity_i
- _entity_b
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/dfn
-#
-# change state back from defining instance of term
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/dfn {} {
- _entity_/b
- _entity_/i
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_em
-#
-# display emphasized text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_em {} {
- _entity_i
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/em
-#
-# change state back from emphasized text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/em {} {
- _entity_/i
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_font
-#
-# set font size and color
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_font {{args {}}} {
- _parse_fields ar $args
- _push pointsndx $_pointsndx
- _push color $_color
- if [info exists ar(size)] {
- if {![regexp {^[+-].*} $ar(size)]} {
- set _pointsndx $ar(size)
- } else {
- set _pointsndx [expr $_basefontsize $ar(size)]
- }
- if { $_pointsndx > 6 } {
- set _pointsndx 6
- } else {
- if { $_pointsndx < 0 } {
- set _pointsndx 0
- }
- }
- }
- if {[info exists ar(color)]} {
- set _color $ar(color)
- }
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/font
-#
-# close current font size
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/font {} {
- set _pointsndx [_pop pointsndx]
- set _color [_pop color]
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_h1
-#
-# display header level 1.
-# Accepts argument of the form ?align=[left,right,center]? ?src=<image pname>?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_h1 {{args {}}} {
- _header 1 $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/h1
-#
-# change state back from header 1
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/h1 {} {
- _/header 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_h2
-#
-# display header level 2
-# Accepts argument of the form ?align=[left,right,center]? ?src=<image pname>?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_h2 {{args {}}} {
- _header 2 $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/h2
-#
-# change state back from header 2
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/h2 {} {
- _/header 2
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_h3
-#
-# display header level 3
-# Accepts argument of the form ?align=[left,right,center]? ?src=<image pname>?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_h3 {{args {}}} {
- _header 3 $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/h3
-#
-# change state back from header 3
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/h3 {} {
- _/header 3
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_h4
-#
-# display header level 4
-# Accepts argument of the form ?align=[left,right,center]? ?src=<image pname>?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_h4 {{args {}}} {
- _header 4 $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/h4
-#
-# change state back from header 4
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/h4 {} {
- _/header 4
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_h5
-#
-# display header level 5
-# Accepts argument of the form ?align=[left,right,center]? ?src=<image pname>?
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_h5 {{args {}}} {
- _header 5 $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/h5
-#
-# change state back from header 5
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/h5 {} {
- _/header 5
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_h6
-#
-# display header level 6
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_h6 {{args {}}} {
- _header 6 $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/h6
-#
-# change state back from header 6
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/h6 {} {
- _/header 6
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_hr
-#
-# Add a horizontal rule
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_hr {{args {}}} {
- _parse_fields ar $args
- if [info exists ar(size)] {
- set font "-font -*-*-*-*-*-*-$ar(size)-*-*-*-*-*-*-*"
- } else {
- set font "-font -*-*-*-*-*-*-2-*-*-*-*-*-*-*"
- }
- if [info exists ar(width)] {
- }
- if [info exists ar(noshade)] {
- set relief "-relief flat"
- set background "-background black"
- } else {
- set relief "-relief sunken"
- set background ""
- }
-# if [info exists ar(align)] {
-# $_hottext tag config hr$_counter -justify $ar(align)
-# set justify -justify $ar(align)
-# } else {
-# set justify ""
-# }
- eval $_hottext tag config hr[incr _counter] $relief $background $font \
- -borderwidth 2
- _entity_p
- $_hottext insert end " \n" hr$_counter
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_i
-#
-# display italicized text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_i {} {
- incr _textslant
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/i
-#
-# change state back from italicized text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/i {} {
- incr _textslant -1
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_img
-#
-# display an image. takes argument of the form img=<filename>
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_img {{args {}}} {
- _parse_fields ar $args
- set alttext "<image>"
-
- #
- # If proper argument exists
- #
- if [info exists ar(src)] {
- set imgframe $_hottext.img[incr _counter]
- #
- # if this is an anchor
- #
- if $_anchorcount {
- # create link colored border
- frame $imgframe -borderwidth 2 -background $_link
- bind $imgframe <Enter> \
- [list $imgframe configure -background $_alink]
- bind $imgframe <Leave> \
- [list $imgframe configure -background $_link]
- } else {
- # create plain frame
- frame $imgframe -borderwidth 0 -background $_color
- }
-
- #
- # try to load image
- #
- if {[string index $ar(src) 0] == "/" || [string index $ar(src) 0] == "~"} {
- set file $ar(src)
- } else {
- set file $_cwd/$ar(src)
- }
- if [catch {set img [image create photo -file $file]} err] {
- if {[info exists ar(width)] && [info exists ar(height)] } {
- # suggestions exist, so make frame appropriate size and add a border
- $imgframe configure -width $ar(width) -height $ar(height) -borderwidth 2
- pack propagate $imgframe false
- }
-
- #
- # If alt text is specified, display that
- #
- if [info exists ar(alt)] {
- # add a border
- $imgframe configure -borderwidth 2
- set win $imgframe.text
- label $win -text "$ar(alt)" -background $_bgcolor \
- -foreground $_color
- } else {
- #
- # use 'unknown image'
- set win $imgframe.image#auto
- #
- # make label containing image
- #
- label $win -image $_unknownimg -borderwidth 0 -background $_bgcolor
- }
- pack $win -fill both -expand true
-
- } else { ;# no error loading image
- lappend _images $img
- set win $imgframe.$img
-
- #
- # make label containing image
- #
- label $win -image $img -borderwidth 0
- }
- pack $win
-
- #
- # set alignment
- #
- set align bottom
- if [info exists ar(align)] {
- switch $ar(align) {
- middle {
- set align center
- }
- right {
- set align center
- }
- default {
- set align [string tolower $ar(align)]
- }
- }
- }
-
- #
- # create window in text to display image
- #
- $_hottext window create end -window \
- $imgframe -align $align
-
- #
- # set tag for window
- #
- $_hottext tag add $_tag $imgframe
- if $_anchorcount {
- set href [_peek href]
- set href_tag href[incr _counter]
- set tags [list $_tag $href_tag]
- if { $itk_option(-linkcommand)!= {} } {
- bind $win <1> [list uplevel #0 $itk_option(-linkcommand) $href]
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_kbd
-#
-# Display keyboard input
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_kbd {} {
- incr _textweight
- _entity_tt
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/kbd
-#
-# change state back from displaying keyboard input
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/kbd {} {
- _entity_/tt
- incr _textweight -1
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_li
-#
-# begin new list entry
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_li {{args {}}} {
- _parse_fields ar $args
- if [info exists ar(value)] {
- set _licount $ar(value)
- }
- _entity_br
- switch -exact $_listyle {
- bullet {
- set old_font $_font
- set _font symbol
- _set_tag
- $_hottext insert end "\xb7" $_tag
- set _font $old_font
- _set_tag
- }
- none {
- }
- picture {
- _entity_img src="$_lipic" width=4 height=4 align=middle
- }
- A {
- _entity_b
- $_hottext insert end [format "%c) " [expr $_licount + 0x40]] $_tag
- _entity_/b
- incr _licount
- }
- a {
- _entity_b
- $_hottext insert end [format "%c) " [expr $_licount + 0x60]] $_tag
- _entity_/b
- incr _licount
- }
- I {
- _entity_b
- $_hottext insert end "[::iwidgets::roman $_licount]) " $_tag
- _entity_/b
- incr _licount
- }
- i {
- _entity_b
- $_hottext insert end "[::iwidgets::roman $_licount lower])] " $_tag
- _entity_/b
- incr _licount
- }
- default {
- _entity_b
- $_hottext insert end "$_licount) " $_tag
- _entity_/b
- incr _licount
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_listing
-#
-# diplay code listing
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_listing {} {
- _entity_pre
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/listing
-#
-# end code listing
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/listing {} {
- _entity_/pre
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_menu
-#
-# diplay menu list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_menu {{args {}}} {
- _entity_ul plain $args
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/menu
-#
-# end menu list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/menu {} {
- _entity_/ul
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_ol
-#
-# begin ordered list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_ol {{args {}}} {
- _parse_fields ar $args
- if $_left {
- _entity_br
- } else {
- _entity_p
- }
- if {![info exists ar(type)]} {
- set ar(type) 1
- }
- _push licount $_licount
- if [info exists ar(start)] {
- set _licount $ar(start)
- } else {
- set _licount 1
- }
- _push left $_left
- _push left2 $_left2
- if {$_left2 == $_left } {
- incr _left2 [expr $_indentincr+3]
- } else {
- incr _left2 $_indentincr
- }
- incr _left $_indentincr
- _push listyle $_listyle
- set _listyle $ar(type)
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/ol
-#
-# end ordered list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/ol {} {
- set _left [_pop left]
- set _left2 [_pop left2]
- set _listyle [_pop listyle]
- set _licount [_pop licount]
- _set_tag
- _entity_p
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_p
-#
-# paragraph break
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_p {{args {}}} {
- _parse_fields ar $args
- if [info exists ar(align)] {
- _set_align $ar(align)
- } else {
- set _justify L
- }
- _set_tag
- if [info exists ar(id)] {
- set _anchor($ar(id)) [$itk_component(text) index end]
- }
- set x [$_hottext get end-3c]
- set y [$_hottext get end-2c]
- if {$x == "" && $y == ""} return
- if {$y == ""} {
- $_hottext insert end "\n\n"
- return
- }
- if {$x == "\n" && $y == "\n"} return
- if {$y == "\n"} {
- $_hottext insert end "\n"
- return
- }
- $_hottext insert end "\n\n"
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_pre
-#
-# display preformatted text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_pre {{args {}}} {
- _entity_tt
- _entity_br
- incr _pre
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/pre
-#
-# change state back from preformatted text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/pre {} {
- _entity_/tt
- set _pre 0
- _entity_p
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_samp
-#
-# display sample text.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_samp {} {
- _entity_kbd
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/samp
-#
-# switch back to non-sample text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/samp {} {
- _entity_/kbd
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_small
-#
-# Change current font to a smaller size
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_small {} {
- _push pointsndx $_pointsndx
- if {[incr _pointsndx -2] < 0} {
- set _pointsndx 0
- }
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/small
-#
-# change current font back from smaller size
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/small {} {
- set _pointsndx [_pop pointsndx]
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_sub
-#
-# display subscript
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_sub {} {
- _push offset $_offset
- incr _offset -2
- _entity_small
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/sub
-#
-# switch back to non-subscript
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/sub {} {
- set _offset [_pop offset]
- _entity_/small
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_sup
-#
-# display superscript
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_sup {} {
- _push offset $_offset
- incr _offset 4
- _entity_small
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/sup
-#
-# switch back to non-superscript
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/sup {} {
- set _offset [_pop offset]
- _entity_/small
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_strong
-#
-# display strong text. (i.e. make font bold)
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_strong {} {
- incr _textweight
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/strong
-#
-# switch back to non-strong text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/strong {} {
- incr _textweight -1
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_table
-#
-# display a table.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_table {{args {}}} {
- _parse_fields ar $args
- _entity_p
- set _intable 1
-
- _push row -1
- _push column 0
- _push hottext $_hottext
- _push justify $_justify
- _push justify L
- # push color information for master of table, then push info for table
- _push color $_color
- _push bgcolor $_bgcolor
- _push link $_link
- _push alink $_alink
- if [info exists ar(bgcolor)] {
- set _bgcolor $ar(bgcolor)
- }
- if [info exists ar(text)] {
- set _color $ar(text)
- }
- if [info exists ar(link)] {
- set _link $ar(link)
- }
- if [info exists ar(alink)] {
- set _alink $ar(alink)
- }
- _push color $_color
- _push bgcolor $_bgcolor
- _push link $_link
- _push alink $_alink
- # push fake first row to avoid using optional /tr tag
- # (This needs to set a real color - not the empty string
- # becaule later code will try to use those values.)
- _push color $_color
- _push bgcolor $_bgcolor
- _push link {}
- _push alink {}
-
- if {[info exists ar(align)]} {
- _set_align $ar(align)
- _set_tag
- _append_text " "
- }
- set _justify L
-
- if [info exists ar(id)] {
- set _anchor($ar(id)) [$itk_component(text) index end]
- }
- if [info exists ar(cellpadding)] {
- _push cellpadding $ar(cellpadding)
- } else {
- _push cellpadding 0
- }
- if [info exists ar(cellspacing)] {
- _push cellspacing $ar(cellspacing)
- } else {
- _push cellspacing 0
- }
- if {[info exists ar(border)]} {
- _push tableborder 1
- set relief raised
- if {$ar(border)==""} {
- set ar(border) 2
- }
- } else {
- _push tableborder 0
- set relief flat
- set ar(border) 2
- }
- _push table [set table $_hottext.table[incr _counter]]
- iwidgets::labeledwidget $table -foreground $_color -background $_bgcolor -labelpos n
- if {[info exists ar(title)]} {
- $table configure -labeltext $ar(title)
- }
- #
- # create window in text to display table
- #
- $_hottext window create end -window $table
-
- set table [$table childsite]
- set _anchor($table) [$_hottext index "end - 1 line"]
- $table configure -borderwidth $ar(border) -relief $relief
-
- if {[info exists ar(width)]} {
- _push tablewidth $ar(width)
- } else {
- _push tablewidth 0
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/table
-#
-# end table
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/table {} {
- if {$_intable} {
- _pop tableborder
- set table [[_pop table] childsite]
- _pop row
- _pop column
- _pop cellspacing
- _pop cellpadding
- # pop last row's defaults
- _pop color
- _pop bgcolor
- _pop link
- _pop alink
- # pop table defaults
- _pop color
- _pop bgcolor
- _pop link
- _pop alink
- # restore table master defaults
- set _color [_pop color]
- set _bgcolor [_pop bgcolor]
- set _link [_pop link]
- set _alink [_pop alink]
- foreach x [grid slaves $table] {
- set text [$x get 1.0 end]
- set tl [split $text \n]
- set max 0
- foreach l $tl {
- set len [string length $l]
- if {$len > $max} {
- set max $len
- }
- }
- if {$max > [$x cget -width]} {
- $x configure -width $max
- }
- if {[$x cget -height] == 1} {
- $x configure -height [lindex [split [$x index "end - 1 chars"] "."] 0]
- }
- }
- $_hottext configure -state disabled
- set _hottext [_pop hottext]
- $_hottext configure -state normal
- if {[set tablewidth [_pop tablewidth]]!="0"} {
- if {[string index $tablewidth \
- [expr [string length $tablewidth] -1]] == "%"} {
- set multiplier [expr [string trimright $tablewidth "%"] / 100.0]
- set idletask [after idle [code "$this _fixtablewidth $_hottext $table $multiplier"]]
- } else {
- $table configure -width $tablewidth
- grid propagate $table 0
- }
- }
- _pop justify
- set _justify [_pop justify]
- _entity_br
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_td
-#
-# start table data cell
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_td {{args {}}} {
- if $_intable {
- _parse_fields ar $args
- set table [[_peek table] childsite]
- if {![info exists ar(colspan)]} {
- set ar(colspan) 1
- }
- if {![info exists ar(rowspan)]} {
- set ar(rowspan) 1
- }
- if {![info exists ar(width)]} {
- set ar(width) 10
- }
- if {![info exists ar(height)]} {
- set ar(height) 0
- }
- if [info exists ar(bgcolor)] {
- set _bgcolor $ar(bgcolor)
- } else {
- set _bgcolor [_peek bgcolor]
- }
- if [info exists ar(text)] {
- set _color $ar(text)
- } else {
- set _color [_peek color]
- }
- if [info exists ar(link)] {
- set _link $ar(link)
- } else {
- set _link [_peek link]
- }
- if [info exists ar(alink)] {
- set _alink $ar(alink)
- } else {
- set _alink [_peek alink]
- }
- $_hottext configure -state disabled
- set cellpadding [_peek cellpadding]
- set cellspacing [_peek cellspacing]
- set _hottext $table.cell[incr _counter]
- text $_hottext -relief flat -width $ar(width) -height $ar(height) \
- -highlightthickness 0 -wrap word -cursor $itk_option(-cursor) \
- -wrap word -cursor $itk_option(-cursor) \
- -padx $cellpadding -pady $cellpadding
- if {$_color != ""} {
- $_hottext config -foreground $_color
- }
- if {$_bgcolor != ""} {
- $_hottext config -background $_bgcolor
- }
- if [info exists ar(nowrap)] {
- $_hottext configure -wrap none
- }
- if [_peek tableborder] {
- $_hottext configure -relief sunken
- }
- set row [_peek row]
- if {$row < 0} {
- set row 0
- }
- set column [_pop column]
- if {$column < 0} {
- set column 0
- }
- while {[grid slaves $table -row $row -column $column] != ""} {
- incr column
- }
- grid $_hottext -sticky nsew -row $row -column $column \
- -columnspan $ar(colspan) -rowspan $ar(rowspan) \
- -padx $cellspacing -pady $cellspacing
- grid columnconfigure $table $column -weight 1
- _push column [expr $column + $ar(colspan)]
- if [info exists ar(align)] {
- _set_align $ar(align)
- } else {
- set _justify [_peek justify]
- }
- _set_tag
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/td
-#
-# end table data cell
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/td {} {
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_th
-#
-# start table header
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_th {{args {}}} {
- if $_intable {
- _parse_fields ar $args
- if [info exists ar(align)] {
- _entity_td $args
- } else {
- _entity_td align=center $args
- }
- _entity_b
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/th
-#
-# end table data cell
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/th {} {
- _entity_/td
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_title
-#
-# begin title of document
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_title {} {
- set _intitle 1
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/title
-#
-# end title
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/title {} {
- set _intitle 0
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_tr
-#
-# start table row
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_tr {{args {}}} {
- if $_intable {
- _parse_fields ar $args
- _pop justify
- if [info exists ar(align)] {
- _set_align $ar(align)
- _push justify $_justify
- } else {
- _push justify L
- }
- # pop last row's colors
- _pop color
- _pop bgcolor
- _pop link
- _pop alink
- if [info exists ar(bgcolor)] {
- set _bgcolor $ar(bgcolor)
- } else {
- set _bgcolor [_peek bgcolor]
- }
- if [info exists ar(text)] {
- set _color $ar(text)
- } else {
- set _color [_peek color]
- }
- if [info exists ar(link)] {
- set _link $ar(link)
- } else {
- set _link [_peek link]
- }
- if [info exists ar(alink)] {
- set _alink $ar(alink)
- } else {
- set _alink [_peek alink]
- }
- # push this row's defaults
- _push color $_color
- _push bgcolor $_bgcolor
- _push link $_link
- _push alink $_alink
- $_hottext configure -state disabled
- _push row [expr [_pop row] + 1]
- _pop column
- _push column 0
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/tr
-#
-# end table row
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/tr {} {
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_tt
-#
-# Show typewriter text, using the font given by -fixedfont
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_tt {} {
- _push font $_font
- set _font $itk_option(-fixedfont)
- set _verbatim 1
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/tt
-#
-# Change back to non-typewriter mode to display text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/tt {} {
- set _font [_pop font]
- set _verbatim 0
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_u
-#
-# display underlined text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_u {} {
- incr _underline
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/u
-#
-# change back from underlined text
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/u {} {
- incr _underline -1
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_ul
-#
-# begin unordered list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_ul {{args {}}} {
- _parse_fields ar $args
- if $_left {
- _entity_br
- } else {
- _entity_p
- }
- if [info exists ar(id)] {
- set _anchor($ar(id)) [$itk_component(text) index end]
- }
- _push left $_left
- _push left2 $_left2
- if {$_left2 == $_left } {
- incr _left2 [expr $_indentincr+3]
- } else {
- incr _left2 $_indentincr
- }
- incr _left $_indentincr
- _push listyle $_listyle
- _push licount $_licount
- if [info exists ar(plain)] {
- set _listyle none
- } {
- set _listyle bullet
- }
- if [info exists ar(dingbat)] {
- set ar(src) $ar(dingbat)
- }
- _push lipic $_lipic
- if [info exists ar(src)] {
- set _listyle picture
- set _lipic $ar(src)
- }
- _set_tag
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/ul
-#
-# end unordered list
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/ul {} {
- set _left [_pop left]
- set _left2 [_pop left2]
- set _listyle [_pop listyle]
- set _licount [_pop licount]
- set _lipic [_pop lipic]
- _set_tag
- _entity_p
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_var
-#
-# Display variable
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_var {} {
- _entity_i
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _entity_/var
-#
-# change state back from variable display
-# ------------------------------------------------------------------
-body iwidgets::Scrolledhtml::_entity_/var {} {
- _entity_/i
-}
-
-namespace eval iwidgets {
- variable romand
- set romand(val) {1000 900 500 400 100 90 50 40 10 9 5 4 1}
- set romand(upper) { M CM D CD C XC L XL X IX V IV I}
- set romand(lower) { m cm d cd c xc l xl x ix v iv i}
-
- proc roman2 {n {case upper}} {
- variable romand
- set r ""
- foreach val $romand(val) sym $romand($case) {
- while {$n >= $val} {
- set r "$r$sym"
- incr n -$val
- }
- }
- return $r
- }
-
- proc roman {n {case upper}} {
- variable romand
- set r ""
- foreach val $romand(val) sym $romand($case) {
- for {} {$n >= $val} {incr n -$val} {
- set r "$r$sym"
- }
- }
- return $r
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/scrolledlistbox.itk b/itcl/iwidgets3.0.0/generic/scrolledlistbox.itk
deleted file mode 100644
index 87f371a2e58..00000000000
--- a/itcl/iwidgets3.0.0/generic/scrolledlistbox.itk
+++ /dev/null
@@ -1,733 +0,0 @@
-#
-# Scrolledlistbox
-# ----------------------------------------------------------------------
-# Implements a scrolled listbox with additional options to manage
-# horizontal and vertical scrollbars. This includes options to control
-# which scrollbars are displayed and the method, i.e. statically,
-# dynamically, or none at all.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Scrolledlistbox {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -jump -labelfont -selectbackground -selectborderwidth \
- -selectforeground -textbackground -textfont -troughcolor
-}
-
-# ------------------------------------------------------------------
-# SCROLLEDLISTBOX
-# ------------------------------------------------------------------
-class iwidgets::Scrolledlistbox {
- inherit iwidgets::Scrolledwidget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -dblclickcommand dblClickCommand Command {}
- itk_option define -selectioncommand selectionCommand Command {}
- itk_option define -width width Width 0
- itk_option define -height height Height 0
- itk_option define -visibleitems visibleItems VisibleItems 20x10
- itk_option define -state state State normal
-
- public method curselection {}
- public method activate {index}
- public method bbox {index}
- public method clear {}
- public method see {index}
- public method index {index}
- public method delete {first {last {}}}
- public method get {first {last {}}}
- public method getcurselection {}
- public method insert {index string args}
- public method nearest {y}
- public method scan {option args}
- public method selection {option first {last {}}}
- public method size {}
- public method selecteditemcount {}
- public method justify {direction}
- public method sort {{mode ascending}}
- public method xview {args}
- public method yview {args}
- public method itemconfigure {args}
-
- protected method _makeSelection {}
- protected method _dblclick {}
- protected method _fixIndex {index}
-
- #
- # List the event sequences that invoke single and double selection.
- # Should these change in the underlying Tk listbox, then they must
- # change here too.
- #
- common doubleSelectSeq { \
- <Double-1>
- }
-
- common singleSelectSeq { \
- <Control-Key-backslash> \
- <Control-Key-slash> \
- <Key-Escape> \
- <Shift-Key-Select> \
- <Control-Shift-Key-space> \
- <Key-Select> \
- <Key-space> \
- <Control-Shift-Key-End> \
- <Control-Key-End> \
- <Control-Shift-Key-Home> \
- <Control-Key-Home> \
- <Key-Down> \
- <Key-Up> \
- <Shift-Key-Down> \
- <Shift-Key-Up> \
- <Control-Button-1> \
- <Shift-Button-1> \
- <ButtonRelease-1> \
- <B1-Motion>
- }
-}
-
-#
-# Provide a lowercased access method for the Scrolledlistbox class.
-#
-proc ::iwidgets::scrolledlistbox {pathName args} {
- uplevel ::iwidgets::Scrolledlistbox $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Scrolledlistbox.labelPos n widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::constructor {args} {
- #
- # Our -width and -height options are slightly different than
- # those implemented by our base class, so we're going to
- # remove them and redefine our own.
- #
- itk_option remove iwidgets::Scrolledwidget::width
- itk_option remove iwidgets::Scrolledwidget::height
-
- #
- # Create the listbox.
- #
- itk_component add listbox {
- listbox $itk_interior.listbox \
- -width 1 -height 1 \
- -xscrollcommand \
- [code $this _scrollWidget $itk_interior.horizsb] \
- -yscrollcommand \
- [code $this _scrollWidget $itk_interior.vertsb]
- } {
- usual
-
- keep -borderwidth -exportselection -relief -selectmode
-
- # This option was added in Tk 8.3
- catch {keep -listvariable}
-
- rename -font -textfont textFont Font
- rename -background -textbackground textBackground Background
- rename -highlightbackground -background background Background
- }
- grid $itk_component(listbox) -row 1 -column 1 -sticky nsew
- grid rowconfigure $_interior 1 -weight 1
- grid columnconfigure $_interior 1 -weight 1
-
- #
- # Configure the command on the vertical scroll bar in the base class.
- #
- $itk_component(vertsb) configure \
- -command [code $itk_component(listbox) yview]
-
- #
- # Configure the command on the horizontal scroll bar in the base class.
- #
- $itk_component(horizsb) configure \
- -command [code $itk_component(listbox) xview]
-
- #
- # Create a set of bindings for monitoring the selection and install
- # them on the listbox component.
- #
- foreach seq $singleSelectSeq {
- bind SLBSelect$this $seq [code $this _makeSelection]
- }
-
- foreach seq $doubleSelectSeq {
- bind SLBSelect$this $seq [code $this _dblclick]
- }
-
- bindtags $itk_component(listbox) \
- [linsert [bindtags $itk_component(listbox)] end SLBSelect$this]
-
- #
- # Also create a set of bindings for disabling the scrolledlistbox.
- # Since the command for it is "break", we can drop the $this since
- # they don't need to be unique to the object level.
- #
- if {[bind SLBDisabled] == {}} {
- foreach seq $singleSelectSeq {
- bind SLBDisabled $seq break
- }
-
- bind SLBDisabled <Button-1> break
-
- foreach seq $doubleSelectSeq {
- bind SLBDisabled $seq break
- }
- }
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::destructor {} {
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -dblclickcommand
-#
-# Specify a command to be executed upon double click of a listbox
-# item. Also, create a couple of bindings used for specific
-# selection modes
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledlistbox::dblclickcommand {}
-
-# ------------------------------------------------------------------
-# OPTION: -selectioncommand
-#
-# Specifies a command to be executed upon selection of a listbox
-# item. The command will be called upon each selection regardless
-# of selection mode..
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledlistbox::selectioncommand {}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the scrolled list box as an entire unit.
-# The value may be specified in any of the forms acceptable to
-# Tk_GetPixels. Any additional space needed to display the other
-# components such as margins and scrollbars force the listbox
-# to be compressed. A value of zero along with the same value for
-# the height causes the value given for the visibleitems option
-# to be applied which administers geometry constraints in a different
-# manner.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledlistbox::width {
- if {$itk_option(-width) != 0} {
- set shell [lindex [grid info $itk_component(listbox)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $shell]} {
- grid propagate $shell no
- }
-
- $itk_component(listbox) configure -width 1
- $shell configure \
- -width [winfo pixels $shell $itk_option(-width)]
- } else {
- configure -visibleitems $itk_option(-visibleitems)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the scrolled list box as an entire unit.
-# The value may be specified in any of the forms acceptable to
-# Tk_GetPixels. Any additional space needed to display the other
-# components such as margins and scrollbars force the listbox
-# to be compressed. A value of zero along with the same value for
-# the width causes the value given for the visibleitems option
-# to be applied which administers geometry constraints in a different
-# manner.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledlistbox::height {
- if {$itk_option(-height) != 0} {
- set shell [lindex [grid info $itk_component(listbox)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $shell]} {
- grid propagate $shell no
- }
-
- $itk_component(listbox) configure -height 1
- $shell configure \
- -height [winfo pixels $shell $itk_option(-height)]
- } else {
- configure -visibleitems $itk_option(-visibleitems)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -visibleitems
-#
-# Specified the widthxheight in characters and lines for the listbox.
-# This option is only administered if the width and height options
-# are both set to zero, otherwise they take precedence. With the
-# visibleitems option engaged, geometry constraints are maintained
-# only on the listbox. The size of the other components such as
-# labels, margins, and scrollbars, are additive and independent,
-# effecting the overall size of the scrolled list box. In contrast,
-# should the width and height options have non zero values, they
-# are applied to the scrolled list box as a whole. The listbox
-# is compressed or expanded to maintain the geometry constraints.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledlistbox::visibleitems {
- if {[regexp {^[0-9]+x[0-9]+$} $itk_option(-visibleitems)]} {
- if {($itk_option(-width) == 0) && \
- ($itk_option(-height) == 0)} {
- set chars [lindex [split $itk_option(-visibleitems) x] 0]
- set lines [lindex [split $itk_option(-visibleitems) x] 1]
-
- set shell [lindex [grid info $itk_component(listbox)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {! [grid propagate $shell]} {
- grid propagate $shell yes
- }
-
- $itk_component(listbox) configure -width $chars -height $lines
- }
-
- } else {
- error "bad visibleitems option\
- \"$itk_option(-visibleitems)\": should be\
- widthxheight"
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -state
-#
-# Specifies the state of the scrolledlistbox which may be either
-# disabled or normal. In a disabled state, the scrolledlistbox
-# does not accept user selection. The default is normal.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledlistbox::state {
- set tags [bindtags $itk_component(listbox)]
-
- #
- # If the state is normal, then we need to remove the disabled
- # bindings if they exist. If the state is disabled, then we need
- # to install the disabled bindings if they haven't been already.
- #
- switch -- $itk_option(-state) {
- normal {
- if {[set index [lsearch $tags SLBDisabled]] != -1} {
- bindtags $itk_component(listbox) \
- [lreplace $tags $index $index]
- }
- }
-
- disabled {
- if {[set index [lsearch $tags SLBDisabled]] == -1} {
- bindtags $itk_component(listbox) \
- [linsert $tags 1 SLBDisabled]
- }
- }
- default {
- error "bad state value \"$itk_option(-state)\":\
- must be normal or disabled"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: curselection
-#
-# Returns a list containing the indices of all the elements in the
-# listbox that are currently selected.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::curselection {} {
- return [$itk_component(listbox) curselection]
-}
-
-# ------------------------------------------------------------------
-# METHOD: activate index
-#
-# Sets the active element to the one indicated by index.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::activate {index} {
- return [$itk_component(listbox) activate [_fixIndex $index]]
-}
-
-# ------------------------------------------------------------------
-# METHOD: bbox index
-#
-# Returns four element list describing the bounding box for the list
-# item at index
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::bbox {index} {
- return [$itk_component(listbox) bbox [_fixIndex $index]]
-}
-
-# ------------------------------------------------------------------
-# METHOD clear
-#
-# Clear the listbox area of all items.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::clear {} {
- delete 0 end
-}
-
-# ------------------------------------------------------------------
-# METHOD: see index
-#
-# Adjusts the view such that the element given by index is visible.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::see {index} {
- $itk_component(listbox) see [_fixIndex $index]
-}
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Returns the decimal string giving the integer index corresponding
-# to index. The index value may be a integer number, active,
-# anchor, end, @x,y, or a pattern.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::index {index} {
- if {[regexp {(^[0-9]+$)|(active)|(anchor)|(end)|(^@-?[0-9]+,-?[0-9]+$)} $index]} {
- return [$itk_component(listbox) index $index]
-
- } else {
- set indexValue [lsearch -glob [get 0 end] $index]
-
- if {$indexValue == -1} {
- error "bad Scrolledlistbox index \"$index\": must be active, anchor, end, @x,y, number, or a pattern"
- }
-
- return $indexValue
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: _fixIndex index
-#
-# Similar to the regular "index" method, but it only converts
-# the index to a numerical value if it is a string pattern. If
-# the index is in the proper form to be used with the listbox,
-# it is left alone. This fixes problems associated with converting
-# an index such as "end" to a numerical value.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::_fixIndex {index} {
- if {[regexp {(^[0-9]+$)|(active)|(anchor)|(end)|(^@[0-9]+,[0-9]+$)} $index]} {
- return $index
-
- } else {
- set indexValue [lsearch -glob [get 0 end] $index]
-
- if {$indexValue == -1} {
- error "bad Scrolledlistbox index \"$index\": must be active, anchor, end, @x,y, number, or a pattern"
- }
-
- return $indexValue
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete first ?last?
-#
-# Delete one or more elements from list box based on the first and
-# last index values. Indexes may be a number, active, anchor, end,
-# @x,y, or a pattern.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::delete {first {last {}}} {
- set first [_fixIndex $first]
-
- if {$last != {}} {
- set last [_fixIndex $last]
- } else {
- set last $first
- }
-
- eval $itk_component(listbox) delete $first $last
-}
-
-# ------------------------------------------------------------------
-# METHOD: get first ?last?
-#
-# Returns the elements of the listbox indicated by the indexes.
-# Indexes may be a number, active, anchor, end, @x,y, ora pattern.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::get {first {last {}}} {
- set first [_fixIndex $first]
-
- if {$last != {}} {
- set last [_fixIndex $last]
- }
-
- if {$last == {}} {
- return [$itk_component(listbox) get $first]
- } else {
- return [$itk_component(listbox) get $first $last]
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: getcurselection
-#
-# Returns the contents of the listbox element indicated by the current
-# selection indexes. Short cut version of get and curselection
-# command combination.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::getcurselection {} {
- set rlist {}
-
- if {[selecteditemcount] > 0} {
- set cursels [$itk_component(listbox) curselection]
-
- switch $itk_option(-selectmode) {
- single -
- browse {
- set rlist [$itk_component(listbox) get $cursels]
- }
-
- multiple -
- extended {
- foreach sel $cursels {
- lappend rlist [$itk_component(listbox) get $sel]
- }
- }
- }
- }
-
- return $rlist
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert index string ?string ...?
-#
-# Insert zero or more elements in the list just before the element
-# given by index.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::insert {index string args} {
- set index [_fixIndex $index]
- set args [linsert $args 0 $string]
-
- eval $itk_component(listbox) insert $index $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: nearest y
-#
-# Given a y-coordinate within the listbox, this command returns the
-# index of the visible listbox element nearest to that y-coordinate.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::nearest {y} {
- $itk_component(listbox) nearest $y
-}
-
-# ------------------------------------------------------------------
-# METHOD: scan option args
-#
-# Implements scanning on listboxes.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::scan {option args} {
- eval $itk_component(listbox) scan $option $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: selection option first ?last?
-#
-# Adjusts the selection within the listbox. The index value may be
-# a integer number, active, anchor, end, @x,y, or a pattern.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::selection {option first {last {}}} {
- set first [_fixIndex $first]
-
- if {$last != {}} {
- set last [_fixIndex $last]
- $itk_component(listbox) selection $option $first $last
- } else {
- $itk_component(listbox) selection $option $first
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: size
-#
-# Returns a decimal string indicating the total number of elements
-# in the listbox.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::size {} {
- return [$itk_component(listbox) size]
-}
-
-# ------------------------------------------------------------------
-# METHOD: selecteditemcount
-#
-# Returns a decimal string indicating the total number of selected
-# elements in the listbox.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::selecteditemcount {} {
- return [llength [$itk_component(listbox) curselection]]
-}
-
-# ------------------------------------------------------------------
-# METHOD: justify direction
-#
-# Justifies the list scrolled region in one of four directions: top,
-# bottom, left, or right.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::justify {direction} {
- switch $direction {
- left {
- $itk_component(listbox) xview moveto 0
- }
- right {
- $itk_component(listbox) xview moveto 1
- }
- top {
- $itk_component(listbox) yview moveto 0
- }
- bottom {
- $itk_component(listbox) yview moveto 1
- }
- default {
- error "bad justify argument \"$direction\": should\
- be left, right, top, or bottom"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: sort mode
-#
-# Sort the current list in either "ascending/increasing" or
-# "descending/decreasing" order.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::sort {{mode ascending}} {
- switch $mode {
- ascending -
- increasing {
- set vals [$itk_component(listbox) get 0 end]
- if {[llength $vals] != 0} {
- $itk_component(listbox) delete 0 end
- eval $itk_component(listbox) insert end \
- [lsort -increasing $vals]
- }
- }
- descending -
- decreasing {
- set vals [$itk_component(listbox) get 0 end]
- if {[llength $vals] != 0} {
- $itk_component(listbox) delete 0 end
- eval $itk_component(listbox) insert end \
- [lsort -decreasing $vals]
- }
- }
- default {
- error "bad sort argument \"$mode\": should be\
- ascending, descending, increasing, or decreasing"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: xview args
-#
-# Change or query the vertical position of the text in the list box.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::xview {args} {
- return [eval $itk_component(listbox) xview $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: yview args
-#
-# Change or query the horizontal position of the text in the list box.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::yview {args} {
- return [eval $itk_component(listbox) yview $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: itemconfigure args
-#
-# This is a wrapper method around the new tk8.3 itemconfigure command
-# for the listbox.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::itemconfigure {args} {
- return [eval $itk_component(listbox) itemconfigure $args]
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _makeSelection
-#
-# Evaluate the selection command.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::_makeSelection {} {
- uplevel #0 $itk_option(-selectioncommand)
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _dblclick
-#
-# Evaluate the double click command option if not empty.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledlistbox::_dblclick {} {
- uplevel #0 $itk_option(-dblclickcommand)
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/scrolledtext.itk b/itcl/iwidgets3.0.0/generic/scrolledtext.itk
deleted file mode 100644
index 86fc7f362d4..00000000000
--- a/itcl/iwidgets3.0.0/generic/scrolledtext.itk
+++ /dev/null
@@ -1,503 +0,0 @@
-#
-# Scrolledtext
-# ----------------------------------------------------------------------
-# Implements a scrolled text widget with additional options to manage
-# the vertical scrollbar. This includes options to control the method
-# in which the scrollbar is displayed, i.e. statically or dynamically.
-# Options also exist for adding a label to the scrolled text area and
-# controlling its position. Import/export of methods are provided for
-# file I/O.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Scrolledtext {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -insertbackground -insertborderwidth -insertofftime -insertontime \
- -insertwidth -jump -labelfont -selectbackground -selectborderwidth \
- -selectforeground -textbackground -textfont -troughcolor
-}
-
-#
-# The default case is to have no label, so we set the default spacings
-# to reflect this...
-#
-
-option add *Scrolledtext.labelMargin 0 widgetDefault
-option add *Scrolledtext.labelFont \
- "-Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*" widgetDefault
-option add *Scrolledtext.labelPos n widgetDefault
-option add *Scrolledtext.labelBorderWidth 0 widgetDefault
-option add *Scrolledtext.labelRelief groove widgetDefault
-
-# ------------------------------------------------------------------
-# SCROLLEDTEXT
-# ------------------------------------------------------------------
-class iwidgets::Scrolledtext {
- inherit iwidgets::Scrolledwidget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -width width Width 0
- itk_option define -height height Height 0
- itk_option define -visibleitems visibleItems VisibleItems 80x24
-
- public method bbox {index}
- public method clear {}
- public method import {filename {index end}}
- public method export {filename}
- public method compare {index1 op index2}
- public method debug {args}
- public method delete {first {last {}}}
- public method dlineinfo {index}
- public method get {index1 {index2 {}}}
- public method image {option args}
- public method index {index}
- public method insert {args}
- public method mark {option args}
- public method scan {option args}
- public method search {args}
- public method see {index}
- public method tag {option args}
- public method window {option args}
- public method xview {args}
- public method yview {args}
-}
-
-#
-# Provide a lowercased access method for the Scrolledtext class.
-#
-proc ::iwidgets::scrolledtext {pathName args} {
- uplevel ::iwidgets::Scrolledtext $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Scrolledtext.labelPos n widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::constructor {args} {
- #
- # Our -width and -height options are slightly different than
- # those implemented by our base class, so we're going to
- # remove them and redefine our own.
- #
- itk_option remove iwidgets::Scrolledwidget::width
- itk_option remove iwidgets::Scrolledwidget::height
-
- #
- # Create a clipping frame which will provide the border for
- # relief display.
- #
- itk_component add clipper {
- frame $itk_interior.clipper
- } {
- usual
-
- keep -borderwidth -relief -highlightthickness -highlightcolor
- rename -highlightbackground -background background Background
- }
- grid $itk_component(clipper) -row 1 -column 1 -sticky nsew
- grid rowconfigure $_interior 1 -weight 1
- grid columnconfigure $_interior 1 -weight 1
-
- #
- # Create the text area.
- #
- itk_component add text {
- text $itk_component(clipper).text \
- -width 1 -height 1 \
- -xscrollcommand \
- [code $this _scrollWidget $itk_interior.horizsb] \
- -yscrollcommand \
- [code $this _scrollWidget $itk_interior.vertsb] \
- -borderwidth 0 -highlightthickness 0
- } {
- usual
-
- ignore -highlightthickness -highlightcolor -borderwidth
-
- keep -exportselection -padx -pady -setgrid \
- -spacing1 -spacing2 -spacing3 -state -wrap
-
- rename -font -textfont textFont Font
- rename -background -textbackground textBackground Background
- }
- grid $itk_component(text) -row 0 -column 0 -sticky nsew
- grid rowconfigure $itk_component(clipper) 0 -weight 1
- grid columnconfigure $itk_component(clipper) 0 -weight 1
-
- #
- # Configure the command on the vertical scroll bar in the base class.
- #
- $itk_component(vertsb) configure \
- -command [code $itk_component(text) yview]
-
- #
- # Configure the command on the horizontal scroll bar in the base class.
- #
- $itk_component(horizsb) configure \
- -command [code $itk_component(text) xview]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::destructor {} {
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the scrolled text as an entire unit.
-# The value may be specified in any of the forms acceptable to
-# Tk_GetPixels. Any additional space needed to display the other
-# components such as labels, margins, and scrollbars force the text
-# to be compressed. A value of zero along with the same value for
-# the height causes the value given for the visibleitems option
-# to be applied which administers geometry constraints in a different
-# manner.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledtext::width {
- if {$itk_option(-width) != 0} {
- set shell [lindex [grid info $itk_component(clipper)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $shell]} {
- grid propagate $shell no
- }
-
- $itk_component(text) configure -width 1
- $shell configure \
- -width [winfo pixels $shell $itk_option(-width)]
- } else {
- configure -visibleitems $itk_option(-visibleitems)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the scrolled text as an entire unit.
-# The value may be specified in any of the forms acceptable to
-# Tk_GetPixels. Any additional space needed to display the other
-# components such as labels, margins, and scrollbars force the text
-# to be compressed. A value of zero along with the same value for
-# the width causes the value given for the visibleitems option
-# to be applied which administers geometry constraints in a different
-# manner.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledtext::height {
- if {$itk_option(-height) != 0} {
- set shell [lindex [grid info $itk_component(clipper)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $shell]} {
- grid propagate $shell no
- }
-
- $itk_component(text) configure -height 1
- $shell configure \
- -height [winfo pixels $shell $itk_option(-height)]
- } else {
- configure -visibleitems $itk_option(-visibleitems)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -visibleitems
-#
-# Specified the widthxheight in characters and lines for the text.
-# This option is only administered if the width and height options
-# are both set to zero, otherwise they take precedence. With the
-# visibleitems option engaged, geometry constraints are maintained
-# only on the text. The size of the other components such as
-# labels, margins, and scroll bars, are additive and independent,
-# effecting the overall size of the scrolled text. In contrast,
-# should the width and height options have non zero values, they
-# are applied to the scrolled text as a whole. The text is
-# compressed or expanded to maintain the geometry constraints.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledtext::visibleitems {
- if {[regexp {^[0-9]+x[0-9]+$} $itk_option(-visibleitems)]} {
- if {($itk_option(-width) == 0) && \
- ($itk_option(-height) == 0)} {
- set chars [lindex [split $itk_option(-visibleitems) x] 0]
- set lines [lindex [split $itk_option(-visibleitems) x] 1]
-
- set shell [lindex [grid info $itk_component(clipper)] 1]
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {! [grid propagate $shell]} {
- grid propagate $shell yes
- }
-
- $itk_component(text) configure -width $chars -height $lines
- }
-
- } else {
- error "bad visibleitems option\
- \"$itk_option(-visibleitems)\": should be\
- widthxheight"
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: bbox index
-#
-# Returns four element list describing the bounding box for the list
-# item at index
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::bbox {index} {
- return [$itk_component(text) bbox $index]
-}
-
-# ------------------------------------------------------------------
-# METHOD clear
-#
-# Clear the text area.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::clear {} {
- $itk_component(text) delete 1.0 end
-}
-
-# ------------------------------------------------------------------
-# METHOD import filename
-#
-# Load text from an existing file (import filename)
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::import {filename {index end}} {
- set f [open $filename r]
- insert $index [read $f]
- close $f
-}
-
-# ------------------------------------------------------------------
-# METHOD export filename
-#
-# write text to a file (export filename)
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::export {filename} {
- set f [open $filename w]
-
- set txt [$itk_component(text) get 1.0 end]
- puts $f $txt
-
- flush $f
- close $f
-}
-
-# ------------------------------------------------------------------
-# METHOD compare index1 op index2
-#
-# Compare indices according to relational operator.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::compare {index1 op index2} {
- return [$itk_component(text) compare $index1 $op $index2]
-}
-
-# ------------------------------------------------------------------
-# METHOD debug ?boolean?
-#
-# Activates consistency checks in B-tree code associated with text
-# widgets.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::debug {args} {
- eval $itk_component(text) debug $args
-}
-
-# ------------------------------------------------------------------
-# METHOD delete first ?last?
-#
-# Delete a range of characters from the text.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::delete {first {last {}}} {
- $itk_component(text) delete $first $last
-}
-
-# ------------------------------------------------------------------
-# METHOD dlineinfo index
-#
-# Returns a five element list describing the area occupied by the
-# display line containing index.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::dlineinfo {index} {
- return [$itk_component(text) dlineinfo $index]
-}
-
-# ------------------------------------------------------------------
-# METHOD get index1 ?index2?
-#
-# Return text from start index to end index.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::get {index1 {index2 {}}} {
- return [$itk_component(text) get $index1 $index2]
-}
-
-# ------------------------------------------------------------------
-# METHOD image option ?arg arg ...?
-#
-# Manipulate images dependent on options.
-#
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::image {option args} {
- return [eval $itk_component(text) image $option $args]
-}
-
-
-# ------------------------------------------------------------------
-# METHOD index index
-#
-# Return position corresponding to index.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::index {index} {
- return [$itk_component(text) index $index]
-}
-
-# ------------------------------------------------------------------
-# METHOD insert index chars ?tagList?
-#
-# Insert text at index.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::insert {args} {
- eval $itk_component(text) insert $args
-}
-
-# ------------------------------------------------------------------
-# METHOD mark option ?arg arg ...?
-#
-# Manipulate marks dependent on options.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::mark {option args} {
- return [eval $itk_component(text) mark $option $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD scan option args
-#
-# Implements scanning on texts.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::scan {option args} {
- eval $itk_component(text) scan $option $args
-}
-
-# ------------------------------------------------------------------
-# METHOD search ?switches? pattern index ?varName?
-#
-# Searches the text for characters matching a pattern.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::search {args} {
- #-----------------------------------------------------------
- # BUG FIX: csmith (Chad Smith: csmith@adc.com), 11/18/99
- #-----------------------------------------------------------
- # Need to run this command up one level on the stack since
- # the text widget may modify one of the arguments, which is
- # the case when -count is specified.
- #-----------------------------------------------------------
- return [uplevel eval $itk_component(text) search $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD see index
-#
-# Adjusts the view in the window so the character at index is
-# visible.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::see {index} {
- $itk_component(text) see $index
-}
-
-# ------------------------------------------------------------------
-# METHOD tag option ?arg arg ...?
-#
-# Manipulate tags dependent on options.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::tag {option args} {
- return [eval $itk_component(text) tag $option $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD window option ?arg arg ...?
-#
-# Manipulate embedded windows.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::window {option args} {
- return [eval $itk_component(text) window $option $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD xview
-#
-# Changes x view in widget's window.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::xview {args} {
- return [eval $itk_component(text) xview $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD yview
-#
-# Changes y view in widget's window.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledtext::yview {args} {
- return [eval $itk_component(text) yview $args]
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/scrolledwidget.itk b/itcl/iwidgets3.0.0/generic/scrolledwidget.itk
deleted file mode 100644
index 7b685436cfe..00000000000
--- a/itcl/iwidgets3.0.0/generic/scrolledwidget.itk
+++ /dev/null
@@ -1,434 +0,0 @@
-#
-# Scrolledwidget
-# ----------------------------------------------------------------------
-# Implements a general purpose base class for scrolled widgets, by
-# creating the necessary horizontal and vertical scrollbars and
-# providing protected methods for controlling their display. The
-# derived class needs to take advantage of the fact that the grid
-# is used and the vertical scrollbar is in row 0, column 2 and the
-# horizontal scrollbar in row 2, column 0.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark Ulferts mulferts@austin.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 Scrolledwidget {
- keep -background -borderwidth -cursor -highlightcolor -highlightthickness
- keep -activebackground -activerelief -jump -troughcolor
- keep -labelfont -foreground
-}
-
-# ------------------------------------------------------------------
-# SCROLLEDWIDGET
-# ------------------------------------------------------------------
-class iwidgets::Scrolledwidget {
- inherit iwidgets::Labeledframe
-
- constructor {args} {}
- destructor {}
- method childsite {}
-
- itk_option define -childsitepos childSitePos Position e
- itk_option define -sbwidth sbWidth Width ""
- itk_option define -scrollmargin scrollMargin ScrollMargin 3
- itk_option define -vscrollmode vscrollMode VScrollMode static
- itk_option define -hscrollmode hscrollMode HScrollMode static
- itk_option define -width width Width 30
- itk_option define -height height Height 30
-
- protected {
- method _scrollWidget {wid first last}
- method _vertScrollbarDisplay {mode}
- method _horizScrollbarDisplay {mode}
- method _configureEvent {}
-
- variable _vmode off ;# Vertical scroll mode
- variable _hmode off ;# Vertical scroll mode
- variable _recheckHoriz 1 ;# Flag to check need for
- ;# horizontal scrollbar
- variable _recheckVert 1 ;# Flag to check need for
- ;# vertical scrollbar
-
- variable _interior {}
- }
-}
-
-#
-# Provide a lowercased access method for the Scrolledwidget class.
-#
-proc ::iwidgets::scrolledwidget {pathName args} {
- uplevel ::iwidgets::Scrolledwidget $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Scrolledwidget.labelPos n widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledwidget::constructor {args} {
-
- #
- # Turn off the borderwidth on the hull and save off the
- # interior for later use.
- #
- component hull configure -borderwidth 0
- set _interior [iwidgets::Labeledframe::childsite]
- set itk_interior $_interior
-
- #
- # Check if the scrollbars need mapping upon a configure event.
- #
- bind $_interior <Configure> [code $this _configureEvent]
-
- #
- # Turn off propagation in the containing shell.
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $_interior]} {
- grid propagate $_interior no
- }
-
- #
- # Create the vertical scroll bar
- #
- itk_component add vertsb {
- scrollbar $_interior.vertsb -orient vertical
- } {
- usual
- keep -elementborderwidth -jump
- rename -highlightbackground -background background Background
- }
-
- #
- # Create the horizontal scrollbar
- #
- itk_component add horizsb {
- scrollbar $_interior.horizsb -orient horizontal
- } {
- usual
- keep -elementborderwidth -jump
- rename -highlightbackground -background background Background
- }
-
- #
- # Create the childsite frame
- #
- itk_component add swchildsite {
- frame $_interior.cs
- }
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Scrolledwidget::destructor {} {
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -sbwidth
-#
-# Set the width of the scrollbars.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledwidget::sbwidth {
- if {$itk_option(-sbwidth) != ""} {
- $itk_component(vertsb) configure -width $itk_option(-sbwidth)
- $itk_component(horizsb) configure -width $itk_option(-sbwidth)
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -scrollmargin
-#
-# Set the distance between the scrollbars and the list box.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledwidget::scrollmargin {
- set pixels [winfo pixels $_interior $itk_option(-scrollmargin)]
-
- if {$_hmode == "on"} {
- grid rowconfigure $_interior 2 -minsize $pixels
- }
-
- if {$_vmode == "on"} {
- grid columnconfigure $_interior 2 -minsize $pixels
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -vscrollmode
-#
-# Enable/disable display and mode of veritcal scrollbars.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledwidget::vscrollmode {
- switch $itk_option(-vscrollmode) {
- static {
- _vertScrollbarDisplay on
- }
-
- dynamic -
- none {
- _vertScrollbarDisplay off
- }
-
- default {
- error "bad vscrollmode option\
- \"$itk_option(-vscrollmode)\": should be\
- static, dynamic, or none"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -hscrollmode
-#
-# Enable/disable display and mode of horizontal scrollbars.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledwidget::hscrollmode {
- switch $itk_option(-hscrollmode) {
- static {
- _horizScrollbarDisplay on
- }
-
- dynamic -
- none {
- _horizScrollbarDisplay off
- }
-
- default {
- error "bad hscrollmode option\
- \"$itk_option(-hscrollmode)\": should be\
- static, dynamic, or none"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the scrolled widget. The value may be
-# specified in any of the forms acceptable to Tk_GetPixels.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledwidget::width {
- $_interior configure -width \
- [winfo pixels $_interior $itk_option(-width)]
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the scrolled widget. The value may be
-# specified in any of the forms acceptable to Tk_GetPixels.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledwidget::height {
- $_interior configure -height \
- [winfo pixels $_interior $itk_option(-height)]
-}
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Scrolledwidget::childsitepos {
-
- # First reset all the other child sites to weight 0 so
- # they do not take any of the space...
-
- switch $itk_option(-childsitepos) {
- n {
- grid $itk_component(swchildsite) -row 0 -column 1 -columnspan 3 -sticky nsew
- }
-
- s {
- grid $itk_component(swchildsite) -row 4 -column 1 -columnspan 3 -sticky nsew
- }
-
- e {
- grid $itk_component(swchildsite) -row 1 -column 4 -rowspan 3 -sticky nsew
- }
-
- w {
- grid $itk_component(swchildsite) -row 1 -column 0 -rowspan 3 -sticky nsew
- }
-
- default {
- error "bad childsite option\
- \"$itk_option(-childsitepos)\":\
- should be n, e, s, or w"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledwidget::childsite {} {
- return $itk_component(swchildsite)
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _vertScrollbarDisplay mode
-#
-# Displays the vertical scrollbar based on the input mode.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledwidget::_vertScrollbarDisplay {mode} {
- switch $mode {
- on {
- set _vmode on
-
- grid columnconfigure $_interior 2 -minsize \
- [winfo pixels $_interior $itk_option(-scrollmargin)]
- grid $itk_component(vertsb) -row 1 -column 3 -sticky ns
- }
-
- off {
- set _vmode off
-
- grid columnconfigure $_interior 2 -minsize 0
- grid forget $itk_component(vertsb)
- }
-
- default {
- error "invalid argument \"$mode\": should be on or off"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _horizScrollbarDisplay mode
-#
-# Displays the horizontal scrollbar based on the input mode.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledwidget::_horizScrollbarDisplay {mode} {
- switch $mode {
- on {
- set _hmode on
-
- grid rowconfigure $_interior 2 -minsize \
- [winfo pixels $_interior $itk_option(-scrollmargin)]
- grid $itk_component(horizsb) -row 3 -column 1 -sticky ew
- }
-
- off {
- set _hmode off
-
- grid rowconfigure $_interior 2 -minsize 0
- grid forget $itk_component(horizsb)
- }
-
- default {
- error "invalid argument \"$mode\": should be on or off"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _scrollWidget wid first last
-#
-# Performs scrolling and display of scrollbars based on the total
-# and maximum frame size as well as the current -vscrollmode and
-# -hscrollmode settings. Parameters are automatic scroll parameters.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledwidget::_scrollWidget {wid first last} {
- $wid set $first $last
-
- if {$wid == $itk_component(vertsb)} {
- if {$itk_option(-vscrollmode) == "dynamic"} {
- if {($_recheckVert != 1) && ($_vmode == "on")} {
- return
- } else {
- set _recheckVert 0
- }
-
- if {($first == 0) && ($last == 1)} {
- if {$_vmode != "off"} {
- _vertScrollbarDisplay off
- }
-
- } else {
- if {$_vmode != "on"} {
- _vertScrollbarDisplay on
- }
- }
- }
-
- } elseif {$wid == $itk_component(horizsb)} {
- if {$itk_option(-hscrollmode) == "dynamic"} {
- if {($_recheckHoriz != 1) && ($_hmode == "on")} {
- return
- } else {
- set _recheckHoriz 0
- }
-
- if {($first == 0) && ($last == 1)} {
- if {$_hmode != "off"} {
- _horizScrollbarDisplay off
- }
-
- } else {
- if {$_hmode != "on"} {
- _horizScrollbarDisplay on
- }
- }
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _configureEvent
-#
-# Resets the recheck flags which determine if we'll try and map
-# the scrollbars in dynamic mode.
-# ------------------------------------------------------------------
-body iwidgets::Scrolledwidget::_configureEvent {} {
- update idletasks
- set _recheckVert 1
- set _recheckHoriz 1
-}
diff --git a/itcl/iwidgets3.0.0/generic/selectionbox.itk b/itcl/iwidgets3.0.0/generic/selectionbox.itk
deleted file mode 100644
index 4e6d1fe5c4f..00000000000
--- a/itcl/iwidgets3.0.0/generic/selectionbox.itk
+++ /dev/null
@@ -1,560 +0,0 @@
-#
-# Selectionbox
-# ----------------------------------------------------------------------
-# Implements a selection box composed of a scrolled list of items and
-# a selection entry field. The user may choose any of the items displayed
-# in the scrolled list of alternatives and the selection field will be
-# filled with the choice. The user is also free to enter a new value in
-# the selection entry field. Both the list and entry areas have labels.
-# A child site is also provided in which the user may create other widgets
-# to be used in conjunction with the selection box.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Selectionbox {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -insertbackground -insertborderwidth -insertofftime -insertontime \
- -insertwidth -jump -labelfont -selectbackground -selectborderwidth \
- -selectforeground -textbackground -textfont -troughcolor
-}
-
-# ------------------------------------------------------------------
-# SELECTIONBOX
-# ------------------------------------------------------------------
-class iwidgets::Selectionbox {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -childsitepos childSitePos Position center
- itk_option define -margin margin Margin 7
- itk_option define -itemson itemsOn ItemsOn true
- itk_option define -selectionon selectionOn SelectionOn true
- itk_option define -width width Width 260
- itk_option define -height height Height 320
-
- public method childsite {}
- public method get {}
- public method curselection {}
- public method clear {component}
- public method insert {component index args}
- public method delete {first {last {}}}
- public method size {}
- public method scan {option args}
- public method nearest {y}
- public method index {index}
- public method selection {option args}
- public method selectitem {}
-
- private method _packComponents {{when later}}
-
- private variable _repacking {} ;# non-null => _packComponents pending
-}
-
-#
-# Provide a lowercased access method for the Selectionbox class.
-#
-proc ::iwidgets::selectionbox {pathName args} {
- uplevel ::iwidgets::Selectionbox $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Selectionbox.itemsLabel Items widgetDefault
-option add *Selectionbox.selectionLabel Selection widgetDefault
-option add *Selectionbox.width 260 widgetDefault
-option add *Selectionbox.height 320 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::constructor {args} {
- #
- # Set the borderwidth to zero and add width and height options
- # back to the hull.
- #
- component hull configure -borderwidth 0
- itk_option add hull.width hull.height
-
- #
- # Create the child site widget.
- #
- itk_component add -protected sbchildsite {
- frame $itk_interior.sbchildsite
- }
-
- #
- # Create the items list.
- #
- itk_component add items {
- iwidgets::Scrolledlistbox $itk_interior.items -selectmode single \
- -visibleitems 20x10 -labelpos nw -vscrollmode static \
- -hscrollmode none
- } {
- usual
- keep -dblclickcommand -exportselection
-
- rename -labeltext -itemslabel itemsLabel Text
- rename -selectioncommand -itemscommand itemsCommand Command
- }
- configure -itemscommand [code $this selectitem]
-
- #
- # Create the selection entry.
- #
- itk_component add selection {
- iwidgets::Entryfield $itk_interior.selection -labelpos nw
- } {
- usual
-
- keep -exportselection
-
- rename -labeltext -selectionlabel selectionLabel Text
- rename -command -selectioncommand selectionCommand Command
- }
-
- #
- # Set the interior to the childsite for derived classes.
- #
- set itk_interior $itk_component(sbchildsite)
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-
- #
- # When idle, pack the components.
- #
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::destructor {} {
- if {$_repacking != ""} {after cancel $_repacking}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the selection box.
-# ------------------------------------------------------------------
-configbody iwidgets::Selectionbox::childsitepos {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -margin
-#
-# Specifies distance between the items list and selection entry.
-# ------------------------------------------------------------------
-configbody iwidgets::Selectionbox::margin {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -itemson
-#
-# Specifies whether or not to display the items list.
-# ------------------------------------------------------------------
-configbody iwidgets::Selectionbox::itemson {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -selectionon
-#
-# Specifies whether or not to display the selection entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Selectionbox::selectionon {
- _packComponents
-}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the hull. The value may be specified in
-# any of the forms acceptable to Tk_GetPixels. A value of zero
-# causes the width to be adjusted to the required value based on
-# the size requests of the components. Otherwise, the width is
-# fixed.
-# ------------------------------------------------------------------
-configbody iwidgets::Selectionbox::width {
- #
- # The width option was added to the hull in the constructor.
- # So, any width value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-width) != 0} {
- set propagate 0
- } else {
- set propagate 1
- }
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $itk_component(hull)] != $propagate} {
- grid propagate $itk_component(hull) $propagate
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the hull. The value may be specified in
-# any of the forms acceptable to Tk_GetPixels. A value of zero
-# causes the height to be adjusted to the required value based on
-# the size requests of the components. Otherwise, the height is
-# fixed.
-# ------------------------------------------------------------------
-configbody iwidgets::Selectionbox::height {
- #
- # The height option was added to the hull in the constructor.
- # So, any height value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-height) != 0} {
- set propagate 0
- } else {
- set propagate 1
- }
-
- #
- # Due to a bug in the tk4.2 grid, we have to check the
- # propagation before setting it. Setting it to the same
- # value it already is will cause it to toggle.
- #
- if {[grid propagate $itk_component(hull)] != $propagate} {
- grid propagate $itk_component(hull) $propagate
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Returns the path name of the child site widget.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::childsite {} {
- return $itk_component(sbchildsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Returns the current selection.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::get {} {
- return [$itk_component(selection) get]
-}
-
-# ------------------------------------------------------------------
-# METHOD: curselection
-#
-# Returns the current selection index.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::curselection {} {
- return [$itk_component(items) curselection]
-}
-
-# ------------------------------------------------------------------
-# METHOD: clear component
-#
-# Delete the contents of either the selection entry widget or items
-# list.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::clear {component} {
- switch $component {
- selection {
- $itk_component(selection) clear
- }
-
- items {
- delete 0 end
- }
-
- default {
- error "bad clear argument \"$component\": should be\
- selection or items"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert component index args
-#
-# Insert element(s) into either the selection or items list widget.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::insert {component index args} {
- switch $component {
- selection {
- eval $itk_component(selection) insert $index $args
- }
-
- items {
- eval $itk_component(items) insert $index $args
- }
-
- default {
- error "bad insert argument \"$component\": should be\
- selection or items"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete first ?last?
-#
-# Delete one or more elements from the items list box. The default
-# is to delete by indexed range. If an item is to be removed by name,
-# it must be preceeded by the keyword "item". Only index numbers can
-# be used to delete a range of items.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::delete {first {last {}}} {
- set first [index $first]
-
- if {$last != {}} {
- set last [index $last]
- } else {
- set last $first
- }
-
- if {$first <= $last} {
- eval $itk_component(items) delete $first $last
- } else {
- error "first index must not be greater than second"
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: size
-#
-# Returns a decimal string indicating the total number of elements
-# in the items list.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::size {} {
- return [$itk_component(items) size]
-}
-
-# ------------------------------------------------------------------
-# METHOD: scan option args
-#
-# Implements scanning on items list.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::scan {option args} {
- eval $itk_component(items) scan $option $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: nearest y
-#
-# Returns the index to the nearest listbox item given a y coordinate.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::nearest {y} {
- return [$itk_component(items) nearest $y]
-}
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Returns the decimal string giving the integer index corresponding
-# to index.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::index {index} {
- return [$itk_component(items) index $index]
-}
-
-# ------------------------------------------------------------------
-# METHOD: selection option args
-#
-# Adjusts the selection within the items list.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::selection {option args} {
- eval $itk_component(items) selection $option $args
-
- selectitem
-}
-
-# ------------------------------------------------------------------
-# METHOD: selectitem
-#
-# Replace the selection entry field contents with the currently
-# selected items value.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::selectitem {} {
- $itk_component(selection) clear
- set numSelected [$itk_component(items) selecteditemcount]
-
- if {$numSelected == 1} {
- $itk_component(selection) insert end \
- [$itk_component(items) getcurselection]
- } elseif {$numSelected > 1} {
- $itk_component(selection) insert end \
- [lindex [$itk_component(items) getcurselection] 0]
- }
-
- $itk_component(selection) icursor end
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _packComponents ?when?
-#
-# Pack the selection, items, and child site widgets based on options.
-# If "when" is "now", the change is applied immediately. If it is
-# "later" or it is not specified, then the change is applied later,
-# when the application is idle.
-# ------------------------------------------------------------------
-body iwidgets::Selectionbox::_packComponents {{when later}} {
- if {$when == "later"} {
- if {$_repacking == ""} {
- set _repacking [after idle [code $this _packComponents now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- set _repacking ""
-
- set parent [winfo parent $itk_component(sbchildsite)]
- set margin [winfo pixels $itk_component(hull) $itk_option(-margin)]
-
- switch $itk_option(-childsitepos) {
- n {
- grid $itk_component(sbchildsite) -row 0 -column 0 \
- -sticky nsew -rowspan 1
- grid $itk_component(items) -row 1 -column 0 -sticky nsew
- grid $itk_component(selection) -row 3 -column 0 -sticky ew
-
- grid rowconfigure $parent 0 -weight 0 -minsize 0
- grid rowconfigure $parent 1 -weight 1 -minsize 0
- grid rowconfigure $parent 2 -weight 0 -minsize $margin
- grid rowconfigure $parent 3 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize 0
- }
-
- w {
- grid $itk_component(sbchildsite) -row 0 -column 0 \
- -sticky nsew -rowspan 3
- grid $itk_component(items) -row 0 -column 1 -sticky nsew
- grid $itk_component(selection) -row 2 -column 1 -sticky ew
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize $margin
- grid rowconfigure $parent 2 -weight 0 -minsize 0
- grid rowconfigure $parent 3 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 0 -minsize 0
- grid columnconfigure $parent 1 -weight 1 -minsize 0
- }
-
- s {
- grid $itk_component(items) -row 0 -column 0 -sticky nsew
- grid $itk_component(selection) -row 2 -column 0 -sticky ew
- grid $itk_component(sbchildsite) -row 3 -column 0 \
- -sticky nsew -rowspan 1
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize $margin
- grid rowconfigure $parent 2 -weight 0 -minsize 0
- grid rowconfigure $parent 3 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize 0
- }
-
- e {
- grid $itk_component(items) -row 0 -column 0 -sticky nsew
- grid $itk_component(selection) -row 2 -column 0 -sticky ew
- grid $itk_component(sbchildsite) -row 0 -column 1 \
- -sticky nsew -rowspan 3
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize $margin
- grid rowconfigure $parent 2 -weight 0 -minsize 0
- grid rowconfigure $parent 3 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize 0
- }
-
- center {
- grid $itk_component(items) -row 0 -column 0 -sticky nsew
- grid $itk_component(sbchildsite) -row 1 -column 0 \
- -sticky nsew -rowspan 1
- grid $itk_component(selection) -row 3 -column 0 -sticky ew
-
- grid rowconfigure $parent 0 -weight 1 -minsize 0
- grid rowconfigure $parent 1 -weight 0 -minsize 0
- grid rowconfigure $parent 2 -weight 0 -minsize $margin
- grid rowconfigure $parent 3 -weight 0 -minsize 0
-
- grid columnconfigure $parent 0 -weight 1 -minsize 0
- grid columnconfigure $parent 1 -weight 0 -minsize 0
- }
-
- default {
- error "bad childsitepos option \"$itk_option(-childsitepos)\":\
- should be n, e, s, w, or center"
- }
- }
-
- if {$itk_option(-itemson)} {
- } else {
- grid forget $itk_component(items)
- }
-
- if {$itk_option(-selectionon)} {
- } else {
- grid forget $itk_component(selection)
- }
-
- raise $itk_component(sbchildsite)
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/selectiondialog.itk b/itcl/iwidgets3.0.0/generic/selectiondialog.itk
deleted file mode 100644
index d99e801feaf..00000000000
--- a/itcl/iwidgets3.0.0/generic/selectiondialog.itk
+++ /dev/null
@@ -1,233 +0,0 @@
-#
-# Selectiondialog
-# ----------------------------------------------------------------------
-# Implements a selection box similar to the OSF/Motif standard selection
-# dialog composite widget. The Selectiondialog is derived from the
-# Dialog class and is composed of a SelectionBox with attributes to
-# manipulate the dialog buttons.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.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 Selectiondialog {
- keep -activebackground -activerelief -background -borderwidth -cursor \
- -elementborderwidth -foreground -highlightcolor -highlightthickness \
- -insertbackground -insertborderwidth -insertofftime -insertontime \
- -insertwidth -jump -labelfont -modality -selectbackground \
- -selectborderwidth -selectforeground -textbackground -textfont \
- -troughcolor
-}
-
-# ------------------------------------------------------------------
-# SELECTIONDIALOG
-# ------------------------------------------------------------------
-class iwidgets::Selectiondialog {
- inherit iwidgets::Dialog
-
- constructor {args} {}
-
- public method childsite {}
- public method get {}
- public method curselection {}
- public method clear {component}
- public method insert {component index args}
- public method delete {first {last {}}}
- public method size {}
- public method scan {option args}
- public method nearest {y}
- public method index {index}
- public method selection {option args}
- public method selectitem {}
-}
-
-#
-# Provide a lowercased access method for the Selectiondialog class.
-#
-proc ::iwidgets::selectiondialog {pathName args} {
- uplevel ::iwidgets::Selectiondialog $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Selectiondialog.title "Selection Dialog" widgetDefault
-option add *Selectiondialog.master "." widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::constructor {args} {
- #
- # Set the borderwidth to zero.
- #
- component hull configure -borderwidth 0
-
- #
- # Instantiate a selection box widget.
- #
- itk_component add selectionbox {
- iwidgets::Selectionbox $itk_interior.selectionbox \
- -dblclickcommand [code $this invoke]
- } {
- usual
-
- keep -childsitepos -exportselection -itemscommand -itemslabel \
- -itemson -selectionlabel -selectionon -selectioncommand
- }
- configure -itemscommand [code $this selectitem]
-
- pack $itk_component(selectionbox) -fill both -expand yes
- set itk_interior [$itk_component(selectionbox) childsite]
-
- hide Help
-
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::childsite {} {
- return [$itk_component(selectionbox) childsite]
-}
-
-# ------------------------------------------------------------------
-# METHOD: get
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::get {} {
- return [$itk_component(selectionbox) get]
-}
-
-# ------------------------------------------------------------------
-# METHOD: curselection
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::curselection {} {
- return [$itk_component(selectionbox) curselection]
-}
-
-# ------------------------------------------------------------------
-# METHOD: clear component
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::clear {component} {
- $itk_component(selectionbox) clear $component
-
- return
-}
-
-# ------------------------------------------------------------------
-# METHOD: insert component index args
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::insert {component index args} {
- eval $itk_component(selectionbox) insert $component $index $args
-
- return
-}
-
-# ------------------------------------------------------------------
-# METHOD: delete first ?last?
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::delete {first {last {}}} {
- $itk_component(selectionbox) delete $first $last
-
- return
-}
-
-# ------------------------------------------------------------------
-# METHOD: size
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::size {} {
- return [$itk_component(selectionbox) size]
-}
-
-# ------------------------------------------------------------------
-# METHOD: scan option args
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::scan {option args} {
- return [eval $itk_component(selectionbox) scan $option $args]
-}
-
-# ------------------------------------------------------------------
-# METHOD: nearest y
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::nearest {y} {
- return [$itk_component(selectionbox) nearest $y]
-}
-
-# ------------------------------------------------------------------
-# METHOD: index index
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::index {index} {
- return [$itk_component(selectionbox) index $index]
-}
-
-# ------------------------------------------------------------------
-# METHOD: selection option args
-#
-# Thinwrapped method of selection box class.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::selection {option args} {
- eval $itk_component(selectionbox) selection $option $args
-}
-
-# ------------------------------------------------------------------
-# METHOD: selectitem
-#
-# Set the default button to ok and select the item.
-# ------------------------------------------------------------------
-body iwidgets::Selectiondialog::selectitem {} {
- default OK
- $itk_component(selectionbox) selectitem
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/shell.itk b/itcl/iwidgets3.0.0/generic/shell.itk
deleted file mode 100644
index 78ef19c53f9..00000000000
--- a/itcl/iwidgets3.0.0/generic/shell.itk
+++ /dev/null
@@ -1,371 +0,0 @@
-# Shell
-# ----------------------------------------------------------------------
-# This class is implements a shell which is a top level widget
-# giving a childsite and providing activate, deactivate, and center
-# methods.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts EMAIL: mulferts@austin.dsccc.com
-# Kris Raney EMAIL: kraney@spd.dsccc.com
-#
-# @(#) $Id$
-# ----------------------------------------------------------------------
-# Copyright (c) 1996 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 Shell {
- keep -background -cursor -modality
-}
-
-# ------------------------------------------------------------------
-# SHELL
-# ------------------------------------------------------------------
-class iwidgets::Shell {
- inherit itk::Toplevel
-
- constructor {args} {}
-
- itk_option define -master master Window ""
- itk_option define -modality modality Modality none
- itk_option define -padx padX Pad 0
- itk_option define -pady padY Pad 0
- itk_option define -width width Width 0
- itk_option define -height height Height 0
-
- public method childsite {}
- public method activate {}
- public method deactivate {args}
- public method center {{widget {}}}
-
- private variable _result {} ;# Resultant value for modal activation.
- private variable _busied {} ;# List of busied top level widgets.
-
- common grabstack {}
- common _wait
-}
-
-#
-# Provide a lowercased access method for the Shell class.
-#
-proc ::iwidgets::shell {pathName args} {
- uplevel ::iwidgets::Shell $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Shell::constructor {args} {
- itk_option add hull.width hull.height
-
- #
- # Maintain a withdrawn state until activated.
- #
- wm withdraw $itk_component(hull)
-
- #
- # Create the user child site
- #
- itk_component add -protected shellchildsite {
- frame $itk_interior.shellchildsite
- }
- pack $itk_component(shellchildsite) -fill both -expand yes
-
- #
- # Set the itk_interior variable to be the childsite for derived
- # classes.
- #
- set itk_interior $itk_component(shellchildsite)
-
- #
- # Bind the window manager delete protocol to deactivation of the
- # widget. This can be overridden by the user via the execution
- # of a similar command outside the class.
- #
- wm protocol $itk_component(hull) WM_DELETE_WINDOW [code $this deactivate]
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -master
-#
-# Specifies the master window for the shell. The window manager is
-# informed that the shell is a transient window whose master is
-# -masterwindow.
-# ------------------------------------------------------------------
-configbody iwidgets::Shell::master {}
-
-# ------------------------------------------------------------------
-# OPTION: -modality
-#
-# Specify the modality of the dialog.
-# ------------------------------------------------------------------
-configbody iwidgets::Shell::modality {
- switch $itk_option(-modality) {
- none -
- application -
- global {
- }
-
- default {
- error "bad modality option \"$itk_option(-modality)\":\
- should be none, application, or global"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -padx
-#
-# Specifies a padding distance for the childsite in the X-direction.
-# ------------------------------------------------------------------
-configbody iwidgets::Shell::padx {
- pack config $itk_component(shellchildsite) -padx $itk_option(-padx)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -pady
-#
-# Specifies a padding distance for the childsite in the Y-direction.
-# ------------------------------------------------------------------
-configbody iwidgets::Shell::pady {
- pack config $itk_component(shellchildsite) -pady $itk_option(-pady)
-}
-
-# ------------------------------------------------------------------
-# OPTION: -width
-#
-# Specifies the width of the shell. The value may be specified in
-# any of the forms acceptable to Tk_GetPixels. A value of zero
-# causes the width to be adjusted to the required value based on
-# the size requests of the components placed in the childsite.
-# Otherwise, the width is fixed.
-# ------------------------------------------------------------------
-configbody iwidgets::Shell::width {
- #
- # The width option was added to the hull in the constructor.
- # So, any width value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-width) != 0} {
- pack propagate $itk_component(hull) no
- } else {
- pack propagate $itk_component(hull) yes
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -height
-#
-# Specifies the height of the shell. The value may be specified in
-# any of the forms acceptable to Tk_GetPixels. A value of zero
-# causes the height to be adjusted to the required value based on
-# the size requests of the components placed in the childsite.
-# Otherwise, the height is fixed.
-# ------------------------------------------------------------------
-configbody iwidgets::Shell::height {
- #
- # The height option was added to the hull in the constructor.
- # So, any height value given is passed automatically to the
- # hull. All we have to do is play with the propagation.
- #
- if {$itk_option(-height) != 0} {
- pack propagate $itk_component(hull) no
- } else {
- pack propagate $itk_component(hull) yes
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: childsite
-#
-# Return the pathname of the user accessible area.
-# ------------------------------------------------------------------
-body iwidgets::Shell::childsite {} {
- return $itk_component(shellchildsite)
-}
-
-# ------------------------------------------------------------------
-# METHOD: activate
-#
-# Display the dialog and wait based on the modality. For application
-# and global modal activations, perform a grab operation, and wait
-# for the result. The result may be returned via an argument to the
-# "deactivate" method.
-# ------------------------------------------------------------------
-body iwidgets::Shell::activate {} {
-
- if {[winfo ismapped $itk_component(hull)]} {
- raise $itk_component(hull)
- return
- }
-
- if {($itk_option(-master) != {}) && \
- [winfo exists $itk_option(-master)]} {
- wm transient $itk_component(hull) $itk_option(-master)
- }
-
- set _wait($this) 0
- raise $itk_component(hull)
- wm deiconify $itk_component(hull)
- tkwait visibility $itk_component(hull)
-
- if {$itk_option(-modality) == "application"} {
- if {$grabstack != {}} {
- grab release [lindex $grabstack end]
- }
-
- set err 1
- while {$err == 1} {
- set err [catch [list grab $itk_component(hull)]]
- if {$err == 1} {
- after 1000
- }
- }
-
- lappend grabstack [list grab $itk_component(hull)]
-
- tkwait variable [scope _wait($this)]
- return $_result
-
- } elseif {$itk_option(-modality) == "global" } {
- if {$grabstack != {}} {
- grab release [lindex $grabstack end]
- }
-
- set err 1
- while {$err == 1} {
- set err [catch [list grab -global $itk_component(hull)]]
- if {$err == 1} {
- after 1000
- }
- }
-
- lappend grabstack [list grab -global $itk_component(hull)]
-
- tkwait variable [scope _wait($this)]
- return $_result
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: deactivate
-#
-# Deactivate the display of the dialog. The method takes an optional
-# argument to passed to the "activate" method which returns the value.
-# This is only effective for application and global modal dialogs.
-# ------------------------------------------------------------------
-body iwidgets::Shell::deactivate {args} {
-
- if {! [winfo ismapped $itk_component(hull)]} {
- return
- }
-
- if {$itk_option(-modality) == "none"} {
- wm withdraw $itk_component(hull)
- } elseif {$itk_option(-modality) == "application"} {
- grab release $itk_component(hull)
- if {$grabstack != {}} {
- if {[set grabstack [lreplace $grabstack end end]] != {}} {
- eval [lindex $grabstack end]
- }
- }
-
- wm withdraw $itk_component(hull)
-
- } elseif {$itk_option(-modality) == "global"} {
- grab release $itk_component(hull)
- if {$grabstack != {}} {
- if {[set grabstack [lreplace $grabstack end end]] != {}} {
- eval [lindex $grabstack end]
- }
- }
-
- wm withdraw $itk_component(hull)
- }
-
- if {[llength $args]} {
- set _result $args
- } else {
- set _result {}
- }
-
- set _wait($this) 1
- return
-}
-
-# ------------------------------------------------------------------
-# METHOD: center
-#
-# Centers the dialog with respect to another widget or the screen
-# as a whole.
-# ------------------------------------------------------------------
-body iwidgets::Shell::center {{widget {}}} {
- update idletasks
-
- set hull $itk_component(hull)
- set w [winfo reqwidth $hull]
- set h [winfo reqheight $hull]
- set sh [winfo screenheight $hull] ;# display screen's height/width
- set sw [winfo screenwidth $hull]
-
- #
- # User can request it centered with respect to root by passing in '{}'
- #
- if { $widget == "" } {
- set reqX [expr {($sw-$w)/2}]
- set reqY [expr {($sh-$h)/2}]
- } else {
- set wfudge 5 ;# wm width fudge factor
- set hfudge 20 ;# wm height fudge factor
- set widgetW [winfo width $widget]
- set widgetH [winfo height $widget]
- set reqX [expr [winfo rootx $widget]+($widgetW-($widgetW/2))-($w/2)]
- set reqY [expr [winfo rooty $widget]+($widgetH-($widgetH/2))-($h/2)]
-
- #
- # Adjust for errors - if too long or too tall
- #
- if { [expr $reqX+$w+$wfudge] > $sw } { set reqX [expr $sw-$w-$wfudge] }
- if { $reqX < $wfudge } { set reqX $wfudge }
- if { [expr $reqY+$h+$hfudge] > $sh } { set reqY [expr $sh-$h-$hfudge] }
- if { $reqY < $hfudge } { set reqY $hfudge }
- }
-
- wm geometry $hull +$reqX+$reqY
-}
-
diff --git a/itcl/iwidgets3.0.0/generic/spindate.itk b/itcl/iwidgets3.0.0/generic/spindate.itk
deleted file mode 100644
index 215c031b0b8..00000000000
--- a/itcl/iwidgets3.0.0/generic/spindate.itk
+++ /dev/null
@@ -1,692 +0,0 @@
-# Spindate
-# ----------------------------------------------------------------------
-# Implements a Date spinner widget. A date spinner contains three
-# Spinner widgets: one Spinner for months, one SpinInt for days,
-# and one SpinInt for years. Months can be specified as abbreviated
-# strings, integers or a user-defined list. Options exist to manage to
-# behavior, appearance, and format of each component spinner.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Sue Yockey EMAIL: yockey@actc.com
-# Mark L. Ulferts mulferts@austin.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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Spindate.monthLabel "Month" widgetDefault
-option add *Spindate.dayLabel "Day" widgetDefault
-option add *Spindate.yearLabel "Year" widgetDefault
-option add *Spindate.monthWidth 4 widgetDefault
-option add *Spindate.dayWidth 4 widgetDefault
-option add *Spindate.yearWidth 4 widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Spindate {
- keep -background -cursor -foreground -labelfont -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# SPINDATE
-# ------------------------------------------------------------------
-class iwidgets::Spindate {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -labelpos labelPos Position w
- itk_option define -orient orient Orient vertical
- itk_option define -monthon monthOn MonthOn true
- itk_option define -dayon dayOn DayOn true
- itk_option define -yearon yearOn YearOn true
- itk_option define -datemargin dateMargin Margin 1
- itk_option define -yeardigits yearDigits YearDigits 4
- itk_option define -monthformat monthFormat MonthFormat integer
-
- public {
- method get {{format "-string"}}
- method show {{date now}}
- }
-
- protected {
- method _packDate {{when later}}
- variable _repack {} ;# Reconfiguration flag.
- }
-
- private {
- method _lastDay {month year}
- method _spinMonth {direction}
- method _spinDay {direction}
-
- variable _monthFormatStr "%m"
- variable _yearFormatStr "%Y"
- variable _interior
- }
-}
-
-#
-# Provide a lowercased access method for the Spindate class.
-#
-proc ::iwidgets::spindate {pathName args} {
- uplevel ::iwidgets::Spindate $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Spindate::constructor {args} {
- set _interior $itk_interior
-
- set clicks [clock seconds]
-
- #
- # Create Month Spinner
- #
- itk_component add month {
- iwidgets::Spinner $itk_interior.month -fixed 2 -justify right \
- -decrement [code $this _spinMonth -1] \
- -increment [code $this _spinMonth 1]
- } {
- keep -background -cursor -arroworient -foreground \
- -labelfont -labelmargin -relief -textbackground \
- -textfont -repeatdelay -repeatinterval
-
- rename -labeltext -monthlabel monthLabel Text
- rename -width -monthwidth monthWidth Width
- }
-
- #
- # Take off the default bindings for selction and motion.
- #
- bind [$itk_component(month) component entry] <1> {break}
- bind [$itk_component(month) component entry] <Button1-Motion> {break}
-
- #
- # Create Day Spinner
- #
- itk_component add day {
- iwidgets::Spinint $itk_interior.day -fixed 2 -justify right \
- -decrement [code $this _spinDay -1] \
- -increment [code $this _spinDay 1]
- } {
- keep -background -cursor -arroworient -foreground \
- -labelfont -labelmargin -relief -textbackground \
- -textfont -repeatdelay -repeatinterval
-
- rename -labeltext -daylabel dayLabel Text
- rename -width -daywidth dayWidth Width
- }
-
- #
- # Take off the default bindings for selction and motion.
- #
- bind [$itk_component(day) component entry] <1> {break}
- bind [$itk_component(day) component entry] <Button1-Motion> {break}
-
- #
- # Create Year Spinner
- #
- itk_component add year {
- iwidgets::Spinint $itk_interior.year -fixed 2 -justify right \
- -range {1900 3000}
- } {
- keep -background -cursor -arroworient -foreground \
- -labelfont -labelmargin -relief -textbackground \
- -textfont -repeatdelay -repeatinterval
-
- rename -labeltext -yearlabel yearLabel Text
- rename -width -yearwidth yearWidth Width
- }
-
- #
- # Take off the default bindings for selction and motion.
- #
- bind [$itk_component(year) component entry] <1> {break}
- bind [$itk_component(year) component entry] <Button1-Motion> {break}
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-
- #
- # Show the current date.
- #
- show now
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Spindate::destructor {} {
- if {$_repack != ""} {after cancel $_repack}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -labelpos
-#
-# Specifies the location of all 3 spinners' labels.
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::labelpos {
- switch $itk_option(-labelpos) {
- n {
- $itk_component(month) configure -labelpos n
- $itk_component(day) configure -labelpos n
- $itk_component(year) configure -labelpos n
-
- #
- # Un-align labels
- #
- $itk_component(month) configure -labelmargin 1
- $itk_component(day) configure -labelmargin 1
- $itk_component(year) configure -labelmargin 1
- }
-
- s {
- $itk_component(month) configure -labelpos s
- $itk_component(day) configure -labelpos s
- $itk_component(year) configure -labelpos s
-
- #
- # Un-align labels
- #
- $itk_component(month) configure -labelmargin 1
- $itk_component(day) configure -labelmargin 1
- $itk_component(year) configure -labelmargin 1
- }
-
- w {
- $itk_component(month) configure -labelpos w
- $itk_component(day) configure -labelpos w
- $itk_component(year) configure -labelpos w
- }
-
- e {
- $itk_component(month) configure -labelpos e
- $itk_component(day) configure -labelpos e
- $itk_component(year) configure -labelpos e
-
- #
- # Un-align labels
- #
- $itk_component(month) configure -labelmargin 1
- $itk_component(day) configure -labelmargin 1
- $itk_component(year) configure -labelmargin 1
- }
-
- default {
- error "bad labelpos option \"$itk_option(-labelpos)\",\
- should be n, s, w or e"
- }
- }
-
- _packDate
-}
-
-# ------------------------------------------------------------------
-# OPTION: -orient
-#
-# Specifies the orientation of the 3 spinners for Month, Day
-# and year.
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::orient {
- _packDate
-}
-
-# ------------------------------------------------------------------
-# OPTION: -monthon
-#
-# Specifies whether or not to display the month spinner.
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::monthon {
- _packDate
-}
-
-# ------------------------------------------------------------------
-# OPTION: -dayon
-#
-# Specifies whether or not to display the day spinner.
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::dayon {
- _packDate
-}
-
-# ------------------------------------------------------------------
-# OPTION: -yearon
-#
-# Specifies whether or not to display the year spinner.
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::yearon {
- _packDate
-}
-
-# ------------------------------------------------------------------
-# OPTION: -datemargin
-#
-# Specifies the margin space between the month and day spinners
-# and the day and year spinners.
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::datemargin {
- _packDate
-}
-
-# ------------------------------------------------------------------
-# OPTION: -yeardigits
-#
-# Number of digits for year display, 2 or 4
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::yeardigits {
- set clicks [clock seconds]
-
- switch $itk_option(-yeardigits) {
- "2" {
- $itk_component(year) configure -width 2 -fixed 2
- $itk_component(year) clear
- $itk_component(year) insert 0 [clock format $clicks -format "%y"]
- set _yearFormatStr "%y"
- }
-
- "4" {
- $itk_component(year) configure -width 4 -fixed 4
- $itk_component(year) clear
- $itk_component(year) insert 0 [clock format $clicks -format "%Y"]
- set _yearFormatStr "%Y"
- }
-
- default {
- error "bad yeardigits option \"$itk_option(-yeardigits)\",\
- should be 2 or 4"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -monthformat
-#
-# Format of month display, integers (1-12) or brief strings (Jan -
-# Dec), or full strings (January - December).
-# ------------------------------------------------------------------
-configbody iwidgets::Spindate::monthformat {
- set clicks [clock seconds]
-
- if {$itk_option(-monthformat) == "brief"} {
- $itk_component(month) configure -width 3 -fixed 3
- $itk_component(month) delete 0 end
- $itk_component(month) insert 0 [clock format $clicks -format "%b"]
- set _monthFormatStr "%b"
-
- } elseif {$itk_option(-monthformat) == "full"} {
- $itk_component(month) configure -width 9 -fixed 9
- $itk_component(month) delete 0 end
- $itk_component(month) insert 0 [clock format $clicks -format "%B"]
- set _monthFormatStr "%B"
-
- } elseif {$itk_option(-monthformat) == "integer"} {
- $itk_component(month) configure -width 2 -fixed 2
- $itk_component(month) delete 0 end
- $itk_component(month) insert 0 [clock format $clicks -format "%m"]
- set _monthFormatStr "%m"
-
- } else {
- error "bad monthformat option\
- \"$itk_option(-monthformat)\", should be\
- \"integer\", \"brief\" or \"full\""
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: get ?format?
-#
-# Return the current contents of the spindate widget in one of
-# two formats string or as an integer clock value using the -string
-# and -clicks options respectively. The default is by string.
-# Reference the clock command for more information on obtaining dates
-# and their formats.
-# ------------------------------------------------------------------
-body iwidgets::Spindate::get {{format "-string"}} {
- set month [$itk_component(month) get]
- set day [$itk_component(day) get]
- set year [$itk_component(year) get]
-
- if {[regexp {[0-9]+} $month]} {
- set datestr "$month/$day/$year"
- } else {
- set datestr "$day $month $year"
- }
-
- switch -- $format {
- "-string" {
- return $datestr
- }
- "-clicks" {
- return [clock scan $datestr]
- }
- default {
- error "bad format option \"$format\":\
- should be -string or -clicks"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: show date
-#
-# Changes the currently displayed date to be that of the date
-# argument. The date may be specified either as a string or an
-# integer clock value. Reference the clock command for more
-# information on obtaining dates and their formats.
-# ------------------------------------------------------------------
-body iwidgets::Spindate::show {{date "now"}} {
- #
- # Convert the date to a clock clicks value.
- #
- if {$date == "now"} {
- set seconds [clock seconds]
- } else {
- if {[catch {clock format $date}] == 0} {
- set seconds $date
- } elseif {[catch {set seconds [clock scan $date]}] != 0} {
- error "bad date: \"$date\", must be a valid date\
- string, clock clicks value or the keyword now"
- }
- }
-
- #
- # Display the month based on the -monthformat option.
- #
- switch $itk_option(-monthformat) {
- "brief" {
- $itk_component(month) delete 0 end
- $itk_component(month) insert 0 [clock format $seconds -format "%b"]
- }
- "full" {
- $itk_component(month) delete 0 end
- $itk_component(month) insert 0 [clock format $seconds -format "%B"]
- }
- "integer" {
- $itk_component(month) delete 0 end
- $itk_component(month) insert 0 [clock format $seconds -format "%m"]
- }
- }
-
- #
- # Display the day.
- #
- $itk_component(day) delete 0 end
- $itk_component(day) insert end [clock format $seconds -format "%d"]
-
- #
- # Display the year based on the -yeardigits option.
- #
- switch $itk_option(-yeardigits) {
- "2" {
- $itk_component(year) delete 0 end
- $itk_component(year) insert 0 [clock format $seconds -format "%y"]
- }
-
- "4" {
- $itk_component(year) delete 0 end
- $itk_component(year) insert 0 [clock format $seconds -format "%Y"]
- }
- }
-
- return
-}
-
-# ----------------------------------------------------------------
-# PRIVATE METHOD: _spinMonth direction
-#
-# Increment or decrement month value. We need to get the values
-# for all three fields so we can make sure the day agrees with
-# the month. Should the current day be greater than the day for
-# the spun month, then the day is set to the last day for the
-# new month.
-# ----------------------------------------------------------------
-body iwidgets::Spindate::_spinMonth {direction} {
- set month [$itk_component(month) get]
- set day [$itk_component(day) get]
- set year [$itk_component(year) get]
-
- #
- # There appears to be a bug in the Tcl clock command in that it
- # can't scan a date like "12/31/1999 1 month" or any other date with
- # a year above 2000, but it has no problem scanning "07/01/1998 1 month".
- # So, we're going to play a game and increment by days until this
- # is fixed in Tcl.
- #
- if {$direction == 1} {
- set incrdays 32
- set day 01
- } else {
- set incrdays -28
- set day 28
- }
-
- if {[regexp {[0-9]+} $month]} {
- set clicks [clock scan "$month/$day/$year $incrdays day"]
- } else {
- set clicks [clock scan "$day $month $year $incrdays day"]
- }
-
- $itk_component(month) clear
- $itk_component(month) insert 0 \
- [clock format $clicks -format $_monthFormatStr]
-
- set lastday [_lastDay [$itk_component(month) get] $year]
-
- if {$day > $lastday} {
- $itk_component(day) clear
- $itk_component(day) insert end $lastday
- }
-}
-
-# ----------------------------------------------------------------
-# PRIVATE METHOD: _spinDay direction
-#
-# Increment or decrement day value. If the previous day was the
-# first, then set the new day to the last day for the current
-# month. If it was the last day of the month, change it to the
-# first. Otherwise, spin it to the next day.
-# ----------------------------------------------------------------
-body iwidgets::Spindate::_spinDay {direction} {
- set month [$itk_component(month) get]
- set day [$itk_component(day) get]
- set year [$itk_component(year) get]
- set lastday [_lastDay $month $year]
- set currclicks [get -clicks]
-
- $itk_component(day) delete 0 end
-
- if {(($day == "01") || ($day == "1")) && ($direction == -1)} {
- $itk_component(day) insert 0 $lastday
- return
- }
-
- if {($day == $lastday) && ($direction == 1)} {
- $itk_component(day) insert 0 "01"
- return
- }
-
- set clicks [clock scan "$direction day" -base $currclicks]
- $itk_component(day) insert 0 [clock format $clicks -format "%d"]
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _packDate when
-#
-# Pack the components of the date spinner. If "when" is "now", the
-# change is applied immediately. If it is "later" or it is not
-# specified, then the change is applied later, when the application
-# is idle.
-# ------------------------------------------------------------------
-body iwidgets::Spindate::_packDate {{when later}} {
- if {$when == "later"} {
- if {$_repack == ""} {
- set _repack [after idle [code $this _packDate now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- #
- # Turn off the minsizes for all the rows and columns.
- #
- for {set i 0} {$i < 5} {incr i} {
- grid rowconfigure $_interior $i -minsize 0
- grid columnconfigure $_interior $i -minsize 0
- }
-
- set _repack ""
-
- #
- # Based on the orientation, use the grid to place the components into
- # the proper rows and columns.
- #
- switch $itk_option(-orient) {
- vertical {
- set row -1
-
- if {$itk_option(-monthon)} {
- grid $itk_component(month) -row [incr row] -column 0 \
- -sticky nsew
- } else {
- grid forget $itk_component(month)
- }
-
- if {$itk_option(-dayon)} {
- if {$itk_option(-dayon)} {
- grid rowconfigure $_interior [incr row] \
- -minsize $itk_option(-datemargin)
- }
-
- grid $itk_component(day) -row [incr row] -column 0 \
- -sticky nsew
- } else {
- grid forget $itk_component(day)
- }
-
- if {$itk_option(-yearon)} {
- if {$itk_option(-monthon) || $itk_option(-dayon)} {
- grid rowconfigure $_interior [incr row] \
- -minsize $itk_option(-datemargin)
- }
-
- grid $itk_component(year) -row [incr row] -column 0 \
- -sticky nsew
- } else {
- grid forget $itk_component(year)
- }
-
- if {$itk_option(-labelpos) == "w"} {
- iwidgets::Labeledwidget::alignlabels $itk_component(month) \
- $itk_component(day) $itk_component(year)
- }
- }
-
- horizontal {
- set column -1
-
- if {$itk_option(-monthon)} {
- grid $itk_component(month) -row 0 -column [incr column] \
- -sticky nsew
- } else {
- grid forget $itk_component(month)
- }
-
- if {$itk_option(-dayon)} {
- if {$itk_option(-monthon)} {
- grid columnconfigure $_interior [incr column] \
- -minsize $itk_option(-datemargin)
- }
-
- grid $itk_component(day) -row 0 -column [incr column] \
- -sticky nsew
- } else {
- grid forget $itk_component(day)
- }
-
- if {$itk_option(-yearon)} {
- if {$itk_option(-monthon) || $itk_option(-dayon)} {
- grid columnconfigure $_interior [incr column] \
- -minsize $itk_option(-datemargin)
- }
-
- grid $itk_component(year) -row 0 -column [incr column] \
- -sticky nsew
- } else {
- grid forget $itk_component(year)
- }
-
- #
- # Un-align labels.
- #
- $itk_component(month) configure -labelmargin 1
- $itk_component(day) configure -labelmargin 1
- $itk_component(year) configure -labelmargin 1
- }
-
- default {
- error "bad orient option \"$itk_option(-orient)\", should\
- be \"vertical\" or \"horizontal\""
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _lastDay month year
-#
-# Internal method which determines the last day of the month for
-# the given month and year. We start at 28 and go forward till
-# we fail. Crude but effective.
-# ------------------------------------------------------------------
-body iwidgets::Spindate::_lastDay {month year} {
- set lastone 28
-
- for {set lastone 28} {$lastone < 32} {incr lastone} {
- if {[regexp {[0-9]+} $month]} {
- if {[catch {clock scan "$month/[expr $lastone + 1]/$year"}] != 0} {
- return $lastone
- }
- } else {
- if {[catch {clock scan "[expr $lastone + 1] $month $year"}] != 0} {
- return $lastone
- }
- }
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/spinint.itk b/itcl/iwidgets3.0.0/generic/spinint.itk
deleted file mode 100644
index 9dc819ce999..00000000000
--- a/itcl/iwidgets3.0.0/generic/spinint.itk
+++ /dev/null
@@ -1,237 +0,0 @@
-# Spinint
-# ----------------------------------------------------------------------
-# Implements an integer spinner widget. It inherits basic spinner
-# functionality from Spinner and adds specific features to create
-# an integer-only spinner.
-# Arrows may be placed horizontally or vertically.
-# User may specify an integer range and step value.
-# Spinner may be configured to wrap when min or max value is reached.
-#
-# NOTE:
-# Spinint integer values should not exceed the size of a long integer.
-# For a 32 bit long the integer range is -2147483648 to 2147483647.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Sue Yockey Phone: (214) 519-2517
-# E-mail: syockey@spd.dsccc.com
-# yockey@acm.org
-#
-# @(#) $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 Spinint {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -labelfont \
- -selectbackground -selectborderwidth -selectforeground \
- -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# SPININT
-# ------------------------------------------------------------------
-class iwidgets::Spinint {
- inherit iwidgets::Spinner
-
- constructor {args} {
- Spinner::constructor -validate numeric
- } {}
-
- itk_option define -range range Range ""
- itk_option define -step step Step 1
- itk_option define -wrap wrap Wrap true
-
- public method up {}
- public method down {}
-}
-
-#
-# Provide a lowercased access method for the Spinint class.
-#
-proc ::iwidgets::spinint {pathName args} {
- uplevel ::iwidgets::Spinint $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Spinint::constructor {args} {
- eval itk_initialize $args
-
- $itk_component(entry) delete 0 end
-
- if {[lindex $itk_option(-range) 0] == ""} {
- $itk_component(entry) insert 0 "0"
- } else {
- $itk_component(entry) insert 0 [lindex $itk_option(-range) 0]
- }
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -range
-#
-# Set min and max values for spinner.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinint::range {
- if {$itk_option(-range) != ""} {
- if {[llength $itk_option(-range)] != 2} {
- error "wrong # args: should be\
- \"$itk_component(hull) configure -range {begin end}\""
- }
-
- set min [lindex $itk_option(-range) 0]
- set max [lindex $itk_option(-range) 1]
-
- if {![regexp {^-?[0-9]+$} $min]} {
- error "bad range option \"$min\": begin value must be\
- an integer"
- }
- if {![regexp {^-?[0-9]+$} $max]} {
- error "bad range option \"$max\": end value must be\
- an integer"
- }
- if {$min > $max} {
- error "bad option starting range \"$min\": must be less\
- than ending: \"$max\""
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -step
-#
-# Increment spinner by step value.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinint::step {
-}
-
-# ------------------------------------------------------------------
-# OPTION: -wrap
-#
-# Specify whether spinner should wrap value if at min or max.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinint::wrap {
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: up
-#
-# Up arrow button press event. Increment value in entry.
-# ------------------------------------------------------------------
-body iwidgets::Spinint::up {} {
- set min_range [lindex $itk_option(-range) 0]
- set max_range [lindex $itk_option(-range) 1]
-
- set val [$itk_component(entry) get]
- if {[lindex $itk_option(-range) 0] != ""} {
-
- #
- # Check boundaries.
- #
- if {$val >= $min_range && $val < $max_range} {
- incr val $itk_option(-step)
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $val
- } else {
- if {$itk_option(-wrap)} {
- if {$val >= $max_range} {
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $min_range
- } elseif {$val < $min_range} {
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $min_range
- } else {
- uplevel #0 $itk_option(-invalid)
- }
- } else {
- uplevel #0 $itk_option(-invalid)
- }
- }
- } else {
-
- #
- # No boundaries.
- #
- incr val $itk_option(-step)
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $val
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: down
-#
-# Down arrow button press event. Decrement value in entry.
-# ------------------------------------------------------------------
-body iwidgets::Spinint::down {} {
- set min_range [lindex $itk_option(-range) 0]
- set max_range [lindex $itk_option(-range) 1]
-
- set val [$itk_component(entry) get]
- if {[lindex $itk_option(-range) 0] != ""} {
-
- #
- # Check boundaries.
- #
- if {$val > $min_range && $val <= $max_range} {
- incr val -$itk_option(-step)
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $val
- } else {
- if {$itk_option(-wrap)} {
- if {$val <= $min_range} {
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $max_range
- } elseif {$val > $max_range} {
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $max_range
- } else {
- uplevel #0 $itk_option(-invalid)
- }
- } else {
- uplevel #0 $itk_option(-invalid)
- }
- }
- } else {
-
- #
- # No boundaries.
- #
- incr val -$itk_option(-step)
- $itk_component(entry) delete 0 end
- $itk_component(entry) insert 0 $val
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/spinner.itk b/itcl/iwidgets3.0.0/generic/spinner.itk
deleted file mode 100644
index 2072a794ca4..00000000000
--- a/itcl/iwidgets3.0.0/generic/spinner.itk
+++ /dev/null
@@ -1,448 +0,0 @@
-# Spinner
-# ----------------------------------------------------------------------
-# Implements a spinner widget. The Spinner is comprised of an
-# EntryField plus up and down arrow buttons.
-# Spinner is meant to be used as a base class for creating more
-# specific spinners such as SpinInt.itk
-# Arrows may be drawn horizontally or vertically.
-# User may define arrow behavior or accept the default arrow behavior.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Sue Yockey Phone: (214) 519-2517
-# E-mail: syockey@spd.dsccc.com
-# yockey@acm.org
-#
-# @(#) $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 Spinner {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -insertbackground -insertborderwidth \
- -insertofftime -insertontime -insertwidth -labelfont \
- -selectbackground -selectborderwidth -selectforeground \
- -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# SPINNER
-# ------------------------------------------------------------------
-class iwidgets::Spinner {
- inherit iwidgets::Entryfield
-
- constructor {args} {}
- destructor {}
-
- itk_option define -arroworient arrowOrient Orient vertical
- itk_option define -textfont textFont \
- Font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*
- itk_option define -borderwidth borderWidth BorderWidth 2
- itk_option define -highlightthickness highlightThickness \
- HighlightThickness 2
- itk_option define -increment increment Command {}
- itk_option define -decrement decrement Command {}
- itk_option define -repeatdelay repeatDelay RepeatDelay 300
- itk_option define -repeatinterval repeatInterval RepeatInterval 100
- itk_option define -foreground foreground Foreground black
-
- public method down {}
- public method up {}
-
- protected method _pushup {}
- protected method _pushdown {}
- protected method _relup {}
- protected method _reldown {}
- protected method _doup {rate}
- protected method _dodown {rate}
- protected method _up {}
- protected method _down {}
-
- protected method _positionArrows {{when later}}
-
- protected variable _interior {}
- protected variable _reposition "" ;# non-null => _positionArrows pending
- protected variable _uptimer "" ;# non-null => _uptimer pending
- protected variable _downtimer "" ;# non-null => _downtimer pending
-}
-
-#
-# Provide a lowercased access method for the Spinner class.
-#
-proc ::iwidgets::spinner {pathName args} {
- uplevel ::iwidgets::Spinner $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Spinner::constructor {args} {
- #
- # Save off the interior for later use.
- #
- set _interior $itk_interior
-
- #
- # Create up arrow button.
- #
- itk_component add uparrow {
- canvas $itk_interior.uparrow -height 10 -width 10 \
- -relief raised -highlightthickness 0
- } {
- keep -background -borderwidth
- }
-
- #
- # Create down arrow button.
- #
- itk_component add downarrow {
- canvas $itk_interior.downarrow -height 10 -width 10 \
- -relief raised -highlightthickness 0
- } {
- keep -background -borderwidth
- }
-
- #
- # Add bindings for button press events on the up and down buttons.
- #
- bind $itk_component(uparrow) <ButtonPress-1> [code $this _pushup]
- bind $itk_component(uparrow) <ButtonRelease-1> [code $this _relup]
-
- bind $itk_component(downarrow) <ButtonPress-1> [code $this _pushdown]
- bind $itk_component(downarrow) <ButtonRelease-1> [code $this _reldown]
-
- eval itk_initialize $args
-
- #
- # When idle, position the arrows.
- #
- _positionArrows
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-
-body iwidgets::Spinner::destructor {} {
- if {$_reposition != ""} {after cancel $_reposition}
- if {$_uptimer != ""} {after cancel $_uptimer}
- if {$_downtimer != ""} {after cancel $_downtimer}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -arroworient
-#
-# Place arrows vertically or horizontally .
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::arroworient {
- _positionArrows
-}
-
-# ------------------------------------------------------------------
-# OPTION: -textfont
-#
-# Change font, resize arrow buttons.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::textfont {
- _positionArrows
-}
-
-# ------------------------------------------------------------------
-# OPTION: -highlightthickness
-#
-# Change highlightthickness, resize arrow buttons.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::highlightthickness {
- _positionArrows
-}
-
-# ------------------------------------------------------------------
-# OPTION: -borderwidth
-#
-# Change borderwidth, resize arrow buttons.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::borderwidth {
- _positionArrows
-}
-
-# ------------------------------------------------------------------
-# OPTION: -increment
-#
-# Up arrow callback.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::increment {
- if {$itk_option(-increment) == {}} {
- set itk_option(-increment) [code $this up]
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -decrement
-#
-# Down arrow callback.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::decrement {
- if {$itk_option(-decrement) == {}} {
- set itk_option(-decrement) [code $this down]
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -repeatinterval
-#
-# Arrow repeat rate in milliseconds. A repeatinterval of 0 disables
-# button repeat.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::repeatinterval {
- if {$itk_option(-repeatinterval) < 0} {
- set itk_option(-repeatinterval) 0
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -repeatdelay
-#
-# Arrow repeat delay in milliseconds.
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::repeatdelay {
- if {$itk_option(-repeatdelay) < 0} {
- set itk_option(-repeatdelay) 0
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -foreground
-#
-# Set the foreground color of the up and down arrows. Remember
-# to make sure the "tag" exists before setting them...
-# ------------------------------------------------------------------
-configbody iwidgets::Spinner::foreground {
-
- if { [$itk_component(uparrow) gettags up] != "" } {
- $itk_component(uparrow) itemconfigure up \
- -fill $itk_option(-foreground)
- }
-
- if { [$itk_component(downarrow) gettags down] != "" } {
- $itk_component(downarrow) itemconfigure down \
- -fill $itk_option(-foreground)
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: up
-#
-# Up arrow command. Meant to be overloaded by derived class.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::up {} {
-}
-
-# ------------------------------------------------------------------
-# METHOD: down
-#
-# Down arrow command. Meant to be overloaded by derived class.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::down {} {
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _positionArrows ?when?
-#
-# Draw Arrows for spinner. If "when" is "now", the change is applied
-# immediately. If it is "later" or it is not specified, then the
-# change is applied later, when the application is idle.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_positionArrows {{when later}} {
- if {$when == "later"} {
- if {$_reposition == ""} {
- set _reposition [after idle [code $this _positionArrows now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- set _reposition ""
-
- set bdw [cget -borderwidth]
-
- #
- # Based on the orientation of the arrows, pack them accordingly and
- # determine the width and height of the spinners. For vertical
- # orientation, it is really tight in the y direction, so we'll take
- # advantage of the highlightthickness. Horizontal alignment has
- # plenty of space vertically, thus we'll ignore the thickness.
- #
- switch $itk_option(-arroworient) {
- vertical {
- grid $itk_component(uparrow) -row 0 -column 0
- grid $itk_component(downarrow) -row 1 -column 0
-
- set totalHgt [winfo reqheight $itk_component(entry)]
- set spinHgt [expr $totalHgt / 2]
- set spinWid [expr round ($spinHgt * 1.6)]
- }
- horizontal {
- grid $itk_component(uparrow) -row 0 -column 0
- grid $itk_component(downarrow) -row 0 -column 1
-
- set spinHgt [expr [winfo reqheight $itk_component(entry)] - \
- (2 * [$itk_component(entry) cget -highlightthickness])]
- set spinWid $spinHgt
- }
- default {
- error "bad orientation option \"$itk_option(-arroworient)\",\
- should be horizontal or vertical"
- }
- }
-
- #
- # Configure the width and height of the spinners minus the borderwidth.
- # Next delete the previous spinner polygons and create new ones.
- #
- $itk_component(uparrow) config \
- -height [expr $spinHgt - (2 * $bdw)] \
- -width [expr $spinWid - (2 * $bdw)]
- $itk_component(uparrow) delete up
- $itk_component(uparrow) create polygon \
- [expr $spinWid / 2] $bdw \
- [expr $spinWid - $bdw - 1] [expr $spinHgt - $bdw -1] \
- [expr $bdw + 1] [expr $spinHgt - $bdw - 1] \
- -fill $itk_option(-foreground) -tags up
-
- $itk_component(downarrow) config \
- -height [expr $spinHgt - (2 * $bdw)] \
- -width [expr $spinWid - (2 * $bdw)]
- $itk_component(downarrow) delete down
- $itk_component(downarrow) create polygon \
- [expr $spinWid / 2] [expr ($spinHgt - $bdw) - 1] \
- [expr $bdw + 2] [expr $bdw + 1] \
- [expr $spinWid - $bdw - 2] [expr $bdw + 1] \
- -fill $itk_option(-foreground) -tags down
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _pushup
-#
-# Up arrow button press event. Call _doup with repeatdelay.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_pushup {} {
- $itk_component(uparrow) config -relief sunken
- _doup $itk_option(-repeatdelay)
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _pushdown
-#
-# Down arrow button press event. Call _dodown with repeatdelay.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_pushdown {} {
- $itk_component(downarrow) config -relief sunken
- _dodown $itk_option(-repeatdelay)
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _doup
-#
-# Call _up and post to do another one after "rate" milliseconds if
-# repeatinterval > 0.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_doup {rate} {
- _up
-
- if {$itk_option(-repeatinterval) > 0} {
- set _uptimer [after $rate [code $this _doup $itk_option(-repeatinterval)]]
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _dodown
-#
-# Call _down and post to do another one after "rate" milliseconds if
-# repeatinterval > 0.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_dodown {rate} {
- _down
-
- if {$itk_option(-repeatinterval) > 0} {
- set _downtimer \
- [after $rate [code $this _dodown $itk_option(-repeatinterval)]]
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _relup
-#
-# Up arrow button release event. Cancel pending up timer.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_relup {} {
- $itk_component(uparrow) config -relief raised
-
- if {$_uptimer != ""} {
- after cancel $_uptimer
- set _uptimer ""
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _reldown
-#
-# Up arrow button release event. Cancel pending down timer.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_reldown {} {
- $itk_component(downarrow) config -relief raised
-
- if {$_downtimer != ""} {
- after cancel $_downtimer
- set _downtimer ""
- }
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _up
-#
-# Up arrow button press event. Call defined increment command.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_up {} {
- uplevel #0 $itk_option(-increment)
-}
-
-# ------------------------------------------------------------------
-# PRIVATE METHOD: _down
-#
-# Down arrow button press event. Call defined decrement command.
-# ------------------------------------------------------------------
-body iwidgets::Spinner::_down {} {
- uplevel #0 $itk_option(-decrement)
-}
diff --git a/itcl/iwidgets3.0.0/generic/spintime.itk b/itcl/iwidgets3.0.0/generic/spintime.itk
deleted file mode 100644
index 5a8d325367a..00000000000
--- a/itcl/iwidgets3.0.0/generic/spintime.itk
+++ /dev/null
@@ -1,527 +0,0 @@
-# Spintime
-# ----------------------------------------------------------------------
-# Implements a Time spinner widget. A time spinner contains three
-# integer spinners: one for hours, one for minutes and one for
-# seconds. Options exist to manage to behavior, appearance, and
-# format of each component spinner.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Sue Yockey EMAIL: yockey@actc.com
-# Mark L. Ulferts mulferts@austin.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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Spintime.hourLabel "Hour" widgetDefault
-option add *Spintime.minuteLabel "Minute" widgetDefault
-option add *Spintime.secondLabel "Second" widgetDefault
-option add *Spintime.hourWidth 3 widgetDefault
-option add *Spintime.minuteWidth 3 widgetDefault
-option add *Spintime.secondWidth 3 widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Spintime {
- keep -background -cursor -foreground -labelfont -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# SPINTIME
-# ------------------------------------------------------------------
-class iwidgets::Spintime {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -orient orient Orient vertical
- itk_option define -labelpos labelPos Position w
- itk_option define -houron hourOn HourOn true
- itk_option define -minuteon minuteOn MinuteOn true
- itk_option define -secondon secondOn SecondOn true
- itk_option define -timemargin timeMargin Margin 1
- itk_option define -militaryon militaryOn MilitaryOn true
-
- public {
- method get {{format "-string"}}
- method show {{date now}}
- }
-
- protected {
- method _packTime {{when later}}
- method _down60 {comp}
-
- variable _repack {} ;# Reconfiguration flag.
- variable _interior
- }
-}
-
-#
-# Provide a lowercased access method for the Spintime class.
-#
-proc ::iwidgets::spintime {pathName args} {
- uplevel ::iwidgets::Spintime $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Spintime::constructor {args} {
- set _interior $itk_interior
- set clicks [clock seconds]
-
- #
- # Create Hour Spinner
- #
- itk_component add hour {
- iwidgets::Spinint $itk_interior.hour -fixed 2 -range {0 23} -justify right
- } {
- keep -background -cursor -arroworient -foreground \
- -labelfont -labelmargin -relief -textbackground \
- -textfont -repeatdelay -repeatinterval
-
- rename -labeltext -hourlabel hourLabel Text
- rename -width -hourwidth hourWidth Width
- }
-
- #
- # Take off the default bindings for selction and motion.
- #
- bind [$itk_component(hour) component entry] <1> {break}
- bind [$itk_component(hour) component entry] <Button1-Motion> {break}
-
- #
- # Create Minute Spinner
- #
- itk_component add minute {
- iwidgets::Spinint $itk_interior.minute \
- -decrement [code $this _down60 minute] \
- -fixed 2 -range {0 59} -justify right
- } {
- keep -background -cursor -arroworient -foreground \
- -labelfont -labelmargin -relief -textbackground \
- -textfont -repeatdelay -repeatinterval
-
- rename -labeltext -minutelabel minuteLabel Text
- rename -width -minutewidth minuteWidth Width
- }
-
- #
- # Take off the default bindings for selction and motion.
- #
- bind [$itk_component(minute) component entry] <1> {break}
- bind [$itk_component(minute) component entry] <Button1-Motion> {break}
-
- #
- # Create Second Spinner
- #
- itk_component add second {
- iwidgets::Spinint $itk_interior.second \
- -decrement [code $this _down60 second] \
- -fixed 2 -range {0 59} -justify right
- } {
- keep -background -cursor -arroworient -foreground \
- -labelfont -labelmargin -relief -textbackground \
- -textfont -repeatdelay -repeatinterval
-
- rename -labeltext -secondlabel secondLabel Text
- rename -width -secondwidth secondWidth Width
- }
-
- #
- # Take off the default bindings for selction and motion.
- #
- bind [$itk_component(second) component entry] <1> {break}
- bind [$itk_component(second) component entry] <Button1-Motion> {break}
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-
- #
- # Show the current time.
- #
- show now
-}
-
-# ------------------------------------------------------------------
-# DESTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Spintime::destructor {} {
- if {$_repack != ""} {after cancel $_repack}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -orient
-#
-# Specifies the orientation of the 3 spinners for Hour, Minute
-# and second.
-# ------------------------------------------------------------------
-configbody iwidgets::Spintime::orient {
- _packTime
-}
-
-# ------------------------------------------------------------------
-# OPTION: -labelpos
-#
-# Specifies the location of all 3 spinners' labels.
-# Overloaded
-# ------------------------------------------------------------------
-configbody iwidgets::Spintime::labelpos {
- switch $itk_option(-labelpos) {
- n {
- $itk_component(hour) configure -labelpos n
- $itk_component(minute) configure -labelpos n
- $itk_component(second) configure -labelpos n
-
- #
- # Un-align labels
- #
- $itk_component(hour) configure -labelmargin 1
- $itk_component(minute) configure -labelmargin 1
- $itk_component(second) configure -labelmargin 1
- }
-
- s {
- $itk_component(hour) configure -labelpos s
- $itk_component(minute) configure -labelpos s
- $itk_component(second) configure -labelpos s
-
- #
- # Un-align labels
- #
- $itk_component(hour) configure -labelmargin 1
- $itk_component(minute) configure -labelmargin 1
- $itk_component(second) configure -labelmargin 1
- }
-
- w {
- $itk_component(hour) configure -labelpos w
- $itk_component(minute) configure -labelpos w
- $itk_component(second) configure -labelpos w
- }
-
- e {
- $itk_component(hour) configure -labelpos e
- $itk_component(minute) configure -labelpos e
- $itk_component(second) configure -labelpos e
-
- #
- # Un-align labels
- #
- $itk_component(hour) configure -labelmargin 1
- $itk_component(minute) configure -labelmargin 1
- $itk_component(second) configure -labelmargin 1
- }
-
- default {
- error "bad labelpos option \"$itk_option(-labelpos)\",\
- should be n, s, w or e"
- }
- }
-
- _packTime
-}
-
-# ------------------------------------------------------------------
-# OPTION: -houron
-#
-# Specifies whether or not to display the hour spinner.
-# ------------------------------------------------------------------
-configbody iwidgets::Spintime::houron {
- _packTime
-}
-
-# ------------------------------------------------------------------
-# OPTION: -minuteon
-#
-# Specifies whether or not to display the minute spinner.
-# ------------------------------------------------------------------
-configbody iwidgets::Spintime::minuteon {
- _packTime
-}
-
-# ------------------------------------------------------------------
-# OPTION: -secondon
-#
-# Specifies whether or not to display the second spinner.
-# ------------------------------------------------------------------
-configbody iwidgets::Spintime::secondon {
- _packTime
-}
-
-
-# ------------------------------------------------------------------
-# OPTION: -timemargin
-#
-# Specifies the margin space between the hour and minute spinners
-# and the minute and second spinners.
-# ------------------------------------------------------------------
-configbody iwidgets::Spintime::timemargin {
- _packTime
-}
-
-# ------------------------------------------------------------------
-# OPTION: -militaryon
-#
-# Specifies 24-hour clock or 12-hour.
-# ------------------------------------------------------------------
-configbody iwidgets::Spintime::militaryon {
- set clicks [clock seconds]
-
- if {$itk_option(-militaryon)} {
- $itk_component(hour) configure -range {0 23}
- $itk_component(hour) delete 0 end
- $itk_component(hour) insert end [clock format $clicks -format "%H"]
- } else {
- $itk_component(hour) configure -range {1 12}
- $itk_component(hour) delete 0 end
- $itk_component(hour) insert end [clock format $clicks -format "%I"]
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# METHOD: get ?format?
-#
-# Get the value of the time spinner in one of two formats string or
-# as an integer clock value using the -string and -clicks options
-# respectively. The default is by string. Reference the clock
-# command for more information on obtaining time and its formats.
-# ------------------------------------------------------------------
-body iwidgets::Spintime::get {{format "-string"}} {
- set hour [$itk_component(hour) get]
- set minute [$itk_component(minute) get]
- set second [$itk_component(second) get]
-
- switch -- $format {
- "-string" {
- return "$hour:$minute:$second"
- }
- "-clicks" {
- return [clock scan "$hour:$minute:$second"]
- }
- default {
- error "bad format option \"$format\":\
- should be -string or -clicks"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: show time
-#
-# Changes the currently displayed time to be that of the time
-# argument. The time may be specified either as a string or an
-# integer clock value. Reference the clock command for more
-# information on obtaining time and its format.
-# ------------------------------------------------------------------
-body iwidgets::Spintime::show {{time "now"}} {
- if {$time == "now"} {
- set seconds [clock seconds]
- } else {
- if {[catch {clock format $time}] == 0} {
- set seconds $time
- } elseif {[catch {set seconds [clock scan $time]}] != 0} {
- error "bad time: \"$time\", must be a valid time\
- string, clock clicks value or the keyword now"
- }
- }
-
- $itk_component(hour) delete 0 end
-
- if {$itk_option(-militaryon)} {
- scan [clock format $seconds -format "%H"] "%d" hour
- } else {
- scan hour [clock format $seconds -format "%I"] "%d" hour
- }
-
- $itk_component(hour) insert end $hour
-
- $itk_component(minute) delete 0 end
- scan [clock format $seconds -format "%M"] "%d" minute
- $itk_component(minute) insert end $minute
-
- $itk_component(second) delete 0 end
- scan [clock format $seconds -format "%S"] "%d" seconds
- $itk_component(second) insert end $seconds
-
- return
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _packTime ?when?
-#
-# Pack components of time spinner. If "when" is "now", the change
-# is applied immediately. If it is "later" or it is not specified,
-# then the change is applied later, when the application is idle.
-# ------------------------------------------------------------------
-body iwidgets::Spintime::_packTime {{when later}} {
- if {$when == "later"} {
- if {$_repack == ""} {
- set _repack [after idle [code $this _packTime now]]
- }
- return
- } elseif {$when != "now"} {
- error "bad option \"$when\": should be now or later"
- }
-
- for {set i 0} {$i < 5} {incr i} {
- grid rowconfigure $_interior $i -minsize 0
- grid columnconfigure $_interior $i -minsize 0
- }
-
- if {$itk_option(-minuteon)} {
- set minuteon 1
- } else {
- set minuteon 0
- }
- if {$itk_option(-secondon)} {
- set secondon 1
- } else {
- set secondon 0
- }
-
- set _repack ""
-
- switch $itk_option(-orient) {
- vertical {
- set row -1
-
- if {$itk_option(-houron)} {
- grid $itk_component(hour) -row [incr row] -column 0 \
- -sticky nsew
- } else {
- grid forget $itk_component(hour)
- }
-
- if {$itk_option(-minuteon)} {
- if {$itk_option(-houron)} {
- grid rowconfigure $_interior [incr row] \
- -minsize $itk_option(-timemargin)
- }
-
- grid $itk_component(minute) -row [incr row] -column 0 \
- -sticky nsew
- } else {
- grid forget $itk_component(minute)
- }
-
- if {$itk_option(-secondon)} {
- if {$minuteon || $secondon} {
- grid rowconfigure $_interior [incr row] \
- -minsize $itk_option(-timemargin)
- }
-
- grid $itk_component(second) -row [incr row] -column 0 \
- -sticky nsew
- } else {
- grid forget $itk_component(second)
- }
-
- if {$itk_option(-labelpos) == "w"} {
- iwidgets::Labeledwidget::alignlabels $itk_component(hour) \
- $itk_component(minute) $itk_component(second)
- }
- }
-
- horizontal {
- set column -1
-
- if {$itk_option(-houron)} {
- grid $itk_component(hour) -row 0 -column [incr column] \
- -sticky nsew
- } else {
- grid forget $itk_component(hour)
- }
-
- if {$itk_option(-minuteon)} {
- if {$itk_option(-houron)} {
- grid columnconfigure $_interior [incr column] \
- -minsize $itk_option(-timemargin)
- }
-
- grid $itk_component(minute) -row 0 -column [incr column] \
- -sticky nsew
- } else {
- grid forget $itk_component(minute)
- }
-
- if {$itk_option(-secondon)} {
- if {$minuteon || $secondon} {
- grid columnconfigure $_interior [incr column] \
- -minsize $itk_option(-timemargin)
- }
-
- grid $itk_component(second) -row 0 -column [incr column] \
- -sticky nsew
- } else {
- grid forget $itk_component(second)
- }
-
- #
- # Un-align labels
- #
- $itk_component(hour) configure -labelmargin 1
- $itk_component(minute) configure -labelmargin 1
- $itk_component(second) configure -labelmargin 1
- }
-
- default {
- error "bad orient option \"$itk_option(-orient)\", should\
- be \"vertical\" or \"horizontal\""
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHOD: down60
-#
-# Down arrow button press event. Decrement value in the minute
-# or second entry.
-# ------------------------------------------------------------------
-body iwidgets::Spintime::_down60 {comp} {
- set step [$itk_component($comp) cget -step]
- set val [$itk_component($comp) get]
-
- incr val -$step
- if {$val < 0} {
- set val [expr 60-$step]
- }
- $itk_component($comp) delete 0 end
- $itk_component($comp) insert 0 $val
-}
diff --git a/itcl/iwidgets3.0.0/generic/tabnotebook.itk b/itcl/iwidgets3.0.0/generic/tabnotebook.itk
deleted file mode 100644
index c9d17264143..00000000000
--- a/itcl/iwidgets3.0.0/generic/tabnotebook.itk
+++ /dev/null
@@ -1,1075 +0,0 @@
-#
-# Tabnotebook Widget
-# ----------------------------------------------------------------------
-# The Tabnotebook command creates a new window (given by the pathName
-# argument) and makes it into a Tabnotebook widget. Additional options,
-# described above may be specified on the command line or in the option
-# database to configure aspects of the Tabnotebook such as its colors,
-# font, and text. The Tabnotebook command returns its pathName argument.
-# At the time this command is invoked, there must not exist a window
-# named pathName, but pathName's parent must exist.
-#
-# A Tabnotebook is a widget that contains a set of tabbed pages. It
-# displays one page from the set as the selected page. A Tab displays
-# the label for the page to which it is attached and serves as a page
-# selector. When a page's tab is selected, the page's contents are
-# displayed in the page area. The selected tab has a three-dimensional
-# effect to make it appear to float above the other tabs. The tabs are
-# displayed as a group along either the left, top, right, or bottom
-# edge. When first created a Tabnotebook has no pages. Pages may be
-# added or deleted using widget commands described below.
-#
-# A special option may be provided to the Tabnotebook. The -auto
-# option specifies whether the Tabnotebook will automatically handle
-# the unpacking and packing of pages when pages are selected. A value
-# of true sig nifies that the notebook will automatically manage it. This
-# is the default value. A value of false signifies the notebook will not
-# perform automatic switching of pages.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Bill W. Scott EMAIL: bscott@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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Tabnotebook.borderWidth 2 widgetDefault
-option add *Tabnotebook.state normal widgetDefault
-option add *Tabnotebook.disabledForeground #a3a3a3 widgetDefault
-option add *Tabnotebook.scrollCommand {} widgetDefault
-option add *Tabnotebook.equalTabs true widgetDefault
-option add *Tabnotebook.font \
- -Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-* widgetDefault
-option add *Tabnotebook.width 300 widgetDefault
-option add *Tabnotebook.height 150 widgetDefault
-option add *Tabnotebook.foreground Black widgetDefault
-option add *Tabnotebook.background #d9d9d9 widgetDefault
-option add *Tabnotebook.tabForeground Black widgetDefault
-option add *Tabnotebook.tabBackground #d9d9d9 widgetDefault
-option add *Tabnotebook.backdrop #d9d9d9 widgetDefault
-option add *Tabnotebook.margin 4 widgetDefault
-option add *Tabnotebook.tabBorders true widgetDefault
-option add *Tabnotebook.bevelAmount 0 widgetDefault
-option add *Tabnotebook.raiseSelect false widgetDefault
-option add *Tabnotebook.auto true widgetDefault
-option add *Tabnotebook.start 4 widgetDefault
-option add *Tabnotebook.padX 4 widgetDefault
-option add *Tabnotebook.padY 4 widgetDefault
-option add *Tabnotebook.gap overlap widgetDefault
-option add *Tabnotebook.angle 15 widgetDefault
-option add *Tabnotebook.tabPos s widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Tabnotebook {
- keep -backdrop -background -borderwidth -cursor -disabledforeground \
- -font -foreground -tabbackground -tabforeground
-}
-
-# ------------------------------------------------------------------
-# TABNOTEBOOK
-# ------------------------------------------------------------------
-class iwidgets::Tabnotebook {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -borderwidth borderWidth BorderWidth 2
- itk_option define -state state State normal
- itk_option define \
- -disabledforeground disabledForeground DisabledForeground #a3a3a3
- itk_option define -scrollcommand scrollCommand ScrollCommand {}
- itk_option define -equaltabs equalTabs EqualTabs true
- itk_option define -font font Font \
- -Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*
- itk_option define -width width Width 300
- itk_option define -height height Height 150
- itk_option define -foreground foreground Foreground Black
- itk_option define -background background Background #d9d9d9
- itk_option define -tabforeground tabForeground TabForeground Black
- itk_option define -tabbackground tabBackground TabBackground #d9d9d9
- itk_option define -backdrop backdrop Backdrop #d9d9d9
- itk_option define -margin margin Margin 4
- itk_option define -tabborders tabBorders TabBorders true
- itk_option define -bevelamount bevelAmount BevelAmount 0
- itk_option define -raiseselect raiseSelect RaiseSelect false
- itk_option define -auto auto Auto true
- itk_option define -start start Start 4
- itk_option define -padx padX PadX 4
- itk_option define -pady padY PadY 4
- itk_option define -gap gap Gap overlap
- itk_option define -angle angle Angle 15
- itk_option define -tabpos tabPos TabPos s
-
- public method add { args }
- public method configure { args }
- public method childsite { args }
- public method delete { args }
- public method index { args }
- public method insert { index args }
- public method prev { }
- public method next { }
- public method pageconfigure { index args }
- public method select { index }
- public method view { args }
-
- protected method _reconfigureTabset { }
- protected method _canvasReconfigure { wid hgt }
- protected method _pageReconfigure { pageName page wid hgt }
-
- private method _getArgs { optList args }
- private method _redrawBorder { wid hgt }
- private method _recomputeBorder { }
- private method _pack { tabPos }
-
- private variable _canvasWidth 0 ;# currently tabnote canvas width
- private variable _canvasHeight 0 ;# currently tabnote canvas height
- private variable _nbOptList {} ;# list of notebook options available
- private variable _tsOptList {} ;# list of tabset options available
-
- private variable _tabPos s ;# holds -tabPos, because of ordering
-
- private variable _borderRecompute false ;# did we dirty border after cfg?
- private variable _tabsetReconfigure false ;# did we dirty tabsets after cfg?
-
-}
-
-# ----------------------------------------------------------------------
-# CONSTRUCTOR
-# ----------------------------------------------------------------------
-body iwidgets::Tabnotebook::constructor {args} {
- component hull configure -borderwidth 0
-
- #
- # Create the outermost canvas to maintain geometry.
- #
- itk_component add canvas {
- canvas $itk_interior.canvas -highlightthickness 0
- } {
- keep -cursor -background -width -height
- }
- bind $itk_component(canvas) <Configure> \
- [code $this _canvasReconfigure %w %h]
-
-
- # .......................
- # Create the NOTEBOOK
- #
- itk_component add notebook {
- iwidgets::Notebook $itk_interior.canvas.notebook
- } {
- keep -cursor -background
- }
-
- #
- # Ouch, create a dummy page, go pageconfigure to get its options
- # and munge them into a list for later doling by pageconfigure
- #
- $itk_component(notebook) add
- set nbConfigList [$itk_component(notebook) pageconfigure 0]
- foreach config $nbConfigList {
- lappend _nbOptList [lindex $config 0]
- }
- $itk_component(notebook) delete 0
-
- #
- # Create the tabset.
- #
- itk_component add tabset {
- iwidgets::Tabset $itk_interior.canvas.tabset \
- -command [code $this component notebook select]
- } {
- keep -cursor
- }
-
- eval itk_initialize $args
-
- #
- # Ouch, create a dummy tab, go tabconfigure to get its options
- # and munge them into a list for later doling by pageconfigure
- #
- $itk_component(tabset) add
- set tsConfigList [$itk_component(tabset) tabconfigure 0]
- foreach config $tsConfigList {
- lappend _tsOptList [lindex $config 0]
- }
- $itk_component(tabset) delete 0
-
- bind $itk_component(tabset) <Configure> \
- [code $this _reconfigureTabset]
-
- _pack $_tabPos
-
-}
-
-proc ::iwidgets::tabnotebook {pathName args} {
- uplevel ::iwidgets::Tabnotebook $pathName $args
-}
-
-
-# -------------------------------------------------------------
-# DESTRUCTOR: destroy the Tabnotebook
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::destructor {} {
-}
-
-# ----------------------------------------------------------------------
-# OPTION -borderwidth
-#
-# Thickness of Notebook Border
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::borderwidth {
- if {$itk_option(-borderwidth) != {}} {
- #_recomputeBorder
- set _borderRecompute true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -state
-#
-# State of the tabs in the tab notebook: normal or disabled
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::state {
- if {$itk_option(-state) != {}} {
- $itk_component(tabset) configure -state $itk_option(-state)
- #_reconfigureTabset
- set _tabsetReconfigure true
-
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -disabledforeground
-#
-# Specifies a foreground color to use for displaying a
-# tab's label when its state is disabled.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::disabledforeground {
-
- if {$itk_option(-disabledforeground) != {}} {
- $itk_component(tabset) configure \
- -disabledforeground $itk_option(-disabledforeground)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -scrollcommand
-#
-# Standard option. See options man pages.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::scrollcommand {
-
- if {$itk_option(-scrollcommand) != {}} {
- $itk_component(notebook) \
- configure -scrollcommand $itk_option(-scrollcommand)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -equaltabs
-#
-# Specifies whether to force tabs to be equal sized or not.
-# A value of true means constrain tabs to be equal sized.
-# A value of false allows each tab to size based on the text
-# label size. The value may have any of the forms accepted by
-# the Tcl_GetBoolean, such as true, false, 0, 1, yes, or no.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::equaltabs {
-
- if {$itk_option(-equaltabs) != {}} {
- $itk_component(tabset) \
- configure -equaltabs $itk_option(-equaltabs)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -font
-#
-# Font for tab labels when they are set to text (-label set)
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::font {
-
- if {$itk_option(-font) != {}} {
- $itk_component(tabset) configure -font $itk_option(-font)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -width
-#
-# Width of the Tabnotebook
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::width {
- if {$itk_option(-width) != {}} {
- $itk_component(canvas) configure -width $itk_option(-width)
- #_recomputeBorder
- set _borderRecompute true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -height
-#
-# Height of the Tabnotebook
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::height {
- if {$itk_option(-height) != {}} {
- $itk_component(canvas) configure -height $itk_option(-height)
- #_recomputeBorder
- set _borderRecompute true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -foreground
-#
-# Specifies a foreground color to use for displaying a page
-# and its associated tab label (this is the selected state).
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::foreground {
-
- if {$itk_option(-foreground) != {}} {
- $itk_component(tabset) configure \
- -selectforeground $itk_option(-foreground)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -background
-#
-# Specifies a background color to use for displaying a page
-# and its associated tab bg (this is the selected state).
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::background {
-
- if {$itk_option(-background) != {}} {
- $itk_component(tabset) configure \
- -selectbackground $itk_option(-background)
- #_recomputeBorder
- set _borderRecompute true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -tabforeground
-#
-# Specifies a foreground color to use for displaying tab labels
-# when they are in their unselected state.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::tabforeground {
-
- if {$itk_option(-tabforeground) != {}} {
- $itk_component(tabset) configure \
- -foreground $itk_option(-tabforeground)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -tabbackground
-#
-# Specifies a background color to use for displaying tab backgrounds
-# when they are in their unselected state.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::tabbackground {
-
- if {$itk_option(-tabbackground) != {}} {
- $itk_component(tabset) configure \
- -background $itk_option(-tabbackground)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -backdrop
-#
-# Specifies a background color to use when filling in the
-# area behind the tabs.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::backdrop {
-
- if {$itk_option(-backdrop) != {}} {
- $itk_component(tabset) configure \
- -backdrop $itk_option(-backdrop)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -margin
-#
-# Sets the backdrop margin between tab edge and backdrop edge
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::margin {
- if {$itk_option(-margin) != {}} {
- $itk_component(tabset) configure -margin $itk_option(-margin)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -tabborders
-#
-# Boolean that specifies whether to draw the borders of
-# the unselected tabs (tabs in background)
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::tabborders {
- if {$itk_option(-tabborders) != {}} {
- $itk_component(tabset) \
- configure -tabborders $itk_option(-tabborders)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -bevelamount
-#
-# Specifies pixel size of tab corners. 0 means no corners.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::bevelamount {
- if {$itk_option(-bevelamount) != {}} {
- $itk_component(tabset) \
- configure -bevelamount $itk_option(-bevelamount)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -raiseselect
-#
-# Sets whether to raise selected tabs
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::raiseselect {
- if {$itk_option(-raiseselect) != {}} {
- $itk_component(tabset) \
- configure -raiseselect $itk_option(-raiseselect)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -auto
-#
-# Determines whether pages are automatically unpacked and
-# packed when pages get selected.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::auto {
- if {$itk_option(-auto) != {}} {
- $itk_component(notebook) configure -auto $itk_option(-auto)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -start
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::start {
-
- if {$itk_option(-start) != {}} {
- $itk_component(tabset) configure \
- -start $itk_option(-start)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -padx
-#
-# Specifies a non-negative value indicating how much extra space
-# to request for a tab around its label in the X-direction.
-# When computing how large a window it needs, the tab will add
-# this amount to the width it would normally need The tab will
-# end up with extra internal space to the left and right of its
-# text label. This value may have any of the forms acceptable
-# to Tk_GetPixels.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::padx {
-
- if {$itk_option(-padx) != {}} {
- $itk_component(tabset) configure -padx $itk_option(-padx)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -pady
-#
-# Specifies a non-negative value indicating how much extra space to
-# request for a tab around its label in the Y-direction. When computing
-# how large a window it needs, the tab will add this amount to the
-# height it would normally need The tab will end up with extra internal
-# space to the top and bot tom of its text label. This value may have
-# any of the forms acceptable to Tk_GetPixels.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::pady {
-
- if {$itk_option(-pady) != {}} {
- $itk_component(tabset) configure -pady $itk_option(-pady)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -gap
-#
-# Specifies the amount of pixel space to place between each tab.
-# Value may be any pixel offset value. In addition, a special keyword
-# 'overlap' can be used as the value to achieve a standard overlap of
-# tabs. This value may have any of the forms acceptable to Tk_GetPixels.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::gap {
-
- if {$itk_option(-gap) != {}} {
- $itk_component(tabset) configure -gap $itk_option(-gap)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -angle
-#
-# Specifes the angle of slope from the inner edge to the outer edge
-# of the tab. An angle of 0 specifies square tabs. Valid ranges are
-# 0 to 45 degrees inclusive. Default is 15 degrees. If tabPos is
-# e or w, this option is ignored.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::angle {
-
- if {$itk_option(-angle) != {}} {
- $itk_component(tabset) configure -angle $itk_option(-angle)
- #_reconfigureTabset
- set _tabsetReconfigure true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -tabpos
-#
-# Specifies the location of the set of tabs in relation to the
-# Notebook area. Must be n, s, e, or w. Defaults to s.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabnotebook::tabpos {
-
- if {$itk_option(-tabpos) != {}} {
- set _tabPos $itk_option(-tabpos)
- $itk_component(tabset) configure \
- -tabpos $itk_option(-tabpos)
- pack forget $itk_component(canvas)
- pack forget $itk_component(tabset)
- pack forget $itk_component(notebook)
- _pack $_tabPos
- }
-}
-
-# -------------------------------------------------------------
-# METHOD: configure ?<option>? ?<value> <option> <value>...?
-#
-# Acts as an addendum to the itk::Widget::configure method.
-#
-# Checks the _recomputeBorder flag and the _tabsetReconfigure to
-# determine what work has been batched to after the configure
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::configure { args } {
- set result [eval itk::Archetype::configure $args]
-
- # check for flags then do update...
- if { $_borderRecompute == "true" } {
- _recomputeBorder
- set _borderRecompute false
- }
-
- if { $_tabsetReconfigure == "true" } {
- _reconfigureTabset
- set _tabsetReconfigure false
- }
-
- return $result
-
-}
-
-# -------------------------------------------------------------
-# METHOD: add ?<option> <value>...?
-#
-# Creates a page and appends it to the list of pages.
-# processes pageconfigure for the page added.
-#
-# Returns the page's childsite frame
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::add { args } {
-
- # The args list should be an even # of params, if not then
- # prob missing value for last item in args list. Signal error.
- set len [llength $args]
- if { [expr $len % 2] } {
- error "value for \"[lindex $args [expr $len - 1]]\" missing"
- }
-
- # pick out the notebook args
- set nbArgs [eval _getArgs [list $_nbOptList] $args]
- set pageName [eval $itk_component(notebook) add $nbArgs]
-
- # pick out the tabset args
- set tsArgs [eval _getArgs [list $_tsOptList] $args]
- eval $itk_component(tabset) add $tsArgs
-
- set page [index end]
- bind $pageName <Configure> \
- [code $this _pageReconfigure $pageName $page %w %h]
- return $pageName
-}
-
-# -------------------------------------------------------------
-# METHOD: childsite ?<index>?
-#
-# If index is supplied, returns the child site widget
-# corresponding to the page index. If called with no arguments,
-# returns a list of all child sites
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::childsite { args } {
- return [eval $itk_component(notebook) childsite $args]
-}
-
-# -------------------------------------------------------------
-# METHOD: delete <index1> ?<index2>?
-#
-# Deletes a page or range of pages from the notebook
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::delete { args } {
- eval $itk_component(notebook) delete $args
- eval $itk_component(tabset) delete $args
-}
-
-
-# -------------------------------------------------------------
-# METHOD: index <index>
-#
-# Given an index identifier returns the numeric index of the page
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::index { args } {
- return [eval $itk_component(notebook) index $args]
-}
-
-# -------------------------------------------------------------
-# METHOD: insert <index> ?<option> <value>...?
-#
-# Inserts a page before a index. The before page may
-# be specified as a label or a page position.
-#
-# Note that since we use eval to preserve the $args list,
-# we must use list around $index to keep it together as a unit
-#
-# Returns the name of the page's child site
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::insert { index args } {
-
- # pick out the notebook args
- set nbArgs [eval _getArgs [list $_nbOptList] $args]
- set pageName [eval $itk_component(notebook) insert [list $index] $nbArgs]
-
- # pick out the tabset args
- set tsArgs [eval _getArgs [list $_tsOptList] $args]
- eval $itk_component(tabset) insert [list $index] $tsArgs
-
- return $pageName
-
-}
-
-# -------------------------------------------------------------
-# METHOD: prev
-#
-# Selects the previous page. Wraps at first back to last page.
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::prev { } {
- eval $itk_component(notebook) prev
- eval $itk_component(tabset) prev
-}
-
-# -------------------------------------------------------------
-# METHOD: next
-#
-# Selects the next page. Wraps at last back to first page.
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::next { } {
- eval $itk_component(notebook) next
- eval $itk_component(tabset) next
-}
-
-# -------------------------------------------------------------
-# METHOD: pageconfigure <index> ?<option> <value>...?
-#
-# Performs configure on a given page denoted by index.
-# Index may be a page number or a pattern matching the label
-# associated with a page.
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::pageconfigure { index args } {
-
- set nbArgs [eval _getArgs [list $_nbOptList] $args]
- set tsArgs [eval _getArgs [list $_tsOptList] $args]
-
- set len [llength $args]
- switch $len {
- 0 {
- # Here is the case where they just want to query options
- set nbConfig \
- [eval $itk_component(notebook) pageconfigure $index $nbArgs]
- set tsConfig \
- [eval $itk_component(tabset) tabconfigure $index $tsArgs]
- #
- # BUG: this currently just concatenates a page and a tab's
- # config lists together... We should bias to the Page
- # since this is what we are using as primary when both??
- #
- # a pageconfigure index -background will return something like:
- # -background background Background #9D008FF583C1 gray70 \
- # -background background background white gray 70
- #
- return [concat $nbConfig $tsConfig]
- }
- 1 {
- # Here is the case where they are asking for only one
- # one options value... need to figure out which one
- # (page or tab) can service this. Then only return
- # that one's result.
-
- if { [llength $nbArgs] != 0 } {
- return [eval $itk_component(notebook) \
- pageconfigure $index $nbArgs]
- } elseif { [llength $tsArgs] != 0 } {
- return [eval $itk_component(tabset) \
- tabconfigure $index $tsArgs]
- } else {
- error "unknown option \"$args\""
- }
-
- }
- default {
-
- # pick out the notebook args
- set nbConfig \
- [eval $itk_component(notebook) \
- pageconfigure [list $index] $nbArgs]
-
- # pick out the tabset args
- set tsConfig \
- [eval $itk_component(tabset) \
- tabconfigure [list $index] $tsArgs]
-
- return ""
- #return [concat $nbConfig $tsConfig]
-
- }
- }
-}
-
-# -------------------------------------------------------------
-# METHOD: select index
-#
-# Select a page by index
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::select { index } {
- $itk_component(notebook) select $index
- $itk_component(tabset) select $index
-}
-
-# -------------------------------------------------------------
-# METHOD: view
-#
-# Return the current page
-#
-# view index
-#
-# Selects the page denoted by index to be current page
-#
-# view 'moveto' fraction
-#
-# Selects the page by using fraction amount
-#
-# view 'scroll' num what
-#
-# Selects the page by using num as indicator of next or
-# previous
-#
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::view { args } {
- eval $itk_component(notebook) view $args
- $itk_component(tabset) select [index select]
-}
-
-# -------------------------------------------------------------
-# PRIVATE METHOD: _getArgs
-#
-# Given an optList returned from a configure on an object and
-# given a candidate argument list, peruse throught the optList
-# and build a new argument list with only those options found
-# in optList.
-#
-# This is used by the add, insert, and pageconfigure methods.
-# It is useful for a container kind of class like Tabnotebook
-# to be smart about args it gets for its concept of a "page"
-# which is actually a Notebook Page and a Tabset Tab.
-#
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::_getArgs { optList args } {
-
- set len [llength $args]
-
- set retArgs {}
-
- for {set i 0} {$i < $len} {incr i} {
- # get the option for this pair
- set opt [lindex $args $i]
-
- # move ahead to the value
- incr i
-
- # option exists!
- if { [lsearch -exact $optList $opt] != -1} {
- lappend retArgs $opt
- if {$i < [llength $args]} {
- lappend retArgs [lindex $args $i]
- }
- # option does not exist
- }
- }
-
- return $retArgs
-}
-
-# -------------------------------------------------------------
-# PROTECTED METHOD: _reconfigureTabset
-#
-# bound to the tabset reconfigure... We call our canvas
-# reconfigure as if the canvas resized, it then configures
-# the tabset correctly.
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::_reconfigureTabset { } {
-
- _canvasReconfigure $_canvasWidth $_canvasHeight
-
-}
-
-# -------------------------------------------------------------
-# PROTECTED METHOD: _canvasReconfigure
-#
-# bound to window Reconfigure event of the canvas
-# keeps the tabset area stretched in its major dimension.
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::_canvasReconfigure { wid hgt } {
-
- if { $_tabPos == "n" || $_tabPos == "s" } {
- $itk_component(tabset) configure -width $wid
- } else {
- $itk_component(tabset) configure -height $hgt
- }
-
- set _canvasWidth $wid
- set _canvasHeight $hgt
-
- _redrawBorder $wid $hgt
-
-}
-
-# -------------------------------------------------------------
-# PRIVATE METHOD: _redrawBorder
-#
-# called by methods when the packing changes, borderwidths, etc.
-# and height
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::_redrawBorder { wid hgt } {
-
- # Get the top of the Notebook area...
-
- set nbTop [winfo y $itk_component(notebook)]
- set canTop [expr $nbTop - $itk_option(-borderwidth)]
-
- $itk_component(canvas) delete BORDER
- if { $itk_option(-borderwidth) > 0 } {
-
- # For south, east, and west -- draw the top/north edge
- if { $_tabPos != "n" } {
- $itk_component(canvas) create line \
- [expr floor(0 + ($itk_option(-borderwidth)/2.0))] \
- [expr floor(0 + ($itk_option(-borderwidth)/2.0))] \
- $wid \
- [expr floor(0 + ($itk_option(-borderwidth)/2.0))] \
- -width $itk_option(-borderwidth) \
- -fill [iwidgets::colors::topShadow $itk_option(-background)] \
- -tags BORDER
- }
-
- # For north, east, and west -- draw the bottom/south edge
- if { $_tabPos != "s" } {
- $itk_component(canvas) create line \
- [expr floor(0 + ($itk_option(-borderwidth)/2.0))] \
- [expr floor($hgt - ($itk_option(-borderwidth)/2.0))] \
- [expr floor($wid - ($itk_option(-borderwidth)/2.0))] \
- [expr floor($hgt - ($itk_option(-borderwidth)/2.0))] \
- -width $itk_option(-borderwidth) \
- -fill [iwidgets::colors::bottomShadow $itk_option(-background)] \
- -tags BORDER
- }
-
- # For north, south, and east -- draw the left/west edge
- if { $_tabPos != "w" } {
- $itk_component(canvas) create line \
- [expr floor(0 + ($itk_option(-borderwidth)/2.0))] \
- 0 \
- [expr floor(0 + ($itk_option(-borderwidth)/2.0))] \
- $hgt \
- -width $itk_option(-borderwidth) \
- -fill [iwidgets::colors::topShadow $itk_option(-background)] \
- -tags BORDER
- }
-
- # For north, south, and west -- draw the right/east edge
- if { $_tabPos != "e" } {
- $itk_component(canvas) create line \
- [expr floor($wid - ($itk_option(-borderwidth)/2.0))] \
- [expr floor(0 + ($itk_option(-borderwidth)/2.0))] \
- [expr floor($wid - ($itk_option(-borderwidth)/2.0))] \
- $hgt \
- -width $itk_option(-borderwidth) \
- -fill [iwidgets::colors::bottomShadow $itk_option(-background)] \
- -tags BORDER
- }
- }
-
-}
-
-# -------------------------------------------------------------
-# PRIVATE METHOD: _recomputeBorder
-#
-# Based on current width and height of our canvas, repacks
-# the notebook with padding for borderwidth, and calls
-# redraw border method
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::_recomputeBorder { } {
-
- set wid [winfo width $itk_component(canvas)]
- set hgt [winfo height $itk_component(canvas)]
-
- _pack $_tabPos
- _redrawBorder $wid $hgt
-}
-
-# -------------------------------------------------------------
-# PROTECTED METHOD: _pageReconfigure
-#
-# This method will eventually reconfigure the tab notebook's
-# notebook area to contain the resized child site
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::_pageReconfigure { pageName page wid hgt } {
-
-}
-
-# -------------------------------------------------------------
-# PRIVATE METHOD: _pack
-#
-# This method packs the notebook and tabset correctly according
-# to the current $tabPos
-# -------------------------------------------------------------
-body iwidgets::Tabnotebook::_pack { tabPos } {
-
- pack $itk_component(canvas) -fill both -expand yes
- pack propagate $itk_component(canvas) no
-
- switch $tabPos {
- n {
- # north
- pack $itk_component(tabset) \
- -anchor nw \
- -fill x \
- -expand no
- pack $itk_component(notebook) \
- -fill both \
- -expand yes \
- -padx $itk_option(-borderwidth) \
- -pady $itk_option(-borderwidth) \
- -side bottom
- }
- s {
- # south
- pack $itk_component(notebook) \
- -anchor nw \
- -fill both \
- -expand yes \
- -padx $itk_option(-borderwidth) \
- -pady $itk_option(-borderwidth)
-
- pack $itk_component(tabset) \
- -side left \
- -fill x \
- -expand yes
- }
- w {
- # west
- pack $itk_component(tabset) \
- -anchor nw \
- -side left \
- -fill y \
- -expand no
- pack $itk_component(notebook) \
- -anchor nw \
- -side left \
- -fill both \
- -expand yes \
- -padx $itk_option(-borderwidth) \
- -pady $itk_option(-borderwidth)
-
- }
- e {
- # east
- pack $itk_component(notebook) \
- -side left \
- -anchor nw \
- -fill both \
- -expand yes \
- -padx $itk_option(-borderwidth) \
- -pady $itk_option(-borderwidth)
-
- pack $itk_component(tabset) \
- -fill y \
- -expand yes
- }
- }
-
- set wid [winfo width $itk_component(canvas)]
- set hgt [winfo height $itk_component(canvas)]
-
- _redrawBorder $wid $hgt
-}
diff --git a/itcl/iwidgets3.0.0/generic/tabset.itk b/itcl/iwidgets3.0.0/generic/tabset.itk
deleted file mode 100644
index f26d66a42de..00000000000
--- a/itcl/iwidgets3.0.0/generic/tabset.itk
+++ /dev/null
@@ -1,2747 +0,0 @@
-#
-# Tabset Widget and the Tab Class
-# ----------------------------------------------------------------------
-# A Tabset is a widget that contains a set of Tab buttons.
-# It displays these tabs in a row or column depending on it tabpos.
-# When a tab is clicked on, it becomes the only tab in the tab set that
-# is selected. All other tabs are deselected. The Tcl command prefix
-# associated with this tab (through the command tab configure option)
-# is invoked with the tab index number appended to its argument list.
-# This allows the Tabset to control another widget such as a Notebook.
-#
-# A Tab class is an [incr Tcl] class that displays either an image,
-# bitmap, or label in a graphic object on a canvas. This graphic object
-# can have a wide variety of appearances depending on the options set.
-#
-# WISH LIST:
-# This section lists possible future enhancements.
-#
-# 1) When too many tabs appear, a small scrollbar should appear to
-# move the tabs over.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: Bill W. Scott EMAIL: bscott@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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Tabset.width 0 widgetDefault
-option add *Tabset.height 0 widgetDefault
-option add *Tabset.equalTabs true widgetDefault
-option add *Tabset.tabPos s widgetDefault
-option add *Tabset.raiseSelect false widgetDefault
-option add *Tabset.start 4 widgetDefault
-option add *Tabset.margin 5 widgetDefault
-option add *Tabset.tabBorders true widgetDefault
-option add *Tabset.bevelAmount 0 widgetDefault
-option add *Tabset.padX 4 widgetDefault
-option add *Tabset.padY 4 widgetDefault
-option add *Tabset.gap overlap widgetDefault
-option add *Tabset.angle 20 widgetDefault
-option add *Tabset.font fixed widgetDefault
-option add *Tabset.state normal widgetDefault
-option add *Tabset.disabledForeground #a3a3a3 widgetDefault
-option add *Tabset.foreground black widgetDefault
-option add *Tabset.background #d9d9d9 widgetDefault
-option add *Tabset.selectForeground black widgetDefault
-option add *Tabset.selectBackground #ececec widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Tabset {
- keep -backdrop -background -cursor -disabledforeground -font -foreground \
- -selectbackground -selectforeground
-}
-
-# ------------------------------------------------------------------
-# TABSET
-# ------------------------------------------------------------------
-class iwidgets::Tabset {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -width width Width 0
- itk_option define -equaltabs equalTabs EqualTabs true
- itk_option define -height height Height 0
- itk_option define -tabpos tabPos TabPos s
- itk_option define -raiseselect raiseSelect RaiseSelect false
- itk_option define -start start Start 4
- itk_option define -margin margin Margin 5
- itk_option define -tabborders tabBorders TabBorders true
- itk_option define -bevelamount bevelAmount BevelAmount 0
- itk_option define -padx padX PadX 4
- itk_option define -pady padY PadY 4
- itk_option define -gap gap Gap overlap
- itk_option define -angle angle Angle 20
- itk_option define -font font Font fixed
- itk_option define -state state State normal
- itk_option define \
- -disabledforeground disabledForeground DisabledForeground #a3a3a3
- itk_option define -foreground foreground Foreground black
- itk_option define -background background Background #d9d9d9
- itk_option define -selectforeground selectForeground Background black
- itk_option define -backdrop backdrop Backdrop white
- itk_option define -selectbackground selectBackground Foreground #ececec
- itk_option define -command command Command {}
-
- public method configure {args}
- public method add {args}
- public method delete {args}
- public method index {index}
- public method insert {index args}
- public method prev {}
- public method next {}
- public method select {index}
- public method tabcget {index args}
- public method tabconfigure {index args}
-
- protected method _selectName {tabName}
-
- private method _createTab {args}
- private method _deleteTabs {fromTab toTab}
- private method _index {pathList index select}
- private method _tabConfigure {args}
- private method _relayoutTabs {}
- private method _drawBevelBorder {}
- private method _calcNextTabOffset {tabName}
- private method _tabBounds {}
- private method _recalcCanvasGeom {}
- private method _canvasReconfigure {width height}
- private method _startMove {x y}
- private method _moveTabs {x y}
- private method _endMove {x y}
- private method _configRelayout {}
-
- private variable _width 0 ;# Width of the canvas in screen units
- private variable _height 0 ;# Height of the canvas in screen units
- private variable _selectedTop 0 ;# top edge of tab + a margin
- private variable _deselectedTop 0 ;# top edge of tab + a margin&raiseamt
- private variable _selectedLeft 0 ;# left edge of tab + a margin
- private variable _deselectedLeft 0 ;# left edge of tab + a margin&raiseamt
- private variable _tabs {} ;# our internal list of tabs
- private variable _currTab -1 ;# numerical index # of selected tab
- private variable _uniqueID 0 ;# used to create unique names
- private variable _cmdStr {} ;# holds value of itk_option(-command)
- ;# do not know why I need this!
- private variable _canvasWidth 0 ;# set by canvasReconfigure, is can wid
- private variable _canvasHeight 0 ;# set by canvasReconfigure, is can hgt
-
- private variable _anchorX 0 ;# used by mouse scrolling methods
- private variable _anchorY 0 ;# used by mouse scrolling methods
-
- private variable _margin 0 ;# -margin in screen units
- private variable _start 0 ;# -start in screen units
- private variable _gap overlap ;# -gap in screen units
-
- private variable _relayout false ;# flag tripped to tell whether to
- ;# relayout tabs after the configure
- private variable _skipRelayout false ;# flag that tells whether to skip
- ;# relayouting out the tabs. used by
- ;# _endMove.
-}
-
-#
-# Provide a lowercase access method for the Tabset class
-#
-proc ::iwidgets::tabset {pathName args} {
- uplevel ::iwidgets::Tabset $pathName $args
-}
-
-# ----------------------------------------------------------------------
-# CONSTRUCTOR
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::constructor {args} {
- global tcl_platform
-
- #
- # Create the canvas that holds the tabs
- #
- itk_component add canvas {
- canvas $itk_interior.canvas -highlightthickness 0
- } {
- keep -cursor -width -height
- }
- pack $itk_component(canvas) -fill both -expand yes -anchor nw
-
- # ... This gives us a chance to redraw our bevel borders, etc when
- # the size of our canvas changes...
- bind $itk_component(canvas) <Configure> \
- [code $this _canvasReconfigure %w %h]
-
- # ... Allow button 2 scrolling as in label widget.
- if {$tcl_platform(os) != "HP-UX"} {
- bind $itk_component(canvas) <2> \
- [code $this _startMove %x %y]
- bind $itk_component(canvas) <B2-Motion> \
- [code $this _moveTabs %x %y]
- bind $itk_component(canvas) <ButtonRelease-2> \
- [code $this _endMove %x %y]
- }
-
- # @@@
- # @@@ Is there a better way?
- # @@@
- bind $itk_component(hull) <Any-Enter> "focus $itk_component(hull)"
- bind $itk_component(hull) <Tab> [code $this next]
- bind $itk_component(hull) <Shift-Tab> [code $this prev]
-
- eval itk_initialize $args
-
- _configRelayout
-
- _recalcCanvasGeom
-
-}
-
-body iwidgets::Tabset::destructor {} {
- foreach tab $_tabs {
- itcl::delete object $tab
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTIONS
-# ----------------------------------------------------------------------
-
-# ----------------------------------------------------------------------
-# OPTION -width
-#
-# Sets the width explicitly for the canvas of the tabset
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::width {
- if {$itk_option(-width) != {}} {
- }
- set _width [winfo pixels $itk_interior $itk_option(-width)]
-}
-
-# ----------------------------------------------------------------------
-# OPTION -equaltabs
-#
-# If set to true, causes horizontal tabs to be equal in
-# in width and vertical tabs to equal in height.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::equaltabs {
- if {$itk_option(-equaltabs) != {}} {
- set _relayout true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -height
-#
-# Sets the height explicitly for the canvas of the tabset
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::height {
- set _height [winfo pixels $itk_interior $itk_option(-height)]
-}
-
-# ----------------------------------------------------------------------
-# OPTION -tabpos
-#
-# Sets the tab position of tabs, n, s, e, w
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::tabpos {
- if {$itk_option(-tabpos) != {}} {
- switch $itk_option(-tabpos) {
- n {
- _tabConfigure -invert true -orient horizontal
- }
- s {
- _tabConfigure -invert false -orient horizontal
- }
- w {
- _tabConfigure -invert false -orient vertical
- }
- e {
- _tabConfigure -invert true -orient vertical
- }
- default {
- error "bad anchor position\
- \"$itk_option(-tabpos)\" must be n, s, e, or w"
- }
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -raiseselect
-#
-# Sets whether to raise selected tabs slightly
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::raiseselect {
- if {$itk_option(-raiseselect) != {}} {
- set _relayout true
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -start
-#
-# Sets the offset to start of tab set
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::start {
- if {$itk_option(-start) != {}} {
- set _start [winfo pixels $itk_interior $itk_option(-start)]
- set _relayout true
- } else {
- set _start 4
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -margin
-#
-# Sets the margin used above n tabs, below s tabs, left of e
-# tabs, right of w tabs
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::margin {
- if {$itk_option(-margin) != {}} {
- set _margin [winfo pixels $itk_interior $itk_option(-margin)]
- set _relayout true
- } else {
- set _margin 5
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -tabborders
-#
-# Boolean that specifies whether to draw the borders of
-# the unselected tabs (tabs in background)
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::tabborders {
- if {$itk_option(-tabborders) != {}} {
- _tabConfigure -tabborders $itk_option(-tabborders)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -bevelamount
-#
-# Specifies pixel size of tab corners. 0 means no corners.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::bevelamount {
- if {$itk_option(-bevelamount) != {}} {
- _tabConfigure -bevelamount $itk_option(-bevelamount)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -padx
-#
-# Sets the padding in each tab to the left and right of label
-# I don't convert for fpixels, since Tab does it for me.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::padx {
- if {$itk_option(-padx) != {}} {
- _tabConfigure -padx $itk_option(-padx)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -pady
-#
-# Sets the padding in each tab to the left and right of label
-# I don't convert for fpixels, since Tab does it for me.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::pady {
- if {$itk_option(-pady) != {}} {
- _tabConfigure -pady $itk_option(-pady)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -gap
-#
-# Sets the amount of spacing between tabs in pixels
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::gap {
- if {$itk_option(-gap) != {}} {
- if {$itk_option(-gap) != "overlap"} {
- set _gap [winfo pixels $itk_interior $itk_option(-gap)]
- } else {
- set _gap overlap
- }
- set _relayout true
- } else {
- set _gap overlap
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -angle
-#
-# Sets the angle of the tab's sides
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::angle {
- if {$itk_option(-angle) != {}} {
- _tabConfigure -angle $itk_option(-angle)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -font
-#
-# Sets the font of the tab (SELECTED and UNSELECTED)
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::font {
- if {$itk_option(-font) != {}} {
- _tabConfigure -font $itk_option(-font)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -state
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::state {
- if {$itk_option(-state) != {}} {
- _tabConfigure -state $itk_option(-state)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -disabledforeground
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::disabledforeground {
- if {$itk_option(-disabledforeground) != {}} {
- _tabConfigure \
- -disabledforeground $itk_option(-disabledforeground)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -foreground
-#
-# Sets the foreground label color of UNSELECTED tabs
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::foreground {
- _tabConfigure -foreground $itk_option(-foreground)
-}
-
-# ----------------------------------------------------------------------
-# OPTION -background
-#
-# Sets the background color of UNSELECTED tabs
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::background {
- if {$itk_option(-background) != {}} {
- _tabConfigure -background $itk_option(-background)
- } else {
- _tabConfigure -background \
- [$itk_component(canvas) cget -background]
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -selectforeground
-#
-# Sets the foreground label color of SELECTED tabs
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::selectforeground {
- _tabConfigure -selectforeground $itk_option(-selectforeground)
-}
-
-# ----------------------------------------------------------------------
-# OPTION -backdrop
-#
-# Sets the background color of the Tabset backdrop (behind the tabs)
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::backdrop {
- if {$itk_option(-backdrop) != {}} {
- $itk_component(canvas) configure \
- -background $itk_option(-backdrop)
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -selectbackground
-#
-# Sets the background color of SELECTED tabs
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::selectbackground {
- if {$itk_option(-selectbackground) != {}} {
- } else {
- #set _selectBackground \
- [$itk_component(canvas) cget -background]
- }
- _tabConfigure -selectbackground $itk_option(-selectbackground)
-}
-
-# ----------------------------------------------------------------------
-# OPTION -command
-#
-# The command to invoke when a tab is hit.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tabset::command {
- if {$itk_option(-command) != {}} {
- set _cmdStr $itk_option(-command)
- }
-}
-
-# ----------------------------------------------------------------------
-# METHOD: add ?option value...?
-#
-# Creates a tab and appends it to the list of tabs.
-# processes tabconfigure for the tab added.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::add {args} {
- set tabName [eval _createTab $args]
- lappend _tabs $tabName
-
- _relayoutTabs
-
- return $tabName
-}
-
-# ----------------------------------------------------------------------
-# METHOD: configure ?option? ?value option value...?
-#
-# Acts as an addendum to the itk::Widget::configure method.
-#
-# Checks the _relayout flag to see if after configures are done
-# we need to relayout the tabs.
-#
-# _skipRelayout is set in the MB2 scroll methods, to avoid constant
-# relayout of tabs while dragging the mouse.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::configure {args} {
- set result [eval itk::Archetype::configure $args]
-
- _configRelayout
-
- return $result
-}
-
-body iwidgets::Tabset::_configRelayout {} {
- # then relayout tabs if necessary
- if { $_relayout } {
- if { $_skipRelayout } {
- } else {
- _relayoutTabs
- }
- set _relayout false
- }
-}
-
-# ----------------------------------------------------------------------
-# METHOD: delete index1 ?index2?
-#
-# Deletes a tab or range of tabs from the tabset
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::delete {args} {
- if { $_tabs == {} } {
- error "can't delete tabs,\
- no tabs in the tabset named $itk_component(hull)"
- }
-
- set len [llength $args]
- switch $len {
- 0 {
- error "wrong # args: should be\
- \"$itk_component(hull) delete index1 ?index2?\""
- }
-
- 1 {
- set fromTab [index [lindex $args 0]]
- if { $fromTab == -1 } {
- error "bad value for index1:\
- [lindex $args 0] in call to delete"
- }
- set toTab $fromTab
- _deleteTabs $fromTab $toTab
- }
-
- 2 {
- set fromTab [index [lindex $args 0]]
- if { $fromTab == -1 } {
- error "bad value for index1:\
- [lindex $args 0] in call to delete"
- }
- set toTab [index [lindex $args 1]]
-
- if { $toTab == -1 } {
- error "bad value for index2:\
- [lindex $args 1] in call to delete"
- }
- _deleteTabs $fromTab $toTab
- }
-
- default {
- error "wrong # args: should be\
- \"$itk_component(hull) delete index1 ?index2?\""
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# METHOD: index index
-#
-# Given an index identifier returns the numeric index of the tab
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::index {index} {
- return [_index $_tabs $index $_currTab]
-}
-
-# ----------------------------------------------------------------------
-# METHOD: insert index ?option value...?
-#
-# Inserts a tab before a index. The before tab may
-# be specified as a label or a tab position.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::insert {index args} {
- if { $_tabs == {} } {
- error "no tab to insert before,\
- tabset '$itk_component(hull)' is empty"
- }
-
- # get the tab
- set tab [index $index]
-
- # catch bad value for before tab.
- if { $tab < 0 || $tab >= [llength $_tabs] } {
- error "bad value $tab for index:\
- should be between 0 and [expr [llength $_tabs] - 1]"
- }
-
- # create the new tab and get its name...
- set tabName [eval _createTab $args]
-
- # grab the name of the tab currently selected. (to keep in sync)
- set currTabName [lindex $_tabs $_currTab]
-
- # insert tabName before $tab
- set _tabs [linsert $_tabs $tab $tabName]
-
- # keep the _currTab in sync with the insert.
- set _currTab [lsearch -exact $_tabs $currTabName]
-
- _relayoutTabs
-
- return $tabName
-}
-
-# ----------------------------------------------------------------------
-# METHOD: prev
-#
-# Selects the prev tab. Wraps at first back to last tab.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::prev {} {
- if { $_tabs == {} } {
- error "can't goto previous tab,\
- no tabs in the tabset: $itk_component(hull)"
- }
-
- # bump to the previous tab and wrap if necessary
- set prev [expr $_currTab - 1]
- if { $prev < 0 } {
- set prev [expr [llength $_tabs] - 1]
- }
-
- select $prev
-
-}
-
-# ----------------------------------------------------------------------
-# METHOD: next
-#
-# Selects the next tab. Wraps at last back to first tab.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::next {} {
- if { $_tabs == {} } {
- error "can't goto next tab,\
- no tabs in the tabset: $itk_component(hull)"
- }
-
- # bump to the next tab and wrap if necessary
- set next [expr $_currTab + 1]
- if { $next >= [llength $_tabs] } {
- set next 0
- }
-
- select $next
-}
-
-# ----------------------------------------------------------------------
-# METHOD: select index
-#
-# Select a tab by index
-#
-# Lowers the last _currTab if it existed.
-# Then raises the new one if it exists.
-#
-# Returns numeric index of selection, -1 if failed.
-# -------------------------------------------------------------
-body iwidgets::Tabset::select {index} {
- if { $_tabs == {} } {
- error "can't activate a tab,\
- no tabs in the tabset: $itk_component(hull)"
- }
-
- # if there is not current selection just ignore trying this selection
- if { $index == "select" && $_currTab == -1 } {
- return -1
- }
-
- # is selection request in range ?
- set reqTab [index $index]
- if { $reqTab == -1 } {
- error "bad value $index for index:\
- should be from 0 to [expr [llength $_tabs] - 1]"
- }
-
- # If already selected then ignore and return...
- if { $reqTab == $_currTab } {
- return $reqTab
- }
-
- # ---- Deselect
- if { $_currTab != -1 } {
- set currTabName [lindex $_tabs $_currTab]
- $currTabName deselect
-
- # handle different orientations...
- if { $itk_option(-tabpos) == "n" || $itk_option(-tabpos) == "s"} {
- $currTabName configure -top $_deselectedTop
- } else {
- $currTabName configure -left $_deselectedLeft
- }
- }
-
- # get the stacking order correct...
- foreach tab $_tabs {
- $tab lower
- }
-
- # set this now so that the -command cmd can do an 'index select'
- # to operate on this tab.
- set _currTab $reqTab
-
- # ---- Select
- set reqTabName [lindex $_tabs $reqTab]
- $reqTabName select
- if { $itk_option(-tabpos) == "n" || $itk_option(-tabpos) == "s"} {
- $reqTabName configure -top $_selectedTop
- } else {
- $reqTabName configure -left $_selectedLeft
- }
-
- set _currTab $reqTab
-
- # invoke any user command string, appended with tab index number
- if { $_cmdStr != {} } {
- set newCmd $_cmdStr
- eval [lappend newCmd $reqTab]
- }
-
- return $reqTab
-}
-
-# ----------------------------------------------------------------------
-# METHOD: tabcget index ?option?
-#
-# Returns the value for the option setting of the tab at index $index.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::tabcget {index args} {
- return [lindex [eval tabconfigure $index $args] 2]
-}
-
-# ----------------------------------------------------------------------
-# METHOD: tabconfigure index ?option? ?value option value?
-#
-# tabconfigure index : returns configuration list
-# tabconfigure index -option : returns option values
-# tabconfigure index ?option value option value ...? sets options
-# and returns empty string.
-#
-# Performs configure on a given tab denoted by index.
-#
-# Index may be a tab number or a pattern matching the label
-# associated with a tab.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::tabconfigure {index args} {
- # convert index to numeric
- set tab [index $index]
-
- if { $tab == -1 } {
- error "bad index value:\
- $index for $itk_component(hull) tabconfigure"
- }
-
- set tabName [lindex $_tabs $tab]
-
- set len [llength $args]
- switch $len {
- 0 {
- return [eval $tabName configure]
- }
- 1 {
- return [eval $tabName configure $args]
- }
- default {
- eval $tabName configure $args
- _relayoutTabs
- select select
- }
- }
- return ""
-}
-
-# ----------------------------------------------------------------------
-# PROTECTED METHOD: _selectName
-#
-# internal method to allow selection by internal tab name
-# rather than index. This is used by the bind methods
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_selectName {tabName} {
- # if the tab is disabled, then ignore this selection...
- if { [$tabName cget -state] == "disabled" } {
- return
- }
-
- set tab [lsearch -exact $_tabs $tabName]
- select $tab
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _createTab
-#
-# Creates a tab, using unique tab naming, propagates background
-# and keeps unique id up to date.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_createTab {args} {
- #
- # create an internal name for the tab: tab0, tab1, etc.
- # these are one-up numbers they do not
- # correspond to the position the tab is located in.
- #
- set tabName $this-tab$_uniqueID
-
- switch $itk_option(-tabpos) {
- n {
- set invert true
- set orient horizontal
- set x 0
- set y [expr $_margin + 1]
- }
- s {
- set invert false
- set orient horizontal
- set x 0
- set y 0
- }
- w {
- set invert false
- set orient vertical
- set x 0
- set y 0
- }
- e {
- set invert true
- set orient vertical
- set x [expr $_margin + 1]
- set y 0
- }
- default {
- error "bad anchor position\
- \"$itk_option(-tabpos)\" must be n, s, e, or w"
- }
- }
-
- eval iwidgets::Tab $tabName $itk_component(canvas) \
- -left $x \
- -top $y \
- -font [list $itk_option(-font)] \
- -background $itk_option(-background) \
- -foreground $itk_option(-foreground) \
- -selectforeground $itk_option(-selectforeground) \
- -disabledforeground $itk_option(-disabledforeground) \
- -selectbackground $itk_option(-selectbackground) \
- -angle $itk_option(-angle) \
- -padx $itk_option(-padx) \
- -pady $itk_option(-pady) \
- -bevelamount $itk_option(-bevelamount) \
- -state $itk_option(-state) \
- -tabborders $itk_option(-tabborders) \
- -invert $invert \
- -orient $orient \
- $args
-
- $tabName lower
-
- $itk_component(canvas) \
- bind $tabName <Button-1> [code $this _selectName $tabName]
-
- incr _uniqueID
-
- return $tabName
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _deleteTabs
-#
-# Deletes tabs from $fromTab to $toTab.
-#
-# Operates in two passes, destroys all the widgets
-# Then removes the pathName from the tab list
-#
-# Also keeps the current selection in bounds.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_deleteTabs {fromTab toTab} {
- for { set tab $fromTab } { $tab <= $toTab } { incr tab } {
- set tabName [lindex $_tabs $tab]
-
- # unbind Button-1 from this window name
- $itk_component(canvas) bind $tabName <Button-1> {}
-
- # Destroy the Tab class...
- itcl::delete object $tabName
- }
-
- # physically remove the tab
- set _tabs [lreplace $_tabs $fromTab $toTab]
-
- # If we deleted a selected tab set our selection to none
- if { $_currTab >= $fromTab && $_currTab <= $toTab } {
- set _currTab -1
- _drawBevelBorder
- }
-
- # make sure _currTab stays in sync with new numbering...
- if { $_tabs == {} } {
- # if deleted only remaining tab,
- # reset current tab to undefined
- set _currTab -1
-
- # or if the current tab was the last tab, it needs come back
- } elseif { $_currTab >= [llength $_tabs] } {
- incr _currTab -1
- if { $_currTab < 0 } {
- # but only to zero
- set _currTab 0
- }
- }
-
- _relayoutTabs
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _index
-#
-# pathList : list of path names to search thru if index is a label
-# index : either number, 'select', 'end', or pattern
-# select : current selection
-#
-# _index takes takes the value $index converts it to
-# a numeric identifier. If the value is not already
-# an integer it looks it up in the $pathList array.
-# If it fails it returns -1
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_index {pathList index select} {
- switch $index {
- select {
- set number $select
- }
- end {
- set number [expr [llength $pathList] -1]
- }
- default {
- # is it an number already?
- if { [regexp {^[0-9]+$} $index] } {
- set number $index
- if { $number < 0 || $number >= [llength $pathList] } {
- set number -1
- }
-
- # otherwise it is a label
- } else {
- # look thru the pathList of pathNames and
- # get each label and compare with index.
- # if we get a match then set number to postion in $pathList
- # and break out.
- # otherwise number is still -1
- set i 0
- set number -1
- foreach pathName $pathList {
- set label [$pathName cget -label]
- if { $label == $index } {
- set number $i
- break
- }
- incr i
- }
- }
- }
- }
-
- return $number
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _tabConfigure
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_tabConfigure {args} {
- foreach tab $_tabs {
- eval $tab configure $args
- }
-
- set _relayout true
-
- if { $_tabs != {} } {
- select select
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _relayoutTabs
-#
-# relays out the tabs with correct spacing...
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_relayoutTabs {} {
- if { [llength $_tabs] == 0 } {
- return
- }
-
- # get the max width for fixed width tabs...
- set maxWidth 0
- foreach tab $_tabs {
- set width [$tab labelwidth]
- if { $width > $maxWidth } {
- set maxWidth $width
- }
- }
-
- # get the max height for fixed height tabs...
- set maxHeight 0
- foreach tab $_tabs {
- set height [$tab labelheight]
- if { $height > $maxHeight } {
- set maxHeight $height
- }
- }
-
- # get curr tab's name
- set currTabName [lindex $_tabs $_currTab]
-
- # Start with our margin offset in pixels...
- set tabStart $_start
-
- if { $itk_option(-raiseselect) } {
- set raiseAmt 2
- } else {
- set raiseAmt 0
- }
-
- #
- # Depending on the tab layout: n, s, e, or w place the tabs
- # according to orientation, raise, margins, etc.
- #
- switch $itk_option(-tabpos) {
- n {
- set _selectedTop [expr $_margin + 1]
- set _deselectedTop [expr $_selectedTop + $raiseAmt]
-
- if { $itk_option(-equaltabs) } {
- set tabWidth $maxWidth
- } else {
- set tabWidth 0
- }
-
- foreach tab $_tabs {
- if { $tab == $currTabName } {
- $tab configure -left $tabStart -top $_selectedTop \
- -height $maxHeight -width $tabWidth -anchor c
- } else {
- $tab configure -left $tabStart -top $_deselectedTop \
- -height $maxHeight -width $tabWidth -anchor c
- }
- set tabStart [expr $tabStart + [_calcNextTabOffset $tab]]
- }
-
- }
- s {
- set _selectedTop 0
- set _deselectedTop [expr $_selectedTop - $raiseAmt]
-
- if { $itk_option(-equaltabs) } {
- set tabWidth $maxWidth
- } else {
- set tabWidth 0
- }
-
- foreach tab $_tabs {
- if { $tab == $currTabName } {
- $tab configure -left $tabStart -top $_selectedTop \
- -height $maxHeight -width $tabWidth -anchor c
- } else {
- $tab configure -left $tabStart -top $_deselectedTop \
- -height $maxHeight -width $tabWidth -anchor c
- }
- set tabStart [expr $tabStart + [_calcNextTabOffset $tab]]
- }
-
- }
- w {
- set _selectedLeft [expr $_margin + 1]
- set _deselectedLeft [expr $_selectedLeft + $raiseAmt]
-
- if { $itk_option(-equaltabs) } {
- set tabHeight $maxHeight
- } else {
- set tabHeight 0
- }
-
- foreach tab $_tabs {
- # selected
- if { $tab == $currTabName } {
- $tab configure -top $tabStart -left $_selectedLeft \
- -height $tabHeight -width $maxWidth -anchor e
- # deselected
- } else {
- $tab configure -top $tabStart -left $_deselectedLeft \
- -height $tabHeight -width $maxWidth -anchor e
- }
- set tabStart [expr $tabStart + [_calcNextTabOffset $tab]]
- }
-
- }
- e {
- set _selectedLeft 0
- set _deselectedLeft [expr $_selectedLeft - $raiseAmt]
-
- if { $itk_option(-equaltabs) } {
- set tabHeight $maxHeight
- } else {
- set tabHeight 0
- }
-
- foreach tab $_tabs {
- # selected
- if { $tab == $currTabName } {
- $tab configure -top $tabStart -left $_selectedLeft \
- -height $tabHeight -width $maxWidth -anchor w
- # deselected
- } else {
- $tab configure -top $tabStart -left $_deselectedLeft \
- -height $tabHeight -width $maxWidth -anchor w
- }
- set tabStart [expr $tabStart + [_calcNextTabOffset $tab]]
- }
-
- }
- default {
- error "bad anchor position\
- \"$itk_option(-tabpos)\" must be n, s, e, or w"
- }
- }
-
- # put border on & calc our new canvas size...
- _drawBevelBorder
- _recalcCanvasGeom
-
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _drawBevelBorder
-#
-# draws the bevel border along tab edge (below selected tab)
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_drawBevelBorder {} {
- $itk_component(canvas) delete bevelBorder
-
- switch $itk_option(-tabpos) {
- n {
- $itk_component(canvas) create line \
- 0 [expr $_canvasHeight - 1] \
- $_canvasWidth [expr $_canvasHeight - 1] \
- -fill [iwidgets::colors::topShadow $itk_option(-selectbackground)] \
- -tags bevelBorder
- $itk_component(canvas) create line \
- 0 $_canvasHeight \
- $_canvasWidth $_canvasHeight \
- -fill [iwidgets::colors::topShadow $itk_option(-selectbackground)] \
- -tags bevelBorder
- }
- s {
- $itk_component(canvas) create line \
- 0 0 \
- $_canvasWidth 0 \
- -fill [iwidgets::colors::bottomShadow $itk_option(-selectbackground)] \
- -tags bevelBorder
- $itk_component(canvas) create line \
- 0 1 \
- $_canvasWidth 1 \
- -fill black \
- -tags bevelBorder
- }
- w {
- $itk_component(canvas) create line \
- $_canvasWidth 0 \
- $_canvasWidth [expr $_canvasHeight - 1] \
- -fill [iwidgets::colors::topShadow $itk_option(-selectbackground)] \
- -tags bevelBorder
- $itk_component(canvas) create line \
- [expr $_canvasWidth - 1] 0 \
- [expr $_canvasWidth - 1] [expr $_canvasHeight - 1] \
- -fill [iwidgets::colors::topShadow $itk_option(-selectbackground)] \
- -tags bevelBorder
-
- }
- e {
- $itk_component(canvas) create line \
- 0 0 \
- 0 [expr $_canvasHeight - 1] \
- -fill black \
- -tags bevelBorder
- $itk_component(canvas) create line \
- 1 0 \
- 1 [expr $_canvasHeight - 1] \
- -fill [iwidgets::colors::bottomShadow $itk_option(-selectbackground)] \
- -tags bevelBorder
-
- }
- }
-
- $itk_component(canvas) raise bevelBorder
- if { $_currTab != -1 } {
- set currTabName [lindex $_tabs $_currTab]
- $currTabName raise
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _calcNextTabOffset
-#
-# given $tabName, determines the offset in pixels to place
-# the next tab's start edge at.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_calcNextTabOffset {tabName} {
- if { $_gap == "overlap" } {
- return [$tabName offset]
- } else {
- return [expr [$tabName majordim] + $_gap]
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _tabBounds
-#
-# calculates the bounding box that will completely enclose
-# all the tabs.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_tabBounds {} {
- set bbox { 100000 100000 -10000 -10000 }
- foreach tab $_tabs {
- set tabBBox [$tab bbox]
- # if this left is less use it
- if { [lindex $tabBBox 0] < [lindex $bbox 0] } {
- set bbox [lreplace $bbox 0 0 [lindex $tabBBox 0]]
- }
- # if this top is greater use it
- if { [lindex $tabBBox 1] < [lindex $bbox 1] } {
- set bbox [lreplace $bbox 1 1 [lindex $tabBBox 1]]
- }
- # if this right is less use it
- if { [lindex $tabBBox 2] > [lindex $bbox 2] } {
- set bbox [lreplace $bbox 2 2 [lindex $tabBBox 2]]
- }
- # if this bottom is greater use it
- if { [lindex $tabBBox 3] > [lindex $bbox 3] } {
- set bbox [lreplace $bbox 3 3 [lindex $tabBBox 3]]
- }
-
- }
- return $bbox
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _recalcCanvasGeom
-#
-# Based on size of tabs, recalculates the canvas geometry that
-# will hold the tabs.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_recalcCanvasGeom {} {
- if { [llength $_tabs] == 0 } {
- return
- }
-
- set bbox [_tabBounds]
-
- set width [lindex [_tabBounds] 2]
- set height [lindex [_tabBounds] 3]
-
- # now we have the dimensions of all the tabs in the canvas.
-
-
- switch $itk_option(-tabpos) {
- n {
- # height already includes margin
- $itk_component(canvas) configure \
- -width $width \
- -height $height
- }
- s {
- $itk_component(canvas) configure \
- -width $width \
- -height [expr $height + $_margin]
- }
- w {
- # width already includes margin
- $itk_component(canvas) configure \
- -width $width \
- -height [expr $height + 1]
- }
- e {
- $itk_component(canvas) configure \
- -width [expr $width + $_margin] \
- -height [expr $height + 1]
- }
- default {
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _canvasReconfigure
-#
-# Bound to the reconfigure notify event of a canvas, this
-# method resets canvas's correct width (since we are fill x)
-# and redraws the beveled edge border.
-# will hold the tabs.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_canvasReconfigure {width height} {
- set _canvasWidth $width
- set _canvasHeight $height
-
- if { [llength $_tabs] > 0 } {
- _drawBevelBorder
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _startMove
-#
-# This method is bound to the MB2 down in the canvas area of the
-# tab set. This starts animated scrolling of the tabs along their
-# major axis.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_startMove {x y} {
- if { $itk_option(-tabpos) == "n" || $itk_option(-tabpos) == "s" } {
- set _anchorX $x
- } else {
- set _anchorY $y
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _moveTabs
-#
-# This method is bound to the MB2 motion in the canvas area of the
-# tab set. This causes the tabset to move with the mouse.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_moveTabs {x y} {
- if { $itk_option(-tabpos) == "n" || $itk_option(-tabpos) == "s" } {
- set startX [expr $_start + $x - $_anchorX]
- foreach tab $_tabs {
- $tab configure -left $startX
- set startX [expr $startX + [_calcNextTabOffset $tab]]
- }
- } else {
- set startY [expr $_start + $y - $_anchorY]
- foreach tab $_tabs {
- $tab configure -top $startY
- set startY [expr $startY + [_calcNextTabOffset $tab]]
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _endMove
-#
-# This method is bound to the MB2 release in the canvas area of the
-# tab set. This causes the tabset to end moving tabs.
-# ----------------------------------------------------------------------
-body iwidgets::Tabset::_endMove {x y} {
- if { $itk_option(-tabpos) == "n" || $itk_option(-tabpos) == "s" } {
- set startX [expr $_start + $x - $_anchorX]
- set _skipRelayout true
- configure -start $startX
- set _skipRelayout false
- } else {
- set startY [expr $_start + $y - $_anchorY]
- set _skipRelayout true
- configure -start $startY
- set _skipRelayout false
- }
-}
-
-
-#==============================================================
-# CLASS: Tab
-#==============================================================
-
-class iwidgets::Tab {
- constructor {args} {}
-
- destructor {}
-
- public variable bevelamount 0 {}
- public variable state normal {}
- public variable height 0 {}
- public variable width 0 {}
- public variable anchor c {}
- public variable left 0 {}
- public variable top 0 {}
- public variable image {} {}
- public variable bitmap {} {}
- public variable label {} {}
- public variable padx 4 {}
- public variable pady 4 {}
- public variable selectbackground "gray70" {}
- public variable selectforeground "black" {}
- public variable disabledforeground "gray" {}
- public variable background "white" {}
- public variable foreground "black" {}
- public variable orient vertical {}
- public variable invert false {}
- public variable angle 20 {}
- public variable font \
- "-adobe-helvetica-bold-r-normal--34-240-100-100-p-182-iso8859-1" {}
- public variable tabborders true {}
-
- public method configure {args}
- public method bbox {}
- public method deselect {}
- public method lower {}
- public method majordim {}
- public method minordim {}
- public method offset {}
- public method raise {}
- public method select {}
- public method labelheight {}
- public method labelwidth {}
-
- private method _makeTab {}
- private method _createLabel {canvas tagList}
- private method _makeEastTab {canvas}
- private method _makeWestTab {canvas}
- private method _makeNorthTab {canvas}
- private method _makeSouthTab {canvas}
- private method _calcLabelDim {labelItem}
- private method _itk_config {args} @itcl-builtin-configure
- private method _selectNoRaise {}
- private method _deselectNoLower {}
-
- private variable _selected false
- private variable _padX 0
- private variable _padY 0
-
- private variable _canvas
-
- # these are in pixels
- private variable _left 0
- private variable _width 0
- private variable _height 0
- private variable _oldLeft 0
- private variable _top 0
- private variable _oldTop 0
-
- private variable _right
- private variable _bottom
-
- private variable _offset
- private variable _majorDim
- private variable _minorDim
-
- private variable _darkShadow
- private variable _lightShadow
-
- #
- # graphic components that make up a tab
- #
- private variable _gRegion
- private variable _gLabel
- private variable _gLightOutline {}
- private variable _gBlackOutline {}
- private variable _gTopLine
- private variable _gTopLineShadow
- private variable _gLightShadow
- private variable _gDarkShadow
-
- private variable _labelWidth 0
- private variable _labelHeight 0
-
- private variable _labelXOrigin 0
- private variable _labelYOrigin 0
-
- private variable _just left
-
- private variable _configTripped true
-
- common _tan
-
- set _tan(0) 0.0
- set _tan(1) 0.0175
- set _tan(2) 0.0349
- set _tan(3) 0.0524
- set _tan(4) 0.0699
- set _tan(5) 0.0875
- set _tan(6) 0.1051
- set _tan(7) 0.1228
- set _tan(8) 0.1405
- set _tan(9) 0.1584
- set _tan(10) 0.1763
- set _tan(11) 0.1944
- set _tan(12) 0.2126
- set _tan(13) 0.2309
- set _tan(14) 0.2493
- set _tan(15) 0.2679
- set _tan(16) 0.2867
- set _tan(17) 0.3057
- set _tan(18) 0.3249
- set _tan(19) 0.3443
- set _tan(20) 0.3640
- set _tan(21) 0.3839
- set _tan(22) 0.4040
- set _tan(23) 0.4245
- set _tan(24) 0.4452
- set _tan(25) 0.4663
- set _tan(26) 0.4877
- set _tan(27) 0.5095
- set _tan(28) 0.5317
- set _tan(29) 0.5543
- set _tan(30) 0.5774
- set _tan(31) 0.6009
- set _tan(32) 0.6294
- set _tan(33) 0.6494
- set _tan(34) 0.6745
- set _tan(35) 0.7002
- set _tan(36) 0.7265
- set _tan(37) 0.7536
- set _tan(38) 0.7813
- set _tan(39) 0.8098
- set _tan(40) 0.8391
- set _tan(41) 0.8693
- set _tan(42) 0.9004
- set _tan(43) 0.9325
- set _tan(44) 0.9657
- set _tan(45) 1.0
-}
-
-# ----------------------------------------------------------------------
-# CONSTRUCTOR
-# ----------------------------------------------------------------------
-body iwidgets::Tab::constructor {args} {
-
- set _canvas [lindex $args 0]
- set args [lrange $args 1 [llength $args]]
-
- set _darkShadow [iwidgets::colors::bottomShadow $selectbackground]
- set _lightShadow [iwidgets::colors::topShadow $selectbackground]
-
- if { $args != "" } {
- eval configure $args
- }
-}
-
-# ----------------------------------------------------------------------
-# DESTRUCTOR
-# ----------------------------------------------------------------------
-body iwidgets::Tab::destructor {} {
- if { [winfo exists $_canvas] } {
- $_canvas delete $this
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTIONS
-# ----------------------------------------------------------------------
-#
-# Note, we trip _configTripped for every option that requires the tab
-# to be remade.
-#
-# ----------------------------------------------------------------------
-# OPTION -bevelamount
-#
-# Specifies the size of tab corners. A value of 0 with angle set
-# to 0 results in square tabs. A bevelAmount of 4, means that the
-# tab will be drawn with angled corners that cut in 4 pixels from
-# the edge of the tab. The default is 0.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::bevelamount {
-}
-
-# ----------------------------------------------------------------------
-# OPTION -state
-#
-# sets the active state of the tab. specifying normal allows
-# the tab to be selectable. Specifying disabled disables the tab,
-# causing its image, bitmap, or label to be drawn with the
-# disabledForeground color.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::state {
-}
-
-# ----------------------------------------------------------------------
-# OPTION -height
-#
-# the height of the tab. if 0, uses the font label height.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::height {
- set _height [winfo pixels $_canvas $height]
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -width
-#
-# The width of the tab. If 0, uses the font label width.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::width {
- set _width [winfo pixels $_canvas $width]
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -anchor
-#
-# Where the text in the tab will be anchored: n,nw,ne,s,sw,se,e,w,center
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::anchor {
-}
-
-# ----------------------------------------------------------------------
-# OPTION -left
-#
-# Specifies the left edge of the tab's bounding box. This value
-# may have any of the forms acceptable to Tk_GetPixels.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::left {
-
- # get into pixels
- set _left [winfo pixels $_canvas $left]
-
- # move by offset from last setting
- $_canvas move $this [expr $_left - $_oldLeft] 0
-
- # update old for next time
- set _oldLeft $_left
-}
-
-# ----------------------------------------------------------------------
-# OPTION -top
-#
-# Specifies the topedge of the tab's bounding box. This value may
-# have any of the forms acceptable to Tk_GetPixels.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::top {
-
- # get into pixels
- set _top [winfo pixels $_canvas $top]
-
- # move by offset from last setting
- $_canvas move $this 0 [expr $_top - $_oldTop]
-
- # update old for next time
- set _oldTop $_top
-}
-
-# ----------------------------------------------------------------------
-# OPTION -image
-#
-# Specifies the imageto display in the tab.
-# Images are created with the image create command.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::image {
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -bitmap
-#
-# If bitmap is an empty string, specifies the bitmap to display in
-# the tab. Bitmap may be of any of the forms accepted by Tk_GetBitmap.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::bitmap {
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -label
-#
-# If image is an empty string and bitmap is an empty string,
-# it specifies a text string to be placed in the tab's label.
-# This label serves as an additional identifier used to reference
-# the tab. Label may be used for the index value in widget commands.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::label {
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -padx
-#
-# Horizontal padding around the label (text, image, or bitmap).
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::padx {
- set _configTripped true
- set _padX [winfo pixels $_canvas $padx]
-}
-
-# ----------------------------------------------------------------------
-# OPTION -pady
-#
-# Vertical padding around the label (text, image, or bitmap).
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::pady {
- set _configTripped true
- set _padY [winfo pixels $_canvas $pady]
-}
-
-# ----------------------------------------------------------------------
-# OPTION -selectbackground
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::selectbackground {
- set _darkShadow [iwidgets::colors::bottomShadow $selectbackground]
- set _lightShadow [iwidgets::colors::topShadow $selectbackground]
-
- if { $_selected } {
- _selectNoRaise
- } else {
- _deselectNoLower
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -selectforeground
-#
-# Foreground of tab when selected
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::selectforeground {
- if { $_selected } {
- _selectNoRaise
- } else {
- _deselectNoLower
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -disabledforeground
-#
-# Background of tab when -state is disabled
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::disabledforeground {
- if { $_selected } {
- _selectNoRaise
- } else {
- _deselectNoLower
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -background
-#
-# Normal background of tab.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::background {
-
- if { $_selected } {
- _selectNoRaise
- } else {
- _deselectNoLower
- }
-
-}
-
-# ----------------------------------------------------------------------
-# OPTION -foreground
-#
-# Foreground of tabs when in normal unselected state
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::foreground {
- if { $_selected } {
- _selectNoRaise
- } else {
- _deselectNoLower
- }
-}
-
-# ----------------------------------------------------------------------
-# OPTION -orient
-#
-# Specifies the orientation of the tab. Orient can be either
-# horizontal or vertical.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::orient {
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -invert
-#
-# Specifies the direction to draw the tab. If invert is true,
-# it draws horizontal tabs upside down and vertical tabs opening
-# to the left (pointing right). The value may have any of the
-# forms accepted by the Tcl_GetBoolean, such as true,
-# false, 0, 1, yes, or no.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::invert {
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -angle
-#
-# Specifes the angle of slope from the inner edge to the outer edge
-# of the tab. An angle of 0 specifies square tabs. Valid ranges are
-# 0 to 45 degrees inclusive. Default is 15 degrees. If this option
-# is specified as an empty string (the default), then the angle
-# option for the overall Tabset is used.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::angle {
- if {$angle < 0 || $angle > 45 } {
- error "bad angle: must be between 0 and 45"
- }
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# OPTION -font
-#
-# Font for tab text.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::font {
-}
-
-
-# ----------------------------------------------------------------------
-# OPTION -tabborders
-#
-# Specifies whether to draw the borders of a deselected tab.
-# Specifying true (the default) draws these borders,
-# specifying false disables this drawing. If the tab is in
-# its selected state this option has no effect.
-# The value may have any of the forms accepted by the
-# Tcl_GetBoolean, such as true, false, 0, 1, yes, or no.
-# ----------------------------------------------------------------------
-configbody iwidgets::Tab::tabborders {
- set _configTripped true
-}
-
-# ----------------------------------------------------------------------
-# METHOD: configure ?option value?
-#
-# Configures the Tab, checks a configTripped flag to see if the tab
-# needs to be remade. We take the easy way since it is so inexpensive
-# to delete canvas items and remake them.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::configure {args} {
- set len [llength $args]
-
- switch $len {
- 0 {
- set result [_itk_config]
- return $result
- }
- 1 {
- set result [eval _itk_config $args]
- return $result
- }
- default {
- eval _itk_config $args
- if { $_configTripped } {
- _makeTab
- set _configTripped false
- }
- return ""
- }
- }
-}
-
-# ----------------------------------------------------------------------
-# METHOD: bbox
-#
-# Returns the bounding box of the tab
-# ----------------------------------------------------------------------
-body iwidgets::Tab::bbox {} {
- return [lappend bbox $_left $_top $_right $_bottom]
-}
-# ----------------------------------------------------------------------
-# METHOD: deselect
-#
-# Causes the given tab to be drawn as deselected and lowered
-# ----------------------------------------------------------------------
-body iwidgets::Tab::deselect {} {
- global tcl_platform
- $_canvas lower $this
-
- if {$tcl_platform(os) == "HP-UX"} {
- update idletasks
- }
-
- _deselectNoLower
-}
-
-# ----------------------------------------------------------------------
-# METHOD: lower
-#
-# Lowers the tab below all others in the canvas.
-#
-# This is used as our tag name on the canvas.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::lower {} {
- $_canvas lower $this
-}
-
-# ----------------------------------------------------------------------
-# METHOD: majordim
-#
-# Returns the width for horizontal tabs and the height for
-# vertical tabs.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::majordim {} {
- return $_majorDim
-}
-
-# ----------------------------------------------------------------------
-# METHOD: minordim
-#
-# Returns the height for horizontal tabs and the width for
-# vertical tabs.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::minordim {} {
- return $_minorDim
-}
-
-# ----------------------------------------------------------------------
-# METHOD: offset
-#
-# Returns the width less the angle offset. This allows a
-# geometry manager to ask where to place a sibling tab.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::offset {} {
- return $_offset
-}
-
-# ----------------------------------------------------------------------
-# METHOD: raise
-#
-# Raises the tab above all others in the canvas.
-#
-# This is used as our tag name on the canvas.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::raise {} {
- $_canvas raise $this
-}
-
-# ----------------------------------------------------------------------
-# METHOD: select
-#
-# Causes the given tab to be drawn as selected. 3d shadows are
-# turned on and top line and top line shadow are drawn in sel
-# bg color to hide them.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::select {} {
- global tcl_platform
- $_canvas raise $this
-
- if {$tcl_platform(os) == "HP-UX"} {
- update idletasks
- }
-
- _selectNoRaise
-}
-
-# ----------------------------------------------------------------------
-# METHOD: labelheight
-#
-# Returns the height of the tab's label in its current font.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::labelheight {} {
- if {$_gLabel != 0} {
- set labelBBox [$_canvas bbox $_gLabel]
- set labelHeight [expr [lindex $labelBBox 3] - [lindex $labelBBox 1]]
- } else {
- set labelHeight 0
- }
- return $labelHeight
-}
-
-# ----------------------------------------------------------------------
-# METHOD: labelwidth
-#
-# Returns the width of the tab's label in its current font.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::labelwidth {} {
- if {$_gLabel != 0} {
- set labelBBox [$_canvas bbox $_gLabel]
- set labelWidth [expr [lindex $labelBBox 2] - [lindex $labelBBox 0]]
- } else {
- set labelWidth 0
- }
- return $labelWidth
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _selectNoRaise
-#
-# Draws tab as selected without raising it.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_selectNoRaise {} {
- if { ! [info exists _gRegion] } {
- return
- }
-
- $_canvas itemconfigure $_gRegion -fill $selectbackground
- $_canvas itemconfigure $_gTopLine -fill $selectbackground
- $_canvas itemconfigure $_gTopLineShadow -fill $selectbackground
- $_canvas itemconfigure $_gLightShadow -fill $_lightShadow
- $_canvas itemconfigure $_gDarkShadow -fill $_darkShadow
-
- if { $_gLightOutline != {} } {
- $_canvas itemconfigure $_gLightOutline -fill $_lightShadow
- }
- if { $_gBlackOutline != {} } {
- $_canvas itemconfigure $_gBlackOutline -fill black
- }
-
- if { $state == "normal" } {
- if { $image != {}} {
- # do nothing for now
- } elseif { $bitmap != {}} {
- $_canvas itemconfigure $_gLabel \
- -foreground $selectforeground \
- -background $selectbackground
- } else {
- $_canvas itemconfigure $_gLabel -fill $selectforeground
- }
- } else {
- if { $image != {}} {
- # do nothing for now
- } elseif { $bitmap != {}} {
- $_canvas itemconfigure $_gLabel \
- -foreground $disabledforeground \
- -background $selectbackground
- } else {
- $_canvas itemconfigure $_gLabel -fill $disabledforeground
- }
- }
-
- set _selected true
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _deselectNoLower
-#
-# Causes the given tab to be drawn as deselected. 3d shadows are
-# removed and top line and top line shadow are drawn in visible
-# colors to reveal them.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_deselectNoLower {} {
- if { ! [info exists _gRegion] } {
- return
- }
-
- $_canvas itemconfigure $_gRegion -fill $background
- $_canvas itemconfigure $_gTopLine -fill black
- $_canvas itemconfigure $_gTopLineShadow -fill $_darkShadow
- $_canvas itemconfigure $_gLightShadow -fill $background
- $_canvas itemconfigure $_gDarkShadow -fill $background
-
- if { $tabborders } {
- if { $_gLightOutline != {} } {
- $_canvas itemconfigure $_gLightOutline -fill $_lightShadow
- }
- if { $_gBlackOutline != {} } {
- $_canvas itemconfigure $_gBlackOutline -fill black
- }
- } else {
- if { $_gLightOutline != {} } {
- $_canvas itemconfigure $_gLightOutline -fill $background
- }
- if { $_gBlackOutline != {} } {
- $_canvas itemconfigure $_gBlackOutline -fill $background
- }
- }
-
-
- if { $state == "normal" } {
- if { $image != {}} {
- # do nothing for now
- } elseif { $bitmap != {}} {
- $_canvas itemconfigure $_gLabel \
- -foreground $foreground \
- -background $background
- } else {
- $_canvas itemconfigure $_gLabel -fill $foreground
- }
- } else {
- if { $image != {}} {
- # do nothing for now
- } elseif { $bitmap != {}} {
- $_canvas itemconfigure $_gLabel \
- -foreground $disabledforeground \
- -background $background
- } else {
- $_canvas itemconfigure $_gLabel -fill $disabledforeground
- }
- }
-
- set _selected false
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _makeTab
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_makeTab {} {
- if { $orient == "horizontal" } {
- if { $invert } {
- _makeNorthTab $_canvas
- } else {
- _makeSouthTab $_canvas
- }
- } elseif { $orient == "vertical" } {
- if { $invert } {
- _makeEastTab $_canvas
- } else {
- _makeWestTab $_canvas
- }
- } else {
- error "bad value for option -orient"
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _createLabel
-#
-# Creates the label for the tab. Can be either a text label
-# or a bitmap label.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_createLabel {canvas tagList} {
- if { $image != {}} {
- set _gLabel [$canvas create image \
- 0 0 \
- -image $image \
- -anchor nw \
- -tags $tagList \
- ]
- } elseif { $bitmap != {}} {
- set _gLabel [$canvas create bitmap \
- 0 0 \
- -bitmap $bitmap \
- -anchor nw \
- -tags $tagList \
- ]
- } else {
- set _gLabel [$canvas create text \
- 0 0 \
- -text $label \
- -font $font \
- -anchor nw \
- -tags $tagList \
- ]
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _makeEastTab
-#
-# Makes a tab that hangs to the east and opens to the west.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_makeEastTab {canvas} {
- $canvas delete $this
- set _gLightOutline {}
- set _gBlackOutline {}
-
- lappend tagList $this TAB
-
- _createLabel $canvas $tagList
-
- _calcLabelDim $_gLabel
-
-
- set right [expr $_left + $_labelWidth]
- # now have _left, _top, right...
-
- # Turn off calculating angle tabs on Vertical orientations
- #set angleOffset [expr $_labelHeight * $_tan($angle)]
- set angleOffset 0
-
- set outerTop $_top
- set outerBottom \
- [expr $outerTop + $angleOffset + $_labelHeight + $angleOffset]
- set innerTop [expr $outerTop + $angleOffset]
- set innerBottom [expr $outerTop + $angleOffset + $_labelHeight]
-
- # now have _left, _top, right, outerTop, innerTop,
- # innerBottom, outerBottom, width, height
-
- set bottom $innerBottom
- # tab area... gets filled either white or selected
- # done
- set _gRegion [$canvas create polygon \
- $_left $outerTop \
- [expr $right - $bevelamount] $innerTop \
- $right [expr $innerTop + $bevelamount] \
- $right [expr $innerBottom - $bevelamount] \
- [expr $right - $bevelamount] $innerBottom \
- $_left $outerBottom \
- $_left $outerTop \
- -tags $tagList \
- ]
-
- # lighter shadow (left edge)
- set _gLightShadow [$canvas create line \
- [expr $_left - 3] [expr $outerTop + 1] \
- [expr $right - $bevelamount] [expr $innerTop + 1] \
- -tags $tagList \
- ]
-
- # darker shadow (bottom and right edges)
- set _gDarkShadow [$canvas create line \
- [expr $right - $bevelamount] [expr $innerTop + 1] \
- [expr $right - 1] [expr $innerTop + $bevelamount] \
- [expr $right - 1] [expr $innerBottom - $bevelamount] \
- [expr $right - $bevelamount] [expr $innerBottom - 1] \
- [expr $_left - 3] [expr $outerBottom - 1] \
- -tags $tagList \
- ]
-
- # outline of tab
- set _gLightOutline [$canvas create line \
- $_left $outerTop \
- [expr $right - $bevelamount] $innerTop \
- -tags $tagList \
- ]
- # outline of tab
- set _gBlackOutline [$canvas create line \
- [expr $right - $bevelamount] $innerTop \
- $right [expr $innerTop + $bevelamount] \
- $right [expr $innerBottom - $bevelamount] \
- [expr $right - $bevelamount] $innerBottom \
- $_left $outerBottom \
- $_left $outerTop \
- -tags $tagList \
- ]
-
- # line closest to the edge
- set _gTopLineShadow [$canvas create line \
- $_left $outerTop \
- $_left $outerBottom \
- -tags $tagList \
- ]
-
- # next line down
- set _gTopLine [$canvas create line \
- [expr $_left + 1] [expr $outerTop + 2] \
- [expr $_left + 1] [expr $outerBottom - 1] \
- -tags $tagList \
- ]
-
- $canvas coords $_gLabel [expr $_left + $_labelXOrigin] \
- [expr $innerTop + $_labelYOrigin]
-
- if { $image != {} || $bitmap != {} } {
- $canvas itemconfigure $_gLabel -anchor $anchor
- } else {
- $canvas itemconfigure $_gLabel -anchor $anchor -justify $_just
- }
-
- $canvas raise $_gLabel $_gRegion
-
-
- set _offset [expr $innerBottom - $outerTop]
- # height
- set _majorDim [expr $outerBottom - $outerTop]
- # width
- set _minorDim [expr $right - $_left]
-
- set _right $right
- set _bottom $outerBottom
-
- # draw in correct state...
- if { $_selected } {
- select
- } else {
- deselect
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _makeWestTab
-#
-# Makes a tab that hangs to the west and opens to the east.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_makeWestTab {canvas} {
- $canvas delete $this
- set _gLightOutline {}
- set _gBlackOutline {}
-
- lappend tagList $this TAB
-
- _createLabel $canvas $tagList
- _calcLabelDim $_gLabel
-
- set right [expr $_left + $_labelWidth]
- # now have _left, _top, right...
-
- # Turn off calculating angle tabs on Vertical orientations
- #set angleOffset [expr $_labelHeight * $_tan($angle)]
- set angleOffset 0
-
- set outerTop $_top
- set outerBottom \
- [expr $outerTop + $angleOffset + $_labelHeight + $angleOffset]
- set innerTop [expr $outerTop + $angleOffset]
- set innerBottom [expr $outerTop + $angleOffset + $_labelHeight]
-
- # now have _left, _top, right, outerTop, innerTop,
- # innerBottom, outerBottom, width, height
-
- # tab area... gets filled either white or selected
- # done
- set _gRegion [$canvas create polygon \
- $right $outerTop \
- [expr $_left + $bevelamount] $innerTop \
- $_left [expr $innerTop + $bevelamount] \
- $_left [expr $innerBottom - $bevelamount]\
- [expr $_left + $bevelamount] $innerBottom \
- $right $outerBottom \
- $right $outerTop \
- -tags $tagList \
- ]
- # lighter shadow (left edge)
- set _gLightShadow [$canvas create line \
- $right [expr $outerTop+1] \
- [expr $_left + $bevelamount] [expr $innerTop + 1] \
- [expr $_left + 1] [expr $innerTop + $bevelamount] \
- [expr $_left + 1] [expr $innerBottom - $bevelamount] \
- -tags $tagList \
- ]
-
- # darker shadow (bottom and right edges)
- set _gDarkShadow [$canvas create line \
- [expr $_left + 1] [expr $innerBottom - $bevelamount] \
- [expr $_left + $bevelamount] [expr $innerBottom - 1] \
- $right [expr $outerBottom - 1] \
- -tags $tagList \
- ]
-
- # outline of tab -- lighter top left sides
- set _gLightOutline [$canvas create line \
- $right $outerTop \
- [expr $_left + $bevelamount] $innerTop \
- $_left [expr $innerTop + $bevelamount] \
- $_left [expr $innerBottom - $bevelamount]\
- -tags $tagList \
- ]
- # outline of tab -- darker bottom side
- set _gBlackOutline [$canvas create line \
- $_left [expr $innerBottom - $bevelamount]\
- [expr $_left + $bevelamount] $innerBottom \
- $right $outerBottom \
- $right $outerTop \
- -tags $tagList \
- ]
-
- # top of tab
- set _gTopLine [$canvas create line \
- [expr $right + 1] $outerTop \
- [expr $right + 1] $outerBottom \
- -tags $tagList \
- ]
-
- # line below top of tab
- set _gTopLineShadow [$canvas create line \
- $right $outerTop \
- $right $outerBottom \
- -tags $tagList \
- ]
-
- $canvas coords $_gLabel [expr $_left + $_labelXOrigin] \
- [expr $innerTop + $_labelYOrigin]
- if { $image != {} || $bitmap != {} } {
- $canvas itemconfigure $_gLabel -anchor $anchor
- } else {
- $canvas itemconfigure $_gLabel -anchor $anchor -justify $_just
- }
-
- $canvas raise $_gLabel $_gRegion
-
-
- set _offset [expr $innerBottom - $outerTop]
- # height
- set _majorDim [expr $outerBottom - $outerTop]
- # width
- set _minorDim [expr $right - $_left]
-
- set _right $right
- set _bottom $outerBottom
-
- # draw in correct state...
- if { $_selected } {
- select
- } else {
- deselect
- }
-
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _makeNorthTab
-#
-# Makes a tab that hangs to the north and opens to the south.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_makeNorthTab {canvas} {
- $canvas delete $this
- set _gLightOutline {}
- set _gBlackOutline {}
-
- lappend tagList $this TAB
-
- _createLabel $canvas $tagList
-
- # first get the label width and height
- _calcLabelDim $_gLabel
-
- set bottom [expr $_top + $_labelHeight]
-
- set angleOffset [expr $_labelHeight * $_tan($angle)]
-
- set outerLeft $_left
- set outerRight \
- [expr $outerLeft + $angleOffset + $_labelWidth + $angleOffset]
- set innerLeft [expr $outerLeft + $angleOffset]
- set innerRight [expr $outerLeft + $angleOffset + $_labelWidth]
-
- # tab area... gets filled either white or selected
- set _gRegion [$canvas create polygon \
- $outerLeft [expr $bottom + 3] \
- $innerLeft [expr $_top + $bevelamount] \
- [expr $innerLeft + $bevelamount] $_top \
- [expr $innerRight - $bevelamount] $_top \
- $innerRight [expr $_top + $bevelamount]\
- $outerRight [expr $bottom + 3] \
- $outerLeft [expr $bottom + 3] \
- -tags $tagList \
- ]
-
- # lighter shadow (left edge)
- set _gLightShadow [$canvas create line \
- [expr $outerLeft + 1] [expr $bottom + 3] \
- [expr $innerLeft + 1] [expr $_top + $bevelamount] \
- [expr $innerLeft + $bevelamount] [expr $_top + 1]\
- [expr $innerRight - $bevelamount] [expr $_top + 1]\
- -tags $tagList \
- ]
-
- # darker shadow (bottom and right edges)
- set _gDarkShadow [$canvas create line \
- [expr $innerRight - $bevelamount] [expr $_top + 1]\
- [expr $innerRight - 1] [expr $_top + $bevelamount]\
- [expr $outerRight - 1] [expr $bottom + 3]\
- -tags $tagList \
- ]
-
- set _gLightOutline [$canvas create line \
- $outerLeft [expr $bottom + 3] \
- $innerLeft [expr $_top + $bevelamount] \
- [expr $innerLeft + $bevelamount] $_top \
- [expr $innerRight - $bevelamount] $_top \
- -tags $tagList \
- ]
-
- set _gBlackOutline [$canvas create line \
- [expr $innerRight - $bevelamount] $_top \
- $innerRight [expr $_top + $bevelamount]\
- $outerRight [expr $bottom + 3] \
- $outerLeft [expr $bottom + 3] \
- -tags $tagList \
- ]
-
- # top of tab... to make it closed off
- set _gTopLine [$canvas create line \
- 0 0 0 0\
- -tags $tagList \
- ]
- #[expr $outerLeft + 2] [expr $_top + 1] \
- [expr $outerRight - 2] [expr $_top + 1]
-
- # top of tab... to make it closed off
- set _gTopLineShadow [$canvas create line \
- 0 0 0 0 \
- -tags $tagList \
- ]
- #$outerLeft $_top \
- $outerRight $_top
-
- $canvas coords $_gLabel [expr $innerLeft + $_labelXOrigin] \
- [expr $_top + $_labelYOrigin]
-
- if { $image != {} || $bitmap != {} } {
- $canvas itemconfigure $_gLabel -anchor $anchor
- } else {
- $canvas itemconfigure $_gLabel -anchor $anchor -justify $_just
- }
-
- $canvas raise $_gLabel $_gRegion
-
-
- set _offset [expr $innerRight - $outerLeft]
- # width
- set _majorDim [expr $outerRight - $outerLeft]
- # height
- set _minorDim [expr $bottom - $_top]
-
- set _right $outerRight
- set _bottom $bottom
-
- # draw in correct state...
- if { $_selected } {
- select
- } else {
- deselect
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _makeSouthTab
-#
-# Makes a tab that hangs to the south and opens to the north.
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_makeSouthTab {canvas} {
- $canvas delete $this
- set _gLightOutline {}
- set _gBlackOutline {}
-
- lappend tagList $this TAB
-
- _createLabel $canvas $tagList
-
- # first get the label width and height
- _calcLabelDim $_gLabel
-
- set bottom [expr $_top + $_labelHeight]
-
- set angleOffset [expr $_labelHeight * $_tan($angle)]
-
- set outerLeft $_left
- set outerRight \
- [expr $outerLeft + $angleOffset + $_labelWidth + $angleOffset]
- set innerLeft [expr $outerLeft + $angleOffset]
- set innerRight [expr $outerLeft + $angleOffset + $_labelWidth]
-
- # tab area... gets filled either white or selected
- set _gRegion [$canvas create polygon \
- $outerLeft [expr $_top + 1] \
- $innerLeft [expr $bottom - $bevelamount]\
- [expr $innerLeft + $bevelamount] $bottom \
- [expr $innerRight - $bevelamount] $bottom \
- $innerRight [expr $bottom - $bevelamount]\
- $outerRight [expr $_top + 1] \
- $outerLeft [expr $_top + 1] \
- -tags $tagList \
- ]
-
-
- # lighter shadow (left edge)
- set _gLightShadow [$canvas create line \
- [expr $outerLeft+1] $_top \
- [expr $innerLeft+1] [expr $bottom-$bevelamount] \
- -tags $tagList \
- ]
-
- # darker shadow (bottom and right edges)
- set _gDarkShadow [$canvas create line \
- [expr $innerLeft+1] [expr $bottom-$bevelamount] \
- [expr $innerLeft+$bevelamount] [expr $bottom-1] \
- [expr $innerRight-$bevelamount] [expr $bottom-1] \
- [expr $innerRight-1] [expr $bottom-$bevelamount] \
- [expr $outerRight-1] [expr $_top + 1] \
- -tags $tagList \
- ]
- # outline of tab
- set _gBlackOutline [$canvas create line \
- $outerLeft [expr $_top + 1] \
- $innerLeft [expr $bottom -$bevelamount]\
- [expr $innerLeft + $bevelamount] $bottom \
- [expr $innerRight - $bevelamount] $bottom \
- $innerRight [expr $bottom - $bevelamount]\
- $outerRight [expr $_top + 1] \
- -tags $tagList \
- ]
-
- # top of tab... to make it closed off
- set _gTopLine [$canvas create line \
- $outerLeft [expr $_top + 1] \
- $outerRight [expr $_top + 1] \
- -tags $tagList \
- ]
-
- # top of tab... to make it closed off
- set _gTopLineShadow [$canvas create line \
- $outerLeft $_top \
- $outerRight $_top \
- -tags $tagList \
- ]
-
- #$canvas coords $_gLabel [expr $innerLeft + $_padX + 2] \
- [expr $_top + $_padY]
- $canvas coords $_gLabel [expr $innerLeft + $_labelXOrigin] \
- [expr $_top + $_labelYOrigin]
-
- if { $image != {} || $bitmap != {} } {
- $canvas itemconfigure $_gLabel -anchor $anchor
- } else {
- $canvas itemconfigure $_gLabel -anchor $anchor -justify $_just
- }
- $canvas raise $_gLabel $_gRegion
-
-
- set _offset [expr $innerRight - $outerLeft]
-
- # width
- set _majorDim [expr $outerRight - $outerLeft]
-
- # height
- set _minorDim [expr $bottom - $_top]
-
- set _right $outerRight
- set _bottom $bottom
-
- # draw in correct state...
- if { $_selected } {
- select
- } else {
- deselect
- }
-}
-
-# ----------------------------------------------------------------------
-# PRIVATE METHOD: _calcLabelDim
-#
-# Calculate the width and height of the label bbox of labelItem
-# can be either text or bitmap (in future also an image)
-#
-# There are two ways to calculate the label bbox.
-#
-# First, if the $_width and/or $_height is specified, we will use
-# it to determine that dimension(s) width and/or height. For
-# a width/height of 0 we use the labels bbox to
-# give us a base width/height.
-# Then we add in the padx/pady to determine final bounds.
-#
-# Uses the following option or option derived variables:
-# -padx ($_padX - converted to pixels)
-# -pady ($_padY - converted to pixels)
-# -anchor ($anchor)
-# -width ($_width) This is the width for inside tab (label area)
-# -height ($_height) This is the width for inside tab (label area)
-#
-# Side Effects:
-# _labelWidth will be set
-# _labelHeight will be set
-# _labelXOrigin will be set
-# _labelYOrigin will be set
-# ----------------------------------------------------------------------
-body iwidgets::Tab::_calcLabelDim {labelItem} {
- # ... calculate the label width and height
- set labelBBox [$_canvas bbox $labelItem]
-
- if { $_width > 0 } {
- set _labelWidth [expr $_width + ($_padX * 2)]
- } else {
- set _labelWidth [expr \
- ([lindex $labelBBox 2] - [lindex $labelBBox 0]) + ($_padX * 2)]
- }
-
- if { $_height > 0 } {
- set _labelHeight [expr $_height + ($_padY * 2)]
- } else {
- set _labelHeight [expr \
- ([lindex $labelBBox 3] - [lindex $labelBBox 1]) + ($_padY * 2)]
- }
-
- # ... calculate the label anchor point
- set centerX [expr $_labelWidth/2.0]
- set centerY [expr $_labelHeight/2.0 - 1]
-
- switch $anchor {
- n {
- set _labelXOrigin $centerX
- set _labelYOrigin $_padY
- set _just center
- }
- s {
- set _labelXOrigin $centerX
- set _labelYOrigin [expr $_labelHeight - $_padY]
- set _just center
- }
- e {
- set _labelXOrigin [expr $_labelWidth - $_padX - 1]
- set _labelYOrigin $centerY
- set _just right
- }
- w {
- set _labelXOrigin [expr $_padX + 2]
- set _labelYOrigin $centerY
- set _just left
- }
- c {
- set _labelXOrigin $centerX
- set _labelYOrigin $centerY
- set _just center
- }
- ne {
- set _labelXOrigin [expr $_labelWidth - $_padX - 1]
- set _labelYOrigin $_padY
- set _just right
- }
- nw {
- set _labelXOrigin [expr $_padX + 2]
- set _labelYOrigin $_padY
- set _just left
- }
- se {
- set _labelXOrigin [expr $_labelWidth - $_padX - 1]
- set _labelYOrigin [expr $_labelHeight - $_padY]
- set _just right
- }
- sw {
- set _labelXOrigin [expr $_padX + 2]
- set _labelYOrigin [expr $_labelHeight - $_padY]
- set _just left
- }
- default {
- error "bad anchor position: \
- \"$tabpos\" must be n, ne, nw, s, sw, se, e, w, or center"
- }
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/tclIndex b/itcl/iwidgets3.0.0/generic/tclIndex
deleted file mode 100644
index 5c684710f11..00000000000
--- a/itcl/iwidgets3.0.0/generic/tclIndex
+++ /dev/null
@@ -1,1336 +0,0 @@
-# Tcl autoload index file, version 2.0
-# This file is generated by the "auto_mkindex" command
-# and sourced to set up indexing information for one or
-# more commands. Typically each line is a command that
-# sets an element in the auto_index array, where the
-# element name is the name of a command and the value is
-# a script that loads the command.
-
-set auto_index(::iwidgets::Buttonbox) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::buttonbox) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::constructor) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::destructor) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::pady) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::padx) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::orient) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::index) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::add) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::insert) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::delete) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::default) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::hide) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::show) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::invoke) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::buttonconfigure) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::buttoncget) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::_getMaxWidth) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::_getMaxHeight) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::_setBoxSize) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Buttonbox::_positionButtons) [list source [file join $dir buttonbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::ezPaperInfo) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::canvasprintbox) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::printregion) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::output) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::printcmd) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::filename) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::pagesize) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::orient) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::stretch) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::posterize) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::hpagecnt) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::vpagecnt) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::constructor) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::setcanvas) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::getoutput) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::print) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::refresh) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::stop) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::_calc_poster_size) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::_calc_print_region) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::_calc_print_scale) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::_update_canvas) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::_update_attr) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::_mapEventHandler) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::destructor) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Canvasprintbox::ezPaperInfo) [list source [file join $dir canvasprintbox.itk]]
-set auto_index(::iwidgets::Dialog) [list source [file join $dir dialog.itk]]
-set auto_index(::iwidgets::dialog) [list source [file join $dir dialog.itk]]
-set auto_index(::iwidgets::Dialog::constructor) [list source [file join $dir dialog.itk]]
-set auto_index(::iwidgets::Combobox) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::combobox) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::constructor) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::destructor) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::arrowrelief) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::completion) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::dropdown) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::editable) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::grab) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::labelpos) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::listheight) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::margin) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::popupcursor) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::selectioncommand) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::state) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::unique) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::clear) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::curselection) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::delete) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::get) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::getcurselection) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::invoke) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::insert) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::justify) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::see) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::selection) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::size) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::sort) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::xview) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::yview) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_addToList) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_createComponents) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_deleteList) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_deleteText) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_doLayout) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_drawArrow) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_dropdownBtnRelease) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_ignoreNextBtnRelease) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_next) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_packComponents) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_positionList) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_postList) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_previous) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_resizeArrow) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_selectCmd) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_toggleList) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_unpostList) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_commonBindings) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_dropdownBindings) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_simpleBindings) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_listShowing) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_slbListbox) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_stateSelect) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_bs) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Combobox::_lookup) [list source [file join $dir combobox.itk]]
-set auto_index(::iwidgets::Dialogshell) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::dialogshell) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::constructor) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::thickness) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::buttonboxpos) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::separator) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::padx) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::pady) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::childsite) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::index) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::add) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::insert) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::delete) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::hide) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::show) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::default) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::invoke) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::buttonconfigure) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Dialogshell::buttoncget) [list source [file join $dir dialogshell.itk]]
-set auto_index(::iwidgets::Feedback) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::feedback) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::Feedback::constructor) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::Feedback::destructor) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::Feedback::steps) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::Feedback::_display) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::Feedback::reset) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::Feedback::step) [list source [file join $dir feedback.itk]]
-set auto_index(::iwidgets::Labeledwidget) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::alignlabels) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::labeledwidget) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::constructor) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::destructor) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::disabledforeground) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::labelpos) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::labelmargin) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::labeltext) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::labelvariable) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::labelbitmap) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::labelimage) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::state) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::childsite) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::alignlabels) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Labeledwidget::_positionLabel) [list source [file join $dir labeledwidget.itk]]
-set auto_index(::iwidgets::Menubar) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::menubar) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::constructor) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::foreground) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::activebackground) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::activeborderwidth) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::activeforeground) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::anchor) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::borderwidth) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::disabledforeground) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::font) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::highlightbackground) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::highlightcolor) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::highlightthickness) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::justify) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::padx) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::pady) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::wraplength) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::menubuttons) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::helpvariable) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::add) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::delete) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::index) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::insert) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::invoke) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::menucget) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::menuconfigure) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::path) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::type) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::yposition) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::menubutton) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::options) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::command) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::checkbutton) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::radiobutton) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::separator) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::cascade) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_addMenuButton) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_insertMenuButton) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_makeMenuButton) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_makeMenu) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_substEvalStr) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_deleteMenu) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_deleteAMenu) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_addEntry) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_addCascade) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_insertEntry) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_insertCascade) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_deleteEntry) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_configureMenu) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_configureMenuOption) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_configureMenuEntry) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_unsetPaths) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_entryPathToTkMenuPath) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_getTkIndex) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_getPdIndex) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_getMenuList) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_getEntryList) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_parsePath) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_getSymbolicPath) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_leaveHandler) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Menubar::_helpHandler) [list source [file join $dir menubar.itk]]
-set auto_index(::Menubar::_getCallerLevel) [list source [file join $dir menubar.itk]]
-set auto_index(::tkMenuFind) [list source [file join $dir menubar.itk]]
-set auto_index(::iwidgets::Messagedialog) [list source [file join $dir messagedialog.itk]]
-set auto_index(::iwidgets::messagedialog) [list source [file join $dir messagedialog.itk]]
-set auto_index(::iwidgets::Messagedialog::constructor) [list source [file join $dir messagedialog.itk]]
-set auto_index(::iwidgets::Messagedialog::imagepos) [list source [file join $dir messagedialog.itk]]
-set auto_index(::iwidgets::Notebook) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::notebook) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::constructor) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::background) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::auto) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::scrollcommand) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::add) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::childsite) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::delete) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::index) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::insert) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::prev) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::next) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::pageconfigure) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::pagecget) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::select) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::view) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::_childSites) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::_scrollCommand) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::_index) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::_createPage) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::_deletePages) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::_configurePages) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Notebook::_tabCommand) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Page) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Page::constructor) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Page::disabledforeground) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Page::label) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Page::command) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Page::childsite) [list source [file join $dir notebook.itk]]
-set auto_index(::iwidgets::Optionmenu) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::optionmenu) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::constructor) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::destructor) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::clicktime) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::command) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::cyclicon) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::width) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::font) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::state) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::index) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::delete) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::disable) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::enable) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::get) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::insert) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::select) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::popupMenu) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::sort) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_buttonRelease) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_getNextItem) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_next) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_previous) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_postMenu) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_setItem) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_unpostMenu) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_setitems) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Optionmenu::_setSize) [list source [file join $dir optionmenu.itk]]
-set auto_index(::iwidgets::Pane) [list source [file join $dir pane.itk]]
-set auto_index(::iwidgets::pane) [list source [file join $dir pane.itk]]
-set auto_index(::iwidgets::Pane::constructor) [list source [file join $dir pane.itk]]
-set auto_index(::iwidgets::Pane::minimum) [list source [file join $dir pane.itk]]
-set auto_index(::iwidgets::Pane::margin) [list source [file join $dir pane.itk]]
-set auto_index(::iwidgets::Pane::childSite) [list source [file join $dir pane.itk]]
-set auto_index(::iwidgets::Panedwindow) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::panedwindow) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::constructor) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::orient) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::sashborderwidth) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::sashcursor) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::sashwidth) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::sashheight) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::thickness) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::sashindent) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::index) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::childsite) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::fraction) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::add) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::insert) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::delete) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::hide) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::show) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::paneconfigure) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::reset) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_pwConfigureEventHandler) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_startGrip) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_endGrip) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_configGrip) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_handleGrip) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_moveSash) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_setFracArray) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_setActivePanes) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_calcFraction) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_makeSashes) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_placeSash) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Panedwindow::_placePanes) [list source [file join $dir panedwindow.itk]]
-set auto_index(::iwidgets::Shell) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::shell) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::constructor) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::master) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::modality) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::padx) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::pady) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::width) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::height) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::childsite) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::activate) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::deactivate) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Shell::center) [list source [file join $dir shell.itk]]
-set auto_index(::iwidgets::Promptdialog) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::promptdialog) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::constructor) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::get) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::clear) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::insert) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::delete) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::icursor) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::index) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::scan) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::selection) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Promptdialog::xview) [list source [file join $dir promptdialog.itk]]
-set auto_index(::iwidgets::Radiobox) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::radiobox) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::constructor) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::command) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::index) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::add) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::insert) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::_rearrange) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::delete) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::select) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::get) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::deselect) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::flash) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::buttonconfigure) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::_command) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Radiobox::gettag) [list source [file join $dir radiobox.itk]]
-set auto_index(::iwidgets::Scrolledcanvas) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::scrolledcanvas) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::constructor) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::destructor) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::autoresize) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::childsite) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::justify) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::addtag) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::bbox) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::bind) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::canvasx) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::canvasy) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::coords) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::create) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::dchars) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::delete) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::dtag) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::find) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::focus) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::gettags) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::icursor) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::index) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::insert) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::itemconfigure) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::itemcget) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::lower) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::move) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::postscript) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::raise) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::scale) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::scan) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::select) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::type) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::xview) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledcanvas::yview) [list source [file join $dir scrolledcanvas.itk]]
-set auto_index(::iwidgets::Scrolledframe) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::scrolledframe) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::constructor) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::destructor) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::childsite) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::justify) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::xview) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::yview) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::_configureCanvas) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Scrolledframe::_configureFrame) [list source [file join $dir scrolledframe.itk]]
-set auto_index(::iwidgets::Hyperhelp) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::hyperhelp) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::constructor) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::topics) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::title) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::helpdir) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::closecmd) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::showtopic) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::followlink) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::forward) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::back) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::updatefeedback) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::_readtopic) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::_fill_go_menu) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::_pageforward) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::_pageback) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::_lineforward) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Hyperhelp::_lineback) [list source [file join $dir hyperhelp.itk]]
-set auto_index(::iwidgets::Scrolledlistbox) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::scrolledlistbox) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::constructor) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::destructor) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::dblclickcommand) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::selectioncommand) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::width) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::height) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::visibleitems) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::state) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::curselection) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::activate) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::bbox) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::clear) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::see) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::index) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::delete) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::get) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::getcurselection) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::insert) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::nearest) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::scan) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::selection) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::size) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::selecteditemcount) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::justify) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::sort) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::xview) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::yview) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::_makeSelection) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledlistbox::_dblclick) [list source [file join $dir scrolledlistbox.itk]]
-set auto_index(::iwidgets::Scrolledtext) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::scrolledtext) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::constructor) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::destructor) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::width) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::height) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::visibleitems) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::childsite) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::bbox) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::clear) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::import) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::export) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::compare) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::debug) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::delete) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::dlineinfo) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::get) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::index) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::insert) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::mark) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::scan) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::search) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::see) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::tag) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::window) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::xview) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Scrolledtext::yview) [list source [file join $dir scrolledtext.itk]]
-set auto_index(::iwidgets::Selectionbox) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::selectionbox) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::constructor) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::destructor) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::childsitepos) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::margin) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::itemson) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::selectionon) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::width) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::height) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::childsite) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::get) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::curselection) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::clear) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::insert) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::delete) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::size) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::scan) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::nearest) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::index) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::selection) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::selectitem) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectionbox::_packComponents) [list source [file join $dir selectionbox.itk]]
-set auto_index(::iwidgets::Selectiondialog) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::selectiondialog) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::constructor) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::childsite) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::get) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::curselection) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::clear) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::insert) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::delete) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::size) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::scan) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::nearest) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::index) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::selection) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Selectiondialog::selectitem) [list source [file join $dir selectiondialog.itk]]
-set auto_index(::iwidgets::Spindate) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::spindate) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::constructor) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::destructor) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::labelpos) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::orient) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::monthon) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::dayon) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::yearon) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::datemargin) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::yeardigits) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::monthformat) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::get) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::show) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::_spinMonth) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::_spinDay) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::_spinYear) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::_packDate) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spindate::_lastDay) [list source [file join $dir spindate.itk]]
-set auto_index(::iwidgets::Spinint) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::spinint) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::Spinint::constructor) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::Spinint::range) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::Spinint::step) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::Spinint::wrap) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::Spinint::up) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::Spinint::down) [list source [file join $dir spinint.itk]]
-set auto_index(::iwidgets::Spinner) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::spinner) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::constructor) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::destructor) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::arroworient) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::textfont) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::highlightthickness) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::borderwidth) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::increment) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::decrement) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::repeatinterval) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::repeatdelay) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::foreground) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::up) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::down) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_positionArrows) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_pushup) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_pushdown) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_doup) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_dodown) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_relup) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_reldown) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_up) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spinner::_down) [list source [file join $dir spinner.itk]]
-set auto_index(::iwidgets::Spintime) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::spintime) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::constructor) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::destructor) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::orient) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::labelpos) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::houron) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::minuteon) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::secondon) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::timemargin) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::militaryon) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::get) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::show) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::_packTime) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Spintime::_down60) [list source [file join $dir spintime.itk]]
-set auto_index(::iwidgets::Tabnotebook) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::constructor) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::tabnotebook) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::destructor) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::borderwidth) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::state) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::disabledforeground) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::scrollcommand) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::equaltabs) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::font) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::width) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::height) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::foreground) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::background) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::tabforeground) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::tabbackground) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::backdrop) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::margin) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::tabborders) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::bevelamount) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::raiseselect) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::auto) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::start) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::padx) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::pady) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::gap) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::angle) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::tabpos) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::configure) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::add) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::childsite) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::delete) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::index) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::insert) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::prev) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::next) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::pageconfigure) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::select) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::view) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::_getArgs) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::_reconfigureTabset) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::_canvasReconfigure) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::_redrawBorder) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::_recomputeBorder) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::_pageReconfigure) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabnotebook::_pack) [list source [file join $dir tabnotebook.itk]]
-set auto_index(::iwidgets::Tabset) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::tabset) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::constructor) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::destructor) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::width) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::equaltabs) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::height) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::tabpos) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::raiseselect) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::start) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::margin) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::tabborders) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::bevelamount) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::padx) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::pady) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::gap) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::angle) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::font) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::state) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::disabledforeground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::foreground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::background) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::selectforeground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::backdrop) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::selectbackground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::command) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::add) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::configure) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_configRelayout) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::delete) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::index) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::insert) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::prev) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::next) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::select) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::tabcget) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::tabconfigure) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_selectName) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_createTab) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_deleteTabs) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_index) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_tabConfigure) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_relayoutTabs) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_drawBevelBorder) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_calcNextTabOffset) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_tabBounds) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_recalcCanvasGeom) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_canvasReconfigure) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_startMove) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_moveTabs) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tabset::_endMove) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::constructor) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::destructor) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::bevelamount) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::state) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::height) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::width) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::anchor) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::left) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::top) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::image) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::bitmap) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::label) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::padx) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::pady) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::selectbackground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::selectforeground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::disabledforeground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::background) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::foreground) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::orient) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::invert) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::angle) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::font) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::tabborders) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::configure) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::bbox) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::deselect) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::lower) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::majordim) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::minordim) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::offset) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::raise) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::select) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::labelheight) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::labelwidth) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_selectNoRaise) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_deselectNoLower) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_makeTab) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_createLabel) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_makeEastTab) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_makeWestTab) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_makeNorthTab) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_makeSouthTab) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Tab::_calcLabelDim) [list source [file join $dir tabset.itk]]
-set auto_index(::iwidgets::Toolbar) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::constructor) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::toolbar) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::destructor) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::balloonbackground) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::balloonforeground) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::balloonfont) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::orient) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::add) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::delete) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::index) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::insert) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::itemcget) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::itemconfigure) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_resetBalloonTimer) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_startBalloonDelay) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_stopBalloonDelay) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_addWidget) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_deleteWidgets) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_index) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::hideHelp) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::showHelp) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::showBalloon) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::hideBalloon) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_getAttachedOption) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_setAttachedOption) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Toolbar::_packToolbar) [list source [file join $dir toolbar.itk]]
-set auto_index(::iwidgets::Canvasprintdialog) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::canvasprintdialog) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::Canvasprintdialog::constructor) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::Canvasprintdialog::deactivate) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::Canvasprintdialog::getoutput) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::Canvasprintdialog::setcanvas) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::Canvasprintdialog::refresh) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::Canvasprintdialog::print) [list source [file join $dir canvasprintdialog.itk]]
-set auto_index(::iwidgets::Pushbutton) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::pushbutton) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::constructor) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::destructor) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::padx) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::pady) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::font) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::text) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::bitmap) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::image) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::highlightthickness) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::borderwidth) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::defaultring) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::defaultringpad) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::height) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::width) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::flash) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::invoke) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Pushbutton::_relayout) [list source [file join $dir pushbutton.itk]]
-set auto_index(::iwidgets::Calendar) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::calendar) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::constructor) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::command) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::days) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::backwardimage) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::forwardimage) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::weekdaybackground) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::weekendbackground) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::foreground) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::outline) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::buttonforeground) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::selectcolor) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::selectthickness) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::titlefont) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::datefont) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::currentdatefont) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::dayfont) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::startday) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::get) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::select) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::show) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_drawtext) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_configureHandler) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_change) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_redraw) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_days) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_layout) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_adjustday) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_select) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_selectEvent) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Calendar::_percentSubst) [list source [file join $dir calendar.itk]]
-set auto_index(::iwidgets::Scrolledhtml) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::scrolledhtml) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::constructor) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::destructor) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::fontsize) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::fixedfont) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::fontname) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::textbackground) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::linkhighlight) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::unknownimage) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::update) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::clear) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::import) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::render) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_setup) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_definefont) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_append_text) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_set_tag) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_reconfig_tags) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_push) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_pop) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_peek) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_parse_fields) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_href_click) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_set_align) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_fixtablewidth) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_header) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_/header) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_a) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/a) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_address) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/address) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_b) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/b) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_base) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_basefont) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_big) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/big) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_blockquote) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/blockquote) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_body) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/body) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_br) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_center) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/center) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_cite) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/cite) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_code) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/code) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_dir) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/dir) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_div) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_dl) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/dl) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_dt) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_dd) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_dfn) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/dfn) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_em) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/em) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_font) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/font) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_h1) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/h1) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_h2) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/h2) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_h3) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/h3) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_h4) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/h4) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_h5) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/h5) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_h6) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/h6) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_hr) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_i) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/i) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_img) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_kbd) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/kbd) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_li) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_listing) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/listing) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_menu) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/menu) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_ol) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/ol) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_p) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_pre) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/pre) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_samp) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/samp) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_small) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/small) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_sub) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/sub) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_sup) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/sup) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_strong) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/strong) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_table) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/table) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_td) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/td) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_th) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/th) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_title) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/title) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_tr) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/tr) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_tt) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/tt) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_u) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/u) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_ul) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/ul) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_var) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Scrolledhtml::_entity_/var) [list source [file join $dir scrolledhtml.itk]]
-set auto_index(::iwidgets::Entryfield) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::numeric) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::integer) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::alphabetic) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::alphanumeric) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::hexidecimal) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::real) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::entryfield) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::constructor) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::command) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::focuscommand) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::validate) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::invalid) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::fixed) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::childsitepos) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::childsite) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::get) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::delete) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::icursor) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::index) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::insert) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::scan) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::selection) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::xview) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::clear) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::numeric) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::integer) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::alphabetic) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::alphanumeric) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::hexidecimal) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::real) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::_peek) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::_focusCommand) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Entryfield::_keyPress) [list source [file join $dir entryfield.itk]]
-set auto_index(::iwidgets::Labeledframe) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::_initTable) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::labeledframe) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::constructor) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::destructor) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::ipadx) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::ipady) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::labelmargin) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::labelpos) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::_initTable) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::childsite) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::_positionLabel) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::_collapseMargin) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Labeledframe::_setMarginThickness) [list source [file join $dir labeledframe.itk]]
-set auto_index(::iwidgets::Scrolledwidget) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::scrolledwidget) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::constructor) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::destructor) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::sbwidth) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::scrollmargin) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::vscrollmode) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::hscrollmode) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::width) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::height) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::_vertScrollbarDisplay) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::_horizScrollbarDisplay) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::_scrollWidget) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Scrolledwidget::_configureEvent) [list source [file join $dir scrolledwidget.itk]]
-set auto_index(::iwidgets::Checkbox) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::checkbox) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::constructor) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::command) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::index) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::add) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::insert) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::delete) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::select) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::toggle) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::get) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::deselect) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::flash) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::buttonconfigure) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Checkbox::gettag) [list source [file join $dir checkbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::disjointlistbox) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::constructor) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::listboxClick) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::listboxDblClick) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::transfer) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::getlhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::getrhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::insertrhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::insertlhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::clear) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::insert) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::remove) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::showCount) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::setlhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::setrhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::lhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::rhs) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Disjointlistbox::buttonplacement) [list source [file join $dir disjointlistbox.itk]]
-set auto_index(::iwidgets::Hierarchy) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::hierarchy) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::constructor) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::destructor) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::font) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::selectbackground) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::selectforeground) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::markbackground) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::markforeground) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::querycommand) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::selectcommand) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::iconcommand) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::alwaysquery) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::filter) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::expanded) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::openicon) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::closedicon) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::nodeicon) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::width) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::height) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::visibleitems) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::clear) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::selection) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::mark) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::current) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::expand) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::collapse) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::toggle) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::prune) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::draw) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::refresh) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::bbox) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::compare) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::delete) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::dump) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::dlineinfo) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::get) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::index) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::insert) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::scan) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::search) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::see) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::tag) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::window) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::xview) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::yview) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_drawLevel) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_contents) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_post) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_select) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_iconSelect) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_deselectSubNodes) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_deleteNodeInfo) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_getParent) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Hierarchy::_getHeritage) [list source [file join $dir hierarchy.itk]]
-set auto_index(::iwidgets::Datefield) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::datefield) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::constructor) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::childsitepos) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::command) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::iq) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::get) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::show) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::isvalid) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_focusIn) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_keyPress) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_setField) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_moveField) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_whichField) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_forward) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_backward) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::Datefield::_lastDay) [list source [file join $dir datefield.itk]]
-set auto_index(::iwidgets::MsgType) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::messagebox) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::constructor) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::destructor) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::clear) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::type) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::issue) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::save) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::find) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::_post) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Messagebox::export) [list source [file join $dir messagebox.itk]]
-set auto_index(::iwidgets::Timefield) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::timefield) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::constructor) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::childsitepos) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::command) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::iq) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::format) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::get) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::show) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::isvalid) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_focusIn) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_keyPress) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_toggleAmPm) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_setField) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_moveField) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_whichField) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_forwardCivilian) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_forwardMilitary) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_backwardCivilian) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Timefield::_backwardMilitary) [list source [file join $dir timefield.itk]]
-set auto_index(::iwidgets::Watch) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::watch) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::constructor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::destructor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::_handReleaseCB) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::_handMotionCB) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::get) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::watch) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::_drawHand) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::show) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::_displayClock) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::state) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::showampm) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::pivotcolor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::clockstipple) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::clockcolor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::hourcolor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::minutecolor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::secondcolor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::tickcolor) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::hourradius) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::minuteradius) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Watch::secondradius) [list source [file join $dir watch.itk]]
-set auto_index(::iwidgets::Extfileselectionbox) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::extfileselectionbox) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::constructor) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::destructor) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::childsitepos) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::fileson) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::dirson) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::selectionon) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::filteron) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::mask) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::directory) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::nomatchstring) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::dirsearchcommand) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::filesearchcommand) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::selectioncommand) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::filtercommand) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::selectdircommand) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::selectfilecommand) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::invalid) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::filetype) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::width) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::height) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::childsite) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::get) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::filter) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_updateLists) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_setFilter) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_setSelection) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_setDirList) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_setFileList) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_selectDir) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_dblSelectDir) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_selectFile) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_selectSelection) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_selectFilter) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_packComponents) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_nPos) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_sPos) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_ePos) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_wPos) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_topPos) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Extfileselectionbox::_bottomPos) [list source [file join $dir extfileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::fileselectionbox) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::constructor) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::destructor) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::childsitepos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::fileson) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::dirson) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::selectionon) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::filteron) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::mask) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::directory) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::nomatchstring) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::dirsearchcommand) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::filesearchcommand) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::selectioncommand) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::filtercommand) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::selectdircommand) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::selectfilecommand) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::invalid) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::filetype) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::width) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::height) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::childsite) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::get) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::filter) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_updateLists) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_setFilter) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_setSelection) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_setDirList) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_setFileList) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_selectDir) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_dblSelectDir) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_selectFile) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_selectSelection) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_selectFilter) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_packComponents) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_nPos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_sPos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_ePos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_wPos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_topPos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_centerPos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectionbox::_bottomPos) [list source [file join $dir fileselectionbox.itk]]
-set auto_index(::iwidgets::Fileselectiondialog) [list source [file join $dir fileselectiondialog.itk]]
-set auto_index(::iwidgets::fileselectiondialog) [list source [file join $dir fileselectiondialog.itk]]
-set auto_index(::iwidgets::Fileselectiondialog::constructor) [list source [file join $dir fileselectiondialog.itk]]
-set auto_index(::iwidgets::Fileselectiondialog::childsite) [list source [file join $dir fileselectiondialog.itk]]
-set auto_index(::iwidgets::Fileselectiondialog::get) [list source [file join $dir fileselectiondialog.itk]]
-set auto_index(::iwidgets::Fileselectiondialog::filter) [list source [file join $dir fileselectiondialog.itk]]
-set auto_index(::iwidgets::Fileselectiondialog::_dbldir) [list source [file join $dir fileselectiondialog.itk]]
-set auto_index(::iwidgets::Finddialog) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::finddialog) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::constructor) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::clearcommand) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::matchcommand) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::patternbackground) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::patternforeground) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::searchforeground) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::searchbackground) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::textwidget) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::clear) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::find) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::_get) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Finddialog::_textExists) [list source [file join $dir finddialog.itk]]
-set auto_index(::iwidgets::Mainwindow) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::mainwindow) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::constructor) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::helpline) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::statusline) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::childsite) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::menubar) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::toolbar) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::mousebar) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::msgd) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Mainwindow::_exitCB) [list source [file join $dir mainwindow.itk]]
-set auto_index(::iwidgets::Dateentry) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::dateentry) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::constructor) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::icon) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::grab) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::state) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::_getDefaultIcon) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::_popup) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::_getPopupDate) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::_releaseGrabCheck) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Dateentry::_releaseGrab) [list source [file join $dir dateentry.itk]]
-set auto_index(::iwidgets::Extfileselectiondialog) [list source [file join $dir extfileselectiondialog.itk]]
-set auto_index(::iwidgets::extfileselectiondialog) [list source [file join $dir extfileselectiondialog.itk]]
-set auto_index(::iwidgets::Extfileselectiondialog::constructor) [list source [file join $dir extfileselectiondialog.itk]]
-set auto_index(::iwidgets::Extfileselectiondialog::childsite) [list source [file join $dir extfileselectiondialog.itk]]
-set auto_index(::iwidgets::Extfileselectiondialog::get) [list source [file join $dir extfileselectiondialog.itk]]
-set auto_index(::iwidgets::Extfileselectiondialog::filter) [list source [file join $dir extfileselectiondialog.itk]]
-set auto_index(::iwidgets::Extfileselectiondialog::_dbldir) [list source [file join $dir extfileselectiondialog.itk]]
-set auto_index(::iwidgets::Timeentry) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::timeentry) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::constructor) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::icon) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::grab) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::state) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::_getDefaultIcon) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::_popup) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::_getPopupTime) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Timeentry::_releaseGrab) [list source [file join $dir timeentry.itk]]
-set auto_index(::iwidgets::Regexpfield) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::regexpfield) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::constructor) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::command) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::focuscommand) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::regexp) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::invalid) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::fixed) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::childsitepos) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::nocase) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::childsite) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::get) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::delete) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::icursor) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::index) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::insert) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::scan) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::selection) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::xview) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::clear) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::_peek) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::_focusCommand) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Regexpfield::_keyPress) [list source [file join $dir regexpfield.itk]]
-set auto_index(::iwidgets::Scopedobject) [list source [file join $dir scopedobject.itcl]]
-set auto_index(::iwidgets::scopedobject) [list source [file join $dir scopedobject.itcl]]
-set auto_index(::iwidgets::Scopedobject::constructor) [list source [file join $dir scopedobject.itcl]]
-set auto_index(::iwidgets::Scopedobject::destructor) [list source [file join $dir scopedobject.itcl]]
-set auto_index(::iwidgets::Scopedobject::_traceCommand) [list source [file join $dir scopedobject.itcl]]
-set auto_index(::iwidgets::Scopedobject::enterscopecommand) [list source [file join $dir scopedobject.itcl]]
-set auto_index(::iwidgets::Scopedobject::exitscopecommand) [list source [file join $dir scopedobject.itcl]]
-set auto_index(::iwidgets::colors::rgbToNumeric) [list source [file join $dir colors.itcl]]
-set auto_index(::iwidgets::colors::rgbToHsb) [list source [file join $dir colors.itcl]]
-set auto_index(::iwidgets::colors::hsbToRgb) [list source [file join $dir colors.itcl]]
-set auto_index(::iwidgets::colors::topShadow) [list source [file join $dir colors.itcl]]
-set auto_index(::iwidgets::colors::bottomShadow) [list source [file join $dir colors.itcl]]
diff --git a/itcl/iwidgets3.0.0/generic/timeentry.itk b/itcl/iwidgets3.0.0/generic/timeentry.itk
deleted file mode 100644
index 8366e524f7e..00000000000
--- a/itcl/iwidgets3.0.0/generic/timeentry.itk
+++ /dev/null
@@ -1,398 +0,0 @@
-#
-# Timeentry
-# ----------------------------------------------------------------------
-# Implements a quicken style time entry field with a popup clock
-# by combining the timefield and watch widgets together. This
-# allows a user to enter the time via the keyboard or by using the
-# mouse by selecting the watch icon which brings up a popup clock.
-# ----------------------------------------------------------------------
-# AUTHOR: Mark L. Ulferts E-mail: mulferts@austin.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, UPTIMES, 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 Timeentry {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -labelfont -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# TIMEENTRY
-# ------------------------------------------------------------------
-class iwidgets::Timeentry {
- inherit iwidgets::Timefield
-
- constructor {args} {}
-
- itk_option define -grab grab Grab "global"
- itk_option define -icon icon Icon {}
- itk_option define -state state State normal
- itk_option define -closetext closeText Text Close
-
- #
- # The watch widget isn't created until needed, yet we need
- # its options to be available upon creation of a timeentry widget.
- # So, we'll define them in these class now so they can just be
- # propagated onto the watch later.
- #
- itk_option define -hourradius hourRadius Radius .50
- itk_option define -hourcolor hourColor Color red
-
- itk_option define -minuteradius minuteRadius Radius .80
- itk_option define -minutecolor minuteColor Color yellow
-
- itk_option define -pivotradius pivotRadius Radius .10
- itk_option define -pivotcolor pivotColor Color white
-
- itk_option define -secondradius secondRadius Radius .90
- itk_option define -secondcolor secondColor Color black
-
- itk_option define -clockcolor clockColor Color white
- itk_option define -clockstipple clockStipple ClockStipple {}
-
- itk_option define -tickcolor tickColor Color black
-
- itk_option define -watchheight watchHeight Height 175
- itk_option define -watchwidth watchWidth Width 155
-
- protected {
- method _getPopupTime {}
- method _releaseGrab {}
- method _popup {}
- method _getDefaultIcon {}
-
- common _defaultIcon ""
- }
-}
-
-#
-# Provide a lowercased access method for the timeentry class.
-#
-proc ::iwidgets::timeentry {pathName args} {
- uplevel ::iwidgets::Timeentry $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Timeentry.watchWidth 155 widgetDefault
-option add *Timeentry.watchHeight 175 widgetDefault
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Timeentry::constructor {args} {
- #
- # Create an icon label to act as a button to bring up the
- # watch popup.
- #
- itk_component add iconbutton {
- label $itk_interior.iconbutton -relief raised
- } {
- keep -borderwidth -cursor -foreground
- }
- grid $itk_component(iconbutton) -row 0 -column 0 -sticky ns
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -icon
-#
-# Specifies the clock icon image to be used in the time entry.
-# Should one not be provided, then a default pixmap will be used
-# if possible, bitmap otherwise.
-# ------------------------------------------------------------------
-configbody iwidgets::Timeentry::icon {
- if {$itk_option(-icon) == {}} {
- $itk_component(iconbutton) configure -image [_getDefaultIcon]
- } else {
- if {[lsearch [image names] $itk_option(-icon)] == -1} {
- error "bad icon option \"$itk_option(-icon)\":\
- should be an existing image"
- } else {
- $itk_component(iconbutton) configure -image $itk_option(-icon)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -grab
-#
-# Specifies the grab level, local or global, to be obtained when
-# bringing up the popup watch. The default is global.
-# ------------------------------------------------------------------
-configbody iwidgets::Timeentry::grab {
- switch -- $itk_option(-grab) {
- "local" - "global" {}
- default {
- error "bad grab option \"$itk_option(-grab)\":\
- should be local or global"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -state
-#
-# Specifies the state of the widget which may be disabled or
-# normal. A disabled state prevents selection of the time field
-# or time icon button.
-# ------------------------------------------------------------------
-configbody iwidgets::Timeentry::state {
- switch -- $itk_option(-state) {
- normal {
- bind $itk_component(iconbutton) <Button-1> [code $this _popup]
- }
- disabled {
- bind $itk_component(iconbutton) <Button-1> {}
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _getDefaultIcon
-#
-# This method is invoked uto retrieve the name of the default icon
-# image displayed in the icon button.
-# ------------------------------------------------------------------
-body iwidgets::Timeentry::_getDefaultIcon {} {
-
- if {[lsearch [image types] pixmap] != -1} {
- set _defaultIcon [image create pixmap -data {
- /* XPM */
- static char *watch1a[] = {
- /* width height num_colors chars_per_pixel */
- " 20 20 8 1",
- /* colors */
- ". c #000000",
- "# c #000099",
- "a c #009999",
- "b c #999999",
- "c c #cccccc",
- "d c #ffff00",
- "e c #d9d9d9",
- "f c #ffffff",
- /* pixels */
- "eeeeebbbcccccbbbeeee",
- "eeeee...#####..beeee",
- "eeeee#aacccccaabeeee",
- "eeee#accccccccc##eee",
- "eee#ccc#cc#ccdcff#ee",
- "ee#accccccccccfcca#e",
- "eeaccccccc.cccfcccae",
- "eeac#cccfc.cccc##cae",
- "e#cccccffc.cccccccc#",
- "e#ccccfffc.cccccccc#",
- "e#cc#ffcc......c#cc#",
- "e#ccfffccc.cccccccc#",
- "e#cffccfcc.cccccccc#",
- "eeafdccfcccccccd#cae",
- "eeafcffcccccccccccae",
- "eee#fcc#cccccdccc#ee",
- "eee#fcc#cc#cc#ccc#ee",
- "eeee#accccccccc##eee",
- "eeeee#aacccccaabeeee",
- "eeeee...#####..beeee"
- };
- }]
- } else {
- set _defaultIcon [image create bitmap -data {
- #define watch1a_width 20
- #define watch1a_height 20
- static char watch1a_bits[] = {
- 0x40,0x40,0xf0,0xe0,0x7f,0xf0,0xe0,0xe0,0xf0,0x30,
- 0x80,0xf1,0x88,0x04,0xf2,0x0c,0x00,0xf6,0x04,0x04,
- 0xf4,0x94,0x84,0xf5,0x02,0x06,0xf8,0x02,0x0c,0xf8,
- 0x12,0x7e,0xf9,0x02,0x04,0xf8,0x02,0x24,0xf8,0x04,
- 0x00,0xf5,0x04,0x00,0xf4,0x88,0x02,0xf2,0x88,0x64,
- 0xf2,0x30,0x80,0xf1,0xe0,0x60,0xf0,0xe0,0xff,0xf0};
- }]
- }
-
- #
- # Since this image will only need to be created once, we redefine
- # this method to just return the image name for subsequent calls.
- #
- body ::iwidgets::Timeentry::_getDefaultIcon {} {
- return $_defaultIcon
- }
-
- return $_defaultIcon
-}
-
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _popup
-#
-# This method is invoked upon selection of the icon button. It
-# creates a watch widget within a toplevel popup, calculates
-# the position at which to display the watch, performs a grab
-# and displays the watch.
-# ------------------------------------------------------------------
-body iwidgets::Timeentry::_popup {} {
- #
- # First, let's nullify the icon binding so that any another
- # selections are ignored until were done with this one. Next,
- # change the relief of the icon.
- #
- bind $itk_component(iconbutton) <Button-1> {}
- $itk_component(iconbutton) configure -relief sunken
-
- #
- # Create a withdrawn toplevel widget and remove the window
- # decoration via override redirect.
- #
- itk_component add -private popup {
- toplevel $itk_interior.popup
- }
- $itk_component(popup) configure -borderwidth 2 -background black
- wm withdraw $itk_component(popup)
- wm overrideredirect $itk_component(popup) 1
-
- #
- # Add a binding to for Escape to always release the grab.
- #
- bind $itk_component(popup) <KeyPress-Escape> [code $this _releaseGrab]
-
- #
- # Create the watch widget.
- #
- itk_component add watch {
- iwidgets::Watch $itk_component(popup).watch
- } {
- usual
-
- rename -width -watchwidth watchWidth Width
- rename -height -watchheight watchHeight Height
-
- keep -hourradius -minuteradius -minutecolor -pivotradius -pivotcolor \
- -secondradius -secondcolor -clockcolor -clockstipple -tickcolor
- }
- grid $itk_component(watch) -row 0 -column 0
- $itk_component(watch) configure -cursor top_left_arrow
-
- #
- # Create a button widget so the user can say they are done.
- #
- itk_component add close {
- button $itk_component(popup).close -command [code $this _getPopupTime]
- } {
- usual
- rename -text -closetext closeText Text
- }
- grid $itk_component(close) -row 1 -column 0 -sticky ew
- $itk_component(close) configure -cursor top_left_arrow
-
- #
- # The icon button will be used as the basis for the position of the
- # popup on the screen. We'll always attempt to locate the popup
- # off the lower right corner of the button. If that would put
- # the popup off the screen, then we'll put above the upper left.
- #
- set rootx [winfo rootx $itk_component(iconbutton)]
- set rooty [winfo rooty $itk_component(iconbutton)]
- set popupwidth [cget -watchwidth]
- set popupheight [expr [cget -watchheight] + \
- [winfo reqheight $itk_component(close)]]
-
- set popupx [expr $rootx + 3 + \
- [winfo width $itk_component(iconbutton)]]
- set popupy [expr $rooty + 3 + \
- [winfo height $itk_component(iconbutton)]]
-
- if {([expr $popupx + $popupwidth] > [winfo screenwidth .]) || \
- ([expr $popupy + $popupheight] > [winfo screenheight .])} {
- set popupx [expr $rootx - 3 - $popupwidth]
- set popupy [expr $rooty - 3 - $popupheight]
- }
-
- #
- # Get the current time from the timefield widget and both
- # show and select it on the watch.
- #
- $itk_component(watch) show [get]
-
- #
- # Display the popup at the calculated position.
- #
- wm geometry $itk_component(popup) +$popupx+$popupy
- wm deiconify $itk_component(popup)
- tkwait visibility $itk_component(popup)
-
- #
- # Perform either a local or global grab based on the -grab option.
- #
- if {$itk_option(-grab) == "local"} {
- grab $itk_component(popup)
- } else {
- grab -global $itk_component(popup)
- }
-
- #
- # Make sure the widget is above all others and give it focus.
- #
- raise $itk_component(popup)
- focus $itk_component(watch)
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _popupGetTime
-#
-# This method is the callback for selection of a time on the
-# watch. It releases the grab and sets the time in the
-# timefield widget.
-# ------------------------------------------------------------------
-body iwidgets::Timeentry::_getPopupTime {} {
- show [$itk_component(watch) get -clicks]
- _releaseGrab
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _releaseGrab
-#
-# This method releases the grab, destroys the popup, changes the
-# relief of the button back to raised and reapplies the binding
-# to the icon button that engages the popup action.
-# ------------------------------------------------------------------
-body iwidgets::Timeentry::_releaseGrab {} {
- grab release $itk_component(popup)
- $itk_component(iconbutton) configure -relief raised
- destroy $itk_component(popup)
- bind $itk_component(iconbutton) <Button-1> [code $this _popup]
-}
diff --git a/itcl/iwidgets3.0.0/generic/timefield.itk b/itcl/iwidgets3.0.0/generic/timefield.itk
deleted file mode 100644
index c9b8c54c437..00000000000
--- a/itcl/iwidgets3.0.0/generic/timefield.itk
+++ /dev/null
@@ -1,1018 +0,0 @@
-#
-# Timefield
-# ----------------------------------------------------------------------
-# Implements a time entry field with adjustable built-in intelligence
-# levels.
-# ----------------------------------------------------------------------
-# AUTHOR: John A. Tucker E-mail: jatucker@austin.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.
-# ======================================================================
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Timefield.justify center widgetDefault
-
-
-#
-# Usual options.
-#
-itk::usual Timefield {
- keep -background -borderwidth -cursor -foreground -highlightcolor \
- -highlightthickness -labelfont -textbackground -textfont
-}
-
-# ------------------------------------------------------------------
-# TIMEFIELD
-# ------------------------------------------------------------------
-class iwidgets::Timefield {
-
- inherit iwidgets::Labeledwidget
-
- constructor {args} {}
-
- itk_option define -childsitepos childSitePos Position e
- itk_option define -command command Command {}
- itk_option define -seconds seconds Seconds on
- itk_option define -format format Format civilian
- itk_option define -iq iq Iq high
- itk_option define -gmt gmt GMT no
- itk_option define -state state State normal
-
- public {
- method get {{format "-string"}}
- method isvalid {}
- method show {{time "now"}}
- }
-
- protected {
- method _backwardCivilian {}
- method _backwardMilitary {}
- method _focusIn {}
- method _forwardCivilian {}
- method _forwardMilitary {}
- method _keyPress {char sym state}
- method _moveField {direction}
- method _setField {field}
- method _whichField {}
- method _toggleAmPm {}
-
- variable _cfield hour
- variable _formatString "%r"
- variable _fields {}
- variable _numFields 4
- variable _forward {}
- variable _backward {}
- variable _timeVar ""
-
- common _militaryFields {hour minute second}
- common _civilianFields {hour minute second ampm}
- }
-}
-
-#
-# Provide a lowercased access method for the timefield class.
-#
-proc iwidgets::timefield {pathName args} {
- uplevel iwidgets::Timefield $pathName $args
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Timefield::constructor {args} {
- component hull configure -borderwidth 0
-
- #
- # Create an entry field for entering the time.
- #
- itk_component add time {
- entry $itk_interior.time
- } {
- keep -borderwidth -cursor -exportselection \
- -foreground -highlightcolor -highlightthickness \
- -insertbackground -justify -relief -textvariable
-
- rename -font -textfont textFont Font
- rename -highlightbackground -background background Background
- rename -background -textbackground textBackground Background
- }
-
- #
- # Create the child site widget.
- #
- itk_component add -protected dfchildsite {
- frame $itk_interior.dfchildsite
- }
- set itk_interior $itk_component(dfchildsite)
-
- #
- # Add timefield event bindings for focus in and keypress events.
- #
- bind $itk_component(time) <FocusIn> [code $this _focusIn]
- bind $itk_component(time) <KeyPress> [code $this _keyPress %A %K %s]
- bind $itk_component(time) <1> "focus $itk_component(time); break"
-
- #
- # Disable some mouse button event bindings:
- # Button Motion
- # Double-Clicks
- # Triple-Clicks
- # Button2
- #
- bind $itk_component(time) <Button1-Motion> break
- bind $itk_component(time) <Button2-Motion> break
- bind $itk_component(time) <Double-Button> break
- bind $itk_component(time) <Triple-Button> break
- bind $itk_component(time) <2> break
-
- #
- # Initialize the widget based on the command line options.
- #
- eval itk_initialize $args
-
- #
- # Initialize the time to the current time.
- #
- show
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: -childsitepos
-#
-# Specifies the position of the child site in the widget. Valid
-# locations are n, s, e, and w.
-# ------------------------------------------------------------------
-configbody iwidgets::Timefield::childsitepos {
- set parent [winfo parent $itk_component(time)]
-
- switch $itk_option(-childsitepos) {
- n {
- grid $itk_component(dfchildsite) -row 0 -column 0 -sticky ew
- grid $itk_component(time) -row 1 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 0
- grid rowconfigure $parent 1 -weight 1
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- e {
- grid $itk_component(dfchildsite) -row 0 -column 1 -sticky ns
- grid $itk_component(time) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- s {
- grid $itk_component(dfchildsite) -row 1 -column 0 -sticky ew
- grid $itk_component(time) -row 0 -column 0 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 1
- grid columnconfigure $parent 1 -weight 0
- }
-
- w {
- grid $itk_component(dfchildsite) -row 0 -column 0 -sticky ns
- grid $itk_component(time) -row 0 -column 1 -sticky nsew
-
- grid rowconfigure $parent 0 -weight 1
- grid rowconfigure $parent 1 -weight 0
- grid columnconfigure $parent 0 -weight 0
- grid columnconfigure $parent 1 -weight 1
- }
-
- default {
- error "bad childsite option\
- \"$itk_option(-childsitepos)\":\
- should be n, e, s, or w"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -command
-#
-# Command invoked upon detection of return key press event.
-# ------------------------------------------------------------------
-configbody iwidgets::Timefield::command {}
-
-# ------------------------------------------------------------------
-# OPTION: -iq
-#
-# Specifies the level of intelligence to be shown in the actions
-# taken by the time field during the processing of keypress events.
-# Valid settings include high or low. With a high iq,
-# the time prevents the user from typing in an invalid time. For
-# example, if the current time is 05/31/1997 and the user changes
-# the hour to 04, then the minute will be instantly modified for them
-# to be 30. In addition, leap seconds are fully taken into account.
-# A setting of low iq instructs the widget to do no validity checking
-# at all during time entry. With a low iq level, it is assumed that
-# the validity will be determined at a later time using the time's
-# isvalid command.
-# ------------------------------------------------------------------
-configbody iwidgets::Timefield::iq {
-
- switch $itk_option(-iq) {
- high - low {
-
- }
- default {
- error "bad iq option \"$itk_option(-iq)\": should be high or low"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -format
-#
-# Specifies the time format displayed in the entry widget.
-# ------------------------------------------------------------------
-configbody iwidgets::Timefield::format {
-
- switch $itk_option(-format) {
- civilian {
- set _backward _backwardCivilian
- set _forward _forwardCivilian
- set _fields $_civilianFields
- set _numFields 4
- set _formatString "%r"
- $itk_component(time) config -width 11
- }
- military {
- set _backward _backwardMilitary
- set _forward _forwardMilitary
- set _fields $_militaryFields
- set _numFields 3
- set _formatString "%T"
- $itk_component(time) config -width 8
- }
- default {
- error "bad iq option \"$itk_option(-iq)\":\
- should be civilian or military"
- }
- }
-
- #
- # Update the current contents of the entry field to reflect
- # the configured format.
- #
- show $_timeVar
-}
-
-# ------------------------------------------------------------------
-# OPTION: -gmt
-#
-# This option is used for GMT time. Must be a boolean value.
-# ------------------------------------------------------------------
-configbody iwidgets::Timefield::gmt {
- switch $itk_option(-gmt) {
- 0 - no - false - off { }
- 1 - yes - true - on { }
- default {
- error "bad gmt option \"$itk_option(-gmt)\": should be boolean"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -state
-#
-# Disable the
-# ------------------------------------------------------------------
-configbody iwidgets::Timefield::state {
- switch -- $itk_option(-state) {
- normal {
- $itk_component(time) configure -state normal
- }
- disabled {
- focus $itk_component(hull)
- $itk_component(time) configure -state disabled
- }
- default {
- error "Invalid value for -state: $itk_option(-state). Should be\
- \"normal\" or \"disabled\"."
- }
- }
-}
-
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: get ?format?
-#
-# Return the current contents of the timefield in one of two formats
-# string or as an integer clock value using the -string and -clicks
-# options respectively. The default is by string. Reference the
-# clock command for more information on obtaining times and their
-# formats.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::get {{format "-string"}} {
- set _timeVar [$itk_component(time) get]
-
- switch -- $format {
- "-string" {
- return $_timeVar
- }
- "-clicks" {
- return [::clock scan $_timeVar -gmt $itk_option(-gmt)]
- }
- default {
- error "bad format option \"$format\":\
- should be -string or -clicks"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: show time
-#
-# Changes the currently displayed time to be that of the time
-# argument. The time may be specified either as a string or an
-# integer clock value. Reference the clock command for more
-# information on obtaining times and their formats.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::show {{time "now"}} {
- set icursor [$itk_component(time) index insert]
-
- if {$time == {}} {
- set time "now"
- }
-
- switch -regexp -- $time {
-
- {^now$} {
- set seconds [::clock seconds]
- }
-
- {^[0-9]+$} {
- if { [catch {::clock format $time -gmt $itk_option(-gmt)}] } {
- error "bad time: \"$time\", must be a valid time \
- string, clock clicks value or the keyword now"
- }
- set seconds $time
- }
-
- default {
- if {[catch {set seconds [::clock scan $time -gmt $itk_option(-gmt)]}]} {
- error "bad time: \"$time\", must be a valid time \
- string, clock clicks value or the keyword now"
- }
- }
- }
-
- set _timeVar [::clock format $seconds -format $_formatString \
- -gmt $itk_option(-gmt)]
-
- $itk_component(time) delete 0 end
- $itk_component(time) insert end $_timeVar
- $itk_component(time) icursor $icursor
-
- return $_timeVar
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: isvalid
-#
-# Returns a boolean indication of the validity of the currently
-# displayed time value. For example, 09:59::59 is valid whereas
-# 26:59:59 is invalid.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::isvalid {} {
- set _timeVar [$itk_component(time) get]
- return [expr ([catch {::clock scan $_timeVar -gmt $itk_option(-gmt)}] == 0)]
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _focusIn
-#
-# This method is bound to the <FocusIn> event. It resets the
-# insert cursor and field settings to be back to their last known
-# positions.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_focusIn {} {
- _setField $_cfield
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _keyPress
-#
-# This method is the workhorse of the class. It is bound to the
-# <KeyPress> event and controls the processing of all key strokes.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_keyPress {char sym state} {
-
- #
- # Determine which field we are in currently. This is needed
- # since the user may have moved to this position via a mouse
- # selection and so it would not be in the position we last
- # knew it to be.
- #
- set _cfield [_whichField ]
-
- #
- # Set up a few basic variables we'll be needing throughout the
- # rest of the method such as the position of the insert cursor
- # and the currently displayed minute, hour, and second.
- #
- set inValid 0
- set icursor [$itk_component(time) index insert]
- set lastField [lindex $_fields end]
-
- set prevtime $_timeVar
- regexp {^([0-9])([0-9]):([0-9])([0-9]):([0-9])([0-9]).*$} \
- $_timeVar dummy \
- hour1 hour2 minute1 minute2 second1 second2
- set hour "$hour1$hour2"
- set minute "$minute1$minute2"
- set second "$second1$second2"
-
- #
- # Process numeric keystrokes. This involes a fair amount of
- # processing with step one being to check and make sure we
- # aren't attempting to insert more that 6 characters. If
- # so ring the bell and break.
- #
- if {![catch {expr int($char)}]} {
-
- # If we are currently in the hour field then we process the
- # number entered based on the cursor position. If we are at
- # at the first position and our iq is low, then accept any
- # input.
- #
- # if the current format is military, then
- # validate the hour field which can be [00 - 23]
- #
- switch $_cfield {
- hour {
- if {$itk_option(-iq) == "low"} {
- $itk_component(time) delete $icursor
- $itk_component(time) insert $icursor $char
-
- } elseif {$itk_option(-format) == "military"} {
- if {$icursor == 0} {
- #
- # if the digit is less than 2, then
- # the second hour digit is valid for 0-9
- #
- if {$char < 2} {
- $itk_component(time) delete 0 1
- $itk_component(time) insert 0 $char
-
- #
- # if the digit is equal to 2, then
- # the second hour digit is valid for 0-3
- #
- } elseif {$char == 2} {
- $itk_component(time) delete 0 1
- $itk_component(time) insert 0 $char
-
- if {$hour2 > 3} {
- $itk_component(time) delete 1 2
- $itk_component(time) insert 1 "0"
- $itk_component(time) icursor 1
- }
-
- #
- # if the digit is greater than 2, then
- # set the first hour digit to 0 and the
- # second hour digit to the value.
- #
- } elseif {$char > 2} {
- $itk_component(time) delete 0 2
- $itk_component(time) insert 0 "0$char"
- set icursor 1
- } else {
- set inValid 1
- }
-
- #
- # if the insertion cursor is for the second hour digit, then
- # format is military, then it can only be valid if the first
- # hour digit is less than 2 or the new digit is less than 4
- #
- } else {
- if {$hour1 < 2 || $char < 4} {
- $itk_component(time) delete 1 2
- $itk_component(time) insert 1 $char
- } else {
- set inValid 1
- }
- }
-
- #
- # The format is civilian, so we need to
- # validate the hour field which can be [01 - 12]
- #
- } else {
- if {$icursor == 0} {
- #
- # if the digit is 0, then
- # the second hour digit is valid for 1-9
- # so just insert it.
- #
- if {$char == 0 && $hour2 != 0} {
- $itk_component(time) delete 0 1
- $itk_component(time) insert 0 $char
-
- #
- # if the digit is equal to 1, then
- # the second hour digit is valid for 0-2
- #
- } elseif {$char == 1} {
- $itk_component(time) delete 0 1
- $itk_component(time) insert 0 $char
-
- if {$hour2 > 2} {
- $itk_component(time) delete 1 2
- $itk_component(time) insert 1 0
- set icursor 1
- }
-
- #
- # if the digit is greater than 1, then
- # set the first hour digit to 0 and the
- # second hour digit to the value.
- #
- } elseif {$char > 1} {
- $itk_component(time) delete 0 2
- $itk_component(time) insert 0 "0$char"
- set icursor 1
-
- } else {
- set inValid 1
- }
-
- #
- # The insertion cursor is at the second hour digit, so
- # it can only be valid if the firs thour digit is 0
- # or the new digit is less than or equal to 2
- #
- } else {
- if {$hour1 == 0 || $char <= 2} {
- $itk_component(time) delete 1 2
- $itk_component(time) insert 1 $char
- } else {
- set inValid 1
- }
- }
- }
-
- if {$inValid} {
- bell
- } elseif {$icursor == 1} {
- _setField minute
- }
- }
-
- minute {
- if {$itk_option(-iq) == "low" || $char < 6 || $icursor == 4} {
- $itk_component(time) delete $icursor
- $itk_component(time) insert $icursor $char
- } elseif {$itk_option(-iq) == "high"} {
- if {$char > 5} {
- $itk_component(time) delete 3 5
- $itk_component(time) insert 3 "0$char"
- set icursor 4
- }
- }
-
- if {$icursor == 4} {
- _setField second
- }
- }
-
- second {
- if {$itk_option(-iq) == "low" || $char < 6 || $icursor == 7} {
- $itk_component(time) delete $icursor
- $itk_component(time) insert $icursor $char
-
- } elseif {$itk_option(-iq) == "high"} {
- if {$char > 5} {
- $itk_component(time) delete 6 8
- $itk_component(time) insert 6 "0$char"
- set icursor 7
- }
- }
-
- if {$icursor == 7} {
- _moveField forward
- }
- }
- }
-
- set _timeVar [$itk_component(time) get]
- return -code break
- }
-
- #
- # Process the plus and the up arrow keys. They both yield the same
- # effect, they increment the minute by one.
- #
- switch $sym {
- p - P {
- if {$itk_option(-format) == "civilian"} {
- $itk_component(time) delete 9 10
- $itk_component(time) insert 9 P
- _setField hour
- }
- }
-
- a - A {
- if {$itk_option(-format) == "civilian"} {
- $itk_component(time) delete 9 10
- $itk_component(time) insert 9 A
- _setField hour
- }
- }
-
- plus - Up {
- if {$_cfield == "ampm"} {
- _toggleAmPm
- } else {
- set newclicks [::clock scan "$prevtime 1 $_cfield"]
- show [::clock format $newclicks -format $_formatString]
- }
- }
-
- minus - Down {
- #
- # Process the minus and the down arrow keys which decrement the value
- # of the field in which the cursor is currently positioned.
- #
- if {$_cfield == "ampm"} {
- _toggleAmPm
- } else {
- set newclicks [::clock scan "$prevtime 1 $_cfield ago"]
- show [::clock format $newclicks -format $_formatString]
- }
- }
-
- Tab {
- #
- # A tab key moves the "hour:minute:second" field forward by one unless
- # the current field is the second. In that case we'll let tab
- # do what is supposed to and pass the focus onto the next widget.
- #
- if {$state == 0} {
-
- if {($itk_option(-format) == "civilian" && $_cfield == $lastField)} {
- _setField hour
- return -code continue
- }
- _moveField forward
-
- #
- # A ctrl-tab key moves the hour:minute:second field backwards by one
- # unless the current field is the hour. In that case we'll let
- # tab take the focus to a previous widget.
- #
- } elseif {$state == 4} {
- if {$_cfield == "hour"} {
- _setField hour
- return -code continue
- }
- _moveField backward
- }
- }
-
- Right {
- #
- # A right arrow key moves the insert cursor to the right one.
- #
- $_forward
- }
-
- Left - BackSpace - Delete {
- #
- # A left arrow, backspace, or delete key moves the insert cursor
- # to the left one. This is what you expect for the left arrow
- # and since the whole widget always operates in overstrike mode,
- # it makes the most sense for backspace and delete to do the same.
- #
- $_backward
- }
-
- Return {
- #
- # A Return key invokes the optionally specified command option.
- #
- uplevel #0 $itk_option(-command)
- }
-
- default {
-
- }
- }
-
- return -code break
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _toggleAmPm
-#
-# Internal method which toggles the displayed time
-# between "AM" and "PM" when format is "civilian".
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_toggleAmPm {} {
- set firstChar [string index $_timeVar 9]
- $itk_component(time) delete 9 10
- $itk_component(time) insert 9 [expr {($firstChar == "A") ? "P" : "A"}]
- $itk_component(time) icursor 9
- set _timeVar [$itk_component(time) get]
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _setField field
-#
-# Adjusts the current field to be that of the argument, setting the
-# insert cursor appropriately.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_setField {field} {
-
- # Move the position of the cursor to the first character of the
- # field given by the argument:
- #
- # Field First Character Index
- # ----- ---------------------
- # hour 0
- # minute 3
- # second 6
- # ampm 9
- #
- switch $field {
- hour {
- $itk_component(time) icursor 0
- }
- minute {
- $itk_component(time) icursor 3
- }
- second {
- $itk_component(time) icursor 6
- }
- ampm {
- if {$itk_option(-format) == "military"} {
- error "bad field: \"$field\", must be hour, minute or second"
- }
- $itk_component(time) icursor 9
- }
- default {
- if {$itk_option(-format) == "military"} {
- error "bad field: \"$field\", must be hour, minute or second"
- } else {
- error "bad field: \"$field\", must be hour, minute, second or ampm"
- }
- }
- }
-
- set _cfield $field
-
- return $_cfield
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _moveField
-#
-# Moves the cursor one field forward or backward.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_moveField {direction} {
-
- # Since the value "_fields" list variable is always either value:
- # military => {hour minute second}
- # civilian => {hour minute second ampm}
- #
- # the index of the previous or next field index can be determined
- # by subtracting or adding 1 to current the index, respectively.
- #
- set index [lsearch $_fields $_cfield]
- expr {($direction == "forward") ? [incr index] : [incr index -1]}
-
- if {$index == $_numFields} {
- set index 0
- } elseif {$index < 0} {
- set index [expr $_numFields-1]
- }
-
- _setField [lindex $_fields $index]
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _whichField
-#
-# Returns the current field that the cursor is positioned within.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_whichField {} {
-
- # Return the current field based on the position of the cursor.
- #
- # Field Index
- # ----- -----
- # hour 0,1
- # minute 3,4
- # second 6,7
- # ampm 9,10
- #
- set icursor [$itk_component(time) index insert]
- switch $icursor {
- 0 - 1 {
- set _cfield hour
- }
- 3 - 4 {
- set _cfield minute
- }
- 6 - 7 {
- set _cfield second
- }
- 9 - 10 {
- set _cfield ampm
- }
- }
-
- return $_cfield
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _forwardCivilian
-#
-# Internal method which moves the cursor forward by one character
-# jumping over the slashes and wrapping.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_forwardCivilian {} {
-
- #
- # If the insertion cursor is at the second digit
- # of either the hour, minute or second field, then
- # move the cursor to the first digit of the right-most field.
- #
- # else move the insertion cursor right one character
- #
- set icursor [$itk_component(time) index insert]
- switch $icursor {
- 1 {
- _setField minute
- }
- 4 {
- _setField second
- }
- 7 {
- _setField ampm
- }
- 9 - 10 {
- _setField hour
- }
- default {
- $itk_component(time) icursor [expr $icursor+1]
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _forwardMilitary
-#
-# Internal method which moves the cursor forward by one character
-# jumping over the slashes and wrapping.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_forwardMilitary {} {
-
- #
- # If the insertion cursor is at the second digit of either
- # the hour, minute or second field, then move the cursor to
- # the first digit of the right-most field.
- #
- # else move the insertion cursor right one character
- #
- set icursor [$itk_component(time) index insert]
- switch $icursor {
- 1 {
- _setField minute
- }
- 4 {
- _setField second
- }
- 7 {
- _setField hour
- }
- default {
- $itk_component(time) icursor [expr $icursor+1]
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _backwardCivilian
-#
-# Internal method which moves the cursor backward by one character
-# jumping over the ":" and wrapping.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_backwardCivilian {} {
-
- #
- # If the insertion cursor is at the first character
- # of either the minute or second field or at the ampm
- # field, then move the cursor to the second character
- # of the left-most field.
- #
- # else if the insertion cursor is at the first digit of the
- # hour field, then move the cursor to the first character
- # of the ampm field.
- #
- # else move the insertion cursor left one character
- #
- set icursor [$itk_component(time) index insert]
- switch $icursor {
- 9 {
- _setField second
- $itk_component(time) icursor 7
- }
- 6 {
- _setField minute
- $itk_component(time) icursor 4
- }
- 3 {
- _setField hour
- $itk_component(time) icursor 1
- }
- 0 {
- _setField ampm
- $itk_component(time) icursor 9
- }
- default {
- $itk_component(time) icursor [expr $icursor-1]
- }
- }
-}
-
-# ------------------------------------------------------------------
-# PROTECTED METHOD: _backwardMilitary
-#
-# Internal method which moves the cursor backward by one character
-# jumping over the slashes and wrapping.
-# ------------------------------------------------------------------
-body iwidgets::Timefield::_backwardMilitary {} {
-
- #
- # If the insertion cursor is at the first digit of either
- # the minute or second field, then move the cursor to the
- # second character of the left-most field.
- #
- # else if the insertion cursor is at the first digit of the
- # hour field, then move the cursor to the second digit
- # of the second field.
- #
- # else move the insertion cursor left one character
- #
- set icursor [$itk_component(time) index insert]
- switch $icursor {
- 6 {
- _setField minute
- $itk_component(time) icursor 4
- }
- 3 {
- _setField hour
- $itk_component(time) icursor 1
- }
- 0 {
- _setField second
- $itk_component(time) icursor 7
- }
- default {
- $itk_component(time) icursor [expr $icursor-1]
- }
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/toolbar.itk b/itcl/iwidgets3.0.0/generic/toolbar.itk
deleted file mode 100644
index c9e2be2d463..00000000000
--- a/itcl/iwidgets3.0.0/generic/toolbar.itk
+++ /dev/null
@@ -1,983 +0,0 @@
-#
-# Toolbar
-# ----------------------------------------------------------------------
-#
-# The Toolbar command creates a new window (given by the pathName
-# argument) and makes it into a Tool Bar widget. Additional options,
-# described above may be specified on the command line or in the
-# option database to configure aspects of the Toolbar such as its
-# colors, font, and orientation. The Toolbar command returns its
-# pathName argument. At the time this command is invoked, there
-# must not exist a window named pathName, but pathName's parent
-# must exist.
-#
-# A Toolbar is a widget that displays a collection of widgets arranged
-# either in a row or a column (depending on the value of the -orient
-# option). This collection of widgets is usually for user convenience
-# to give access to a set of commands or settings. Any widget may be
-# placed on a Toolbar. However, command or value-oriented widgets (such
-# as button, radiobutton, etc.) are usually the most useful kind of
-# widgets to appear on a Toolbar.
-#
-# WISH LIST:
-# This section lists possible future enhancements.
-#
-# Toggle between text and image/bitmap so that the toolbar could
-# display either all text or all image/bitmaps.
-# Implementation of the -toolbarfile option that allows toolbar
-# add commands to be read in from a file.
-# ----------------------------------------------------------------------
-# AUTHOR: Bill W. Scott EMAIL: bscott@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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Toolbar*padX 5 widgetDefault
-option add *Toolbar*padY 5 widgetDefault
-option add *Toolbar*orient horizontal widgetDefault
-option add *Toolbar*highlightThickness 0 widgetDefault
-option add *Toolbar*indicatorOn false widgetDefault
-option add *Toolbar*selectColor [. cget -bg] widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Toolbar {
- keep -activebackground -activeforeground -background -balloonbackground \
- -balloondelay1 -balloondelay2 -balloonfont -balloonforeground \
- -borderwidth -cursor -disabledforeground -font -foreground \
- -highlightbackground -highlightcolor -highlightthickness \
- -insertbackground -insertforeground -selectbackground \
- -selectborderwidth -selectcolor -selectforeground -troughcolor
-}
-
-# ------------------------------------------------------------------
-# TOOLBAR
-# ------------------------------------------------------------------
-class iwidgets::Toolbar {
- inherit itk::Widget
-
- constructor {args} {}
- destructor {}
-
- itk_option define -balloonbackground \
- balloonBackground BalloonBackground yellow
- itk_option define -balloonforeground \
- balloonForeground BalloonForeground black
- itk_option define -balloonfont balloonFont BalloonFont 6x10
- itk_option define -balloondelay1 \
- balloonDelay1 BalloonDelay1 1000
- itk_option define -balloondelay2 \
- balloonDelay2 BalloonDelay2 200
- itk_option define -helpvariable helpVariable HelpVariable {}
- itk_option define -orient orient Orient "horizontal"
-
- #
- # The following options implement propogated configurations to
- # any widget that might be added to us. The problem is this is
- # not deterministic as someone might add a new kind of widget with
- # and option like -armbackground, so we would not be aware of
- # this kind of option. Anyway we support as many of the obvious
- # ones that we can. They can always configure them with itemconfigures.
- #
- itk_option define -activebackground activeBackground Foreground #c3c3c3
- itk_option define -activeforeground activeForeground Background Black
- itk_option define -background background Background #d9d9d9
- itk_option define -borderwidth borderWidth BorderWidth 2
- itk_option define -cursor cursor Cursor {}
- itk_option define -disabledforeground \
- disabledForeground DisabledForeground #a3a3a3
- itk_option define -font \
- font Font "-Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*"
- itk_option define -foreground foreground Foreground #000000000000
- itk_option define -highlightbackground \
- highlightBackground HighlightBackground #d9d9d9
- itk_option define -highlightcolor highlightColor HighlightColor Black
- itk_option define -highlightthickness \
- highlightThickness HighlightThickness 0
- itk_option define -insertforeground insertForeground Background #c3c3c3
- itk_option define -insertbackground insertBackground Foreground Black
- itk_option define -selectbackground selectBackground Foreground #c3c3c3
- itk_option define -selectborderwidth selectBorderWidth BorderWidth {}
- itk_option define -selectcolor selectColor Background #b03060
- itk_option define -selectforeground selectForeground Background Black
- itk_option define -state state State normal
- itk_option define -troughcolor troughColor Background #c3c3c3
-
- public method add {widgetCommand name args}
- public method delete {args}
- public method index {index}
- public method insert {beforeIndex widgetCommand name args}
- public method itemcget {index args}
- public method itemconfigure {index args}
-
- public method _resetBalloonTimer {}
- public method _startBalloonDelay {window}
- public method _stopBalloonDelay {window balloonClick}
-
- private method _deleteWidgets {index1 index2}
- private method _addWidget {widgetCommand name args}
- private method _index {toolList index}
- private method _getAttachedOption {optionListName widget args retValue}
- private method _setAttachedOption {optionListName widget option args}
- private method _packToolbar {}
-
- public method hideHelp {}
- public method showHelp {window}
- public method showBalloon {window}
- public method hideBalloon {}
-
- private variable _balloonTimer 0
- private variable _balloonAfterID 0
- private variable _balloonClick false
-
- private variable _interior {}
- private variable _initialMapping 1 ;# Is this the first mapping?
- private variable _toolList {} ;# List of all widgets on toolbar
- private variable _opts ;# New options for child widgets
- private variable _currHelpWidget {} ;# Widget currently displaying help for
- private variable _hintWindow {} ;# Balloon help bubble.
-
- # list of options we want to propogate to widgets added to toolbar.
- private common _optionList {
- -activebackground \
- -activeforeground \
- -background \
- -borderwidth \
- -cursor \
- -disabledforeground \
- -font \
- -foreground \
- -highlightbackground \
- -highlightcolor \
- -highlightthickness \
- -insertbackground \
- -insertforeground \
- -selectbackground \
- -selectborderwidth \
- -selectcolor \
- -selectforeground \
- -state \
- -troughcolor \
- }
-}
-
-# ------------------------------------------------------------------
-# CONSTRUCTOR
-# ------------------------------------------------------------------
-body iwidgets::Toolbar::constructor {args} {
- component hull configure -borderwidth 0
- set _interior $itk_interior
-
- #
- # Handle configs
- #
- eval itk_initialize $args
-
- # build balloon help window
- set _hintWindow [toplevel $itk_component(hull).balloonHintWindow]
- wm withdraw $_hintWindow
- label $_hintWindow.label \
- -foreground $itk_option(-balloonforeground) \
- -background $itk_option(-balloonbackground) \
- -font $itk_option(-balloonfont) \
- -relief raised \
- -borderwidth 1
- pack $_hintWindow.label
-
- # ... Attach help handler to this widget
- bind toolbar-help-$itk_component(hull) \
- <Enter> "+[code $this showHelp %W]"
- bind toolbar-help-$itk_component(hull) \
- <Leave> "+[code $this hideHelp]"
-
- # ... Set up Microsoft style balloon help display.
- set _balloonTimer $itk_option(-balloondelay1)
- bind $_interior \
- <Leave> "+[code $this _resetBalloonTimer]"
- bind toolbar-balloon-$itk_component(hull) \
- <Enter> "+[code $this _startBalloonDelay %W]"
- bind toolbar-balloon-$itk_component(hull) \
- <Leave> "+[code $this _stopBalloonDelay %W false]"
- bind toolbar-balloon-$itk_component(hull) \
- <Button-1> "+[code $this _stopBalloonDelay %W true]"
-}
-
-#
-# Provide a lowercase access method for the Toolbar class
-#
-proc ::iwidgets::toolbar {pathName args} {
- uplevel ::iwidgets::Toolbar $pathName $args
-}
-
-# ------------------------------------------------------------------
-# DESTURCTOR
-# ------------------------------------------------------------------
-body iwidgets::Toolbar::destructor {} {
- if {$_balloonAfterID != 0} {after cancel $_balloonAfterID}
-}
-
-# ------------------------------------------------------------------
-# OPTIONS
-# ------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION -balloonbackground
-# ------------------------------------------------------------------
-configbody iwidgets::Toolbar::balloonbackground {
- if { $_hintWindow != {} } {
- if { $itk_option(-balloonbackground) != {} } {
- $_hintWindow.label configure \
- -background $itk_option(-balloonbackground)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION -balloonforeground
-# ------------------------------------------------------------------
-configbody iwidgets::Toolbar::balloonforeground {
- if { $_hintWindow != {} } {
- if { $itk_option(-balloonforeground) != {} } {
- $_hintWindow.label configure \
- -foreground $itk_option(-balloonforeground)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION -balloonfont
-# ------------------------------------------------------------------
-configbody iwidgets::Toolbar::balloonfont {
- if { $_hintWindow != {} } {
- if { $itk_option(-balloonfont) != {} } {
- $_hintWindow.label configure \
- -font $itk_option(-balloonfont)
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: -orient
-#
-# Position buttons either horizontally or vertically.
-# ------------------------------------------------------------------
-configbody iwidgets::Toolbar::orient {
- switch $itk_option(-orient) {
- "horizontal" - "vertical" {
- _packToolbar
- }
- default {error "Invalid orientation. Must be either \
- horizontal or vertical"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# METHODS
-# ------------------------------------------------------------------
-
-# -------------------------------------------------------------
-# METHOD: add widgetCommand name ?option value?
-#
-# Adds a widget with the command widgetCommand whose name is
-# name to the Toolbar. If widgetCommand is radiobutton
-# or checkbutton, its packing is slightly padded to match the
-# geometry of button widgets.
-# -------------------------------------------------------------
-body iwidgets::Toolbar::add { widgetCommand name args } {
-
- eval "_addWidget $widgetCommand $name $args"
-
- lappend _toolList $itk_component($name)
-
- if { $widgetCommand == "radiobutton" || \
- $widgetCommand == "checkbutton" } {
- set iPad 1
- } else {
- set iPad 0
- }
-
- # repack the tool bar
- _packToolbar
-
- return $itk_component($name)
-
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: delete index ?index2?
-#
-# This command deletes all components between index and
-# index2 inclusive. If index2 is omitted then it defaults
-# to index. Returns an empty string
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::delete { args } {
- # empty toolbar
- if { $_toolList == {} } {
- error "can't delete widget, no widgets in the Toolbar \
- \"$itk_component(hull)\""
- }
-
- set len [llength $args]
- switch -- $len {
- 1 {
- set fromWidget [_index $_toolList [lindex $args 0]]
-
- if { $fromWidget < 0 || $fromWidget >= [llength $_toolList] } {
- error "bad Toolbar widget index in delete method: \
- should be between 0 and [expr [llength $_toolList] - 1]"
- }
-
- set toWidget $fromWidget
- _deleteWidgets $fromWidget $toWidget
- }
-
- 2 {
- set fromWidget [_index $_toolList [lindex $args 0]]
-
- if { $fromWidget < 0 || $fromWidget >= [llength $_toolList] } {
- error "bad Toolbar widget index1 in delete method: \
- should be between 0 and [expr [llength $_toolList] - 1]"
- }
-
- set toWidget [_index $_toolList [lindex $args 1]]
-
- if { $toWidget < 0 || $toWidget >= [llength $_toolList] } {
- error "bad Toolbar widget index2 in delete method: \
- should be between 0 and [expr [llength $_toolList] - 1]"
- }
-
- if { $fromWidget > $toWidget } {
- error "bad Toolbar widget index1 in delete method: \
- index1 is greater than index2"
- }
-
- _deleteWidgets $fromWidget $toWidget
- }
-
- default {
- # ... too few/many parameters passed
- error "wrong # args: should be \
- \"$itk_component(hull) delete index1 ?index2?\""
- }
- }
-
- return {}
-}
-
-
-# -------------------------------------------------------------
-#
-# METHOD: index index
-#
-# Returns the widget's numerical index for the entry corresponding
-# to index. If index is not found, -1 is returned
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::index { index } {
-
- return [_index $_toolList $index]
-
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: insert beforeIndex widgetCommand name ?option value?
-#
-# Insert a new component named name with the command
-# widgetCommand before the com ponent specified by beforeIndex.
-# If widgetCommand is radiobutton or checkbutton, its packing
-# is slightly padded to match the geometry of button widgets.
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::insert { beforeIndex widgetCommand name args } {
-
- set beforeIndex [_index $_toolList $beforeIndex]
-
- if {$beforeIndex < 0 || $beforeIndex > [llength $_toolList] } {
- error "bad toolbar entry index $beforeIndex"
- }
-
- eval "_addWidget $widgetCommand $name $args"
-
- # linsert into list
- set _toolList [linsert $_toolList $beforeIndex $itk_component($name)]
-
- # repack the tool bar
- _packToolbar
-
- return $itk_component($name)
-
-}
-
-# ----------------------------------------------------------------------
-# METHOD: itemcget index ?option?
-#
-# Returns the value for the option setting of the widget at index $index.
-# index can be numeric or widget name
-#
-# ----------------------------------------------------------------------
-body iwidgets::Toolbar::itemcget { index args} {
-
- return [lindex [eval itemconfigure $index $args] 4]
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: itemconfigure index ?option? ?value? ?option value...?
-#
-# Query or modify the configuration options of the widget of
-# the Toolbar specified by index. If no option is specified,
-# returns a list describing all of the available options for
-# index (see Tk_ConfigureInfo for information on the format
-# of this list). If option is specified with no value, then
-# the command returns a list describing the one named option
-# (this list will be identical to the corresponding sublist
-# of the value returned if no option is specified). If one
-# or more option-value pairs are specified, then the command
-# modifies the given widget option(s) to have the given
-# value(s); in this case the command returns an empty string.
-# The component type of index determines the valid available options.
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::itemconfigure { index args } {
-
- # Get a numeric index.
- set index [_index $_toolList $index]
-
- # Get the tool path
- set toolPath [lindex $_toolList $index]
-
- set len [llength $args]
-
- switch $len {
- 0 {
- # show all options
- # ''''''''''''''''
-
- # support display of -helpstr and -balloonstr configs
- set optList [$toolPath configure]
-
- ## @@@ might want to use _getAttachedOption instead...
- if { [info exists _opts($toolPath,-helpstr)] } {
- set value $_opts($toolPath,-helpstr)
- } else {
- set value {}
- }
- lappend optList [list -helpstr helpStr HelpStr {} $value]
- if { [info exists _opts($toolPath,-balloonstr)] } {
- set value $_opts($toolPath,-balloonstr)
- } else {
- set value {}
- }
- lappend optList [list -balloonstr balloonStr BalloonStr {} $value]
- return $optList
- }
- 1 {
- # show only option specified
- # ''''''''''''''''''''''''''
- # did we satisfy the option get request?
-
- if { [regexp -- {-helpstr} $args] } {
- if { [info exists _opts($toolPath,-helpstr)] } {
- set value $_opts($toolPath,-helpstr)
- } else {
- set value {}
- }
- return [list -helpstr helpStr HelpStr {} $value]
- } elseif { [regexp -- {-balloonstr} $args] } {
- if { [info exists _opts($toolPath,-balloonstr)] } {
- set value $_opts($toolPath,-balloonstr)
- } else {
- set value {}
- }
- return [list -balloonstr balloonStr BalloonStr {} $value]
- } else {
- return [eval $toolPath configure $args]
- }
-
- }
- default {
- # ... do a normal configure
-
- # first screen for all our child options we are adding
- _setAttachedOption \
- _opts \
- $toolPath \
- "-helpstr" \
- $args
-
- _setAttachedOption \
- _opts \
- $toolPath \
- "-balloonstr" \
- $args
-
- # with a clean args list do a configure
-
- # if the stripping process brought us down to no options
- # to set, then forget the configure of widget.
- if { [llength $args] != 0 } {
- return [eval $toolPath configure $args]
- } else {
- return ""
- }
- }
- }
-
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: _resetBalloonDelay1
-#
-# Sets the delay that will occur before a balloon could be popped
-# up to balloonDelay1
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_resetBalloonTimer {} {
- set _balloonTimer $itk_option(-balloondelay1)
-
- # reset the <1> longer delay
- set _balloonClick false
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: _startBalloonDelay
-#
-# Starts waiting to pop up a balloon id
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_startBalloonDelay {window} {
- if {$_balloonAfterID != 0} {
- after cancel $_balloonAfterID
- }
- set _balloonAfterID [after $_balloonTimer [code $this showBalloon $window]]
-}
-
-# -------------------------------------------------------------
-#
-# METHOD: _stopBalloonDelay
-#
-# This method will stop the timer for a balloon popup if one is
-# in progress. If however there is already a balloon window up
-# it will hide the balloon window and set timing to delay 2 stage.
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_stopBalloonDelay { window balloonClick } {
-
- # If <1> then got a click cancel
- if { $balloonClick } {
- set _balloonClick true
- }
- if { $_balloonAfterID != 0 } {
- after cancel $_balloonAfterID
- set _balloonAfterID 0
- } else {
- hideBalloon
-
- # If this was cancelled with a <1> use longer delay.
- if { $_balloonClick } {
- set _balloonTimer $itk_option(-balloondelay1)
- } else {
- set _balloonTimer $itk_option(-balloondelay2)
- }
- }
-}
-
-# -------------------------------------------------------------
-# PRIVATE METHOD: _addWidget
-#
-# widgetCommand : command to invoke to create the added widget
-# name : name of the new widget to add
-# args : options for the widget create command
-#
-# Looks for -helpstr, -balloonstr and grabs them, strips from
-# args list. Then tries to add a component and keeps based
-# on known type. If it fails, it tries to clean up. Then it
-# binds handlers for helpstatus and balloon help.
-#
-# Returns the path of the widget added.
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_addWidget { widgetCommand name args } {
-
- # ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
- # Add the widget to the tool bar
- # '''''''''''''''''''''''''''''''''''''''''''''''''''''
-
- # ... Strip out and save the -helpstr, -balloonstr options from args
- # and save it in _opts
- _setAttachedOption \
- _opts \
- $_interior.$name \
- -helpstr \
- $args
-
- _setAttachedOption \
- _opts \
- $_interior.$name \
- -balloonstr \
- $args
-
-
- # ... Add the new widget as a component (catch an error if occurs)
- set createFailed [catch {
- itk_component add $name {
- eval $widgetCommand $_interior.$name $args
- } {
- }
- } errMsg]
-
- # ... Clean up if the create failed, and exit.
- # The _opts list if it has -helpstr, -balloonstr just entered for
- # this, it must be cleaned up.
- if { $createFailed } {
- # clean up
- if {![catch {set _opts($_interior.$name,-helpstr)}]} {
- set lastIndex [\
- expr [llength \
- $_opts($_interior.$name,-helpstr) ]-1]
- lreplace $_opts($_interior.$name,-helpstr) \
- $lastIndex $lastIndex ""
- }
- if {![catch {set _opts($_interior.$name,-balloonstr)}]} {
- set lastIndex [\
- expr [llength \
- $_opts($_interior.$name,-balloonstr) ]-1]
- lreplace $_opts($_interior.$name,-balloonstr) \
- $lastIndex $lastIndex ""
- }
- error $errMsg
- }
-
- # ... Add in dynamic options that apply from the _optionList
- foreach optionSet [$itk_component($name) configure] {
- set option [lindex $optionSet 0]
- if { [lsearch $_optionList $option] != -1 } {
- itk_option add $name.$option
- }
- }
-
- bindtags $itk_component($name) \
- [linsert [bindtags $itk_component($name)] end \
- toolbar-help-$itk_component(hull)]
- bindtags $itk_component($name) \
- [linsert [bindtags $itk_component($name)] end \
- toolbar-balloon-$itk_component(hull)]
-
- return $itk_component($name)
-}
-
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _deleteWidgets
-#
-# deletes widget range by numerical index numbers.
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_deleteWidgets { index1 index2 } {
-
- for { set index $index1 } { $index <= $index2 } { incr index } {
-
- # kill the widget
- set component [lindex $_toolList $index]
- destroy $component
-
- }
-
- # physically remove the page
- set _toolList [lreplace $_toolList $index1 $index2]
-
-}
-
-# -------------------------------------------------------------
-# PRIVATE METHOD: _index
-#
-# toolList : list of widget names to search thru if index
-# is non-numeric
-# index : either number, 'end', 'last', or pattern
-#
-# _index takes takes the value $index converts it to
-# a numeric identifier. If the value is not already
-# an integer it looks it up in the $toolList array.
-# If it fails it returns -1
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_index { toolList index } {
-
- switch -- $index {
- end - last {
- set number [expr [llength $toolList] -1]
- }
- default {
- # is it a number already? Then just use the number
- if { [regexp {^[0-9]+$} $index] } {
- set number $index
- # check bounds
- if { $number < 0 || $number >= [llength $toolList] } {
- set number -1
- }
- # otherwise it is a widget name
- } else {
- if { [catch { set itk_component($index) } ] } {
- set number -1
- } else {
- set number [lsearch -exact $toolList \
- $itk_component($index)]
- }
- }
- }
- }
-
- return $number
-}
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# STATUS HELP for linking to helpVariable
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# -------------------------------------------------------------
-#
-# PUBLIC METHOD: hideHelp
-#
-# Bound to the <Leave> event on a toolbar widget. This clears the
-# status widget help area and resets the help entry.
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::hideHelp {} {
- if { $itk_option(-helpvariable) != {} } {
- upvar #0 $itk_option(-helpvariable) helpvar
- set helpvar {}
- }
- set _currHelpWidget {}
-}
-
-# -------------------------------------------------------------
-#
-# PUBLIC METHOD: showHelp
-#
-# Bound to the <Motion> event on a tool bar widget. This puts the
-# help string associated with the tool bar widget into the
-# status widget help area. If no help exists for the current
-# entry, the status widget is cleared.
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::showHelp { window } {
-
- set widgetPath $window
- # already on this item?
- if { $window == $_currHelpWidget } {
- return
- }
-
- set _currHelpWidget $window
-
- # Do we have a helpvariable set on the toolbar?
- if { $itk_option(-helpvariable) != {} } {
- upvar #0 $itk_option(-helpvariable) helpvar
-
- # is the -helpstr set for this widget?
- set args "-helpstr"
- if {[_getAttachedOption _opts \
- $window args value]} {
- set helpvar $value.
- } else {
- set helpvar {}
- }
- }
-}
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# BALLOON HELP for show/hide of hint window
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# -------------------------------------------------------------
-#
-# PUBLIC METHOD: showBalloon
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::showBalloon {window} {
- set _balloonClick false
- set _balloonAfterID 0
- # Are we still inside the window?
- set mouseWindow \
- [winfo containing [winfo pointerx .] [winfo pointery .]]
-
- if { [string match $window* $mouseWindow] } {
- # set up the balloonString
- set args "-balloonstr"
- if {[_getAttachedOption _opts \
- $window args hintStr]} {
- # configure the balloon help
- $_hintWindow.label configure -text $hintStr
-
- # Coordinates of the balloon
- set balloonLeft \
- [expr [winfo rootx $window] + round(([winfo width $window]/2.0))]
- set balloonTop \
- [expr [winfo rooty $window] + [winfo height $window]]
-
- # put up balloon window
- wm overrideredirect $_hintWindow 0
- wm geometry $_hintWindow "+$balloonLeft+$balloonTop"
- wm overrideredirect $_hintWindow 1
- wm deiconify $_hintWindow
- raise $_hintWindow
- } else {
- #NO BALLOON HELP AVAILABLE
- }
- } else {
- #NOT IN BUTTON
- }
-
-}
-
-# -------------------------------------------------------------
-#
-# PUBLIC METHOD: hideBalloon
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::hideBalloon {} {
- wm withdraw $_hintWindow
-}
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# OPTION MANAGEMENT for -helpstr, -balloonstr
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# -------------------------------------------------------------
-# PRIVATE METHOD: _getAttachedOption
-#
-# optionListName : the name of the array that holds all attached
-# options. It is indexed via widget,option to get
-# the value.
-# widget : the widget that the option is associated with
-# option : the option whose value we are looking for on
-# this widget.
-#
-# expects to be called only if the $option is length 1
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_getAttachedOption { optionListName widget args retValue} {
-
- # get a reference to the option, so we can change it.
- upvar $args argsRef
- upvar $retValue retValueRef
-
- set success false
-
- if { ![catch { set retValueRef \
- [eval set [subst [set optionListName]]($widget,$argsRef)]}]} {
-
- # remove the option argument
- set success true
- set argsRef ""
- }
-
- return $success
-}
-
-# -------------------------------------------------------------
-# PRIVATE METHOD: _setAttachedOption
-#
-# This method allows us to attach new options to a widget. It
-# catches the 'option' to be attached, strips it out of 'args'
-# attaches it to the 'widget' by stuffing the value into
-# 'optionList(widget,option)'
-#
-# optionListName: where to store the option and widget association
-# widget: is the widget we want to associate the attached option
-# option: is the attached option (unknown to this widget)
-# args: the arg list to search and remove the option from (if found)
-#
-# Modifies the args parameter.
-# Returns boolean indicating the success of the method
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_setAttachedOption {optionListName widget option args} {
-
- upvar args argsRef
-
- set success false
-
- # check for 'option' in the 'args' list for the 'widget'
- set optPos [eval lsearch $args $option]
-
- # ... found it
- if { $optPos != -1 } {
- # grab a copy of the option from arg list
- set [subst [set optionListName]]($widget,$option) \
- [eval lindex $args [expr $optPos + 1]]
-
- # remove the option argument and value from the arg list
- set argsRef [eval lreplace $args $optPos [expr $optPos + 1]]
- set success true
- }
- # ... if not found, will leave args alone
-
- return $success
-}
-
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# GEOMETRY MANAGEMENT for tool widgets
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-# -------------------------------------------------------------
-#
-# PRIVATE METHOD: _packToolbar
-#
-#
-#
-# -------------------------------------------------------------
-body iwidgets::Toolbar::_packToolbar {} {
-
- # forget the previous locations
- foreach tool $_toolList {
- pack forget $tool
- }
-
- # pack in order of _toolList.
- foreach tool $_toolList {
- # adjust for radios and checks to match buttons
- if { [winfo class $tool] == "Radiobutton" ||
- [winfo class $tool] == "Checkbutton" } {
- set iPad 1
- } else {
- set iPad 0
- }
-
- # pack by horizontal or vertical orientation
- if {$itk_option(-orient) == "horizontal" } {
- pack $tool -side left -fill y \
- -ipadx $iPad -ipady $iPad
- } else {
- pack $tool -side top -fill x \
- -ipadx $iPad -ipady $iPad
- }
- }
-}
diff --git a/itcl/iwidgets3.0.0/generic/unknownimage.gif b/itcl/iwidgets3.0.0/generic/unknownimage.gif
deleted file mode 100644
index d000bf70258..00000000000
--- a/itcl/iwidgets3.0.0/generic/unknownimage.gif
+++ /dev/null
Binary files differ
diff --git a/itcl/iwidgets3.0.0/generic/watch.itk b/itcl/iwidgets3.0.0/generic/watch.itk
deleted file mode 100755
index bfe662ea2b9..00000000000
--- a/itcl/iwidgets3.0.0/generic/watch.itk
+++ /dev/null
@@ -1,626 +0,0 @@
-#
-# Watch
-# ----------------------------------------------------------------------
-# Implements a a clock widget in a canvas.
-#
-# ----------------------------------------------------------------------
-# AUTHOR: John A. Tucker EMAIL: jatucker@spd.dsccc.com
-#
-# ======================================================================
-# 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.
-# ======================================================================
-
-#
-# Default resources.
-#
-option add *Watch.labelFont \
- -*-Courier-Medium-R-Normal--*-120-*-*-*-*-*-* widgetDefault
-
-#
-# Usual options.
-#
-itk::usual Watch {
- keep -background -cursor -labelfont -foreground
-}
-
-class iwidgets::Watch {
-
- inherit itk::Widget
-
- itk_option define -hourradius hourRadius Radius .50
- itk_option define -hourcolor hourColor Color red
-
- itk_option define -minuteradius minuteRadius Radius .80
- itk_option define -minutecolor minuteColor Color yellow
-
- itk_option define -pivotradius pivotRadius Radius .10
- itk_option define -pivotcolor pivotColor Color white
-
- itk_option define -secondradius secondRadius Radius .90
- itk_option define -secondcolor secondColor Color black
-
- itk_option define -clockcolor clockColor Color white
- itk_option define -clockstipple clockStipple ClockStipple {}
-
- itk_option define -state state State normal
- itk_option define -showampm showAmPm ShowAmPm true
-
- itk_option define -tickcolor tickColor Color black
-
- constructor {args} {}
- destructor {}
-
- #
- # Public methods
- #
- public {
- method get {{format "-string"}}
- method show {{time "now"}}
- method watch {args}
- }
-
- #
- # Private methods
- #
- private {
- method _handMotionCB {tag x y}
- method _drawHand {tag}
- method _handReleaseCB {tag x y}
- method _displayClock {{when "later"}}
-
- variable _interior
- variable _radius
- variable _theta
- variable _extent
- variable _reposition "" ;# non-null => _displayClock pending
- variable _timeVar
- variable _x0 1
- variable _y0 1
-
- common _ampmVar
- common PI [expr 2*asin(1.0)]
- }
-}
-
-#
-# Provide a lowercased access method for the Watch class.
-#
-proc ::iwidgets::watch {pathName args} {
- uplevel ::iwidgets::Watch $pathName $args
-}
-
-#
-# Use option database to override default resources of base classes.
-#
-option add *Watch.width 155 widgetDefault
-option add *Watch.height 175 widgetDefault
-
-# -----------------------------------------------------------------------------
-# CONSTRUCTOR
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::constructor { args } {
- #
- # Add back to the hull width and height options and make the
- # borderwidth zero since we don't need it.
- #
- set _interior $itk_interior
-
- itk_option add hull.width hull.height
- component hull configure -borderwidth 0
- grid propagate $itk_component(hull) no
-
- set _ampmVar($this) "AM"
- set _radius(outer) 1
-
- set _radius(hour) 1
- set _radius(minute) 1
- set _radius(second) 1
-
- set _theta(hour) 30
- set _theta(minute) 6
- set _theta(second) 6
-
- set _extent(hour) 14
- set _extent(minute) 14
- set _extent(second) 2
-
- set _timeVar(hour) 12
- set _timeVar(minute) 0
- set _timeVar(second) 0
-
- #
- # Create the frame in which the "AM" and "PM" radiobuttons will be drawn
- #
- itk_component add frame {
- frame $itk_interior.frame
- }
-
- #
- # Create the canvas in which the clock will be drawn
- #
- itk_component add canvas {
- canvas $itk_interior.canvas
- }
- bind $itk_component(canvas) <Map> +[code $this _displayClock]
- bind $itk_component(canvas) <Configure> +[code $this _displayClock]
-
- #
- # Create the "AM" and "PM" radiobuttons to be drawn in the canvas
- #
- itk_component add am {
- radiobutton $itk_component(frame).am \
- -text "AM" \
- -value "AM" \
- -variable [scope _ampmVar($this)]
- } {
- usual
- rename -font -labelfont labelFont Font
- }
-
- itk_component add pm {
- radiobutton $itk_component(frame).pm \
- -text "PM" \
- -value "PM" \
- -variable [scope _ampmVar($this)]
- } {
- usual
- rename -font -labelfont labelFont Font
- }
-
- #
- # Create the canvas item for displaying the main oval which encapsulates
- # the entire clock.
- #
- watch create oval 0 0 2 2 -width 5 -tags clock
-
- #
- # Create the canvas items for displaying the 60 ticks marks around the
- # inner perimeter of the watch.
- #
- set extent 3
- for {set i 0} {$i < 60} {incr i} {
- set start [expr $i*6-1]
- set tag [expr {[expr $i%5] == 0 ? "big" : "little"}]
- watch create arc 0 0 0 0 \
- -style arc \
- -extent $extent \
- -start $start \
- -tags "tick$i tick $tag"
- }
-
- #
- # Create the canvas items for displaying the hour, minute, and second hands
- # of the watch. Add bindings to allow the mouse to move and set the
- # clock hands.
- #
- watch create arc 1 1 1 1 -extent 30 -tags minute
- watch create arc 1 1 1 1 -extent 30 -tags hour
- watch create arc 1 1 1 1 -tags second
-
- #
- # Create the canvas item for displaying the center of the watch in which
- # the hour, minute, and second hands will pivot.
- #
- watch create oval 0 0 1 1 -width 5 -fill black -tags pivot
-
- #
- # Position the "AM/PM" button frame and watch canvas.
- #
- grid $itk_component(frame) -row 0 -column 0 -sticky new
- grid $itk_component(canvas) -row 1 -column 0 -sticky nsew
-
- grid rowconfigure $itk_interior 0 -weight 0
- grid rowconfigure $itk_interior 1 -weight 1
- grid columnconfigure $itk_interior 0 -weight 1
-
- eval itk_initialize $args
-}
-
-# -----------------------------------------------------------------------------
-# DESTURCTOR
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::destructor {} {
- if {$_reposition != ""} {
- after cancel $_reposition
- }
-}
-
-# -----------------------------------------------------------------------------
-# METHODS
-# -----------------------------------------------------------------------------
-
-# -----------------------------------------------------------------------------
-# METHOD: _handReleaseCB tag x y
-#
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::_handReleaseCB {tag x y} {
-
- set atanab [expr atan2(double($y-$_y0),double($x-$_x0))*(180/$PI)]
- set degrees [expr {$atanab > 0 ? [expr 360-$atanab] : abs($atanab)}]
- set ticks [expr round($degrees/$_theta($tag))]
- set _timeVar($tag) [expr ((450-$ticks*$_theta($tag))%360)/$_theta($tag)]
-
- if {$tag == "hour" && $_timeVar(hour) == 0} {
- set _timeVar($tag) 12
- }
-
- _drawHand $tag
-}
-
-# -----------------------------------------------------------------------------
-# PROTECTED METHOD: _handMotionCB tag x y
-#
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::_handMotionCB {tag x y} {
- if {$x == $_x0 || $y == $_y0} {
- return
- }
-
- set a [expr $y-$_y0]
- set b [expr $x-$_x0]
- set c [expr hypot($a,$b)]
-
- set atanab [expr atan2(double($a),double($b))*(180/$PI)]
- set degrees [expr {$atanab > 0 ? [expr 360-$atanab] : abs($atanab)}]
-
- set x2 [expr $_x0+$_radius($tag)*($b/double($c))]
- set y2 [expr $_y0+$_radius($tag)*($a/double($c))]
- watch coords $tag \
- [expr $x2-$_radius($tag)] \
- [expr $y2-$_radius($tag)] \
- [expr $x2+$_radius($tag)] \
- [expr $y2+$_radius($tag)]
- set start [expr $degrees-180-($_extent($tag)/2)]
- watch itemconfigure $tag -start $start -extent $_extent($tag)
-}
-
-# -----------------------------------------------------------------------------
-# PROTECTED METHOD: get ?format?
-#
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::get {{format "-string"}} {
- set timestr [format "%02d:%02d:%02d %s" \
- $_timeVar(hour) $_timeVar(minute) \
- $_timeVar(second) $_ampmVar($this)]
-
- switch -- $format {
- "-string" {
- return $timestr
- }
- "-clicks" {
- return [clock scan $timestr]
- }
- default {
- error "bad format option \"$format\":\
- should be -string or -clicks"
- }
- }
-}
-
-# -----------------------------------------------------------------------------
-# METHOD: watch ?args?
-#
-# Evaluates the specified args against the canvas component.
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::watch {args} {
- return [eval $itk_component(canvas) $args]
-}
-
-# -----------------------------------------------------------------------------
-# METHOD: _drawHand tag
-#
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::_drawHand {tag} {
-
- set degrees [expr abs(450-($_timeVar($tag)*$_theta($tag)))%360]
- set radians [expr $degrees*($PI/180)]
- set x [expr $_x0+$_radius($tag)*cos($radians)]
- set y [expr $_y0+$_radius($tag)*sin($radians)*(-1)]
- watch coords $tag \
- [expr $x-$_radius($tag)] \
- [expr $y-$_radius($tag)] \
- [expr $x+$_radius($tag)] \
- [expr $y+$_radius($tag)]
- set start [expr $degrees-180-($_extent($tag)/2)]
- watch itemconfigure $tag -start $start
-}
-
-# ------------------------------------------------------------------
-# PUBLIC METHOD: show time
-#
-# Changes the currently displayed time to be that of the time
-# argument. The time may be specified either as a string or an
-# integer clock value. Reference the clock command for more
-# information on obtaining times and their formats.
-# ------------------------------------------------------------------
-body iwidgets::Watch::show {{time "now"}} {
- if {$time == "now"} {
- set seconds [clock seconds]
- } elseif {![catch {clock format $time}]} {
- set seconds $time
- } elseif {[catch {set seconds [clock scan $time]}]} {
- error "bad time: \"$time\", must be a valid time\
- string, clock clicks value or the keyword now"
- }
-
- set timestring [clock format $seconds -format "%I %M %S %p"]
- set _timeVar(hour) [expr int(1[lindex $timestring 0] - 100)]
- set _timeVar(minute) [expr int(1[lindex $timestring 1] - 100)]
- set _timeVar(second) [expr int(1[lindex $timestring 2] - 100)]
- set _ampmVar($this) [lindex $timestring 3]
-
- _drawHand hour
- _drawHand minute
- _drawHand second
-}
-
-# -----------------------------------------------------------------------------
-# PROTECTED METHOD: _displayClock ?when?
-#
-# Places the hour, minute, and second dials in the canvas. If "when" is "now",
-# the change is applied immediately. If it is "later" or it is not specified,
-# then the change is applied later, when the application is idle.
-# -----------------------------------------------------------------------------
-body iwidgets::Watch::_displayClock {{when "later"}} {
-
- if {$when == "later"} {
- if {$_reposition == ""} {
- set _reposition [after idle [code $this _displayClock now]]
- }
- return
- }
-
- #
- # Compute the center coordinates for the clock based on the
- # with and height of the canvas.
- #
- set width [winfo width $itk_component(canvas)]
- set height [winfo height $itk_component(canvas)]
- set _x0 [expr $width/2]
- set _y0 [expr $height/2]
-
- #
- # Set the radius of the watch, pivot, hour, minute and second items.
- #
- set _radius(outer) [expr {$_x0 < $_y0 ? $_x0 : $_y0}]
- set _radius(pivot) [expr $itk_option(-pivotradius)*$_radius(outer)]
- set _radius(hour) [expr $itk_option(-hourradius)*$_radius(outer)]
- set _radius(minute) [expr $itk_option(-minuteradius)*$_radius(outer)]
- set _radius(second) [expr $itk_option(-secondradius)*$_radius(outer)]
- set outerWidth [watch itemcget clock -width]
-
- #
- # Set the coordinates of the clock item
- #
- set x1Outer $outerWidth
- set y1Outer $outerWidth
- set x2Outer [expr $width-$outerWidth]
- set y2Outer [expr $height-$outerWidth]
- watch coords clock $x1Outer $y1Outer $x2Outer $y2Outer
-
- #
- # Set the coordinates of the tick items
- #
- set offset [expr $outerWidth*2]
- set x1Tick [expr $x1Outer+$offset]
- set y1Tick [expr $y1Outer+$offset]
- set x2Tick [expr $x2Outer-$offset]
- set y2Tick [expr $y2Outer-$offset]
- for {set i 0} {$i < 60} {incr i} {
- watch coords tick$i $x1Tick $y1Tick $x2Tick $y2Tick
- }
- set maxTickWidth [expr $_radius(outer)-$_radius(second)+1]
- set minTickWidth [expr round($maxTickWidth/2)]
- watch itemconfigure big -width $maxTickWidth
- watch itemconfigure little -width [expr round($maxTickWidth/2)]
-
- #
- # Set the coordinates of the pivot item
- #
- set x1Center [expr $_x0-$_radius(pivot)]
- set y1Center [expr $_y0-$_radius(pivot)]
- set x2Center [expr $_x0+$_radius(pivot)]
- set y2Center [expr $_y0+$_radius(pivot)]
- watch coords pivot $x1Center $y1Center $x2Center $y2Center
-
- #
- # Set the coordinates of the hour, minute, and second dial items
- #
- watch itemconfigure hour -extent $_extent(hour)
- _drawHand hour
-
- watch itemconfigure minute -extent $_extent(minute)
- _drawHand minute
-
- watch itemconfigure second -extent $_extent(second)
- _drawHand second
-
- set _reposition ""
-}
-
-# -----------------------------------------------------------------------------
-# OPTIONS
-# -----------------------------------------------------------------------------
-
-# ------------------------------------------------------------------
-# OPTION: state
-#
-# Configure the editable state of the widget. Valid values are
-# normal and disabled. In a disabled state, the hands of the
-# watch are not selectabled.
-# ------------------------------------------------------------------
-configbody ::iwidgets::Watch::state {
- if {$itk_option(-state) == "normal"} {
- watch bind minute <B1-Motion> \
- [code $this _handMotionCB minute %x %y]
- watch bind minute <ButtonRelease-1> \
- [code $this _handReleaseCB minute %x %y]
-
- watch bind hour <B1-Motion> \
- [code $this _handMotionCB hour %x %y]
- watch bind hour <ButtonRelease-1> \
- [code $this _handReleaseCB hour %x %y]
-
- watch bind second <B1-Motion> \
- [code $this _handMotionCB second %x %y]
- watch bind second <ButtonRelease-1> \
- [code $this _handReleaseCB second %x %y]
-
- $itk_component(am) configure -state normal
- $itk_component(pm) configure -state normal
-
- } elseif {$itk_option(-state) == "disabled"} {
- watch bind minute <B1-Motion> {}
- watch bind minute <ButtonRelease-1> {}
-
- watch bind hour <B1-Motion> {}
- watch bind hour <ButtonRelease-1> {}
-
- watch bind second <B1-Motion> {}
- watch bind second <ButtonRelease-1> {}
-
- $itk_component(am) configure -state disabled \
- -disabledforeground [$itk_component(am) cget -background]
- $itk_component(pm) configure -state normal \
- -disabledforeground [$itk_component(am) cget -background]
-
- } else {
- error "bad state option \"$itk_option(-state)\":\
- should be normal or disabled"
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: showampm
-#
-# Configure the display of the AM/PM radio buttons.
-# ------------------------------------------------------------------
-configbody ::iwidgets::Watch::showampm {
- switch -- $itk_option(-showampm) {
- 0 - no - false - off {
- pack forget $itk_component(am)
- pack forget $itk_component(pm)
- }
-
- 1 - yes - true - on {
- pack $itk_component(am) -side left -fill both -expand 1
- pack $itk_component(pm) -side right -fill both -expand 1
- }
-
- default {
- error "bad showampm option \"$itk_option(-showampm)\":\
- should be boolean"
- }
- }
-}
-
-# ------------------------------------------------------------------
-# OPTION: pivotcolor
-#
-# Configure the color of the clock pivot.
-#
-configbody ::iwidgets::Watch::pivotcolor {
- watch itemconfigure pivot -fill $itk_option(-pivotcolor)
-}
-
-# ------------------------------------------------------------------
-# OPTION: clockstipple
-#
-# Configure the stipple pattern for the clock fill color.
-#
-configbody ::iwidgets::Watch::clockstipple {
- watch itemconfigure clock -stipple $itk_option(-clockstipple)
-}
-
-# ------------------------------------------------------------------
-# OPTION: clockcolor
-#
-# Configure the color of the clock.
-#
-configbody ::iwidgets::Watch::clockcolor {
- watch itemconfigure clock -fill $itk_option(-clockcolor)
-}
-
-# ------------------------------------------------------------------
-# OPTION: hourcolor
-#
-# Configure the color of the hour hand.
-#
-configbody ::iwidgets::Watch::hourcolor {
- watch itemconfigure hour -fill $itk_option(-hourcolor)
-}
-
-# ------------------------------------------------------------------
-# OPTION: minutecolor
-#
-# Configure the color of the minute hand.
-#
-configbody ::iwidgets::Watch::minutecolor {
- watch itemconfigure minute -fill $itk_option(-minutecolor)
-}
-
-# ------------------------------------------------------------------
-# OPTION: secondcolor
-#
-# Configure the color of the second hand.
-#
-configbody ::iwidgets::Watch::secondcolor {
- watch itemconfigure second -fill $itk_option(-secondcolor)
-}
-
-# ------------------------------------------------------------------
-# OPTION: tickcolor
-#
-# Configure the color of the ticks.
-#
-configbody ::iwidgets::Watch::tickcolor {
- watch itemconfigure tick -outline $itk_option(-tickcolor)
-}
-
-# ------------------------------------------------------------------
-# OPTION: hourradius
-#
-# Configure the radius of the hour hand.
-#
-configbody ::iwidgets::Watch::hourradius {
- _displayClock
-}
-
-# ------------------------------------------------------------------
-# OPTION: minuteradius
-#
-# Configure the radius of the minute hand.
-#
-configbody ::iwidgets::Watch::minuteradius {
- _displayClock
-}
-
-# ------------------------------------------------------------------
-# OPTION: secondradius
-#
-# Configure the radius of the second hand.
-#
-configbody ::iwidgets::Watch::secondradius {
- _displayClock
-}
-