[incr Widgets] CHANGE LOG

==========================================================================
 -------------------------- iwidgets-3.0.0 ------------------------------
 -------------------- CHANGES FROM iwidgets-2.2.0 -----------------------
==========================================================================

  [incr Widgets] version 3.0.0 is compatable with itcl3.0

  [incr Widgets] has undergone a major overhaul between the last version 
and 3.0.0.  Since so many changes have taken place it made more since to 
list them by widget class name rather than the old style of new features
and bug fixes.  The majority of the changes are under the covers and will
have minimal impact of existing scripts, but there are a few that may 
bite you.  To locate possible incompatabilities, just search this file
for the key words "POSSIBLE INCOMPATIBILITY".  

  In addition, quite a few new widgets have been added to the set.  They 
include the following:

	Calendar
	Checkbox
	Dateentry
	Datefield
        Disjointlistbox
	Extfileselectionbox
	Extfileselectiondialog
	Finddialog
	Hierarchy
	Labeledframe
	Mainwindow
	Messagebox		
	Scrolledwidget
	Timeentry
	Timefield
	Watch

  Thanx to the following contributors who have been kind enough to help 
me support this effort through enhancements, bug fixes, and new widgets.

	John Tucker		jatucker@austin.dsccc.com
	Mitch Gorman		emrys@net-gate.com
	John Reekie 		johnr@EECS.Berkeley.EDU
	Alfredo Jahn		ajahn@spd.dsccc.com
	Michael McLennan	mmclennan@lucent.com
	

Labeledwidget
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Changed component option basis to be that of the "usuals".

>> Removed a redundant frame component named "shell" just below the hull.

>> Corrected labelvariable bug.  Setting the labelvariable had no effect.
   The code has been corrected such that a trace is installed on the variable
   which forces an update of the label text upon writes to the variable.

>> Removed the labmargin frame component used for implementing a margin.
   This is now accomplished via the grid by maintaining an empty row/column
   for the margin and adjusting its minsize.

>> POSSIBLE INCOMPATIBILITY - The childsite is now a protected component.
   If you need access to it, use the childsite command.

>> Added new label position orientation settings.  The current label 
   positions are nw, n, ne, sw, s, se, en, e, es, wn, w, and ws.

>> Updated the test script and man page.


Scrolledlistbox
______________________________________________________________________________

>> Derived from the Scrolledwidget class which provides the vertical
   and horizontal scrollbars along with the options to control their
   display.

>> Reimplemented geometry management using the grid instead of the packer.

>> Changed component option basis to be that of the "usuals".

>> Added a -state option that allows you to disable the listbox.  Selection
   is blocked.  The foreground of the scrolledlistbox label is changed 
   to disbabledforeground.

>> Fixed the infinite looping problem which would occur with -hscrollmode 
   set to dynamic and a really long line added just out of the view port.  
   As you'd scroll down the horizontal scrollbar bar would start flashing 
   on and off.  

>> Removed the margin frame components used for implementing a margin
   between the listbox and scrollbars.  This is now accomplished via 
   the grid by maintaining an empty row/column for the margin and 
   adjusting its minsize.

>> POSSIBLE INCOMPATIBILITY - Removed -items option.  This was originally
   put in as a convienence, but it turns out to be quite costly in terms
   of performance.  It had to go.  The insert/delete/get commands can be
   used instead which is much more in line with Tk.

>> Updated the test script, demo, and man page.


Entryfield
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Modified the real type validation to except exponents.  Patch provided
   by evans@engineous.com (Rick Evans).

>> The -state option changes the label to disabledforeground when the
   entryfield is disabled.

>> Changed component option basis to be that of the "usuals".

>> Added a -pasting configuration option to allow user to enable/disable
   pasting into the entry component of the entryfield. csmith@adc.com
   (Chad Smith)

>> Removed hardcoded state comparisons in the _keyPress method and replaced
   with code to mask out <Ctrl> and <Alt> keypress events. csmith@adc.com
   (Chad Smith)


Pushbutton
______________________________________________________________________________

>> Changed component option basis to be that of the "usuals".

>> POSSIBLE INCOMPATABILITY - The pushButton component has been changed
   to pushbutton.

>> POSSIBLE INCOMPATABILITY - The following options have been removed 
   and are not directly available in the pushbutton anymore:
	-anchor -justify -textvariable

   The underlying button component still maintains them , but not the 
   pushbutton itself.  You can still set them via the component
   command, i.e. ".pb component pushButton configure -justify left"


Buttonbox
______________________________________________________________________________

>> Changed component option basis to be that of the "usuals".


Shell
______________________________________________________________________________

>> Changed component option basis to be that of the "usuals".

>> Added a -width and -height option.  A value of zero causes the width 
   and/or height to be adjusted to the required value based on the size 
   requests of the components placed in the childsite.  Otherwise, the 
   width and/or height is fixed.  The default is zero.

>> Added -width and -height tests to the test script and updated the
   man page.

>> The activate method no longer returns an error if it is called when
   the shell is already active.  Instead, the shell is just raised.  


Dialogshell
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Changed component option basis to be that of the "usuals".

>> Updated the test script and man page, adding the -width and -height
   options that are inherited from the shell.


Dialog
______________________________________________________________________________

>> Updated the test script and man page, adding the -width and -height
   options that are inherited from the shell.


Selectionbox
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Changed component option basis to be that of the "usuals".

>> Modified the insert and delete methods to use the items insert and
   delete method rather than configuring the -items option which has
   been removed from the underlying scrolledlistbox.
   
>> Removed the margin frame component used for implementing a margin
   between the items and selection.  This is now accomplished via 
   the grid by maintaining an empty row for the margin and adjusting 
   its minsize.

