CTK 0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
Loading...
Searching...
No Matches
ctkVTKDataSetModel.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Library: CTK
4
5 Copyright (c) Kitware Inc.
6
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
10
11 http://www.apache.org/licenses/LICENSE-2.0.txt
12
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18
19=========================================================================*/
20
21#ifndef __ctkVTKDataSetModel_h
22#define __ctkVTKDataSetModel_h
23
24// Qt includes
25#include <QStandardItemModel>
26
27// CTK includes
28#include <ctkVTKObject.h>
29
30// CTK includes
31#include "ctkVisualizationVTKWidgetsExport.h"
32
33class vtkDataSet;
34class vtkAbstractArray;
35
37namespace ctkVTK
38{
40 PointerRole = Qt::UserRole + 1,
42 };
43};
44
45class ctkVTKDataSetModelPrivate;
46
47//------------------------------------------------------------------------------
49class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKDataSetModel
50 : public QStandardItemModel
51{
52 Q_OBJECT
54 Q_FLAGS(AttributeType AttributeTypes)
55
56
59 Q_PROPERTY(AttributeTypes attributeTypes READ attributeTypes WRITE setAttributeTypes)
60
66 Q_PROPERTY(bool includeNullItem READ includeNullItem WRITE setIncludeNullItem)
67
68public:
70 typedef QStandardItemModel Superclass;
71 ctkVTKDataSetModel(QObject *parent=0);
73
75 {
76 NoAttribute = 0x1,
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
86 };
87 Q_DECLARE_FLAGS(AttributeTypes, AttributeType)
88
89 virtual void setDataSet(vtkDataSet* dataSet);
90 vtkDataSet* dataSet()const;
91
92 AttributeTypes attributeTypes()const;
93 void setAttributeTypes(const AttributeTypes& attributeTypes);
94
95 bool includeNullItem()const;
96 void setIncludeNullItem(bool includeNullItem);
97 int nullItemLocation()const;
98
101 inline vtkAbstractArray* arrayFromIndex(const QModelIndex& arrayIndex)const;
102
106 inline int locationFromIndex(const QModelIndex& arrayIndex)const;
107
108 vtkAbstractArray* arrayFromItem(QStandardItem* nodeItem)const;
109
113 int locationFromItem(QStandardItem* nodeItem)const;
114
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;
118
119protected Q_SLOTS:
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);
125
126protected:
127
128 ctkVTKDataSetModel(ctkVTKDataSetModelPrivate* pimpl, QObject *parent=0);
129
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();
138
139protected:
140 QScopedPointer<ctkVTKDataSetModelPrivate> d_ptr;
141 int NullItemLocation;
142
143private:
144 Q_DECLARE_PRIVATE(ctkVTKDataSetModel);
145 Q_DISABLE_COPY(ctkVTKDataSetModel);
146};
148
149// -----------------------------------------------------------------------------
150vtkAbstractArray* ctkVTKDataSetModel::arrayFromIndex(const QModelIndex &nodeIndex)const
151{
152 return this->arrayFromItem(this->itemFromIndex(nodeIndex));
153}
154
155// -----------------------------------------------------------------------------
156int ctkVTKDataSetModel::locationFromIndex(const QModelIndex &nodeIndex)const
157{
158 return this->locationFromItem(this->itemFromIndex(nodeIndex));
159}
160
161// -----------------------------------------------------------------------------
162QModelIndex ctkVTKDataSetModel::indexFromArray(vtkAbstractArray* array, int column)const
163{
164 QStandardItem* item = this->itemFromArray(array, column);
165 return item ? item->index() : QModelIndex();
166}
167
168#endif
QStandardItemModel Superclass
QModelIndex indexFromArray(vtkAbstractArray *array, int column=0) const
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...