# What's new in this version of YACL?

This file lists the major changes in the current YACL version.

## What's new in version 1.7:

* Migration of many documentation files from text format to HTML, so that you can use your favorite browser (i.e., Netscape :-) to view them

* New classes:

- A PostscriptDevice class, representing the beginnings of support for PostScript printers and GhostView, via the DrawingSurface interface.

- HashTable and HashMap classes (preliminary implementations)

- A preliminary implementation of the TreeView class under OS/2

* New demo programs:

- An analog clock demo (uidemo/aclock)

* Partial support for the Gnu Win32 compiler under Windows NT: the makefiles named gnuwin32.mak provide a start in this direction

* An experimental Motif-free implementation of the visual objects under X windows: see `doc/x_yacl.htm` for details

* Numerous bug fixes and enhancements: see doc/changlog.txt for details

## What's new in version 1.6:

* New classes:

- A RegExpr class representing regular expressions: see the file base/regexpr.h

- A PathName class representing a path on the file system: see the file io/pathname.h

- A Directory class representing a directory on the file system: see the file io/directry.h. This class is only supported on Posix-compatible compilers; in particular, Microsoft VC++ does not provide the necessary Posix calls.

- A ShadowedTriangle class for drawing triangles with shadows

* New base demo programs:

- a directory reader: look in the directory basedemo/directry

- a regular expression tester: look in basedemo/regexpr

* New GUI demo programs:

- a simple text editor: look in the directory uidemo/txteditr

- a demo showing color setting for visual objects: look in the directory uidemo/visobjs

* (Very) partial support for building shared libraries/DLLs. See the file `doc/quirks.htm` for details.

* New contributions:

- Several useful GUI classes by Jorg-Peter Reich (in the directory contrib/reich)

* Numerous bug fixes. The changes are documented in the file `doc/changlog.txt`.

### List of incompatibilities with the previous version:

- UI_SimpleDialog no longer exists. Use UI_StandardDialog instead.

- The parent of a UI_VisualObject is not constrained to be a UI_VObjCollection; it can be any UI_VisualObject. This was added to make it easier to build custom visual objects. But this also means that some previous code may break, and casting may be necessary.

- The Controller's GiveFocusTo method now takes a pointer as parameter, not a reference.

- In the class CL_Basics, the static _Null data member, and the static NullValueRef method, have been removed. This was done to ensure correct performance in multi-threaded applications. However, this may break some existing code that references these two members. Simply comment out these members in your code.

## What's new in version 1.5:

* An interactive dialog editor written using the YACL classes, so as to be entirely portable

* A bitmap viewer, contributed by Tony T. Ton (t.t.ton@massey.ac.nz)

* A few contributions by other YACL users:

- Classes for supporting accelerator keys, by Ludovic Brenta, in the directory contrib/accel.

- Makefile changes for building YACL as shared libraries under Solaris with GNU C++, by Jeff Long (long@tiny.mitre.org). These changes have been integrated into the YACL library makefiles; look in the file control/gnuc/solaris.cfg and in base/gnuc.mak, io/gnuc.mak and ui/gnuc.mak for details on how to do this.

* A few new classes:

- A 3DLabel class, which is a Label that draws itself with a 3-d effect. This looks good for status bars and the like. See the demo programs uidemo/3dlabels and uidemo/scrolwin for illustrations of its use.

- A ScrollableWindow class representing a window that has scroll bars attached at its right and bottom. See the deom program uidemo/scrolwin for an example.

- The DwgSurfaceInMemory now is tested to work correctly on all platforms. The 3DLabel uses this class to speed up drawing.

- MDI classes for supporting the Multiple Document Interface (under Windows, Win32 and OS/2 only).

* Support for more compilers:

- GNU C++ 2.7.2 and EMX 0.9b (under OS/2) are now supported.

- Native C++ compilers on SGI IRIX (Delta C++) Solaris 2.4 (Centerline C++) are supported; makefiles are included in the distribution.

* Numerous bug fixes and enhancements to make YACL more stable. For example:

- Support for checkable menu items

- A static SetDefaultTextStyle method for UI_Label, to set the default style for all Labels

- Support for default push buttons for dialogs

- Cross-hair and up-arrow cursors under OS/2

- Separate interface and implementation for CL_Basics, to make it easier to instantiate pointer-based containers

## What's new in version 1.4:

* WIN32 support has been added so YACL can be used under Windows NT and Windows 95

* Microsoft Visual C++ 2.1 (under Windows NT/ Windows 95) and IBM Visual Age C++ (under OS/2) are now supported

* Better support for bitmaps

* Support for bitmap buttons (both push buttons and toggle buttons)

* Several new GUI classes: NumberEditor, DateEditor, PasswordEditor, BitmapButton, ShadowRectangle, ShadowedLine

* New demo programs for bitmap buttons, editors, border displays

* Combo boxes supported under Motif (This uses the ComboBox widget written by Harald Albrecht, and its use is subject to the GNU GPL)

* Several bugs fixed under all platforms