>> Removed the unecessary frame that was used to contrain the width
   and height of the widget.  This is now performed directly on the 
   widget hull.

>> POSSIBLE INCOMPATABILITY - The following options have been removed 
   and are not directly available in the selectionbox anymore:
	-hscrollmode -itemslabelpos -labelmargin -margin -relief 
	-sbwidth -scrollmargin -selectionlabelpos -vscrollmode 

   The underlying components still maintain them, but not the 
   selectionbox itself.  You can still set them via the component
   command, i.e. ".sb component selection configure -labelpos nw" or
   ".sb component items configure -hscrollmode static"

>> Added a -width and -height option.  A value of zero causes the width 
   and/or height to be adjusted to the required value based on the size 
   requests of the components placed in the childsite.  Otherwise, the 
   width and/or height is fixed.  The default is zero.

>> Updated the test script, demo, and man page.


Selectiondialog
______________________________________________________________________________

>> Pack propagation is now handled by the shell class.

>> Modified the insert and delete methods to use the insert and
   delete method rather than configuring the -items option which has
   been removed from the underlying scrolledlistbox.

>> Changed component option basis to be that of the "usuals".

>> POSSIBLE INCOMPATABILITY - The "sb" component has been renamed to be
   "selectionbox".  This is much more descriptive.

>> POSSIBLE INCOMPATABILITY - The following options have been removed 
   and are not directly available in the selectiondialog anymore:
	-hscrollmode -itemslabelpos -labelmargin -margin -relief 
	-sbwidth -scrollmargin -selectionlabelpos -vscrollmode 

   The underlying components still maintain them, but not the 
   selectiondialog itself.  You can still set them via the component
   command, i.e. ".sd component selectionbox configure -margin 10" or
   ".sd component selectionbox component items configure -hscrollmode static"

>> The -width and -height options are now controlled by the shell class.  
   A value of zero causes the width and/or height to be adjusted to the 
   required value based on the size requests of the components.  Otherwise, 
   the width and/or height is fixed.  The default is zero.


Scrolledtext
______________________________________________________________________________

>> Derived from the Scrolledwidget class which provides the vertical
   and horizontal scrollbars along with the options to control their
   display.

>> Reimplemented geometry management using the grid instead of the packer,
   eliminating quite a few unneeded frames along the way.

>> Changed component option basis to be that of the "usuals".

>> Removed the margin frame components used for implementing a margin
   between the text and scrollbars.  This is now accomplished via 
   the grid by maintaining an empty row/column for the margin and 
   adjusting its minsize.

>> The -state option changes the label to disabledforeground when the
   scrolledtext is disabled.

>> Fixed the infinite looping problem which would occur with -wrap set
   to none, -hscrollmode set to dynamic and a really long line added
   just out of the view port.  As you'd scroll down the horizontal 
   scrollbar bar would start flashing on and off.  

>> Added an index argument to the import method so a file can be
   imported into the text area at positions other than just the end.

>> Updated the test script and man page.


Feedback
______________________________________________________________________________

>> Corrected namspace problem by removing global scope qualifier from
   class definition as well as method and option bodies.  Bug report
   and patch provided by evans@engineous.com (Rick Evans).


Hyperhelp
______________________________________________________________________________

>> Corrected namspace problem by removing global scope qualifier from
   class definition as well as method and option bodies.  Bug report
   provided by evans@engineous.com (Rick Evans).


Scrolledhtml
______________________________________________________________________________

>> Corrected namspace problem by removing global scope qualifier from
   class definition as well as method and option bodies.  Bug report
   provided by evans@engineous.com (Rick Evans).


Canvasprintbox
______________________________________________________________________________

>> Added tcl_platform to list of global variables declared in print
   method.  Bug report provided by evans@engineous.com (Rick Evans).


Scrolledcanvas
______________________________________________________________________________

>> Derived from the Scrolledwidget class which provides the vertical
   and horizontal scrollbars along with the options to control their
   display.

>> POSSIBLE INCOMPATIBILITY - The ScrCanvas component has been renamed
   canvas.

>> The -state option changes the label to disabledforeground when the
   scrolledcanvas is disabled.

>> Reimplemented geometry management using the grid instead of the packer.

>> Changed component option basis to be that of the "usuals".

>> Removed the margin frame components used for implementing a margin
   between the canvas and scrollbars.  This is now accomplished via 
   the grid by maintaining an empty row/column for the margin and 
   adjusting its minsize.

>> Updated the test script, demo, and man page.


Scrolledframe
______________________________________________________________________________

>> Derived from the Scrolledwidget class which provides the vertical
   and horizontal scrollbars along with the options to control their
   display.

>> POSSIBLE INCOMPATIBILITY - The childsite is now a protected component.
   If you need access to it, use the childsite command.

>> POSSIBLE INCOMPATIBILITY - The scrCanvas component has been renamed
   canvas and the scrFrame component to sfchildsite.

>> Reimplemented geometry management using the grid instead of the packer.

>> Changed component option basis to be that of the "usuals".

>> Fixed the infinite looping problem which would occur with -hscrollmode 
   set to dynamic and a really long component added just out of the view 
   port.  As you'd scroll down the horizontal scrollbar bar would start 
   flashing on and off.  

>> Removed the margin frame components used for implementing a margin
   between the canvas and scrollbars.  This is now accomplished via 
   the grid by maintaining an empty row/column for the margin and 
   adjusting its minsize.

>> Updated the test script, demo, and man page.


Promptdialog
______________________________________________________________________________

>> Changed component option basis to be that of the "usuals".

>> POSSIBLE INCOMPATABILITY - Renamed the "ef" component to "prompt".

