Developer Documentation
OVMPropertyModel< MeshT > Class Template Reference
Inheritance diagram for OVMPropertyModel< MeshT >:
OVMPropertyModelSubclass SingleObjectPropertyModel PropertyModel

Public Member Functions

 OVMPropertyModel (MeshT *mesh, int objectID, QObject *parent=0)
 
virtual void updateWidget (const QModelIndexList &selectedIndices)
 Updates the widget.
 
void resetPicking ()
 Disables picking.
 
virtual void pickProperty ()
 Toggle picking on and off. More...
 
virtual void pickModeChanged (const std::string &_mode)
 Handles changing of pick mode.
 
virtual void mouseEvent (QMouseEvent *_event)
 Handles mouse events for picking. More...
 
virtual bool parseHeader (QString header, PropertyVisualizer *&propVis, unsigned int &n)
 Parses the property file header. More...
 
- Public Member Functions inherited from OVMPropertyModelSubclass
 OVMPropertyModelSubclass (QObject *parent=0)
 
- Public Member Functions inherited from SingleObjectPropertyModel
 SingleObjectPropertyModel (QObject *parent=0)
 
virtual int rowCount (const QModelIndex &parent=QModelIndex()) const override
 
virtual QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
 
virtual QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
 
virtual void objectUpdated () override
 Revisualizes visualized properties.
 
virtual void visualize (QModelIndexList selectedIndices, QWidgetList widgets=QWidgetList()) override
 Visualizes the selected properties. More...
 
virtual void removeProperty (QModelIndexList selectedIndices) override
 Removes the selected properties.
 
virtual void duplicateProperty (QModelIndexList selectedIndices) override
 Duplicates the selected properties.
 
virtual void clear (QModelIndexList selectedIndices) override
 Clears the selected property visualization.
 
void hideWidget () override
 Hides the widget.
 
QWidget * getWidget () override
 Returns the widget.
 
void connectLogs (PropertyVisualizer *propViz) override
 Connects the PropertyVisualizer log signals with the log slot.
 
virtual PropertyInfo getPropertyInfo (const QModelIndex index) const override
 Returns the property info for the property with the given index.
 
virtual QScriptValue getScriptObject (const QModelIndex index, QScriptContext *ctx)
 Returns a qscript object that can be used to access visualisation parameters.
 
- Public Member Functions inherited from PropertyModel
 PropertyModel (QObject *parent=0)
 
QModelIndex indexFromFancyPropName (const QString &propName) const
 Returns the index of the property with the given name.
 
QModelIndex indexFromPlainPropName (const QString &propName) const
 Returns the index of the property with the given name.
 

Static Public Member Functions

static bool isBoolType (const PropertyInfo &propInfo)
 
static bool isBoolType (const TypeInfoWrapper &typeInfo)
 
static bool isIntType (const PropertyInfo &propInfo)
 
static bool isIntType (const TypeInfoWrapper &typeInfo)
 
static bool isDoubleType (const PropertyInfo &propInfo)
 
static bool isDoubleType (const TypeInfoWrapper &typeInfo)
 
static bool isUnsignedIntType (const PropertyInfo &propInfo)
 
static bool isUnsignedIntType (const TypeInfoWrapper &typeInfo)
 
static bool isVec3dType (const PropertyInfo &propInfo)
 
static bool isVec3dType (const TypeInfoWrapper &typeInfo)
 
static bool isVec3fType (const PropertyInfo &propInfo)
 
static bool isVec3fType (const TypeInfoWrapper &typeInfo)
 
static bool isVectorType (const PropertyInfo &propInfo)
 
static bool isVectorType (const TypeInfoWrapper &typeInfo)
 
static bool isMatrix3x3Type (const PropertyInfo &propInfo)
 
static bool isMatrix3x3Type (const TypeInfoWrapper &typeInfo)
 

Protected Member Functions

virtual QString getLoadFilenameFilter ()
 Returns the filename filter for loading.
 
