==============================================================================
           _____                                       _   _  _
          |  ___| _   _ _ __ ____  ___  ____          | | | || |
          | |    | | | | '__'  __|' _ `'  __|  _   _  | | | || |
          | |    | | | | |  | |__  |_| | |__  |_| |_| | | | || |
          | |    | | | | |  |___ |  __/|__  |  _   _  | | | || |
          | |___ | |_| | |   __| | |_,  __| | |_| |_| | |_| || |
          |_____| \___/|_|  |____,\___,|____,          \___/ |_|

             A curses based user interface framework in perl

          Maintained by Marcus Thiesen (marcus@cpan.thiesenweb.de)
	       Copyright (c) 2001-2002 Maurice Makaay
		           All rights reserved.

   This package is free software and is provided "as is" without express
    or implied warranty. It may be used, redistributed and/or modified
                  under the same terms as perl itself.

==============================================================================

Please do let me know if you find these modules useful and let me
know if any application is built using them. If you have a nice
example application, I would be most willing to add it to the 
distribution.


What is Curses::UI?
===================

A UI framework based on the curses library. Curses::UI contains
several widgets which can be used to build a user interface:

- Buttonbox 
- Calendar
- Checkbox
- Container (container base element)
- Label
- Listbox 
- Menubar
- PasswordEntry
- Popupmenu (a.k.a. pulldown- or dropdown menu)
- Progressbar
- Radiobuttonbox
- Texteditor (has features like word wrapping and undo)
- Textentry
- Textviewer
- Widget (widget base element)
- Window

There are also a couple of dialog windows available:

- Basic dialog window 
- Error dialog window
- Filebrowser 
- Status window 
- Progress window
- Calendar dialog window

Curses::UI can easily be configured to use a specific language.
If you want a language that is not yet supported, please let me
know. If you want to translate the needed strings, I'll add 
the language to the distribution. Currently the following languages
are supported:

- English
- Dutch
- German
- Russian
- Italian
- Polish
- Portuguese
- Norwegian

Examples:
=========

Examples are in the distribution's "examples" directory.
You do not have to install this distribution to test these
examples.

There aren't many examples yet, but the widgets are pretty much
finished and functional. So far I have only built some small example
applications using the Curses::UI widget-set, so interfacing with 
them might miss out on some aspects, but as soon as I am going to
build the project for which I created these widgets, this might
change. 

If you want me to add a particular functionality or 
widget type, please feel free to send me an e-mail 
(marcus@cpan.thiesenweb.de) and I'll see what I can do for you.
Patches are even better :-)


Some random features:
=====================

- Curses::UI is compatible with the standard curses library. 
  So it will work on non-ncurses systems. 

- Curses::UI programs can be controlled using the mouse (if
  ncurses is installed and your terminal communicates with it).

- Curses::UI uses a perl-Tk like MainLoop(). You add windows
  and widgets, define relationships through bindings and events
  and MainLoop() will take care of the rest for you! :-)

- The Curses::UI::ListBox widget is searchable using a "less"-like
  system. So if a listbox widget has focus, pressing "/" or "?"
  will invoke a search on the contents of the listbox. Since the
  listbox is also used for radiobuttons, popupboxes and menulistboxes,
  all these are automatically searchable as well;

- The base element of most widgets (Curses::UI::Widget) has the 
  ability of showing "scrollbars" for both the x- and y-direction. 
  These scrollbars can be drawn on all sides of the widget
  (left, right, top and bottom). The scrollbar is not really a 
  scrollbar but more a document location indicator, but since it 
  mimics a scrollbar I decided to call it a scrollbar (sounds 
  simple eh? :-). This ability makes it easy to create widgets
  with scrollbars on them.