>> POSSIBLE INCOMPATABILITY - The following options have been removed 
   and are not directly available in the promptdialog anymore:
	-fixed -justify -labelbitmap -labelimage -labelmargin 
	-state -textvariable -width

   The underlying components still maintain them, but not the 
   promptdialog itself.  You can still set them via the component
   command, i.e. ".pd component prompt configure -labelpos w" 

>> Updated the test script, demo, and man page.


Messagedialog
______________________________________________________________________________

>> Changed component option basis to be that of the "usuals".

>> POSSIBLE INCOMPATABILITY - Renamed the "msg" component to "message".

>> POSSIBLE INCOMPATABILITY - The following options have been removed 
   and are not directly available in the messagedialog anymore:
	-anchor -justify -wraplength

   The underlying components still maintain them, but not the 
   messagedialog itself.  You can still set them via the component
   command, i.e. ".md component message configure -justify left" 

>> Reimplemented geometry management using the grid instead of the packer.

>> Updated the test script, demo, and man page.


Hierarchy
______________________________________________________________________________

>> New iwidgets hierarchical data viewer mega-widget which 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.

>> Many thanks to Michael McLennan who provided the nucleus of this code.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the hierarchy demo.


Checkbox
______________________________________________________________________________

>> New iwidget checkbox mega-widget which manages a group of check
   buttons quite similar to that of the existing radiobox.

>> Thanks to John Tucker for the contributed code. 

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the checkbox demo.


Radiobox
______________________________________________________________________________

>> Changed component option basis to be that of the "usuals".

>> Changed the base class to be labeledframe.

>> Updated the test script, demo, and man page.


Spinner
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Removed a redundant frame component named "arrowFrame".

>> Removed the use of the option database to set the option values.


Spinint
______________________________________________________________________________

>> Removed the use of the option database to set the option values.


Datefield
______________________________________________________________________________

>> New iwidget.  The datefield is a smart date entry field with adjustable 
   built-in intelligence levels.  It can be made smart enough not to accept
   any bad dates or made dumb enough to accept any old thing typed.  Since
   it is derived from the labeledwidget, it also includes an optional label.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the datefield demo.


Calendar
______________________________________________________________________________

>> New iwidget.  The calendar widget provide for the selection and/or
   display of dates.  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.
   For example, the background of the weekdays and weekends can be 
   independently changed, the starting day of the week can be set to
   any of the days, the titles and fonts of everything is configurable,
   and an outline can be displayed around the each day. 

>> Many thanks to Michael McLennan who provided me a early copy of his
   book which gave me the example on which this code is based.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the calendar demo.


Dateentry
______________________________________________________________________________

>> New iwidget.  Dateentry is a quicken style date entry field with a 
   popup calendar produced 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.  Since it is based on both the datefield and calendar, both
   option sets exists under the same roof in the dateentry.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the dateentry demo.


Messagebox
______________________________________________________________________________

>> New iwidget.  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.  

   The number of lines that can be displayed may be limited.  When this 
   limit is reached, the oldest line is removed.  There is also support 
   for saving the contents to a file, using the standard file selection 
   dialog.

>> Many thanks to Alfredo Jahn who came up with idea and provided me a
   very stable working version which I extended to support user defined
   message types.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the messagebox demo.


Spintime
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Removed the margin frame component used for implementing a margin
   between the hour, minute and second components.  This is now accomplished 
   via the grid by maintaining an empty row for the margin and adjusting 
   its minsize.

>> POSSIBLE INCOMPATIBILITY - The delete, clear, and insert methods have
   been removed.  Use the show method to set the time.

>> POSSIBLE INCOMPATIBILITY - The get method has been changed such that
   it returns the time as either a colon separated string or a clock clicks
   value.

>> Added a show method to be used to set the time.  The method takes as
   an argument either a valid time string, a clock clicks value, or the
   keyword now.

>> The current time will now appear as the default.

>> Updated the test script, demo, and man page.


Spindate
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Removed the margin frame component used for implementing a margin
   between the month, day and year components.  This is now accomplished 
   via the grid by maintaining an empty row for the margin and adjusting 
   its minsize.

>> Spindate now uses the clock command during the spinning of the date
   components.  Only valid dates are spun now.

>> POSSIBLE INCOMPATIBILITY - Changed the -monthformat option to be 
   string, brief, and full doing away with the optional user specified list.

>> POSSIBLE INCOMPATIBILITY - The delete, clear, and insert methods have
   been removed.  Use the show method to set the date.

>> POSSIBLE INCOMPATIBILITY - The get method has been changed such that
   it returns the date as either a string or a clock clicks value.

>> Added a show method to be used to set the time.  The method takes as
   an argument either a valid time string, a clock clicks value, or the
   keyword now.

>> The current date will now appear as the default.

>> Selection and keyboard entry of values has been disabled.  The value
   may only be changed via the spinners which insures correct operation.

>> Updated the test script, demo, and man page..


Feedback
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Made all the itk_components public.

>> Added a trough which appears beneath the feedback widget.  It has a
   -troughcolor option to set its color.


Scrolledhtml
______________________________________________________________________________

>> Added -alink (same as -linkhighlight, but matches html naming) and -update 
   options.

>> Added new tags to come up to html3.2:
     basefont
     div
     font
     table
     td
     th
     tr

>> Added numbering formats for <li> tag.

>> Fixed to delete images after page is cleared.

>> Fixed to bring anchor points to middle when moving down to a nearby 
   anchor point.

>> Fixes to regular expression matches.

>> Performance enhancements with stack algorithm and regular expression 
   searches.


Hyperhelp
______________________________________________________________________________

