The Aztec Graphical User Interface Layer (AGUI)

Introduction

The 2nd incarnation of Aztec, dubbed "Aztec2", uses a thin layer for wrapping native user interface API's called AztecGUI (usually named as AGUI). This can be either a wrapping layer for the win32 API, Qt, Gtk+, BeOS or any other toolkit on any operating system for handling and drawing of widgets. In the current Aztec code base, there are two layers available; one for win32 and one for Qt3.

Thanks to this easy to use wrapper we can make Aztec look like a native application on all targeted platforms, and even switch to newer, better and nicer API's (thinking of the new Longhorn API's).

Support for additional toolkits may be proposed, under the condition that someone volunteers to keep the layer for that toolkit up-to-date (that is, in a compilable and usable state and on par with the other layers).

Licensing

When possible, the AztecGUI layer is licensed under the terms of the Lesser General Public License (LGPL). however, for some widget toolkits there's a more restrictive license; the Qt3 port (for example) makes use of Qt3 from Trolltech, which is licensed under a cross-license (GPL/QPL), which automatically makes the Qt3 layer for AztecGUI licensed under the GPL as well (hence you cannot create closed source add-on's for this layer - read further about the Javascript GUI code and licensing) because the GPL is more restrictive than the LGPL.

The intended goal is to have most GUI layers availalable under the terms of the LGPL, this makes Aztec more interesting for more people.

Javascript Bindings

SpiderMonkey, bla bla blah..

Menus, Icons and other GUI resources

Resource files for AztecGUI are currently all written in a custom scripting language called 'PhilScript', which is a bit like a very limited C language and parsed by a few very simple routines. We may replace this whole system in the near future using a full XML-based configuration system, possibly with integration of Javascript.

Menu File Format:

menuitem {
}

Icon File Format:

icon {
}

Quick Class Overview

Here's a short overview and description of each class to give you a quick impression of it. (TODO: Pic01?)

+- MComponent: base class for every control in AGUI
|
+-+ MContainer: base class for all Aztec views
|
+ MWindow: main window

#include <todo.h>

Look into OpenOffice.org docs for inspiration (for the architecture docs).

...