[incr Widgets] CHANGE LOG

==========================================================================
 -------------------------- 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.


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.  

