21 #ifndef __ctkVTKDataSetModel_h
22 #define __ctkVTKDataSetModel_h
25 #include <QStandardItemModel>
31 #include "ctkVisualizationVTKWidgetsExport.h"
34 class vtkAbstractArray;
45 class ctkVTKDataSetModelPrivate;
50 :
public QStandardItemModel
59 Q_PROPERTY(AttributeTypes attributeTypes READ attributeTypes WRITE setAttributeTypes)
66 Q_PROPERTY(
bool includeNullItem READ includeNullItem WRITE setIncludeNullItem)
77 ScalarsAttribute = 0x2,
78 VectorsAttribute = 0x4,
79 NormalsAttribute = 0x8,
80 TCoordsAttribute = 0x10,
81 TensorsAttribute = 0x20,
82 GlobalIDsAttribute = 0x40,
83 PedigreeIDsAttribute = 0x80,
84 EdgeFlagAttribute = 0x100,
85 AllAttribute = NoAttribute | ScalarsAttribute | VectorsAttribute | NormalsAttribute | TCoordsAttribute | TensorsAttribute | GlobalIDsAttribute | PedigreeIDsAttribute | EdgeFlagAttribute
87 Q_DECLARE_FLAGS(AttributeTypes, AttributeType)
89 virtual
void setDataSet(vtkDataSet* dataSet);
90 vtkDataSet* dataSet()const;
92 AttributeTypes attributeTypes()const;
93 void setAttributeTypes(const AttributeTypes& attributeTypes);
95 bool includeNullItem()const;
96 void setIncludeNullItem(
bool includeNullItem);
97 int nullItemLocation()const;
101 inline vtkAbstractArray* arrayFromIndex(const QModelIndex& arrayIndex)const;
106 inline
int locationFromIndex(const QModelIndex& arrayIndex)const;
108 vtkAbstractArray* arrayFromItem(QStandardItem* nodeItem)const;
113 int locationFromItem(QStandardItem* nodeItem)const;
115 inline QModelIndex indexFromArray(vtkAbstractArray* array,
int column = 0)const;
116 QStandardItem* itemFromArray(vtkAbstractArray* array,
int column = 0)const;
117 QModelIndexList indexes(vtkAbstractArray* array)const;
120 void onDataSetModified(vtkObject* dataSet);
121 void onDataSetPointDataModified(vtkObject* dataSetPointData);
122 void onDataSetCellDataModified(vtkObject* dataSetCellData);
123 void onArrayModified(vtkObject* array);
124 void onItemChanged(QStandardItem * item);
130 virtual
void insertArray(vtkAbstractArray* array,
int location);
131 virtual
void insertArray(vtkAbstractArray* array,
int location,
int row);
132 virtual
void updateItemFromArray(QStandardItem* item, vtkAbstractArray* array,
int location,
int column);
133 virtual
void updateArrayFromItem(vtkAbstractArray* array, QStandardItem* item);
134 virtual
void updateDataSet();
135 virtual
void populateDataSet();
136 virtual
void insertNullItem();
137 virtual
void removeNullItem();
140 QScopedPointer<ctkVTKDataSetModelPrivate> d_ptr;
141 int NullItemLocation;
152 return this->arrayFromItem(this->itemFromIndex(nodeIndex));
158 return this->locationFromItem(this->itemFromIndex(nodeIndex));
164 QStandardItem* item = this->itemFromArray(array, column);
165 return item ? item->index() : QModelIndex();
QStandardItemModel Superclass
QModelIndex indexFromArray(vtkAbstractArray *array, int column=0) const
virtual ~ctkVTKDataSetModel()
ctkVTKDataSetModel(QObject *parent=0)
int locationFromIndex(const QModelIndex &arrayIndex) const
Q_DECLARE_OPERATORS_FOR_FLAGS(ctkVTKDataSetModel::AttributeTypes)
#define QVTK_OBJECT
Define VTK/Qt event/slot connection utility methods. It is a convenient macro that declares and defin...