cwidget is a C++ user interface library for terminal-based
applications.

[[toc ]]

## Introduction
<a name="introduction">

cwidget is a modern, high-level C++ user interface library using
[ncurses][] as its display and input layer.  It uses the signal/slot
programming model popularized by toolkits such as [GTK+][] and [Qt][],
using [SigC++][] to provide signals and slots.

[GTK+]:    <http://www.gtk.org>
[Qt]:      <https://qt-project.org/>
[SigC++]:  <http://libsigc.sourceforge.net>
[ncurses]: <http://www.gnu.org/software/ncurses/>

This screenshot of [aptitude][] in action shows some of cwidget's
features:

!["Screenshot"](aptitude-cwidget.png)

[aptitude]: <http://people.debian.org/~dburrows/aptitude>

For more details and information about
[[getting_cwidget|documentation/downloading]], see the cwidget
[[documentation]].

## Features
<a name="features">

cwidget's features include:

  * Support for overlapping widgets.
  * Event-driven programming using signals and slots.
  * A well-defined threading model with support for injecting events
    from background threads into the foreground thread.
  * Support for formatting text with styles, paragraph flowing, and
    indented blocks.
  * Support for cascading, user-configurable styles.

<!-- TODO: cwidget has more features, need to add them here. :-) -->

## Status
<a name="status">

cwidget was originally an internal user interface library for the
[aptitude][] package manager.  This means, on the one hand, that
cwidget is known to work in the real world for a real application; on
the other hand, it means that the feature set of cwidget is
coextensive with the requirements of aptitude.  Features not needed by
aptitude may be missing or incomplete, and cwidget's documentation is
spotty.  For this reason, the current focus of cwidget development is
on filling in gaps in the library and documenting existing code.

## Contact
<a name="contact">

  * Questions about downloading, compiling, installing, or writing
    software that uses cwidget should be directed to
    <cwidget-users@lists.alioth.debian.org>.  To subscribe to this
    list, visit its [web page][cwidget-users].
  * Bug reports, feature requests, patches, and general discussion
    about the [[development|documentation/contributing]] of cwidget
    should be directed to <cwidget-devel@lists.alioth.debian.org>.
    To subscribe to this list, visit its [web page][cwidget-devel].

[cwidget-users]: <http://lists.alioth.debian.org/mailman/listinfo/cwidget-users>
[cwidget-devel]: <http://lists.alioth.debian.org/mailman/listinfo/cwidget-devel>

----

This Web site is generated by [ikiwiki](http://ikiwiki.info).