>> Added -closecmd and -maxhistory options.

>> Made itk_components public/private (which could conceivably break 
   someone, if they were using a component directly that is now private) 

>> Fixed bindings.


Toolbar
______________________________________________________________________________

>> Added a destructor to cancel the possibly pending after command request
   to display the popup help.

>> Corrected the vertical packing such that items are expanded horizontally.


Finddialog
______________________________________________________________________________

>> New iwidget.  Finddialog works in conjunction with a text or 
   scrolledtext widget to provide a means of performing search operations.  
   The user is prompted for a text pattern to be found in the text or 
   scrolledtext widget.  The search can be for all occurances, by regular 
   expression, considerate of the case, or backwards.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the finddialog demo.


Panedwindow
______________________________________________________________________________

>> Corrected show/hide bug which caused the placement of the sash and
   separator to be incorrect.  If you added a couple of panes and then
   hid them all of them followed by showing them, the sash distribution
   was wrong.

>> Corrected a divide by zero problem which occurred when you hid all
   of the panes.


Combobox
______________________________________________________________________________

>> Mitch Gorman (emrys@net-gate.com) has taken over maintenance of the 
   combobox from John Sigler.

>> Entry completion has been added.  Should your typing in the entry
   field match an item in the list, it is completed for you automatically.
   This feature is switchable via the -completion option.  The default
   is on.

>> It now utilizes a true button for the arrowBtn component.

>> The -state option has been fixed such that it can be truly disabled.

>> Reimplemented geometry management using the grid instead of the packer.

>> A -grab option has been added to do both local and global grabs 
   of the drop-down listbox.

>> POSSIBLE INCOMPATIBILITY - Removed -items option.  This was originally
   put in as a convienence, but it turns out to be quite costly in terms
   of performance.  It had to go.  The insert/delete/get commands can be
   used instead which is much more in line with Tk.

>> POSSIBLE INCOMPATIBILITY - The following options have been removed:
   -autoclear and -fliparrow.

>> The combobox now utilizes built-in bitmaps for button glyphs.

>> Removed the margin frame component used for implementing a margin
   between the entry and arrow button.  This is now accomplished via 
   the grid by maintaining an empty column for the margin and adjusting 
   its minsize.

>> List elements are preserved when switching between drop-down and simple
   styles via the -dropdown option.

>> The functionality of the -state and -editable options have been made
   completely independent of each other.  It can be editable/normal, 
   non-editable/normal, or disabled, and toggling one option will not 
   impact the other option when the first is toggled back

>> Corrected the validation processing in the -unique option.

>> Fixed various error messages returned due to bad arguments, options, etc.


Fileselectionbox
______________________________________________________________________________

>> Reimplemented geometry management using the grid instead of the packer.

>> Changed component option basis to be that of the "usuals".

>> Removed frame components used for margins.  This is now accomplished 
   via the grid by maintaining an empty row/column for the margin and 
   setting its minsize.

>> Changed the default value of -nomatchstring to "".

>> The directory and files lists are now shown without the leading
   directory name.  Although this differs from the Motif standard, it 
   keeps the fileselectionbox more in line with the tk_getSaveFile dialog.

>> POSSIBLE INCOMPATIBILITY - The -style option which allowed you to
   display the fileselectionbox in a "notif" style using comboboxes 
   for the filter and selection and kept the lists in a panedwindow 
   has been removed.  A related option, -dirsfraction is also gone.

   This feature caused the fileselectionbox to be much slower during
   construction than anticipated.  If you liked the "notif" style, it 
   exists in a new mega-widget call extfileselectionbox and 
   extfileselectiondialog.

>> POSSIBLE INCOMPATIBILITY - The childsite is now a protected component.
   If you need access to it, use the childsite command.

>> POSSIBLE INCOMPATABILITY - The following options have been removed 
   and are not directly available in the fileselectionbox anymore:

	-relief -repeatdelay -repeatinterval -labelmargin
	-hscrollmode -sbwidth -scrollmargin -vscrollmode
	-dirslabelpos -fileslabelpos -filterlabelpos
	-selectionimage- selectionlabelpos -filterfocuscommand
	-selectionfocuscommand -dbldirscommand -dblfilescommand

   The underlying components still maintain them , but not the 
   fileselectionbox itself.  You can still set them via the component
   command, i.e. ".fsb component dirs configure -hscrollmode none"

>> POSSIBLE INCOMPATIBILITY - The -horizmargin and -vertmargin options
   have been removed.  I doubt if anybody other than the most picky
   of people will be effected.

>> Added new childsite position orientation settings.  The new 
   positions are n, s, e, w, top, bottom, and center.

>> Updated the test script and man page.


Extfileselectionbox
______________________________________________________________________________

>> New Iwidget.  The extfileselectionbox is basically the "notif" portion 
   of the previous version of the fileselectionbox.  It was separated from
   the fileselectionbox for performance reasons.

>> Created test script, demo and man page.

>> The catalog demo has been updated to include the extfileselectionbox demo.


Tabset
______________________________________________________________________________
>> Corrected tab display problem which was occurring on HP machines.

   Some additional updates were installed in tab selection and deselection.
   They will only be invoke should the os be HP-UX.  Also, the ability
   to scroll the tabs via MB2 has been disabled for HPs.  Thanks to 
   tilt@designacc.com (Thomas Tempero) for first reporting the problem
   mikesz@pcs.mot.com (Michael Szilagyi) for sending me the fix which
   was implemented.


Timefield
______________________________________________________________________________

>> New iwidget.  The timefield is a smart time entry field.  It verifies
   user time input prior to its display.  Since it is derived from the 
   labeledwidget, it also includes an optional label.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the timefield demo.