virtual QString getSaveFilenameFilter (unsigned int propId)
 Returns the filename filter for saving.
 
- Protected Member Functions inherited from SingleObjectPropertyModel
PropertyVisualizergetPropertyVisualizer (QString propName, PropertyInfo::ENTITY_FILTER filter, TypeInfoWrapper typeInfo)
 Returns a PropertyVisualizer.
 
bool isPropertyFree (QString propName, PropertyInfo::ENTITY_FILTER filter, TypeInfoWrapper typeInfo)
 Checks if the property name is still available.
 
QString getLoadFilename ()
 Asks the user for a file to load.
 
QString getSaveFilename (unsigned int propId)
 Asks the user for a file to load.
 
virtual QString getDefaultSaveFilename (unsigned int propId)
 Returns the default file name.
 
void saveProperty (unsigned int propId)
 Saves property.
 
void loadProperty ()
 Loads property.
 
virtual void setPropertyFromFile (QTextStream &file_stream, unsigned int n, PropertyVisualizer *propVis)
 Sets the property values from a given file.
 

Private Types

typedef std::set< TypeInfoWrapperTypeInfoWrapperSet
 

Private Member Functions

virtual void combine ()
 Combines two properties. More...
 
bool combinable (PropertyVisualizer *propertyVisualizer1, PropertyVisualizer *propertyVisualizer2) const
 Checks if two properties are combinable. More...
 
virtual void saveProperty ()
 Saves the currently slected properties.
 
void gatherProperties (MeshT *mesh, typename MeshT::Properties::const_iterator props_first, typename MeshT::Properties::const_iterator props_last, PropertyInfo::ENTITY_FILTER filter)
 Searches for properties with a specific entity type and creates visualizers.
 
void gatherProperties ()
 Searches for all properties and creates the visualizers.
 
bool isSupported (OpenVolumeMesh::BaseProperty *const baseProp) const
 Checks if visualizing this property is supported. More...
 
bool isSupported (QString friendlyName) const
 Checks if visualizing this type of property is supported. More...
 
bool isNew (OpenVolumeMesh::BaseProperty *const baseProp, PropertyInfo::ENTITY_FILTER filter) const
 Checks if we already created a PropertyVisualizer for this property. More...
 
bool isPropertyFree (QString propName, PropertyInfo::ENTITY_FILTER filter, TypeInfoWrapper typeInfo)
 Checks if a property name is still available for an entity type and a property type. More...
 
TypeInfoWrapper getSupportedTypeInfoWrapper (OpenVolumeMesh::BaseProperty *const baseProp) const
 Returns the TypeInfoWrapper for the property if it is supported. More...
 
TypeInfoWrapper getSupportedTypeInfoWrapper (QString friendlyName, PropertyInfo::ENTITY_FILTER filter) const
 Returns the TypeInfoWrapper for the type of property if it is supported. More...
 
bool isEntityType (const TypeInfoWrapper &typeInfo, PropertyInfo::ENTITY_FILTER entity_type) const
 
void addPropertyVisualizer (OpenVolumeMesh::BaseProperty *const baseProp, MeshT *mesh, PropertyInfo::ENTITY_FILTER filter)
 Adds a new PropertyVisualizer. More...
 
void addProperty (QString propName, QString friendlyTypeName, PropertyInfo::ENTITY_FILTER filter)
 Adds a new property to the mesh. More...
 
void initializeSupportedPropertyTypes ()
 

Private Attributes

MeshT * mesh_
 
int objectID_
 
QPushButton bCombine
 
const PropertyInfomCombineProperty1
 
const PropertyInfomCombineProperty2
 
LoadSaveWidget mLoadSaveWidget
 
PickWidget mPickWidget
 
bool pickModeActive
 
std::string lastPickMode
 
Viewer::ActionMode lastActionMode
 
TypeInfoWrapperSet supportedPropertyTypes
 

Additional Inherited Members

