Choosing a GUI Toolkit for the Interreality S5 User Interface Application

We need to decide on what GUI toolkit to use for the S5 UserInterface (IRUI). Here are some possabilities.

All possible toolkits must support the following (and all of the below do, to one extent or another, except as noted):

  • Fully support Linux, Windows 2000/XP/Vista and Mac OSX.
  • Have standard GUI toolkit features: windows, buttons, radio and check controls, menus, tree control, key handlers, some kind of logical layout scheme
  • Are C or C++ libraries
  • Have support for using a window or panel for Open GL 3D rendering

Comparison

If you have any corrections or can fill in any missing data ("unk"), please do so.

wxWidgets 2.8

Qt 4

FLTK 2.x

GTK

FOX

Blender

Language

C++

C++ w/ MOC extensions

C++

C (C++ w/ GTKmm)

C++

C

License

LGPL

Triple GPL/Qt/Commercial

GPL

LGPL

LGPL

GPL?

Activity

Very active

Very Active

OK

Very active

unk

Good

Community

Very active and helpful

Some, commercially supported

OK

Good

unk

OK

Documentation

Good

Good

OK

Good

unk

None at all

familiarity/popularity

Good

Good

Some

Good

No

None at all

OpenGL win.

Yes

Yes

Yes

w/ GtkGlExt addon (but not well maintained??)

Yes

Yes (all windows!)

Automatically drag splitter dividers (resize panels)

Yes

Yes

No

Yes

unk

Yes

Automatically drag splitter panels around to different configurations

No

unk

No

No

unk

Yes?

Data table widget

add on?

Yes (add-on?)

unk

No

unk

Yes

Full screen mode

unk

unk

unk

unk

Yes

System tray support

Yes?

Yes

No

Yes (only for Linux/GNOME?)

None AFAIK

No

Toolbar in any panel/subwindow

No

unk

unk

Yes?

unk

Yes

TB automatically user customizable

No

yes?

unk

No

unk

No, except order maybe?

TB drag around to different edges

No

unk

unk

No

unk

Yes?

TB detachable to a floating window

No

yes

unk

No

unk

No

vertical accordian widget

No

unk addon?

No

No

unk

No (but subpanels can be minimized)

text editor widget

Add on

unk addon?

Yes, quality unk

No

None AFAIK

Yes, though not great

embedded web browser widget

very basic

Yes, I think

No

No

None AFAIK

No

2D drawing tools (advanced/basic)

Typical

maybe a bit more than typical

Typical

Advanced, w/ Cairo

Typical?

advanced?

Scripting support

python, perl, full api

ECMAScript, own implementation

No

Python, Perl, Ruby, Swiggable

Python, Ruby, Eiffel

not for the UI (in general)?

Undo framework

unk

Add on (nonfree?)

unk

No

No

Maybe

Joysticks and other input devices

Joystick

Drawing tablet; no joystick?

No

No

No

pen tablets? some 3D mice now or in the future?

Language/Translation support built in

Yes, if unicode mode is on

Yes

No?

use seperate tool for translations

No?

Unk. No?

Look and feel matches native OS

Yes

Close, not exact. Can seem a little bit off or clunky (subjective)

No, looks clunky (unless improved in 2.x)

No, except on Linux/Gnome (but themable)

unk

No, but looks good on all

Visual design tool

wxDesigner (not free)

Qt Designer (not free)

FLUID (free)

GLADE, but hard to integrate GLADE and non-GLADE code?

No

No

Bloat

Some

Some, but Qt4 is in seperate libs

Not much

Not much, except for the many utils in glib

a bit

N/A

wxWidgets 2.8

Qt 4

FLTK 2.x

GTK

FOX

Blender

Notes

wxWidgets 2.8

Note, 2.8 is still in development, but 2.6 has all of these features

Bloat: includes various other cross platform abstractions we wouldn't use (networking, databases, etc.) and it is a layer on top of native toolkit.

Also includes own X11-direct implementation (incomplete?), WinCE (still maintained?), Win 9x.

Includes some Windows OLE features, native data structures (windows) are accessible.

Was used in S4 and in the prototype IRUI. Interreality developers are familiar with it.

Qt 4

Interreality developers are somewhat familiar with it

Look and feel is close to platform, not exact. Can seem a little bit off or clunky (subjective)

Bloat includes many other cross platform abstractions we wouldn't use (networking, databases, etc.), various general non GUI features (data structures, XML, ...), many classes, though in Qt 4 some of these features are in seperate libraries from the GUI and core stuff. MOC code generation can create somewhat bloated code.

Must use qmake which sucks.

FLTK 2.x

Note, 2.x is still in development (beta?)

May not have a splitter panel widget, would need to implement'

GTK+

OSX implementation (non-XWindows) is still in development. A bit slow on Windows. Visually it's not native at all on Windows and OSX (so far), it looks pretty good though, and there are themes that might get it looking close.

Some Cellphone support (OpenMoko, a few Nokias), XO (OLPC) Laptop, Maemo, various Unixes

FOX

Note, may run on OSX with X-Windows server, no native port. RUns on BSDs, IRIX, AIX, Sun, HP-UX, Win95, Win98.

Blender

Note, the blender devs are redoing the internal UI framework for Blender 2.5. This work hasn't been done yet. But even then, the UI code won't be a seperate library or be supported for use outside of Blender at all.

Good keyboard navigation. A few nifty features: every part of the GUI is zoomable, for example.

Votes and comments

put your votes and comments here

ChoosingAGUIToolkit (last edited 2008-03-17 14:59:22 by ReedHedges)