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 backends are available.
It should be possible to use OpenGLES (the embedded version), but you
may be able to run Cairo on a framebuffer device.

STATUS

GTK2:
- implemented both OpenGL and Cairo backends.
- Events work (mouse and some keyboard ones).
- Pop-up menu is available.
- Firefox plugin works!

SDL:
- OpenGL and Cairo.
- 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, because
  implementing it would develop a dependency on GTK2.


QT:
- Unimplemented. (Klash plugin may still work.)

FLTK:
- Doesn't work just yet.
