OVERVIEW

This is a simple GUI layer to support using the menu and event
handling systems of various toolkits. Initially Gnash used SDL, but
this has slow event handling, and no GUI widgets to create something
like menus or dialog boxes.

Gtk2+ support was added to Gnash so it would work within
Mozilla/Firefox as a plugin to play Flash content. This also allowed
the addition of a mouse menu to control the movie instead of just the
existing keyboard commands. This was a user requested feature, and
also opened the way for a better UI design for the player.

The changes to support both SDL and GTK made the main loop unreadable
ifdef hell, so this class was created to abstract out the guts to make
the main code more readable.

As Gnash's GUI requirements are light, it was decided that while doing
this, support of multiple toolkits would be good. This will enable
better integration on embedded devices where only a framebuffer is
used. This will enable Gnash to have a GUI on platforms with no
windowing system.

At this time, OpenGL and (experimental) Cairo and AGG backends are available.
It should be possible to use OpenGLES (the embedded version). As the
AGG backend is the most functional for a framebuffer, that should be
used for most embedded targets. Cairo also supports a framebuffer
driver, but that renderer is less complete.

STATUS

GTK2:
- implemented OpenGL, Agg and Cairo backends.
- Events work.
- Pop-up menu is available.
- Firefox plugin works.

SDL:
- OpenGL, Agg and Cairo backends.
- Mouse events work (keyboard events don't).
- There's no pop-up menu (and there probably never will be one).
- The Firefox plugin is not available for this frontend.

QT/KDE:
- OpenGL backend.
- A popup menu is available.
- Klash plugin for konqueror is available.

FLTK:
- Doesn't work just yet.

Framebuffer:
- Working as output device only, no input devices currently supported.