Watch
______________________________________________________________________________

>> New iwidget.  The watch widget displays a simple clock face.  Methods
   exist to set/get the time.  The hands can be adjusted via mouse selection
   with the new setting being retrievable via the get method.  It is
   very configurable.  The colors of the hands, face, and marks can all
   be changed to suit your needs.

>> Many thanks to John Tucker who developed this nice widget.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the watch demo.


Timeentry
______________________________________________________________________________

>> New iwidget.  Timeentry, like the dateentry, is along the quicken 
   lines as well.  It displays a timefield with a watch icon  button
   beside it.  Selection of button presents a popup watch which enables
   you to select the time by dragging the hands about the face.  The 
   popup has a close button that removes the popup and sets the timefield
   to the value previously displayed in the watch.  You can also just
   enter the time directly as you would in the standard timefield.

>> Man page, test script, and demo have been produced.

>> The catalog demo has been updated to include the timeentry demo.


==========================================================================
 -------------------------- iwidgets-2.1.1 ------------------------------
 -------------------- CHANGES FROM iwidgets-2.1.0 -----------------------
==========================================================================

  [incr Widgets] version 2.1.1 is compatable with itcl2.1

NEW FEATURES
------------------------------------------------------------------------------
>> Added pagecget method to notebook class.

   Patch supplied by Tom Tromey (tromey@cygnus.com).

>> Added buttoncget method to buttonbox class.

   Patch supplied by Tom Tromey (tromey@cygnus.com).

>> Added buttoncget method to dialogshell class.

   Patch supplied by Tom Tromey (tromey@cygnus.com).

>> Added -closecmd option to the hyperhelp mega-widget.

   Previously, closing the hyperhelp widget deleted the object which was
   deemed to be user hostile.  Now, there exists a -closecmd option
   which defaults to just deactivating the widget.  Should you wish to
   destroy the widget, either do so explictly or modify the -closecmd
   to do it.


BUG FIXES
------------------------------------------------------------------------------
>> Corrected selectborderwidth option class name in the toolbar

   The class name was set to SelectBorderWidth rather than BorderWidth.  
   This created problems when attempting to use the toolbar with
   other widgets like the scrolledcanvas.  Bug report by csmith@adc.com 
   (Chad Smith).

>> Allow negative indexes in scrolledlistbox

   Negative indicies are reasonable and valid.  Bug report by 
   wfarel@cas.org (Bill Farel).

>> Corrected problem with caps-lock and num-lock in entryfields

   Validation was not being being done if the num-lock or caps-lock
   keys are down.  Bug report by ronnie@r2d2.wink.com (Ronnie Carpio).

