GUI

A stack-based, event-driven, property-driven GUI framework for graphical calculators. Well, why not?

The GUI was represented as a stack of elements. Each element had a number of standard properties (such as type, top, left, width, height, caption) as well as their own custom properties (checkboxes or option buttons could be checked, progress bars had a value).


Clicking on the progress bar increments its value.
A second window can be spawned to illustrate draggable, overlapping windows.

As you moved the mouse around and clicked, events were triggered on affected elements. Each element had its own basic event handler (for example, a checkbox would respond to click event by inverting its checked property) but this could be overridden on a per-control basis to make the GUI do something useful.

Windows could be added as an element, and then controls could be stacked on top of the windows. At the base of the stack was the desktop.


Clipping test, with the clip rectangle deliberately set incorrectly to illustrate how it affected drawing.

Rendering was fairly simple; start at the desktop, then work your way up the stack; changing clipping rectangles (to stop things rendering outside their boundaries) and trigger the paint event of each control.

The whole idea is a bit silly and wouldn't really be very practical on a device with such limited input capabilities and a small, monochrome, low-resolution screen.


Tabbing between elements is one way to get around the lack of a pointing device.