Release 0.5.0 of Graphic-Forms, a Common Lisp library for Windows GUI programming, is now available. This is an alpha release, meaning that the feature set and API have not yet stabilized. Here is what's new in this release: . SBCL is now supported (specifically version 0.9.15). Graphic-Forms includes a small patch provided to the SBCL community by Alastair Bridgewater to enable the stdcall calling convention for alien callbacks. Please see src/external-libraries/sbcl-callback-patch . Implemented a plugin mechanism for integrating graphics libraries. This means that ImageMagick is now optional -- if your application can get by with just BMP and ICO formats, then the default plugin (which has no external dependencies) may be used. This feature also allows applications to integrate other graphics libraries of their choice. . In addition to ImageMagick now being optional, external library dependencies have been further simplified. Several small libraries are now directly bundled with the Graphic-Forms. Cells is no longer used in the library proper nor in the demos (but may return at a later point). . Implemented a class called icon-bundle which may be populated with multiple images and then used to set icon data for window frames. This includes the concept of there being 'large' and 'small' icon sizes. . Simplified the argument lists for the event-*** generic functions. Provided gfw:obtain-event-time as a substitute for passing a time argument to every function (for which the vast majority of methods had no use). . Defined the following new generic functions: * event-session GF so applications can participate in the WM_QUERYENDSESSION / WM_ENDSESSION protocol. * event-activate and event-deactivate GFs so applications can respond to window activation state changes. * GFs for querying undo and redo state. Implemented corresponding methods for edit controls. * GFs for configuring auto-scrolling and scrollbar visibility. Implemented corresponding methods for edit controls. * GFs representing text clipboard data convenience functionality. Implemented corresponding methods for edit controls. . Made other miscellaneous improvements to flesh out edit control support. . Implemented the standard color chooser dialog and associated convenience macro 'with-color-dialog'. . Added the macro 'with-graphics-context' as a convenience for code that needs to instantiate a context outside of event-paint. . Heavily revised internal layout manager code in preparation for supporting more sophisticated layouts. A new class called layout-managed has been created to serve as a mix-in when defining objects (not necessarily only windows) that have children to be sized and positioned. . Implemented a new demo program called textedit which is essentially a Notepad clone. Its purpose is to show off the multi-line edit control and the standard Find/Replace dialog. . Upgraded to the latest lisp-unit and changed test loading code so that unit-tests are no longer compiled. . Wrote more documentation and reorganized existing content a bit. Added discussion of certain naming convention choices. . Made a variety of bug fixes. The README.txt file in the release zip file also has additional important information about this release. Download the release zip file here: http://prdownloads.sourceforge.net/graphic-forms/graphic-forms-0.5.0.zip?download The project website is: http://common-lisp.net/project/graphic-forms/ Jack Unrue jdunrue (at) gmail (dot) com 22 August 2006 ============================================================================== Release 0.4.0 of Graphic-Forms, a Common Lisp library for Windows GUI programming, is now available. This is an alpha release, meaning that the feature set and API have not yet stabilized. Here is what's new in this release: . CFFI snapshot 060606 or later is required in order to benefit from a bugfix for a problem when running on LispWorks where foreign structure contents could be corrupted; the most obvious symptom of this was a Win32 error encountered when attempting to create a window. . A new layout manager called `heap-layout' has been implemented. Its purpose is to align all the children of a container in a single Z-orderwise stack and allow the application to select which of the children are top-most at any given time. This is useful when implemnenting windows with panels containing related functionality, where only one such panel should be visible at a time (e.g., property sheets or wizard dialogs). . This release provides access to the standard font dialog, and integrates with the previously-defined font and font-data classes. . Application-defined modal and modeless dialogs are now fully supported, including keyboard navigation (tab traversal, default button invocation via the ENTER key, and cancel button invocation via the ESC key). . In this release, the flow-layout manager gets a new style called :normalize which instructs the manager to size children equally using the maximum dimension of the children's preferred sizes opposite to the dimension in which the layout is oriented. . Applications may set minimum size and/or maximum size constraints for top-level windows. Setting both constraints to the same size implicitly disables resizing by the user. . It is also possible to explicitly disable resizabilty, which not only results in a fixed window size but also causes window decorations to be updated appropriately (no maximize box and no resize handles in the window frame). . The button class has been expanded to support checkboxes, radio buttons, toggle buttons, and tri-state button controls. . There is now basic support for instantiating single-line and multi-line edit controls. Edit controls participate in the focus gain / focus loss protocol; they also provide notification when contents change via the event-modify generic function. . Implemented event-focus-gain and event-focus-loss to allow applications to response to changes in focus. . It is now possible to customize the background color, foreground color, and font of label controls. Infrastructure to support similar customizations for other controls is in place. . Functions capture-mouse and release-mouse are available to implement mouse capturing behavior. . Added a function to programmatically append separators to menus; this was already possible via DEFMENU but not yet supported for dynamic menu management. . Rewrote timer event processing such that the library no longer uses the TimerProc callback technique, but instead each call to the Win32 SetTimer function is made with the handle to a hidden utility window managed by the library code. . Changed the rectangle type to be a structure; it was a class before. . Started work on infrastructure required to support a new layout manager called `group-layout' which will appear in a subsequent release. The infrastructure developed this time includes definition of a text-baseline method that widgets implement to help layout managers align text appropriately. . Also started work on infrastructure needed to enable WinXP-themed controls. . Continued work on the UnBlocked demo game. The above list is in addition to documentation enhancements and bug fixes. The README.txt file in the release zip file also has additional important information about this release. Download the release zip file here: http://prdownloads.sourceforge.net/graphic-forms/graphic-forms-0.4.0.zip?download The project website is: http://common-lisp.net/project/graphic-forms/ Jack Unrue jdunrue (at) gmail (dot) com July 3rd 2006 ==============================================================================