>> Corrected problem with special character entry in entryfields

   Upon entry of a special character in the entry field like \ or [
   an error would be reported: "Error: missing "".  The substitutions
   being performed in iwidgets::Entryfield::_keyPress have been corrected.
   Bug report and patch provided by ronnie@r2d2.wink.com (Ronnie Carpio).

>> Made the relayout method in pushbutton protected.

   The relayout method in the pushbutton needed to be changed from private
   to protected so parent classes can have access.  Bug discovered by 
   Mario Weilguni <e8732250@student.tuwien.ac.at>

>> Corrected html tag parsing in scrolledhtml mega-widget

   Fixed regular expressions parsing html tags to ignore text in quotes 
   and only examine first attribute in list.

>> Corrected optionmenu insert bug

   The option menu would not allow you to insert an entry beyond the 
   current length of the popup menu.  It should just default to using
   the end in this case.

>> Corrected scrolledtext import method newline insertion problem

   There was a bug in the scrolledtext widget.  It always inserted a
   newline before the text of the file when doing an "import".  And it
   didn't correctly preserve a trailing newline on the file.  Reported
   by Tom Tromey (tromey@cygnus.com)

>> Corrected minor problems in notebook class.

   The index method gave an error if (eg) "select" wass passed but
   there is no selection.  Instead it should return -1 as documented.
   Changed it to always return -1 in case of error.  This makes more
   sense.
 
   If there are no items in the notebook, the -scrollcommand should 
   still be run (if it is set).  Otherwise, you end up with a
   scrollbar that looks odd, and when you try to scroll you get
   errors.  Changed it so that it will tell the scrollbar that
   the entire notebook is being displayed.  Reported by Tom Tromey 
   (tromey@cygnus.com)

>> Corrected menubar menucget command to return errors for bad options.

   The command "<menubar> menucget .element" returned something other
   than an error message.  This has been corrected.  Reported by Tom 
   Tromey (tromey@cygnus.com)

>> Corrected menubar man page.

   The usage for the menubar menucget command was wrong and has been 
   fixed.  Reported by Tom Tromey (tromey@cygnus.com)


INCOMPATIBLE CHANGES
------------------------------------------------------------------------------


==========================================================================
 -------------------------- iwidgets-2.1.0 ------------------------------
 -------------------- CHANGES FROM iwidgets-2.0.1 -----------------------
==========================================================================

  [incr Widgets] version 2.1.0 is compatable with itcl2.1

NEW FEATURES
------------------------------------------------------------------------------
>> Eliminated unneeded update idletask calls.

   Went through many of the [incr Widgets] and got rid of those update
   idletask calls that were not really needed.  This should speed a few
   of them up a bit.

>> The hyperhelp mega-widget has been enhanced such that topic items
   don't need to be in the help directory.  

   It's just an added option in specifying topics.  To use it, you would 
   replace '-topics {topic1 topic2 topic3}' with 
   '-topics {topic1 {topicname2 filename2} {topic3 filename3}}'.  In other 
   words, you only have to change where you want to specify a pathname. If 
   you don't specify a filename, everything works the same.

>> Added a -autoclear option to the combobox.

   The combobox was doing an automatic erasure of the entry field contents
   upon hitting return.  With this option, you can turn that off but it
   still puts the string in the list.

>> Added a -master option to the shell class.

   The shell made all instances transient with "." as the master.  With
   this option, you can change the master to other toplevels.  The default
   is no master for shells, and "." for all dialogs which are derived from
   shell.

>> Added a -style option to the fileselectionbox and fileselection dialog.

   Tony Parent did a great job of augmenting the fileselectionbox with
   a style option that allows you to change the layout from the standard
   motif look-and-feel to a better than motif layout.  This new layout
   is called notif and features comboboxes for the filter and selection
   entry fields and a paned window contains the two listboxes allowing
   you to change the allocation of space for the lists.

>> Removed the center childsite position for the fileselectionbox.

   This is a side effect of the notif change made by Tony Parent.  It
   just isn't easy to have a center position when your in a pane window.
   It is a small sacrifice for the having an alternate layout of the
   fileselectionbox.


BUG FIXES
------------------------------------------------------------------------------
>> The makefile was amended to install the unknown.gif file correctly.

   The hyperhelp and scrolledhtml widgets need an unknown gif file that
   is used when unable to load an image.  The makefile was not properly
   installing it.

>> The scrolledhtml.n man page was fixed to allow man2html to work.

   The scrolledhtml.n file had a bug which would hang man2html during a
   "make install-html".  The bug affected only the htmling of the file
   not the man page itself.


INCOMPATIBLE CHANGES
------------------------------------------------------------------------------


==========================================================================
 -------------------------- iwidgets-2.0.1 ------------------------------
 -------------------- CHANGES FROM iwidgets-2.0.0 -----------------------
==========================================================================

  [incr Widgets] version 2.0.1 is compatable with itcl2.0

NEW FEATURES
------------------------------------------------------------------------------
>> Added extra frame around canvas widget in Scrolledcanvas class

   The borderwidth, relief, and hightlight options have been removed from
   the canvas widget and placed on the new encompassing frame widget.  This
   fixes the problem with canvas widgets including the border and highlight
   ring in the clipping region.  

>> Added extra frame around text widget in Scrolledtext class

   The borderwidth, relief, and hightlight options have been removed from
   the text widget and placed on the new encompassing frame widget.  This
   fixes the problem with text widgets including the border and highlight
   ring in the clipping region.  

>> The canvasprintbox stamp supports resizing and default print buttons

   Tako Schotanus updated the canvasprintbox such that the stamp now gets
   updated whenever the window is resized.  Also, he modified the dialog
   default buttons to be Print, Apply and Cancel.  Apply does a refresh and
   Print does what you'd expect.

>> Added feedback mega-widget to [incr Widgets]

   The feedback widget is a gage for displaying process status.  Display 
   is given as a percentage and as a thermometer type bar. Options exist 
   for adding a label and controlling its position.

   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.

>> Added scrolledhtml mega-widget to [incr Widgets]

   The scrolledhtml widget implements a scrollable html text widget through
   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.

   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.

>> Added hyperhelp mega-widget to [incr Widgets]

   The hyperhelp widget implements a help facility using html formatted 
   hypertext files.

   Special thanks go to Sam Shen(SLShen@lbl.gov), as this code is based on his 
   help.tcl code from tk inspect.

>> Added menubar mega-widget to [incr Widgets]

   Actually it was kind-of already an iwidget.  It was living in the incoming
   directory for a time.  No one had a complaints about it so now it is
   a full citizen. 


BUG FIXES
------------------------------------------------------------------------------
>> Corrected spurious quote in toolbar.itk

   Thanks to Tom Tromey for finding this elusive little buglet and sending
   the patch.  Wish all problems were reported in this manner.

>> Corrected problem with dialogs being unable to acquire a grab.

   The dialogshell activate method would generate an error if unable to
   acquire a grab for application and global modal dialogs.  The fix 
   installed adds a catch and a reattempt loop with a delay.  In other
   words, the dialog shell will continuously attempt to acquire the grab
   with a delay between attempts.

>> Corrected problem with pushbutton not displaying the tab traversal ring.

   The pushbutton would not display the tab traversal ring when the default
   ring was enabled.  This has been corrected.

>> Corrected scrolledlistbox getcurselection method with multiple selectmode.

   If the current scrolledlistbox selectmode is multiple, then the 
   getcurselection method should always return the selected items as
   a list, regardless of the number of items selected.  It used to
   return a list only if more than one item is selected.

>> Buttonbox wasn't adjusting geometrically following hides if not mapped.

   Bernard Johnson from TI was good enough to find this one.  It could
   be seen by creating a dialog, activating, deactivating, then hiding
   a button.  Next, activate it again and you'd notice that the dialog's
   buttonbox had not been resized.  The problem was that the resizing
   of the buttonbox was bound to the map event, which once mapped, was
   removed when it shouldn't have been.  

>> Buttonbox wasn't adjusting properly following button additions which
   were preceeded by deletions.

   Greg McFarlane found this one.  The buttonbox needed to do perform
   and update idletasks following the sizing of the box during a deletion.
   Otherwise, the values returned by winfo were incorrect during a
   subsequent button addition.

>> Removed underlining of listbox items in the combobox.

   Milind Khandekar requested that this feature be removed.  It was 
   annoying.


INCOMPATIBLE CHANGES
------------------------------------------------------------------------------


==========================================================================
 -------------------------- iwidgets-2.0.0 ------------------------------
 -------------------- CHANGES FROM iwidgets-2.0b4 -----------------------
==========================================================================

  [incr Widgets] version 2.0.0 is compatable with itcl2.0

NEW FEATURES
------------------------------------------------------------------------------
>> The copyright has been assigned to DSC Communications Corporation.

   The copyright has been transferred from private individuals to DSC.
   It is still an open copyright, just changes in the legalize wording.

>> Added several new mega-widgets.

   The new mega-widgets include the toolbar, tabnotebook, tabset, and 
   notebook.  Check the man pages for details.

>> Added demo catalog.

   The demos directory now contains a catalog program.  It displays the 
   code for each demo upon single select.  Double-click starts the demo.

>> Added incoming directory for experimental mega-widgets.

   An incoming directory exists in the distribution which contains beta
   state mega-widgets.  They are not installed, but do include the needed
   doc, demos, and tests.  These mega-widgets may or may not make the cut.
   Please send feedback on their viability.  If enough positive response
   is felt, then they will be moved up.  Otherwise, I'll move them to an
   outgoing directory and later delete them altogether.

>> With the introduction of the new itcl-2.0b3 code command, the following
   changes were required.

   All "bind" and "after" commands now use "code".

   All "-command" options and scrollbar commands now use "code".

   Removed "uplevel /scope" combinations from command type options.

   Replaced "eval" with "uplevel #0" for evaluation of command options.

>> Added curselection method to selectionbox and selectiondialog class.

   The curselection command from the contained listbox of the selectionbox
   has been thinwrapped.  

>> Removed BLT dependency for implementing application modal dialogs.

   The dialogshell class no longer uses blt_busy for application modal
   dialogs.  Instead, local grabs are performed.  The benefits are speed
   and extension independence.  Minus is the loss of the watch cursor
   which blt_busy used.  I figure, programmers wanting the cursor action
   can implement it themselves on an as needed basis.

>> Added a grab stack in the dialogshell.

   The dialogshell uses a grabstack to keep track of the current blocking
   levels.  Thus a application modal dialog can activate another one and
   upon closing the last one, the next one in the stack gets the block.
   This feature did not exist before.

>> Replace "after 1" commands with "after idle"

   This produces the same result, but makes for a cleaner syntax.

>> Added center command to the dialogshell.

   The dialogshell provides a center command which takes an optional argument
   of the path for another widget.  Upon activation, the dialogshell will 
   be centered with respect to it.  The command may also be invoked with 
   no arguments to center the dialogshell on the screen as a whole.  Since 
   all other dialog classes are derived from dialogshell, all dialogs now 
   have the center command available.

>> Made the Help button hidden by default for dialogs

   Most people turn it off right away anyway.  It is still there.  Just need
   to do a "show Help" if you need it back.

>> Comboxbox now derived from entryfield.

   The combobox structure has been modified to be derived from the entryfield
   class.  Now combobox labels can be aligned using the labeledwidget 
   alignlabels method along with optionmenus, entryfields and such.

>> Added -justify and -wraplength to Messagedialog.

   The justify and wraplength options are now kept for the label in the
   messagedialog widget.

>> Added a man page generator for itcl.

   In the doc directory is a new utility called mkitclman.  It does a good
   job at an initial pass of man page generation for new iwidget classes.
   You still need to get in there and beef up the man page which is produced,
   but it is better than starting from scratch.

>> Added the canvasprintbox and canvasprintdialog mega-widgets.

   Two new mega-widgets, canvasprintbox and canvasprintdialog, have been
   contributed to [incr Widgets].  Thanks to Tako Schotanus, 
   Tako.Schotanus@bouw.tno.nl.
   
>> Added the textbackground option to the scrolledcanvas widget

   The textbackground option has been added to the scrolledcanvas widget
   similarly to the scrolledlistbox and entryfield widgets.


BUG FIXES
------------------------------------------------------------------------------
>> Enabled repeat action in spinners.

   This was available in iwidgets two versions ago.  I made in incorrect 
   merge and lost the change.  It has now been added back into the spinner.

>> Eliminated use of #auto in panedwindow.

   Using #auto made the test script fail should you run it two times in a
   row.  Instead, the class keeps its own unique counter which is always
   reset upon construction.  This was more of an annoyance than a bug.

>> Corrected selection problem in selectiondialog.

   The selectiondialog wasn't configuring the itemscommand properly, so
   selection of an item was not reflected in the selection entryfield.

>> Corrected index usage problem in buttonbox insert method.

   The buttonbox insert method didn't correctly convert the index argument
   prior to inserting the new pushbutton.  This has been fixed.

>> Corrected flicker problem in scrolled* widgets.

   Modified the scrolled* widgets to only change the current scrollbar
   display if different than the current setting.  This fixes the flicker 
   problem which was apparent during horizontal scrolling.  

>> Entryfield command option performs a break.

   Following evaluation of the command option for entryfield widgets, a
   break is performed.  This caused a problem when entryfields were in
   a dialog.  Hitting return in the entryfield, invoked the dialogs 
   default button.  This has been fixed.


INCOMPATIBLE CHANGES
------------------------------------------------------------------------------
>> Removed -highlightbackground option from mega-widgets

   All the -highlightbackground options have been renamed to be -background.
   This was always an annoyance anyway.  Now, setting the -background changes
   all the highlightbackgrounds as well.  Should anybody still for some odd
   reason need -highlightbackground, just access the component with the
   "component name configure" command.


==========================================================================
 -------------------------- iwidgets-2.0b0 ------------------------------
 -------------------- CHANGES FROM iwidgets-2.0b1 -----------------------
==========================================================================

  [incr Widgets] versions b1, b2, b3, and b4 are compatable with itcl-2.0b2

NEW FEATURES
------------------------------------------------------------------------------

>> A secondary lower case mega-widget command now exits.

   Mega-widgets can now be created using the new lower case, more tk'ish
   method or still using the class name.

   Entryfield .ef   and   entryfield .ef  

   both perform the same operation.

>> The demos should now all work.  

   The correct wish is now called.  itkwish instead of the old itcl_wish.

>> The man pages have all been updated to the best of my ability.

>> A new more minimal format for the code style has been implemented.  

   The class declaration only contains declarations.  All implementation is
   spearate.  This creates a much more readable class.

>> All class file names as well as the tests, doc, and demos are all lower
   case.

>> Several new validate types such as hexidecimal and real have been added
   to the Entryfield.
   
>> The Panedwindow class additional commands:

   A paneconfigure command exists for configuring indiviual tagged panes.

	panedwindow .pw
	.pw add first
	.pw add last
	.pw paneconfigure first -margin 10

   An insert command exists.  It takes an index and tag as arguments followed
   by optional arguments to be applied to the pane.

	.pw insert end second -minimum 20

>> The Buttonbox class now has additional commands:

   A buttonconfigure command exists for configuring indiviual tagged buttons.

	buttonbox .bb
	.bb add OK -text OK
	.bb add Cancel -text Cancel
	.bb buttonconfigure OK -command [list puts OK]

   An insert command has been added.  It takes an index as the first arg,
   followed by the tag and button arguments.

	.bb insert Cancel Apply -text Apply

   The invoke command no long excepts a list of buttons to invoke.  That 
   didn't make much sense.  It takes an optional index for a single button
   to invoke.  Without any arguments, the default button is invoked.

BUG FIXES
------------------------------------------------------------------------------

>> Corrected scrolled* packing

   The packing order of all the scrolled* mega-widgets has been modified
   such that the scrollbars are the last to be clipped.

>> Corrected buttonbox single button centering

   The buttonbox has been modified such that a box with only one button
   will be correctly centered.

>> scrolledlist selection corrected

   The -selectioncommand is now invoked following any selection of an item,
   regardless if it was already selected.  The programmer must now determine
   if the selected item has changed if necessary.  The previous approach of
   only invoking the -selectioncommand if the selection has changed caused
   too many problems, making it behave erraticly.

>> Corrected problems preventing classes being derived from scrolled* classes

   Several variables were incorrectly declared to be private rather than
   protected.  Also, the _scroll* method was incorrectly declared private
   instead of protected.  These problems prevented inheritance from the 
   scrolled* classes.


INCOMPATIBLE CHANGES
------------------------------------------------------------------------------

>> The class names are now upper case on the first character only.

   Class names have been changed to be upper case on the first character
   only to be more X'ish.  Old class names like EntryField are now Entryfield.

>> All public methods are now all lowercase.

   This effects the typical common method such as childsite.  Others effected
   include :

	::iwidgets::Labeledwidget::alignlabels

>> Labeledwidget class changes:

   The -labelon option has been removed.  The mega-widget now unpacks both
   the label and margin if neither the -labeltext, -labelbitmap, or 
   -labeimage have a value.

   The -font option has been removed.  The -labelfont option should be used
   instead.

>> Entryfield class changes:

   The -labelon option is not inherited by the Entryfield anymore.  See the
   Labeledwidget changes above.

   The Entryfield fixed option has a different meaning.  It now specified 
   the maximum number of characters allowed.  A value of zero is unlimited.
   This frees up the width option to be able to specify a greater number 
   of characters than the fixed amount for visual effect.

   The -type and -validate options have been combined to just -validate 
   which now takes either a type keyword or a command.  The command receives
   additional trailing arguments consisting of the input character and the
   the widget.  I hope to change this soon to use substitutions like %c
   for the character at a later date.

   The -background option has been removed.  The -textbackground option 
   should be used instead.

   The -validate option now has several substitution strings which may be
   passed to the validation script.

>> ScrollBar class changes:

   It has been deleted.  It wasn't a big win.  The only benefit was that the
   -background option automatically calculated the troughcolor at 80% of
   its value.  It's just as easy to use the option database and change the
   Tk scrollbar troughcolor to whatever value is desired.  The various
   scrolled* classes now all use the straight Tk scrollbar.

>> Panedwindow class changes:

   Panes are now tagged.  This means the add, and insert methods take an
   additional argument which is the tag for that pane.  

   The panedwindow index method now takes the tag as well as the number and
   keyword "end".  Other methods such as delete, hide, and show now can use
   the pane tag as an index.

	panedwindow .pw
	.pw add bottom
	.pw insert 0 top
	.pw insert 1 middle
	.pw delete middle

   The refresh method has been renamed to reset.

   The semi-private -state option has been removed.  The only method of 
   controlling the display of panes is via the hide and show methods.

>> Dialogshell class changes:

   The modality option value of "system" has been renamed to be "global"

>> Dialog class changes:

   All the options for the buttons have been removed.  The buttonconfigure
   method should be used instead.  The class simply creates the standard
   OK, Apply, Cancel, and Help buttons tagged by their default labels.
   The buttonconfigure method can be used to make modifications to the
   buttons.  The hide and show methods should now be used instead of the
   the -disp* options.

	dialog .d
	.d buttonconfigure OK -text Enter
	.d hide Help
	.d hide Apply

   The -orient option is no longer kept.  It seemed rarely used if at all.
   The -buttonboxpos option handles the mojority of the cases as is.

>> Scrolledcanvas class changes:

   The binditem method is now been renamed back to bind.  This is what it
   should have been all along.  A problem in the alpha version of [incr Tcl]
   prevented use of this word.  

