==============================================================================
_____ _ _ _
| ___| _ _ _ __ ____ ___ ____ | | | || |
| | | | | | '__' __|' _ `' __| _ _ | | | || |
| | | | | | | | |__ |_| | |__ |_| |_| | | | || |
| | | | | | | |___ | __/|__ | _ _ | | | || |
| |___ | |_| | | __| | |_, __| | |_| |_| | |_| || |
|_____| \___/|_| |____,\___,|____, \___/ |_|
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