-*- text -*-

This is rep-gtk 0.0, a binding of GTK+/GNOME/libglade for the rep Lisp
system. It is based on Marius Vollmer's guile-gtk binding (initially
version 0.15, updated to 0.17), with a new glue-code generator.

For more details see:

	http://rep-gtk.sourceforge.net/

Browse the CVS history at:

	http://tizer.dcs.warwick.ac.uk:8080/cgi-bin/cvsweb/rep-gtk


Installation
============

Basically, `./configure ; make ; make install'. If you're building from
the CVS repository, execute `aclocal ; autoconf' first.

Currently it only works with GTK 1.2.


Usage
=====

Do `(require 'gtk)' to load the library, then call functions as in
guile-gtk. The only difference is that Lisp conventions are used for
booleans, i.e. nil for #f, and non-nil for #t.

I changed the names of three functions:

	gtk-idle-add-full => gtk-idle-add
	gtk-container-foreach-full => gtk-container-foreach
	gtk-signal-set-class-function-full => gtk-signal-set-class-function


libglade
========

Also included is a binding of James Henstridge's excellent libglade
(http://www.daa.com.au/~james/gnome/)

From the libglade README file:

    This library allows you to load glade interface files in a program
    at runtime. It doesn't require GLADE to be used, but GLADE is by
    far the easiest way to create the interface files.

So you can now use GLADE with rep! Here's an example from the
examples/test-libglade script:

    (require 'libglade)

    (let
        ((xml (or (glade-xml-new (car command-line-args))
                  (error "something bad happened"))))

      (glade-xml-signal-autoconnect xml)
      (gtk-main))

The glade-xml-new function takes a filename, and creates a widget
hierarchy. glade-xml-signal-autoconnect connects all signal handlers to
the lisp functions named in the GLADE file. You can also use the
glade-xml-signal-connect function to connect individually named
handlers. (see libglade.defs for the complete function list)


GNOME
=====

There's also now reasonably complete bindings of gnome and gnomeui.
Three extra modules will get built and installed:

	gnomelib	Non-UI GNOME functions, doesn't require GTK
	gnomeui		GNOME UI widgets and utilities
	gnome-canvas	GNOME Canvas widgets and utilities

see the .defs files for the gruesome details about what goes in what.
You only need to require the most high-level if more than one module is
being used. The dependence tree is something like:

	sgtk-types -+- gtk -+- libglade
		     \	     \
		      \	       gnomeui -- gnome-canvas
		       \
			 gnomelib

sgtk-types provides conversions for the basic C types (and GLIB's GList
and GSList types).

*Note* that before using any `gnomeui' functions, you _must_ call
`gnome-init'. Likewise, if using `gnomelib' without `gnomeui', you
_must_ call `gnomelib-init'

To use libglade with the GNOME widgets, require the `libglade-gnome'
module instead of `libglade', then remember to call `gnome-init'!


Caveats
=======

It's still too easy to crash the Lisp interpreter through invalid use
of GTK..