- Public Slots inherited from OVMPropertyModelSubclass
virtual void slotCombine ()
 
virtual void slotSaveProperty ()
 
virtual void slotLoadProperty ()
 
virtual void slotPickProperty ()
 
- Signals inherited from SingleObjectPropertyModel
void log (Logtype _type, QString _message)
 
void log (QString _message)
 
- Protected Attributes inherited from SingleObjectPropertyModel
std::vector< PropertyVisualizer * > propertyVisualizers
 
QWidget * widgets
 
QModelIndexList currentlySelectedIndices
 
std::vector< unsigned int > currentlyVisualizedIndices
 

Detailed Description

template<typename MeshT>
class OVMPropertyModel< MeshT >

Definition at line 72 of file OVMPropertyModelT.hh.

Member Function Documentation

◆ addProperty()

template<typename MeshT >
void OVMPropertyModel< MeshT >::addProperty ( QString  propName,
QString  friendlyTypeName,
PropertyInfo::ENTITY_FILTER  filter 
)
private

Adds a new property to the mesh.

Parameters
propNameThe name of the property that should be added.
friendlyTypeNameThe type of the property.
filterThe entity type of the property.

This method adds a new property to the mesh. The types "Vec3d", "Vec3d", "double", "unsigned int", "int" and "bool" can be added for every entity type.

Definition at line 768 of file OVMPropertyModelT_impl.hh.

◆ addPropertyVisualizer()

template<typename MeshT >
void OVMPropertyModel< MeshT >::addPropertyVisualizer ( OpenVolumeMesh::BaseProperty *const  baseProp,
MeshT *  mesh,
PropertyInfo::ENTITY_FILTER  filter 
)
private

Adds a new PropertyVisualizer.

Parameters
basePropA pointer to the property that should be visualized.
meshA pointer to the mesh whose properties should be visualized.
filterThe entity type that should be visualized.

This method creates a new PropertyVisualizer depending on the provieded parameters and adds it to the list of PropertyVisualizers.

Definition at line 739 of file OVMPropertyModelT_impl.hh.

◆ combinable()

template<typename MeshT >
bool OVMPropertyModel< MeshT >::combinable ( PropertyVisualizer propertyVisualizer1,
PropertyVisualizer propertyVisualizer2 
) const
private

Checks if two properties are combinable.

Parameters
propertyVisualizer1First PropertyVisualizer for combination.
propertyVisualizer2Second PropertyVisualizer for combination.
Returns
True if the two properties are combinable, false if not.

If the user selects two properties which are both of a vector type (Vec3f or Vec3d) they can be combined. This method will check if the two provided PropertyVisualizers can be comined. Currently PropertyVisualizers can only be combined if both visualize a property with a vector type and the same entity type.

Definition at line 393 of file OVMPropertyModelT_impl.hh.

◆ combine()

template<typename MeshT >
void OVMPropertyModel< MeshT >::combine ( )
privatevirtual

Combines two properties.

If the user selects two properties which are both of a vector type (Vec3f or Vec3d) they can be combined. This method will create a new PropertyVisualizer (an OVMPropertyVisualizerVectorFieldDifference<MeshT> to be exact) but not an additional property.

Reimplemented from OVMPropertyModelSubclass.

Definition at line 363 of file OVMPropertyModelT_impl.hh.

◆ getSupportedTypeInfoWrapper() [1/2]

template<typename MeshT >
TypeInfoWrapper OVMPropertyModel< MeshT >::getSupportedTypeInfoWrapper ( OpenVolumeMesh::BaseProperty *const  baseProp) const
private

Returns the TypeInfoWrapper for the property if it is supported.

Parameters
basePropA pointer to the property.
Returns
A TypeInfoWrapper containing all the type information for the provided property.

Definition at line 500 of file OVMPropertyModelT_impl.hh.

◆ getSupportedTypeInfoWrapper() [2/2]

