Welcome to the FOX Home Page

Last Update: 2/3/98

What is FOX?

FOX stands for Free Objects for X. FOX is a C++ Class Library for building GUI's under X. However, it is one of the design goals to make FOX-based applications themselves independent of X, so that they may be ported to other platforms simply by porting FOX itself.

FOX intends to provide a rich, easily extensible and customizable, collection of user-interface widgets with the visual characteristics of Windows.

Genesis

I have been terribly unhappy with existing GUI toolkits (XForms, Motif, Xt, etc.), especially when working with C++. As a consequence, I have built C++ wrapper libraries for Motif (now part of CFDRC's VCE), and Windows (my own toil and trouble at home). All of those C++ wrapper libraries suffer from the fundamental problem that, as the basic widgets in their original implementation are not implemented using C++, none of the widget behaviour and drawing characteristics can be changed by subclassing and overloading.

As subclassing and overloading are natural things to do in C++, what's needed is a GUI toolkit that is designed with such things in mind from the very beginning. In addition, we would like to be closer to the metal, i.e. have fewer layers of software between the application and the hardware. The more layers are involved, the more buggy, bloated, and slow a piece of software gets.

Hence, FOX is written directly on top of Xlib. All widgets in FOX are completely defined from C++ objects, and all important functions (such as drawing, etc) can be overloaded to customize behaviour.

Why write this?

Most existing GUI toolkits have been written in C. While it is possible to create C++ wrapper libraries to give these toolkits a new leash on life and make them look like C++, the fact is that such wrappers are missing some fundamental benefits provided with C++.

In addition, in the course of my work on VCE and CFD-VIEW, some novel GUI concepts (persistence, gui-updating, tooltips, object-orientation, messaging, drag-and-drop, etc.) have been explored which may offer significant benefits for GUI programming. None of the existing toolkits offer these things in a natural manner.

FOX Features

Here's a summary of the ideas that are being implemented in the FOX library.

FTP

FTP FOX from here. You may want to check here often, as it is upgraded almost daily.

News

Some late breaking news:

Example GUI's

Here's an example, a DTF File Viewer written by CFDRC.

Drag and Drop Topics

There is still heated debate over a good X Drag and Drop protocol. Hence, I will summarize a few basic requirememts which a DND protocol should provide.

Copyright © 1997 Jeroen van der Zijp, all rights reserved.