# XForms (Toolkit)

XForms ist ein GUI-Toolkit, das auf der Xlib-Bibliothek des X Window Systems aufbaut. Es beinhaltet viele in C implementierte Widget-Objekte, wie beispielsweise Schaltflächen (Buttons), Bildlaufleisten (Scrollbars), Programmenüs und weitere Bedienelemente. Programmiert wurde XForms von T. C. Zhao und Mark Overmars, die es zunächst in einer Version, die für nicht-kommerzielle Anwender kostenlos war, veröffentlichten. Im April 2002 wurde mit dem Erscheinen der Version 0.9999 das komplette Toolkit unter die GNU Lesser General Public License gestellt.

## Ursprung

Das XForms-Toolkit ist ursprünglich auf Silicon Graphics Workstations entstanden, unter Verwendung der IRIS Graphics Library (IRIS GL), der proprietären Vorgängerversion von OpenGL unter IRIX, wurde aber später unter Verwendung der Xlib-Bibliothek auf beliebige X11-Systeme portiert. Dabei verzichtet das Toolkit, im Gegensatz zu den Athena Widgets (Xaw), Motif (Xm) oder OpenLook (XView), auf die Benutzung des X-Toolkits (Xt) und implementiert sämtliche Widgets über direkten Zugriff auf die Xlib-Bibliothek. Für das Toolkit existieren mehrere Bezeichnungen wie „Forms Library for X“, „Forms Library“ oder einfach „XForms“, welche sich aber alle auf das gleiche Toolkit beziehen. Mit dem Ziel, XForms abzulösen, wurde später das C++-basierte Fast Light Toolkit (FLTK) auf Basis der XForms-Bibliothek entwickelt. Das XForms-Toolkit ist somit entfernt verwandt mit dem FLTK.

## Funktionsweise und Besonderheiten

Jedes Programm, das XForms als Oberfläche verwendet, benutzt eine oder mehrere Forms, wobei eine Form ein einfaches Fenster unter X darstellt. Eine „Form“ ist eine Box, in der man Widget-Objekte wie zum Beispiel Schaltflächen, Auswahlfelder und Eingabefelder platzieren kann. Eines der Besonderheiten des Toolkits ist der XForms Form-Designer, ein mitgelieferter interaktiver Oberflächen-Editor zum Erstellen grafischer Oberflächen. Er ermöglicht dem Programmierer seine Programme per Rapid Application Development (RAD) zu entwickeln. Der Form-Designer erlaubt es neue Forms und deren Objekte zu erzeugen, diese zu gruppieren und ihre Eigenschaften zu editieren.
Das Programmiermodell von XForms realisiert die Reaktion auf Ereignisse, wie beispielsweise das Anklicken einer Checkbox, mit Callbacks. Hat eine Form zum Beispiel mehrere Schaltflächen, so kann jeder eine eigene Callback-Funktion zugewiesen werden. In der Hauptschleife des Programms wird auf Ereignisse gewartet und, falls dieses Ereignis ein bestimmtes Objekt betrifft, die entsprechenden Callback-Funktion ausgeführt. Darüber hinaus existieren Anbindungen an die Programmiersprachen Perl, Ada95, Fortran, Pascal, SCM/Guile und Python. Das XForms-Toolkit kann unter den Betriebssystemen IRIX, SunOS/Solaris, HP-UX, AIX, Tru64 UNIX, Linux, macOS, FreeBSD, NetBSD, OpenBSD, UnixWare, OpenVMS, OS/2 und Windows NT 4.0 genutzt werden, wobei die letzten drei nicht mehr aktiv im Quellcode gepflegt werden.

## Einsatzgebiete

Das Toolkit wurde ursprünglich vom Xfce-Projekt für die Gestaltung der grafischen Benutzeroberfläche benutzt, bevor es zum GIMP-Toolkit wechselte. Auch LyX, das grafische WYSIWYG-Frontend für LaTeX, setzte lange Zeit XForms als Basis ein; ab Version 1.5 wird wegen der fehlenden Unicode-Unterstützung im XForms-Toolkit ausschließlich nur noch die Qt-Bibliothek benutzt. Weitere bekannte Programme die das XForms-Toolkit nutzen, sind der E-Mail-Client XFMail, der Fax-Betrachter xfax, das Bearbeitungsprogramm für Audiodateien Digital Audio Processor (DAP) und das kommerzielle CAD-Programm für den Architekturbereich Arcad.

## Beispielcode

Hier ein kleines Beispielprogramm für ein Fenster mit „Okay“-Schaltfläche: