GUI Toolkits

GUI Toolkits Overview

The LISP Gardeners have an interest in supporting a portable GUI toolkit. This page is for accumulating information about various options.

Team Members

Christopher Roach and Larry Clapp have volunteered to work on this project.
Anyone else?

Overview

Overview of beginner GUI requirements posted by Jack Unrue

Preferences

LTK

LTK is a Common Lisp binding for the Tk graphics toolkit. It does not require any Tk knowledge for its usage. As it is written in pure Lisp, it is highly portable.

con? still evolving

Requires: Tcl/Tk - tclkit is one small download

wxCL

wxCL aims to provide an industrial strength GUI library to application programmers which is portable across Common Lisp implementations and operating system platforms. It builds upon wxWidgets, a comprehensive C++ library that provides uniform application interface to all major GUI platforms: including GTK, Windows, Motif, and MacOS X.

Surendra Singhi posted this pro wxCL post

It should work for all platforms and most lisp implementations as it uses CFFI. Tested on CLISP, Lispworks and Allegro for Windows and on SBCL for Linux.

There is also some work in progress on an interface builder using wxGlade.

wxCL appears to have been inactive for some time: Status thread from Dec. 2006 indicating that the main author has moved on.

GTK

GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites.

Pros

McCLIM

McCLIM is an open source implementation of the Common Lisp Interface Manager specification.

"In my opinion, CLIM in general is not suitable for a newbie to CL. The difference in feel from modern windowing systems like MS Windows, KDE, Gnome, OS X is non trivial." - Andy Cristina

"McCLIM works well on Mac and Linux, but the most mature backend is the CLX backend. A dependency on X kills hopes of Windows use." - Dwight Holman

Putting McCLIM on top of wxCL has several benefits. First, it solves the cross-plattform problem of McCLIM quite elegant. GTK, Aqua, Windows comes all with a single batch of code and wxCL coders on Unix can actually improve the backends for Aqua and Windows without ever booting OS X or Windows (particular important as there are few Windows Lispers out there). Second, it will improve wxCL automatically as McCLIM will be its first demanding user, while we retain the excellent design of CLIM in terms of programmer friendliness and rapid application development. McCLIM + wxCL = everyone wins

Garnet

Garnet, like McCLIM, is a toolkit with all logic above the OS graphics system level implemented in Lisp itself. It was written at Carnegie Mellon University in the early to mid 1990s. It uses a custom object system (unlike McCLIM, it doesn't use CLOS) and has a rather primative appearance, but its compelling advantage is that it is a "true" Lisp GUI toolkit - all of its higher level logic is defined in lisp, rather than being a lisp interface to the actual definition in another library. This approach, while the "pure" one, does place the responsibility for appealing graphics on the toolkit developers.

Garnet currently works only with CLX (there are some ancient MacOS routines which were developed long before OSX) but work was done by Dan Stanger to create an interface to GDI, the low level graphics level on Windows. This work is in Clisp - a very useful project would be to develop a portable cl-gdi to do for Windows what CLX does for X. The Macintosh OSX platform is a bit more complicated - see the McCLIM archives about the Beagle backend for an overview of the problems. OpenMCL does have some Cocoa interfaces defined and the beginnings of a cl-carbon package are on c-l.net - these are promising directions for an OSX backend.

There has recently been some renewal of interest in Garnet, so while it is not currently active on the surface the word is "keep an eye on it - it may become more interesting."

SWT, Swing, AWT

Java based widget toolkits.

Most of the Java GUI elements are available through foil.

DUIM

LispWorks CAPI - commercial

Several Allegro Tools - commercial

Qt for ECL

Currently runs in Linux and under Win32.

Qt4/CFFI

A very basic attempt (not aimed to be a full integration). Uses the dynamic Qt capabilities.


This page is presently Uncategorized: please add appropriate category markers? and remove this text.

This page is linked from:

Gardeners Projects