Modules |
|
Datatypes for the VIEW framework | |
In this section the color datatypes
and their help classes are defined. |
|
QT Dialogs | |
This section contains all dialogs,
which are created with QT. |
|
Kernel | |
This section contains core classes
that are responsible for handling client requests, building
a connection with message queuing between widgets and
dialogs and other things. |
|
Model Processors | |
Geometric Objects | |
The Representation
of molecular structures consists of primitive geometric
objects, e.g. |
|
Renderer | |
The VIEW libary currently contains
two methods for rendering visualisations: The obviously most import is the OPENGL renderer which provides hardware acceleration and is e.g. |
|
Modular Widgets | |
To provide a high grade of
encapsulation of functionality we have developed a design
pattern of independent widgets, called ModularWidget
. |
The GUI toolkit used in this framework is QT because it
provides a portable GUI framework in C++ and allows the use of
the OpenGL library for 3D rendering. VIEW defines several
important basic data structures:
First, the class MainControl is the
most important widget for building an application. The
MainControl is the
main window of the application. It provides a menu bar and a
status bar that can be initialized and changed by its child
widgets. Those child widgets must be derived from ModularWidget
that provides interface methods to create, maintain and remove
menu entries and preferences tab dialogs. Further the
ModularWidget does all the connectivity needed to insert the
widget properly into the MainControl (like
setup the menu entries, fetch the preferences and handle the
signal/slot mechanism of the underlying QT-widgets). To insert
such a widget derived from ModularWidget
just create it with MainControl as
parent. Each ModularWidget is a component that can be used to
build an application block for block. They use a Message
communication queue which is maintained by the class MainControl that
relays all catched messages to all other inserted
ModularWidgets except the one which had originally sent the
message. With these messages it is possible for the widgets to
notify the MainControl of
changes done to the graphical representation of certain objects
or to change the contents of the status bar or even notify of
objects which are no longer available. The forth class we
introduce is the class Scene that provides the
three-dimensional interactive visualization of the above
mentioned GeometricObject
objects. With this class it is possible to rotate, translate,
zoom or pick objects by mouse click. Another important class is
the class GenericControl. With the help of this class the
hierarchical structure of the visualized objects can be
displayed and manipulated.
The following code is an example for building an application
(the includes have been omitted):
int main(int argc, char **argv) { // creating mainframe and application QApplication app(argc, argv); MainControl main; app.setMainWidget(&main); // create the the molecular control new MolecularControl(&main); // create the scene new Scene(&main); // start the application main.show(); return app.exec(); }