728 lines
19 KiB
HTML
728 lines
19 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|||
|
<HTML
|
|||
|
><HEAD
|
|||
|
><TITLE
|
|||
|
>Introduction</TITLE
|
|||
|
><META
|
|||
|
NAME="GENERATOR"
|
|||
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|||
|
REL="HOME"
|
|||
|
TITLE=" NCURSES Programming HOWTO "
|
|||
|
HREF="index.html"><LINK
|
|||
|
REL="PREVIOUS"
|
|||
|
TITLE=" NCURSES Programming HOWTO "
|
|||
|
HREF="index.html"><LINK
|
|||
|
REL="NEXT"
|
|||
|
TITLE="Hello World !!!"
|
|||
|
HREF="helloworld.html"></HEAD
|
|||
|
><BODY
|
|||
|
CLASS="SECT1"
|
|||
|
BGCOLOR="#FFFFFF"
|
|||
|
TEXT="#000000"
|
|||
|
LINK="#0000FF"
|
|||
|
VLINK="#840084"
|
|||
|
ALINK="#0000FF"
|
|||
|
><DIV
|
|||
|
CLASS="NAVHEADER"
|
|||
|
><TABLE
|
|||
|
SUMMARY="Header navigation table"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
CELLPADDING="0"
|
|||
|
CELLSPACING="0"
|
|||
|
><TR
|
|||
|
><TH
|
|||
|
COLSPAN="3"
|
|||
|
ALIGN="center"
|
|||
|
>NCURSES Programming HOWTO</TH
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="10%"
|
|||
|
ALIGN="left"
|
|||
|
VALIGN="bottom"
|
|||
|
><A
|
|||
|
HREF="index.html"
|
|||
|
ACCESSKEY="P"
|
|||
|
>Prev</A
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
WIDTH="80%"
|
|||
|
ALIGN="center"
|
|||
|
VALIGN="bottom"
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
WIDTH="10%"
|
|||
|
ALIGN="right"
|
|||
|
VALIGN="bottom"
|
|||
|
><A
|
|||
|
HREF="helloworld.html"
|
|||
|
ACCESSKEY="N"
|
|||
|
>Next</A
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
><HR
|
|||
|
ALIGN="LEFT"
|
|||
|
WIDTH="100%"></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT1"
|
|||
|
><H1
|
|||
|
CLASS="SECT1"
|
|||
|
><A
|
|||
|
NAME="INTRO"
|
|||
|
></A
|
|||
|
>1. Introduction</H1
|
|||
|
><P
|
|||
|
>In the olden days of teletype terminals, terminals were away from computers and
|
|||
|
were connected to them through serial cables. The terminals could be configured
|
|||
|
by sending a series of bytes. All the capabilities (such as
|
|||
|
moving the cursor to a new location, erasing part of the screen, scrolling the
|
|||
|
screen, changing modes etc.) of terminals could be accessed through these
|
|||
|
series of bytes. These control seeuqnces are usually called escape sequences,
|
|||
|
because they start
|
|||
|
with an escape(0x1B) character. Even today, with proper emulation, we can send
|
|||
|
escape sequences to the emulator and achieve the same effect on a terminal
|
|||
|
window.</P
|
|||
|
><P
|
|||
|
>Suppose you wanted to print a line in color. Try typing this on your console.</P
|
|||
|
><TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
>echo "^[[0;31;40mIn Color"</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
><P
|
|||
|
>The first character is an escape character, which looks like two characters ^
|
|||
|
and [. To be able to print it, you have to press CTRL+V and then the ESC key.
|
|||
|
All the others are normal printable characters. You should be able to see the
|
|||
|
string "In Color" in red. It stays that way and to revert back to the original
|
|||
|
mode type this.</P
|
|||
|
><TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
>echo "^[[0;37;40m"</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
><P
|
|||
|
>Now, what do these magic characters mean? Difficult to comprehend? They might
|
|||
|
even be different for different terminals. So the designers of UNIX invented a
|
|||
|
mechanism named <TT
|
|||
|
CLASS="LITERAL"
|
|||
|
>termcap</TT
|
|||
|
>. It is a file that
|
|||
|
lists all the capabilities of a particular terminal, along with the escape
|
|||
|
sequences needed to achieve a particular effect. In the later years, this was
|
|||
|
replaced by <TT
|
|||
|
CLASS="LITERAL"
|
|||
|
>terminfo</TT
|
|||
|
>. Without delving too
|
|||
|
much into details, this mechanism allows application
|
|||
|
programs to query the terminfo database and obtain the control characters to be
|
|||
|
sent to a terminal or terminal emulator.</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="WHATIS"
|
|||
|
></A
|
|||
|
>1.1. What is NCURSES?</H2
|
|||
|
><P
|
|||
|
>
|
|||
|
You might be wondering, what the import of all this technical gibberish is. In
|
|||
|
the above scenario, every application program is supposed to query the terminfo
|
|||
|
and perform the necessary stuff (sending control characters etc.). It soon became
|
|||
|
difficult to manage this complexity and this gave birth to 'CURSES'. Curses is
|
|||
|
a pun on the name "cursor optimization". The Curses library forms a wrapper
|
|||
|
over working with raw terminal codes, and provides highly flexible and
|
|||
|
efficient API (Application Programming Interface). It provides functions to
|
|||
|
move the cursor, create windows, produce colors, play with mouse etc. The
|
|||
|
application programs need not worry about the underlying terminal capabilities.</P
|
|||
|
><P
|
|||
|
>So what is NCURSES? NCURSES is a clone of the original System V Release 4.0
|
|||
|
(SVr4) curses. It is a freely distributable library, fully compatible with
|
|||
|
older version of curses. In short, it is a library of functions that manages
|
|||
|
an application's display on character-cell terminals. In the remainder of the
|
|||
|
document, the terms curses and ncurses are used interchangeably. </P
|
|||
|
><P
|
|||
|
>A detailed history of NCURSES can be found in the NEWS file from the source
|
|||
|
distribution. The current package is maintained by
|
|||
|
<A
|
|||
|
HREF="mailto:dickey@his.com"
|
|||
|
TARGET="_top"
|
|||
|
>Thomas Dickey</A
|
|||
|
>.
|
|||
|
You can contact the maintainers at <A
|
|||
|
HREF="mailto:bug-ncurses@gnu.org"
|
|||
|
TARGET="_top"
|
|||
|
>bug-ncurses@gnu.org</A
|
|||
|
>.</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="WHATCANWEDO"
|
|||
|
></A
|
|||
|
>1.2. What we can do with NCURSES</H2
|
|||
|
><P
|
|||
|
>NCURSES not only creates a wrapper over terminal capabilities, but also gives a
|
|||
|
robust framework to create nice looking UI (User Interface)s in text mode. It
|
|||
|
provides functions to create windows etc. Its sister libraries panel, menu and
|
|||
|
form provide an extension to the basic curses library. These libraries usually
|
|||
|
come along with curses. One can create applications that contain multiple
|
|||
|
windows, menus, panels and forms. Windows can be managed independently, can
|
|||
|
provide 'scrollability' and even can be hidden.</P
|
|||
|
><P
|
|||
|
>
|
|||
|
Menus provide the user with an easy command selection option. Forms allow the
|
|||
|
creation of easy-to-use data entry and display windows. Panels extend the
|
|||
|
capabilities of ncurses to deal with overlapping and stacked windows.</P
|
|||
|
><P
|
|||
|
>These are just some of the basic things we can do with ncurses. As we move
|
|||
|
along, We will see all the capabilities of these libraries. </P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="WHERETOGETIT"
|
|||
|
></A
|
|||
|
>1.3. Where to get it</H2
|
|||
|
><P
|
|||
|
>All right, now that you know what you can do with ncurses, you must be rearing
|
|||
|
to get started. NCURSES is usually shipped with your installation. In case
|
|||
|
you don't have the library or want to compile it on your own, read on.</P
|
|||
|
><P
|
|||
|
><EM
|
|||
|
>Compiling the package</EM
|
|||
|
> </P
|
|||
|
><P
|
|||
|
>NCURSES can be obtained from <A
|
|||
|
HREF="ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
>ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz</A
|
|||
|
> or any of the ftp
|
|||
|
sites mentioned in <A
|
|||
|
HREF="http://www.gnu.org/order/ftp.html"
|
|||
|
TARGET="_top"
|
|||
|
>http://www.gnu.org/order/ftp.html</A
|
|||
|
>. </P
|
|||
|
><P
|
|||
|
>Read the README and INSTALL files for details on to how to install it. It
|
|||
|
usually involves the following operations.</P
|
|||
|
><TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> tar zxvf ncurses<version>.tar.gz # unzip and untar the archive
|
|||
|
cd ncurses<version> # cd to the directory
|
|||
|
./configure # configure the build according to your
|
|||
|
# environment
|
|||
|
make # make it
|
|||
|
su root # become root
|
|||
|
make install # install it</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
><P
|
|||
|
><EM
|
|||
|
>Using the RPM </EM
|
|||
|
></P
|
|||
|
><P
|
|||
|
>NCURSES RPM can be found and downloaded from <A
|
|||
|
HREF="http://rpmfind.net"
|
|||
|
TARGET="_top"
|
|||
|
>http://rpmfind.net </A
|
|||
|
>. The RPM can be installed with the following
|
|||
|
command after becoming root.</P
|
|||
|
><TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> rpm -i <downloaded rpm></PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="PURPOSE"
|
|||
|
></A
|
|||
|
>1.4. Purpose/Scope of the document</H2
|
|||
|
><P
|
|||
|
>This document is intended to be a "All in One" guide for programming with
|
|||
|
ncurses and its sister libraries. We graduate from a simple "Hello World"
|
|||
|
program to more complex form manipulation. No prior experience in ncurses is
|
|||
|
assumed. The writing is informal, but a lot of detail is provided for
|
|||
|
each of the examples.</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="ABOUTPROGRAMS"
|
|||
|
></A
|
|||
|
>1.5. About the Programs</H2
|
|||
|
><P
|
|||
|
>All the programs in the document are available in zipped form
|
|||
|
<A
|
|||
|
HREF="http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
>here</A
|
|||
|
>. Unzip and untar it. The directory structure looks like this.</P
|
|||
|
><TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
>ncurses
|
|||
|
|
|
|||
|
|----> JustForFun -- just for fun programs
|
|||
|
|----> basics -- basic programs
|
|||
|
|----> demo -- output files go into this directory after make
|
|||
|
| |
|
|||
|
| |----> exe -- exe files of all example programs
|
|||
|
|----> forms -- programs related to form library
|
|||
|
|----> menus -- programs related to menus library
|
|||
|
|----> panels -- programs related to panels library
|
|||
|
|----> perl -- perl equivalents of the examples (contributed
|
|||
|
| by Anuradha Ratnaweera)
|
|||
|
|----> Makefile -- the top level Makefile
|
|||
|
|----> README -- the top level README file. contains instructions
|
|||
|
|----> COPYING -- copyright notice</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
><P
|
|||
|
>The individual directories contain the following files.</P
|
|||
|
><TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
>Description of files in each directory
|
|||
|
--------------------------------------
|
|||
|
JustForFun
|
|||
|
|
|
|||
|
|----> hanoi.c -- The Towers of Hanoi Solver
|
|||
|
|----> life.c -- The Game of Life demo
|
|||
|
|----> magic.c -- An Odd Order Magic Square builder
|
|||
|
|----> queens.c -- The famous N-Queens Solver
|
|||
|
|----> shuffle.c -- A fun game, if you have time to kill
|
|||
|
|----> tt.c -- A very trivial typing tutor
|
|||
|
|
|||
|
basics
|
|||
|
|
|
|||
|
|----> acs_vars.c -- ACS_ variables example
|
|||
|
|----> hello_world.c -- Simple "Hello World" Program
|
|||
|
|----> init_func_example.c -- Initialization functions example
|
|||
|
|----> key_code.c -- Shows the scan code of the key pressed
|
|||
|
|----> mouse_menu.c -- A menu accessible by mouse
|
|||
|
|----> other_border.c -- Shows usage of other border functions apa
|
|||
|
| -- rt from box()
|
|||
|
|----> printw_example.c -- A very simple printw() example
|
|||
|
|----> scanw_example.c -- A very simple getstr() example
|
|||
|
|----> simple_attr.c -- A program that can print a c file with
|
|||
|
| -- comments in attribute
|
|||
|
|----> simple_color.c -- A simple example demonstrating colors
|
|||
|
|----> simple_key.c -- A menu accessible with keyboard UP, DOWN
|
|||
|
| -- arrows
|
|||
|
|----> temp_leave.c -- Demonstrates temporarily leaving curses mode
|
|||
|
|----> win_border.c -- Shows Creation of windows and borders
|
|||
|
|----> with_chgat.c -- chgat() usage example
|
|||
|
|
|||
|
forms
|
|||
|
|
|
|||
|
|----> form_attrib.c -- Usage of field attributes
|
|||
|
|----> form_options.c -- Usage of field options
|
|||
|
|----> form_simple.c -- A simple form example
|
|||
|
|----> form_win.c -- Demo of windows associated with forms
|
|||
|
|
|||
|
menus
|
|||
|
|
|
|||
|
|----> menu_attrib.c -- Usage of menu attributes
|
|||
|
|----> menu_item_data.c -- Usage of item_name() etc.. functions
|
|||
|
|----> menu_multi_column.c -- Creates multi columnar menus
|
|||
|
|----> menu_scroll.c -- Demonstrates scrolling capability of menus
|
|||
|
|----> menu_simple.c -- A simple menu accessed by arrow keys
|
|||
|
|----> menu_toggle.c -- Creates multi valued menus and explains
|
|||
|
| -- REQ_TOGGLE_ITEM
|
|||
|
|----> menu_userptr.c -- Usage of user pointer
|
|||
|
|----> menu_win.c -- Demo of windows associated with menus
|
|||
|
|
|||
|
panels
|
|||
|
|
|
|||
|
|----> panel_browse.c -- Panel browsing through tab. Usage of user
|
|||
|
| -- pointer
|
|||
|
|----> panel_hide.c -- Hiding and Un hiding of panels
|
|||
|
|----> panel_resize.c -- Moving and resizing of panels
|
|||
|
|----> panel_simple.c -- A simple panel example
|
|||
|
|
|||
|
perl
|
|||
|
|----> 01-10.pl -- Perl equivalents of first ten example programs</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
><P
|
|||
|
>There is a top level Makefile included in the main directory. It builds all the
|
|||
|
files and puts the ready-to-use exes in demo/exe directory. You can also
|
|||
|
do selective make by going into the corresponding directory. Each directory
|
|||
|
contains a README file explaining the purpose of each c file in the directory.</P
|
|||
|
><P
|
|||
|
>For every example, I have included path name for the file relative to the
|
|||
|
examples directory. </P
|
|||
|
><P
|
|||
|
> If you prefer browsing individual programs, point your browser to
|
|||
|
<A
|
|||
|
HREF="http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/"
|
|||
|
TARGET="_top"
|
|||
|
>http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/</A
|
|||
|
></P
|
|||
|
><P
|
|||
|
>All the programs are released under the same license that is used by ncurses
|
|||
|
(MIT-style). This gives you the ability to do pretty much anything other than
|
|||
|
claiming them as yours. Feel free to use them in your programs as appropriate.</P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="OTHERFORMATS"
|
|||
|
></A
|
|||
|
>1.6. Other Formats of the document</H2
|
|||
|
><P
|
|||
|
>This howto is also availabe in various other formats on the tldp.org site.
|
|||
|
Here are the links to other formats of this document.</P
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="LISTFORMATS"
|
|||
|
></A
|
|||
|
>1.6.1. Readily available formats from tldp.org</H3
|
|||
|
><P
|
|||
|
></P
|
|||
|
><UL
|
|||
|
><LI
|
|||
|
><P
|
|||
|
><A
|
|||
|
HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/NCURSES-Programming-HOWTO.pdf"
|
|||
|
TARGET="_top"
|
|||
|
>Acrobat PDF Format</A
|
|||
|
></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
><A
|
|||
|
HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/NCURSES-Programming-HOWTO.ps.gz"
|
|||
|
TARGET="_top"
|
|||
|
>PostScript Format</A
|
|||
|
></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
><A
|
|||
|
HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html/NCURSES-Programming-HOWTO-html.tar.gz"
|
|||
|
TARGET="_top"
|
|||
|
>In Multiple HTML pages</A
|
|||
|
></P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
><A
|
|||
|
HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/NCURSES-Programming-HOWTO.html"
|
|||
|
TARGET="_top"
|
|||
|
>In One big HTML format</A
|
|||
|
></P
|
|||
|
></LI
|
|||
|
></UL
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT3"
|
|||
|
><H3
|
|||
|
CLASS="SECT3"
|
|||
|
><A
|
|||
|
NAME="BUILDSOURCE"
|
|||
|
></A
|
|||
|
>1.6.2. Building from source</H3
|
|||
|
><P
|
|||
|
>If above links are broken or if you want to experiment with sgml read on.
|
|||
|
<TABLE
|
|||
|
BORDER="0"
|
|||
|
BGCOLOR="#E0E0E0"
|
|||
|
WIDTH="100%"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
><FONT
|
|||
|
COLOR="#000000"
|
|||
|
><PRE
|
|||
|
CLASS="PROGRAMLISTING"
|
|||
|
> Get both the source and the tar,gzipped programs, available at
|
|||
|
http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
|
|||
|
NCURSES-HOWTO/NCURSES-Programming-HOWTO.sgml
|
|||
|
http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
|
|||
|
NCURSES-HOWTO/ncurses_programs.tar.gz
|
|||
|
|
|||
|
Unzip ncurses_programs.tar.gz with
|
|||
|
tar zxvf ncurses_programs.tar.gz
|
|||
|
|
|||
|
Use jade to create various formats. For example if you just want to create
|
|||
|
the multiple html files, you would use
|
|||
|
jade -t sgml -i html -d <path to docbook html stylesheet>
|
|||
|
NCURSES-Programming-HOWTO.sgml
|
|||
|
to get pdf, first create a single html file of the HOWTO with
|
|||
|
jade -t sgml -i html -d <path to docbook html stylesheet> -V nochunks
|
|||
|
NCURSES-Programming-HOWTO.sgml > NCURSES-ONE-BIG-FILE.html
|
|||
|
then use htmldoc to get pdf file with
|
|||
|
htmldoc --size universal -t pdf --firstpage p1 -f <output file name.pdf>
|
|||
|
NCURSES-ONE-BIG-FILE.html
|
|||
|
for ps, you would use
|
|||
|
htmldoc --size universal -t ps --firstpage p1 -f <output file name.ps>
|
|||
|
NCURSES-ONE-BIG-FILE.html</PRE
|
|||
|
></FONT
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></P
|
|||
|
><P
|
|||
|
>See <A
|
|||
|
HREF="http://www.tldp.org/LDP/LDP-Author-Guide/"
|
|||
|
TARGET="_top"
|
|||
|
>LDP Author guide</A
|
|||
|
> for more details. If all else failes, mail me at
|
|||
|
<A
|
|||
|
HREF="ppadala@gmail.com"
|
|||
|
TARGET="_top"
|
|||
|
>ppadala@gmail.com</A
|
|||
|
></P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="CREDITS"
|
|||
|
></A
|
|||
|
>1.7. Credits</H2
|
|||
|
><P
|
|||
|
>I thank <A
|
|||
|
HREF="mailto:sharath_1@usa.net"
|
|||
|
TARGET="_top"
|
|||
|
>Sharath</A
|
|||
|
> and Emre Akbas for
|
|||
|
helping me with few sections. The introduction was initially written by sharath.
|
|||
|
I rewrote it with few excerpts taken from his initial work. Emre helped in
|
|||
|
writing printw and scanw sections.</P
|
|||
|
><P
|
|||
|
>Perl equivalents of the example programs are contributed by <A
|
|||
|
HREF="mailto:Aratnaweera@virtusa.com"
|
|||
|
TARGET="_top"
|
|||
|
>Anuradha Ratnaweera</A
|
|||
|
>. </P
|
|||
|
><P
|
|||
|
>Then comes <A
|
|||
|
HREF="mailto:parimi@ece.arizona.edu"
|
|||
|
TARGET="_top"
|
|||
|
>Ravi Parimi</A
|
|||
|
>, my
|
|||
|
dearest friend, who has been on this project before even one line was written.
|
|||
|
He constantly bombarded me with suggestions and patiently reviewed the whole
|
|||
|
text. He also checked each program on Linux and Solaris. </P
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="WISHLIST"
|
|||
|
></A
|
|||
|
>1.8. Wish List</H2
|
|||
|
><P
|
|||
|
>This is the wish list, in the order of priority. If you have a wish or you want
|
|||
|
to work on completing the wish, mail <A
|
|||
|
HREF="mailto:ppadala@gmail.com"
|
|||
|
TARGET="_top"
|
|||
|
>me</A
|
|||
|
>. </P
|
|||
|
><P
|
|||
|
></P
|
|||
|
><UL
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Add examples to last parts of forms section.</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Prepare a Demo showing all the programs and allow the user to browse through
|
|||
|
description of each program. Let the user compile and see the program in action.
|
|||
|
A dialog based interface is preferred.</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Add debug info. _tracef, _tracemouse stuff.</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Accessing termcap, terminfo using functions provided by ncurses
|
|||
|
package.</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Working on two terminals simultaneously.</P
|
|||
|
></LI
|
|||
|
><LI
|
|||
|
><P
|
|||
|
>Add more stuff to miscellaneous section.</P
|
|||
|
></LI
|
|||
|
></UL
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="SECT2"
|
|||
|
><H2
|
|||
|
CLASS="SECT2"
|
|||
|
><A
|
|||
|
NAME="COPYRIGHT"
|
|||
|
></A
|
|||
|
>1.9. Copyright</H2
|
|||
|
><P
|
|||
|
>Copyright <20> 2001 by Pradeep Padala. </P
|
|||
|
><P
|
|||
|
>Permission is hereby granted, free of charge, to any person obtaining a copy
|
|||
|
of this software and associated documentation files (the "Software"), to deal
|
|||
|
in the Software without restriction, including without limitation the rights
|
|||
|
to use, copy, modify, merge, publish, distribute, distribute with
|
|||
|
modifications, sublicense, and/or sell copies of the Software, and to permit
|
|||
|
persons to whom the Software is furnished to do so, subject to the following
|
|||
|
conditions:</P
|
|||
|
><P
|
|||
|
>The above copyright notice and this permission notice shall be included in all
|
|||
|
copies or substantial portions of the Software.</P
|
|||
|
><P
|
|||
|
>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|||
|
ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
|||
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</P
|
|||
|
><P
|
|||
|
>Except as contained in this notice, the name(s) of the above copyright holders
|
|||
|
shall not be used in advertising or otherwise to promote the sale, use or
|
|||
|
other dealings in this Software without prior written authorization. </P
|
|||
|
></DIV
|
|||
|
></DIV
|
|||
|
><DIV
|
|||
|
CLASS="NAVFOOTER"
|
|||
|
><HR
|
|||
|
ALIGN="LEFT"
|
|||
|
WIDTH="100%"><TABLE
|
|||
|
SUMMARY="Footer navigation table"
|
|||
|
WIDTH="100%"
|
|||
|
BORDER="0"
|
|||
|
CELLPADDING="0"
|
|||
|
CELLSPACING="0"
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="33%"
|
|||
|
ALIGN="left"
|
|||
|
VALIGN="top"
|
|||
|
><A
|
|||
|
HREF="index.html"
|
|||
|
ACCESSKEY="P"
|
|||
|
>Prev</A
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
WIDTH="34%"
|
|||
|
ALIGN="center"
|
|||
|
VALIGN="top"
|
|||
|
><A
|
|||
|
HREF="index.html"
|
|||
|
ACCESSKEY="H"
|
|||
|
>Home</A
|
|||
|
></TD
|
|||
|
><TD
|
|||
|
WIDTH="33%"
|
|||
|
ALIGN="right"
|
|||
|
VALIGN="top"
|
|||
|
><A
|
|||
|
HREF="helloworld.html"
|
|||
|
ACCESSKEY="N"
|
|||
|
>Next</A
|
|||
|
></TD
|
|||
|
></TR
|
|||
|
><TR
|
|||
|
><TD
|
|||
|
WIDTH="33%"
|
|||
|
ALIGN="left"
|
|||
|
VALIGN="top"
|
|||
|
>NCURSES Programming HOWTO</TD
|
|||
|
><TD
|
|||
|
WIDTH="34%"
|
|||
|
ALIGN="center"
|
|||
|
VALIGN="top"
|
|||
|
> </TD
|
|||
|
><TD
|
|||
|
WIDTH="33%"
|
|||
|
ALIGN="right"
|
|||
|
VALIGN="top"
|
|||
|
>Hello World !!!</TD
|
|||
|
></TR
|
|||
|
></TABLE
|
|||
|
></DIV
|
|||
|
></BODY
|
|||
|
></HTML
|
|||
|
>
|