These tasks will appear in many different contexts and combinations,
some of which we cannot anticipate.
These observations lead quite directly to the following principle of
design: AIPS++ must provide a set of GUI components, which are easy to
combine and configure, and which may be extended in the future by
subclassing. Each GUI component shall be designed so that it can
- be called from an otherwise non-graphical program, thus freeing
the casual programmer from learning the intricacies of computer
graphics
- assembled, along with other components, into a fancy, integrated
application, with many controls and options
- appear as part of a stand-alone application of narrow focus, for
example: the AIPS++ TableEditor allows many tables to be viewed
simultaneoulsy, with a small control panel providing
centralized control (for iconifying and deiconifying windows, raising
windows to the top, and opening new windows)
- called and manipulated from the glish command line, or from any
process connected to the glish ``software bus''.
- has (as much as possible) an abstract public interface, which
describes what the component does: most window-system-specific
details should be hidden from view.
Some further principles of design: