λgtk is a cross-platform Lisp interface to the complete GTK+2 family of shared libraries.
Version: 0.1λgtk is a cross-platform Lisp interface to the complete GTK+2 family of shared libraries. λgtk currently runs in the following Lisp environments:
Operating System: Linux
PPC/Darwin OpenMCL 0.14.2-p1
x86/Linux SBCL 0.8.16
x86/Linux CMUCL 19a
and is released under the Lisp Lesser General Public License (LLGPL).
If you are familiar with Lisp function call syntax and the GTK API then programming with λgtk is straightforward.
Here are some key features of "lambda gtk":
· Portable GUI programming across the supported Lisp environments.
· Automatic conversion between Lisp data (booleans, numbers, strings) and their equivalent GTK types. Function arguments that involve C pointers to ints, floats and doubles are also handled automatically: foreign values are allocated and initialized by the wrappers, the pointers are passed to GTK and then dereferenced and returned to the Lisp caller as multiple values.
· Lisp names for GTK's enums, structs and functions. Lisp names are formed by substituting "-" for "_" and (possibly) converting C library prefixes into exported Lisp package prefixes (see documentation section below).
· Lisp accessor functions to read/write slot values in GTK structs. Accessors are named struct.slot but may include more than one slot name, e.g. gtk:Widget.allocation.width. The first argument to all accessors is a pointer to a struct; if the referenced slot is an array then a second required argument provides the index. The last argument to all accessors is an optional value, that, if specified, replaces the current value in the slot. For example:
(gdk:Rectangle.x rect) ; return rect's x value
(gdk:Rectangle.x rect 100) ; set rect's x value
· Lisp symbol package(s) that export the GTK API and a read time conditional #+:gtk in *features*.
· A small set of utilities for working with GTK pointers, callbacks and foreign storage in a portable way (see documentation below).