The functions documented in this section provide a simple and effective set of high-level calls for managing a stack of control panels and reading prompted information from the user. It is perfectly practical and sensible to build an application interface using only these calls.
The interface design is a simple but workable one: The window is maintained at a 4:3 aspect ratio, the square portion on the left (parametric coordinates x:0.0->0.75; y:0.0->1.0) is used for graphics display, while the remaining columnar window area on the right (parametric coordinates x:0.75->1.0; y:0.0->1.0) is used to display a stack of control panels.
Only the top control panel is visible at any given time. Each control panel consists of a vertical stack of widgets, each displayed through its own camera.
This stereotyped layout isn't as sexy as a full-custom layout, but it makes efficient use of screen area, the stack implements submenuing in a natural way, and the simple columnar layout is quick to program and lends itself to a consistent interface design.
The cameras and facilities used by the graphport and panel parts of the display in fact have identical capabilities, and one can add static widgets in the main graphport area if one wants more of a full-custom interface layout... or one can peruse xg.3d.gui.lsp (which is quite short, since most of the work is done by the underlying classes) and write xmy-very-own-gui.lsp implementing whatever widget policy/facility you like.
Some customization possibilities not documented in this file may be gleaned by reading xg.3d.gui.lsp, the file implementing these functions.