============================================================================== _____ _ _ _ | ___| _ _ _ __ ____ ___ ____ | | | || | | | | | | | '__' __|' _ `' __| _ _ | | | || | | | | | | | | | |__ |_| | |__ |_| |_| | | | || | | | | | | | | |___ | __/|__ | _ _ | | | || | | |___ | |_| | | __| | |_, __| | |_| |_| | |_| || | |_____| \___/|_| |____,\___,|____, \___/ |_| A curses based user interface framework in perl Copyright (c) 2001-2002 Maurice Makaay (maurice@gitaar.net) 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: Due to a lot of code reorganisation, the pod documentation is currently not up-to-date. I'll fix this as soon as possible! 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 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 (maurice@gitaar.net) 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: ======== 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.