Cvo -- C++ Visual Objects

A Simplified Approach to X Window System Programming

C++ Visual Objects (Cvo) is a new leading edge toolkit for the building of visual tools for the X Window System. Written in the C++ language, Cvo provides an object oriented approach to application writing and greatly reduces the burden on the application writer. Cvo is leveraged off Cray Research's experience in writing visual tools and visual toolkits with the X Window System since 1986. Also, since the product is being written at Cray Research, and it runs on Cray Research Supercomputers as well as UNIX based workstations, it is generally more portable than toolkits targeted at 32 bit workstations. This will become very important with the advent of 64 bit workstations.

Cvo is currently based on the Cray "look and feel," which is based in part on the widely accepted Motif(TM) "look and feel." Although visually Cvo looks like Motif, the true difference is best seen by the application writer. Some of the major differences are:

Object Oriented
Motif and most other toolkits do not benefit from design in an object oriented language, such as C++.
Smaller Executables
Applications written in other toolkits are typically two to four times larger than Cvo applications in terms of executable size.
Less Code to Write
Other toolkits typically require more lines of code to be written by the application developer.
Consistent Interfaces
Most toolkits have a plethora of interfaces which are similar but slightly different. Cvo has a much smaller consistent set of interfaces.
More Maintainable
Due to the above, Cvo applications are inherently more maintainable than similar applications written in other toolkits.

A major feature of Cvo is internationalization. When Cvo is used on an X11, release 5 or later, platform, it takes advantage of the internationalization features provided. Because this has always been designed into Cvo, Cvo is able to as easily use Asian languages, such as Japanese and Chinese, as it is to use English and other European languages. An application need not be rebuilt in order to operate using a different language. Language translations are placed in a resource file and other language specific information is taken from the standard locale definition which is provided by ANSI C, POSIX, and/or the X release. All of the strings which need to be translated for the Cvo library itself are easily accessible. No rebuilding of the library is needed. At this time, Cvo has standard messages, such as "Open", "Save" and "Really Quit?", translated into Japanese, Chinese and French.

Cvo provides a rich set of visual objects, including the standard objects like buttons, text displays, input boxes, pop-up and pull-down menus, scrolling lists and radio-boxes. Cvo also provides an ever growing list of more specialized objects, such as a new chart object which will expand to support 3D charts and pie charts as well as stacked bar charts. canvases on to which the application may paint and icon display windows. Due to its object oriented design, Cvo allows the easy construction of new complex objects by simply using existing objects as building blocks.

Unlike other toolkits available for the X Window System, Cvo trys to consolidate similar concepts within a single method. An example of this is that Cvo has the unique view that "callback" functions should be treated just as any other "event." This reduces the complexity of the system and also reduces the amount of information an application writer must remember in order to use the toolkit.

Overall, Cvo is a visual toolkit designed for the future. It provides a flexible yet easy to learn programming paradigm with which to write more portable and maintainable visual applications.