-------------------------------------------------------------------------------
-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                    --
--                                                                           --
-- Permission is hereby granted, free of charge, to any person obtaining a   --
-- copy of this software and associated documentation files (the             --
-- "Software"), to deal in the Software without restriction, including       --
-- without limitation the rights to use, copy, modify, merge, publish,       --
-- distribute, distribute with modifications, sublicense, and/or sell copies --
-- of the Software, and to permit persons to whom the Software is furnished  --
-- to do so, subject to the following conditions:                            --
--                                                                           --
-- The above copyright notice and this permission notice shall be included   --
-- in all copies or substantial portions of the Software.                    --
--                                                                           --
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS   --
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF                --
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --
-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,       --
-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR     --
-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --
-- USE OR OTHER DEALINGS IN THE SOFTWARE.                                    --
--                                                                           --
-- Except as contained in this notice, the name(s) of the above copyright    --
-- holders shall not be used in advertising or otherwise to promote the      --
-- sale, use or other dealings in this Software without prior written        --
-- authorization.                                                            --
-------------------------------------------------------------------------------
-- $Id: NEWS,v 1.4 2006/04/22 22:19:37 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that the ncurses C++ binding has gone
through starting with the integration of menu and forms integration
into the binding.

990731  + Improve support for pads. A viewport window may now be added to
          a pad. It will then be possible to use a builtin panning mechanism
          to view the pad.

970908	+ Improve NCursesWindow class: added additional methods to
	  cover more ncurses functionality. Make refresh() and 
	  noutrefresh() virtual members to allow different implementation
	  in the NCursesPanel class.
	+ CAUTION: changed order of parameters in vline() and hline() of
	  NCursesWindow class.
	+ Make refresh() in NCursesPanel non-static, it is now a
	  reimplementation  of refresh() in the base class. Added 
	  noutrefresh() to NCursesPanel.
	+ Added NCursesForm and related classes to support libform
	  functionality.
	+ Moved most of configuration related stuff from cursesw.h to
	  etip.h
	+ Added NCursesApplication class to support easy configuration 
	  of menu and forms related attributes as well as ripped of
	  title lines and Soft-Label-Keys for an application.
	+ Support of Auto-Cleanup for a menus fieldlist.
	+ Change of return type for current_item() and operator[] for
	  menus.
	+ Enhanced demo.
970502
	+ Introduced the THROW and THROWS functions/macros to prepare
	  a smoother transition to real exception handling.
	+ Exception classes provided in etip.h
	+ Added the NCursesMenu class to support libmenu functionality.
	+ The inheritace relation between NCursesWindow and NCursesColorWindow
	  was kind of brain damage. Monochrome is a special case of colored, so
	  the relation should be just the opposite. This would allow all 
	  derived classes like NCursesPanel, NCursesMenu or NCursesForm to 
	  have colors.
	  To resolve that design flaw I put the color functionality into the 
	  NCursesWindow class and it can be switched on by the static member
	  useColors(). NCursesColorWindow is still there for compatibility
	  reasons.
