This manual page attempts to briefly describe my ndialog library.
Ndialog is a outgrowth of some of the work I had been doing on building installers for Linux, based on the installation program that comes with FreeBSD. This installation program used a greatly hacked-up version of the GPL'ed dialog library, with some extra glue on it to support multiple items on a form. I tweaked it into shape, converting the extra glue into a generalized MENU() function, and used it for a while in my own installers, and later in McAfee's WebShield installer. But, eventually I decided to write my own version; first, because libdialog was GPLed, and I preferred to have a free dialog library, and secondly because libdialog was a nonmodular pile of hackery, made much worse by the tweaks I put into it to make it work with my installer.
Ndialog is only superficially like libdialog. It has glue functions that provide some libdialog functionality, but it is based on a wad of objects that can be glued together and passed to a new (and totally incompatable) MENU() function. It also supports online help, by both the existing dialog helpline (use_helpline(), get_helpline()), and by an imbedded mini-html browser that reads helpfiles. Also, if you're running gpm, it supports pointing and clicking with an attached mouse.
Dialog takes over the screen and breaks it into two windows; a helpline window, which is the botton line on the screen, for short reminders about what commands you can do (`F1 for help', for example) and the rest of the screen for windows. Like libdialog, it's kind of stupid about window sizing, but if you ask for an item that takes up too much real estate, the dialog functions will return an error code instead of exiting the program.