Re: The GUI of Choice? (a second opinion)
Wed, 8 May 1996 17:10:44 +0200 (MET DST)

Date: Wed, 8 May 1996 17:10:44 +0200 (MET DST)
Message-Id: <>
Subject: Re: The GUI of Choice? (a second opinion)

Wow! I see that the GUI is a hot issue... The traffic on this
mailing list has increased very quickly. As long as this doesn't
turn into holy wars, this is OK, but I hope that we won't see too
much of "my (programming) language is better than yours"... ;-)

On Tue, 7 May 1996, Bernd.Kreimeier@NeRo.Uni-Bonn.DE wrote:
> I have read and re-read the list, keeping in mind certain
> requirements (your mileage may vary):
> + Linux/X support
> + freely distributable sources & widgets
> + no OSF Motif required (optional is okay)
> + C++ or C, no scripts
> + preferably includes interface builder/editor
> + NT support higly desirable for cross-development
> + allow for Mesa/OpenGL and GLUT use

My requirements for the GUI for DEU and QEU are a bit different:

+ Provide a common interface to the native GUI functions of
several operating systems and graphical interfaces. The
systems that should be supported are, by order of importance:
. UNIX/X (not only Linux), especially Solaris because this
is my main development environment,
. Windows 3.1 or 95, because this is what most people will
want to use,
. DOS (without Windows), because most people who run Quake
or Doom under DOS do not want to start Windows every time
they make a small change to a level,
. Macintosh,
. OS/2.
+ freely distributable sources & widgets.
+ no commercial libraries required (this includes OSF/Motif),
except if they are part of the standard OS (i.e. Windows).
+ C or Java, no C++.
+ preferably includes interface builder/editor.

Most of the problems with existing multi-platform GUIs is that they do
not support at least two of the OSes/GUIs that I want to use (usually,
DOS and Macintosh are missing from the list). That's why I thought
about developing my own, since I have a good knowledge of X11, Windows
and DOS graphics (and some limited knowledge of OS/2 and Mac). Also,
a lot of libraries use C++ and I want to use ANSI C only (although I
use some object-oriented concepts in my code).

The requirements on freely distributable sources and no dependencies
on commerical libraries mean that I want to be sure that anyone is
able to compile (an maybe modify) the toolkit without needing any
commercial packages, except maybe the operating system which they
already have anyway. There are already lots of free toolkits, but
alas none of them are available on all platforms that I would like
to support.

> using XForms (see

I also thought about XForms, which I have been using for something
else, but this is too limited (no support for other OSes) and, as
Bernd said, the sources are not freely distributable.

> QEU -,
> no GUI mentioned, but I remember a home-brew SWAPI...

Well, the page describing the draft version of SWAPI (Simple Windowing
Application Programming Interface) should be at this URL:
... but I just realized that I forgot to upload the pages to my server
after I wrote them. This stuff is outdated anyway, because I wrote
that in December and I haven't updated it since then.

> P.P.S.: I briefly considered a Java GUI (running as a separate
> process/thread), but abandoned the idea as the AWT is
> reportedly not a good choice.

Right. Working around the limitations of the AWT means at least as
much work as writing an interface from scratch in C. The basic
widgets are too limited, and there are some things that you cannot do,
even by sub-classing them. Also, some of them are not very
good-looking (e.g. the list widget under X).

Still, I seriously considered using Java for the interface to QEU,
and I will probably use it anyway for some small tools. But the AWT
is not good enough for a "real" editor, so Java is not an option for
a full-featured editor. Unless Sun or some other company creates a
new windowing toolkit that is better than the current AWT.

> Anybody knowing a good
> toolkit that allows for a Native C (C++?) wrapper?

Very good question, indeed! :-)

I haven't found any toolkit that meets my requirements, so I'm left
with the only solution of developing my own. That's why I started
with SWAPI. But it would be a lot less work for me and the members of
the DEU team if such a toolkit existed somewhere...