PonG = Gnome Properties

PonG is a library that eases writing configuration dialogs.  It uses gconf as
the backend and works in a mode where changes are done immediately.

The PonG file is an xml file which describes the different options.  The user
interface is done in several modes

  1) Internal, this is the Pane mode.  This is the prefered mode of operation
    a) Internal with glade.  Arbitrary parts of the dialog can come from glade
    b) [Not done yet] Internal with Bonobo

    You can also intermix glade/Bonobo additions, or not use them at all.
    You need to explicitly use them however as they are sort of add ons.

  # These are basically deprecated, I leave these in for the added flexibility
  # but I really hate these modes, so if you use them I'll smack you.
  2) Manual, you manually create the entire dialog and just let PonG connect
     the widgets to gconf
  3) Glade, the dialog is described in a glade file.  And PonG just connects
     widgets to gconf.

Connecting to Widgets
---------------------

PonG has a definition for keys and interface (they're separate).  All keys 
are described in the pong file.  The pong file normally also describes panes
and any internally created widgets.  It can also add widgets or whole widget
trees from other sources, such as glade or bonobo.  Those things are separated
from the base library for modularity.

Several keys can refer to a single widget.  This is so that you can have
complex widgets that set several keys.

Several stock widgets are supported, but mainly widgets need to implement the
pong interface for getting/setting GConfValues, they also need to accept all
of their "properties" as GtkArgs.

The Pane Mode
-------------

In this mode the interface is described in the pong xml file itself.  The
interface works as follows:  The dialog contains a list of panes, (these are
identical to notebook tabs).  Each pane has a list of groups, which are
represented as frames.  Each frame has a list of widgets.

You can bind into the dialog creation and add your own interface and custom
connection.

Look at pong/testpong.pong for an example file and pong/testpong.c for an
example of the use.  Also look at pong/testpongglade.pong for a use of glade
internally.
