coriolis/hurricane/doc/viewer/InspectorWidget.dox

63 lines
2.6 KiB
C++

// -*- C++ -*-
namespace Hurricane {
/*! \class InspectorWidget
* \brief A Widget to browse through the Hurricane objetcs.
*
* \section secInspectorMM Inspector Memory Management
*
* In order to keep the memory footprint of the Inspector as
* small as possible only the currently viewed Record is allocated.
* The only exception is the root Record itself, which we must
* kept for it has not been passed as a Slot but as a Record.
* Be aware however, that the root Record is destroyed the
* moment the Inspector is, so do not uses the root Record in
* context from which the Inspector has been spawned.
*
* The history from the root Record to the deepest reached
* level of the data structure is kept in a vector of Slots.
* We choose Slot over Record because they are lightweight object.
* Slots containts only a name (usually the object's attribute
* name) and a pointer to that attribute. The Record associated
* to the attribute is generated on demand. To have a completly
* uniform history we must create a special Slot from the root
* Record, unlike others this Slot contains directly the Record
* and not the attribute pointer it has been generated from.
*
* When an Inspector windows is closed by the window manager,
* the widget is not simply hidden, it is fully destroyed
* (see the QWidget \c Qt::WA_DeleteOnClose attribute). Thus, pointers
* to an Inspector Widget are not to be kept.
*
* Any number of Inspector could be created simultanously, even
* on the same datas. Slot & Record beeing on demand, expandables,
* objects.
*/
/*! \function InspectorWidget::InspectorWidget(QWidget* parent=NULL);
* Construct a InspectorWidget. The root Record to browse must
* be sets immediatly afterwards with the setRootRecord()
* method.
*/
/*! \function void InspectorWidget::setRootRecord(Record* record);
* Sets the root record of the Inspector.
*
* \remark The previous root record is freed.
*/
/*! \function void InspectorWidget::setRootOccurrence(Occurrence& occurrence);
* Build a Record from the Occurrence and set it as the root Record.
*
* \remark The previous root record is freed.
*/
}