template<typename MeshT >
TypeInfoWrapper OVMPropertyModel< MeshT >::getSupportedTypeInfoWrapper ( QString  friendlyName,
PropertyInfo::ENTITY_FILTER  filter 
) const
private

Returns the TypeInfoWrapper for the type of property if it is supported.

Returns the TypeInfoWrapper for the type of property and entity if it is supported.

Parameters
friendlyNameThe type we want to visualize in text form.
filterThe type of the entity
Returns
A TypeInfoWrapper containing all the type information for the property type.

Definition at line 522 of file OVMPropertyModelT_impl.hh.

◆ isNew()

template<typename MeshT >
bool OVMPropertyModel< MeshT >::isNew ( OpenVolumeMesh::BaseProperty *const  baseProp,
PropertyInfo::ENTITY_FILTER  filter 
) const
private

Checks if we already created a PropertyVisualizer for this property.

Parameters
basePropA pointer to the property.
filterThe entity type.
Returns
True if we do not have PropertyVisualizer yet for that property, False if we do.

Definition at line 480 of file OVMPropertyModelT_impl.hh.

◆ isPropertyFree()

template<typename MeshT >
bool OVMPropertyModel< MeshT >::isPropertyFree ( QString  propName,
PropertyInfo::ENTITY_FILTER  filter,
TypeInfoWrapper  typeInfo 
)
private

Checks if a property name is still available for an entity type and a property type.

Parameters
propNameThe name of the property.
filterThe entity type of the property.
typeInfoThe type of the property.
Returns
True if the name is still available, False if already in use.

Definition at line 349 of file OVMPropertyModelT_impl.hh.

◆ isSupported() [1/2]

template<typename MeshT >
bool OVMPropertyModel< MeshT >::isSupported ( OpenVolumeMesh::BaseProperty *const  baseProp) const
private

Checks if visualizing this property is supported.

Parameters
basePropA pointer to the property that we want to visualize.
Returns
True if the property can be visualized, False if not.

Definition at line 441 of file OVMPropertyModelT_impl.hh.

◆ isSupported() [2/2]

template<typename MeshT >
bool OVMPropertyModel< MeshT >::isSupported ( QString  friendlyName) const
private

Checks if visualizing this type of property is supported.

Checks if visualizing this property is supported.

Parameters
friendlyNameThe type we want to visualize in text form.
Returns
True if the property type can be visualized, False if not.

Currently supported are the types "bool", "int", "unsigned int", "double", "Vec3d" and "Vec3f"

Definition at line 459 of file OVMPropertyModelT_impl.hh.

◆ mouseEvent()

template<typename MeshT >
void OVMPropertyModel< MeshT >::mouseEvent ( QMouseEvent *  _event)
virtual

Handles mouse events for picking.

If picking mode is active this method will find the picked entity and display its handle and value in the PickWidget.

Reimplemented from SingleObjectPropertyModel.

Definition at line 167 of file OVMPropertyModelT_impl.hh.

◆ parseHeader()

template<typename MeshT >
bool OVMPropertyModel< MeshT >::parseHeader ( QString  header,
PropertyVisualizer *&  propVis,
unsigned int &  n 
)
virtual

Parses the property file header.

Parameters
headerThe header.
[out]propVisThe PropertyVisualizer that will visualize the new property.
[out]nThe number of values stored in the file
Returns
True if parsing was successfull, False if not.

When loading a property from a file this method parses the header placed in the file's first line. If parsing was successfull a new property and a PropertyVisualizer will be created.

Reimplemented from SingleObjectPropertyModel.

Definition at line 213 of file OVMPropertyModelT_impl.hh.

◆ pickProperty()

template<typename MeshT >
void OVMPropertyModel< MeshT >::pickProperty ( )
virtual

Toggle picking on and off.

This method will start and stop the picking.

Reimplemented from OVMPropertyModelSubclass.

Definition at line 132 of file OVMPropertyModelT_impl.hh.


The documentation for this class was generated from the following files: