Cdk Version Change List Copyright Mike Glover, 1995, 1996, 1997, 1998, 1999 Some changes copyright Thomas Dickey 1999, 2000 ------------------------------------------------------------------------------- This file outlines all of the changes/additions from one release to another. You should also look at the BUGS file for information related to bugs which were fixed from release to release. 2000/4/9 - T.E.Dickey ========================================== + modify newwin() call in subwindow_ex.c to account for actual screen size rather than assuming 25 lines (reported by Gary Funck ). + add CF_X_ATHENA and CF_X_TOOLKIT configure macros for --with-pdcurses option, needed if the Xcurses or dependent libraries are static rather than shared. + correct typo in configure check for HPUX 11.x (reported by Bjorn Helgaas ). 2000/2/18 - T.E.Dickey ========================================== + add case for HPUX 11.x use of cur_colr library (reported by Bjorn Helgaas ). + add configure option --with-pdcurses, to link with the X11 version of PDCurses. + eliminate quoted includes, in favor of bracketed form. + ifdef'd limits.h, moving that into cdk.h with a fallback definition for INT_MIN and INT_MAX. + minor fixes for building with SunOS 5lib version: configure check for getopt variables, correction to demos/Makefile.in 2000/1/17 - T.E.Dickey ========================================== + add lib-prefix and executable suffix checks to configure script for port to OS/2 EMX. + add configure check for lstat(). 2000/1/16 - T.E.Dickey ========================================== + drop dependency on usleep(), using napms() which is standard with SVr4 curses. + rewrote mode2Char(), making it table-driven and splitting out mode2Filetype() to make porting simpler, by putting ifdef's for S_ISSOCK in one place only. + use new freeCharList() to reduce clutter. + eliminate casts of NULL, to reduce clutter. + change several uses of control characters in source to use CONTROL() macro. + correct format of date shown in bind_ex.c + correct nonstandard getcwd() usage in fselect.c + change demo and example makefiles to not strip executables. + modify demo/Makefile.in to work around Solaris' make program which does not process ".c" rule as desired. 2000/1/8 - T.E.Dickey ========================================== + fix compiler warnings with Solaris cc. 1999/12/19 - T.E.Dickey ========================================== + update email and url for Mike Glover based on 4.9.9 version dated 1999/7/29. 1999/6/26 - T.E.Dickey ========================================== + add configure options --with-dbmalloc and --with-dmalloc to simplify testing with those libraries. + correct error in rewrite of char2Chtype which broke repeat-counts. 1999/6/5 - T.E.Dickey ========================================== + correct reference to uninitialized memory in bindCDKObject() + add/use BINDFN_PROTO macro to simplify maintenance of Perl extension, corrected corresponding functions to be typed void. + shorten/simplify mapChtype by making it table-driven. + shorten/simplify char2DisplayType by making it table-driven. + replace splitString() by CDKsplitString() and CDKcountStrings() to eliminate buffer-limits. + simplify char2Chtype, eliminate fixed-buffer limits. + prevent recursion in segvTrap. 1999/5/29 - T.E.Dickey ========================================== + remove bindFunction and bindData arrays from individual widgets + make draw, erase, move methods accessed only via the CDKFUNCS table in each widget. + add move method for menu.c + split-out positionCDKObject function from widget code. 1999/5/23 - T.E.Dickey ========================================== + remove WIN_WIDTH and related macros, use the more common getmaxx, and similar macros. Provide fallback definitions for those. + replace log10() call in intlen with simple recursion. + add getendx() and getendy() macros. + add moveCursesWindow(). + generate include/cdk_config.h, to simplify ifdef'ing for gcc features, and to reduce clutter in the makefiles. + add functions ceilCDK() and floorCDK() to eliminate dependency on the math library + simplified, corrected upper-limit checks in alignxy(). + change bindings to be dynamically allocated, part of the CDKOBJS structure. + correct overlap between title and percentage in drawCDKViewerInfo() 1999/5/15 - T.E.Dickey ========================================== + revised configure script, using autoconf macros which I've written for other programs to check for ncurses configuration. + corrected language of copyrights - Mike Glover's intent to retain copyright of CDK is not served by putting a 1990 copyright attributed to UC Berkeley. + except for unused parameters, fix gcc compiler warnings. + change prototypes to not use parameter names, since this causes namespace pollution. + make functions that do not have public prototypes static. + add missing exit() call in fileview.c, after endCDK() call. + move delwin() calls before endCDK() call in a few other examples. + correct apparent bug in widgets which process a binding (such as KEY_DOWN, in the alphalist and fileview.c demos). They set the exitType to vESCAPE_HIT rather than the expected vEARLY_EXIT. + ifdef'd out some debug code in scroll_ex.c + correct a loop limit freeing mesg[] array in selection_ex.c + move common object data into new struct CDKOBJS, making cdkscreen.c much simpler and extensible. + change erase and draw functions (called from cdkscreen.c) to object pointers, so only widgets used are linked, making example programs half as big. 4.9.7 -> 4.9.8 (December 1998) ========================================== * Changed the way key bindings worked. If the key binding exited with a non-zero value then the widget would exit like the user pressed the escape key. This provides more control over key binding callbacks. Now the bind prototype is: int function (EObjectType cdktype, void *object, void *clientData, chtype key); * Reversed the order of this file. The most recent first. 4.9.6 -> 4.9.7 (December 1998) ========================================== * Went from static Makefiles to autoconf and configure. (finally) 4.9.2 -> 4.9.6 ========================================== * Once again, it's a complete mystery. 4.9.1 -> 4.9.2 ========================================== * Changed the activateCDKViewer funtion to be more compliant with the rest of the activateCDKXXX functions. 4.9.0 -> 4.9.1 ========================================== * Added the functions setCDKXXXULChar/URChar/LLChar/LRChar, setCDKXXXVerticalChar, setCDKHorizontalChar, and setCDKXXXBoxAttribute to each of the widgets but the menu widget. These functions allow the programmer to define the corner characters of the widget as well as the vertical, horizontal, and attributes of the box. * Added the function setCDKXXXBackgroundColor. This sets the background color of the widget's window. * Added makefile for the SGI * Created the buttonbox widget. * Added in Ctrl-N and Ctrl-P to switch between buttons on the dialog box and viewer. * Added the functions setCDKRadioItems and setCDKSelectionItems. * Added the functions setCDKRadioTitle, setCDKSelectionTitle, setCDKScrollTitle. 4.8.3 -> 4.9.0 ========================================== * Added a parameter to the setCDKViewer function to turn on/off the line X of Y in the top left corner. * Removed the eraseCDKXXX in each of the drawCDKXXX functions. This results in a quicker refresh and less overhead when using the widgets. This should make things A LOT faster. (I suppose it's about time I had complete faith in curses optimized screen refreshing. :) ) The side effect is that you might have to change some programs to force an eraseCDKXXX/drawCDKXXX when you think the screen is garbled. * Added a little bit of logic in char2Chtype when a terminal cannot display color, bold will be used instead. * Cleaned up the way filename completion works in the file selector. You may now type in a path and hit tab and that directory tree will be loaded. * Added the ability to use the ~ character to refer to a users home directory, in the file selector. (like csh variants) * Changed the setCDKXXX functions. Made many different setCDKXXX functions, one for each item being set. This reduces the overhead of all the setCDKXXX functions. * Drastically changed cdk.h. Split the widget definitions and functions into their own header files. This makes it easier to expand CDK. * Added the ability to have multiple line titles on most of the widgets. * Added the functions setCDKSelectionChoice/getCDKSelectionChoice to set/get a single choice value from a selection list. * Added the functions setCDKSelectionModes/getCDKSelectionModes to set/get the ability to set some items in the selection list as editable/uneditable. * Added makefile for the DEC Alpha (I forget who sent me this, if you want recognition, mail me again) * Created a 'visual install' using some of the widgets. Try it. (type in make vinstall once the library has been made) * Added the ability to set the width of the widget respective to the screen size. If you pass in a negative value, the widget will adjust to the width of the window the widget sits in minus the given value. If zero is given, then the widget will be the full width of the window. This removes the need to know how wide the window is when the widget is created. * Changed the demos and examples makefiles. I was making things too difficult. It's simpler and easier to compile these directories. * Re-Purified the code. (no leaks, no UMR's, no problem... :) ) * Quantified the code a bit for those who complained about the performance. It has been sped up; I just hope it's enough for some of you speed freaks. :) * Added the functions get/setCDKTemplateMin. This allows you to set the minimum number of characters to type in before the widget will accept the typed in value. * Changed the documentation to reflect all the changes. 4.8.1 -> 4.8.2 -> 4.8.3 ========================================== * It's a complete mystery. 4.8.0 -> 4.8.1 ========================================== * Changed the bind prototype function from void function (EObjectType cdktype, void *object, void *clientData); to void function (EObjectType cdktype, void *object, void *clientData, chtype key); * Added scroll bars to the scrolling list, the selection list, and the radio list. * Modified the template widget so the new character takes on the color/attributes of the plate widget. * Added the function classes moveCDKXXX and positionCDKXXX. * Changed the structure of the makefile and created a single makefile for each platform to compile on. * Added support for the delete character KEY_DC. 4.7.0 -> 4.8.0 ========================================== * Fixed bugs documented by Miguel Marques (miguel@apex.cos.yorku.ca) in the entry and mentry widgets. The bug displays itself when you use vHINT or vINT display types. The vHINT actually showed the numbers being typed in (which goes against the hidden element of this display type) and in certain cases vINT allowed non-alpha characters to be entered. * Added compile support for Free BSD. * Cleaned up the behavior of the entry field. * Cleaned up the behavior of the scrolling list. * Cleaned up the behavior of the radio list. * Cleaned up the behavior of the selection list. * Changed (improved) the behavior of the file selector widget. * Made the activateCDKFselect behave like the other widgets. * Added injectCDKFselect function. * Added the calendar widget. * Added the slider widget. * Added the alphalist widget on the request of Luigi Rizzo. (luigi@ien.unipi.it) * Fixed a bug with addCDKScrollItem. * Fixed segmentation fault in the rolodex demo. * Changed the macros MAX, MIN, and DIFF to MAXIMUM, MINIMUM, and DIFFERENCE respectively to avoid conflicts. * Fixed errors with the alphalist and fselect widgets. * Added the link format comand for the file viewer. This allows users to 'hyper-link' text files. * Removed the use of CTRL-N. * Added the ability to load/save with the scrolling window. * Added filename completion to the file selector. * Cleaned up massive changes and errors in the documentation. * Added 'emacs-like' field editing capabilities to the entry and mentry widgets. 4.6.1 -> 4.7.0 ========================================== * Added injectCDKXXX class of functions. This allows you to inject a single character into the widget. * Changed the activateCDKXXX to take an array of chtype to send in a set of predefined characters. This is very useful for performing automated tests of your programs. * Added functions setCDKXXXPreProcess and setCDKXXXPosProcess to perform actions before and after a character has been hit. * Made the use of CTRL-N consistent. * Fixed manual page errors. * Added the ability to cut text from the entry, mentry, and template widgets. (uses a global buffer) * Added the ability to copy text from the entry, mentry, and template widgets. (uses a global buffer) * Added the ability to paste text into the entry, mentry, and template widgets. (uses a global buffer) * Added the use of the escape key to exit a widget early. * Added the functions addCDKScroll/deleteCDKScroll to insert and delete items in an active scrolling list. * Added a parameter to the menu to specify where the menu windows were to be drawn. (top or bottom) * Added execCDKSwindow to the swindow function list. This allows the user to 'spawn' a command and direct the output to the scrolling window. 4.6.0 -> 4.6.1 ========================================== * Removed the callback function parameter from the entry, mentry, matrix, and template widgets. Added in a function setCDKXXXCB. The XXX is the name of the widget. * Changed the viewer widget functions around. Moved activateCDKViewer to setCDKViewer. Moved manageCDKViewer to activateCDKViewer and removed the old setCDKViewer. * Added in special drawing characters. * Added in indent format to indent lines. 4.6.0 (January 1996) ========================================== * First pulic release of Cdk. If you want to get a hold of me mail me at one of the following: glover@credit.erin.utoronto.ca mike@vexus.ca The CDK Web page has several homes. They are: http://www.vexus.ca/CDK.html (official) http://www.datasoft.on.ca/~cdk (Sponsered by the nice folks at Datasoft) ttfn, Mike PS: There is also a Perl5 extension of this library for you Perl5 fans. Look under any CPAN site under the directory CPAN/authors/id/GLOVER.