The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
==============================================================================
           _____                                       _   _  _
          |  ___| _   _ _ __ ____  ___  ____          | | | || |
          | |    | | | | '__'  __|' _ `'  __|  _   _  | | | || |
          | |    | | | | |  | |__  |_| | |__  |_| |_| | | | || |
          | |    | | | | |  |___ |  __/|__  |  _   _  | | | || |
          | |___ | |_| | |   __| | |_,  __| | |_| |_| | |_| || |
          |_____| \___/|_|  |____,\___,|____,          \___/ |_|

             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.

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

WARNING: As soon as Curses::UI 2.0 is released this module will be
	considered as deprecated. Only bugfix changes will be done.
	Any new work should be based on Curses::UI 2.0 but feel free
	to send patches that don't break backward compatibility.

	The documentation is still very outdated. I only made changes
	to the main Pod (Curses::UI) and the Listbox widget.

Please do let me know if you find these modules useful and let me
know if any appliction 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


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 searschable 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.
  
  
 
Credits:
========
As the original code is by Maurice Makaay, these are his credits:

Esther Bronk   : (my girl) For being so patient while I was harassing 
                 her about the beauty of curses based user interfaces 
	         and for providing me the initial idea for Curses::UI 
	         (so basically it was her own fault :-).

InterNLnet     : (my employer) For the enthousiasm and support that I got
                 from my collegues and for sponsoring this project
	         (I got to play hooky :-) See: http://www.internl.net/

William Setzer : Author of the Perl5 Curses extension, the module on 
                 which Curses::UI is built.

Nick Slussar   : For criticizing my software and for bringing 
                 up new ideas.

Marcus Thiesen : For taking over the development of Curses::UI, so I 
		 can completely focus on finishing Curses::UI 2.0.

Language Credits:
===============

Nick Slussar		: Russian translation

Valentina Portolan	: Italian translation

Andrzej Kukula		: Polish translation

Albrecht Kleine		: German translation