[incr Widgets] CHANGES ---------------------- ========================================================================== CURRENT VERSION: 4.0.1 PREVIOUS VERSION: 4.0.0 DATE: 9/16/02 CONTACT: Chad Smith (itclguy@attbi.com) This is primarily a bug-fix release of the [incr Widgets]. Please see the ChangeLog for a detailed explanation of the changes made to the various widgets and the SourceForge tickets to which each change is associated. Check out the incoming/demos directory. I've added a couple new widgets that were submitted to SourceForge. Let me know if you think they are useful or not. If so, they can be added to the distribution in a future release. Many thanks to Marty Backe for his tireless efforts closing out numerous SF tickets for this release! ========================================================================== ========================================================================== -------------------------- iwidgets-4.0.0 ------------------------------ -------------------- CHANGES FROM iwidgets-3.1.0 ----------------------- ========================================================================== DATE: 8/07/01 CONTACT: Chad Smith (itclguy@yahoo.com) -------- CHANGES: -------- This release of the [incr Widgets] marks the first time they are released independently of the [incr Tcl] distribution. The Iwidgets package is now separate from Itcl and can be optionally downloaded and built as a true extension to Itcl (well actually Itk). Along with the Makefile/configuration-type changes necessary for removing the Iwidgets from Itcl, there are many other changes you should note in this release. I'll try to list each of these: o - The most important change is that doing a 'package require Iwidgets' no longer pulls the itcl namespace commands into the global namespace. Previously, this was done because none of the itcl-specific commands such as class, configbody, etc. were properly resolved in the [incr Widgets] classes. Now, all references to itcl commands use proper namespace resolution. For example, "class iwidgets::Checkbox" is now replaced with "itcl::class iwidgets::Checkbox". Here is a list of itcl commands that are now properly scoped: class body configbody scope code There are likely many folks in the community that have come to rely on the exporting of itcl commands into the global namespace, so if you're one of these folks you have two choices if you want to use this version of the [incr Widgets]: (1) You can add a "namespace import -force itcl::*" at the beginning of your application (this is what 'package require Iwidgets' used to do); or (2) you can add "itcl::" in front of each of the itcl-specific commands in your code. o - A new mega-widget, extbutton, was added to the distribution. Note that this new widget will only work with Tk 8.4 or later. A man page and test case is available in the distribution. o - "readonly" was added as a new value for the combobox's -state option. o - A new option, -gmt, was added to the datefield. It accepts boolean values. o - A new option, -state, was added to the radiobox. o - A new method, bbox, was added to tabset to return the bounding box that will completely enclose all tabs. o - A new option, -automount, was added to extfileselectionbox and fileselectionbox. o - Error checking was added to hierarchy's -alwaysquery option to enforce boolean values, and some memory leaks were plugged in the 'clear' method. ========================================================================== ========================================================================== -------------------------- 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 and 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
  • 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 >> 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 " 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.