23 #ifndef __qMRMLSubjectHierarchyModel_h 24 #define __qMRMLSubjectHierarchyModel_h 27 #include <QStandardItemModel> 31 #include <ctkVTKObject.h> 34 #include "qSlicerSubjectHierarchyModuleWidgetsExport.h" 36 class qMRMLSubjectHierarchyModelPrivate;
60 Q_PROPERTY (
int nameColumn READ nameColumn WRITE setNameColumn)
63 Q_PROPERTY (
int visibilityColumn READ visibilityColumn WRITE setVisibilityColumn)
66 Q_PROPERTY(
int colorColumn READ colorColumn WRITE setColorColumn)
71 Q_PROPERTY (
int transformColumn READ transformColumn WRITE setTransformColumn)
74 Q_PROPERTY (
int descriptionColumn READ descriptionColumn WRITE setDescriptionColumn)
77 Q_PROPERTY (
int idColumn READ idColumn WRITE setIDColumn)
87 SubjectHierarchyItemIDRole = Qt::UserRole + 1,
97 int nameColumn()
const;
98 void setNameColumn(
int column);
100 int visibilityColumn()
const;
101 void setVisibilityColumn(
int column);
103 int colorColumn()
const;
104 void setColorColumn(
int column);
106 int transformColumn()
const;
107 void setTransformColumn(
int column);
109 int descriptionColumn()
const;
110 void setDescriptionColumn(
int column);
113 void setIDColumn(
int column);
115 Qt::DropActions supportedDropActions()
const override;
116 QMimeData* mimeData(
const QModelIndexList& indexes)
const override;
117 bool dropMimeData(
const QMimeData *data, Qt::DropAction action,
118 int row,
int column,
const QModelIndex &parent)
override;
120 Q_INVOKABLE
virtual void setMRMLScene(
vtkMRMLScene* scene);
126 QStandardItem* subjectHierarchySceneItem()
const;
128 QModelIndex subjectHierarchySceneIndex()
const;
129 virtual bool canBeAChild(vtkIdType itemID)
const;
130 virtual bool canBeAParent(vtkIdType itemID)
const;
132 vtkIdType subjectHierarchyItemFromIndex(
const QModelIndex &index)
const;
133 vtkIdType subjectHierarchyItemFromItem(QStandardItem* item)
const;
134 QModelIndex indexFromSubjectHierarchyItem(vtkIdType itemID,
int column=0)
const;
135 QStandardItem* itemFromSubjectHierarchyItem(vtkIdType itemID,
int column=0)
const;
138 QModelIndexList indexes(vtkIdType itemID)
const;
140 Q_INVOKABLE
virtual vtkIdType parentSubjectHierarchyItem(vtkIdType itemID)
const;
143 Q_INVOKABLE
virtual int subjectHierarchyItemIndex(vtkIdType itemID)
const;
145 Q_INVOKABLE
virtual bool reparent(vtkIdType itemID, vtkIdType newParentID);
147 Q_INVOKABLE
virtual bool moveToRow(vtkIdType itemID,
int newRow);
150 Q_INVOKABLE
bool isAncestorItem(vtkIdType child, vtkIdType ancestor)
const;
153 Q_INVOKABLE
bool isAffiliatedItem(vtkIdType itemA, vtkIdType itemB)
const;
157 void aboutToReparentByDragAndDrop(vtkIdType itemID, vtkIdType newParentID);
159 void reparentedByDragAndDrop(vtkIdType itemID, vtkIdType newParentID);
161 void subjectHierarchyAboutToBeUpdated();
163 void subjectHierarchyUpdated();
165 void requestExpandItem(vtkIdType itemID);
167 void requestCollapseItem(vtkIdType itemID);
171 void invalidateFilter();
175 void onRemoveTransformsFromBranchOfCurrentItem();
178 void onHardenTransformOnBranchOfCurrentItem();
181 virtual void onSubjectHierarchyItemAdded(vtkIdType itemID);
182 virtual void onSubjectHierarchyItemAboutToBeRemoved(vtkIdType itemID);
183 virtual void onSubjectHierarchyItemRemoved(vtkIdType itemID);
184 virtual void onSubjectHierarchyItemModified(vtkIdType itemID);
188 virtual void onMRMLSceneStartBatchProcess(
vtkMRMLScene* scene);
189 virtual void onMRMLSceneEndBatchProcess(
vtkMRMLScene* scene);
192 virtual void onItemChanged(QStandardItem* item);
193 virtual void delayedItemChanged();
197 void updateColumnCount();
207 virtual void rebuildFromSubjectHierarchy();
210 virtual void updateFromSubjectHierarchy();
212 virtual QStandardItem* insertSubjectHierarchyItem(vtkIdType itemID);
213 virtual QStandardItem* insertSubjectHierarchyItem(vtkIdType itemID, QStandardItem* parent,
int row=-1);
215 virtual QFlags<Qt::ItemFlag> subjectHierarchyItemFlags(vtkIdType itemID,
int column)
const;
217 virtual void updateItemFromSubjectHierarchyItem(
218 QStandardItem* item, vtkIdType shItemID,
int column );
219 virtual void updateItemDataFromSubjectHierarchyItem(
220 QStandardItem* item, vtkIdType shItemID,
int column );
221 virtual void updateSubjectHierarchyItemFromItem(
222 vtkIdType shItemID, QStandardItem* item );
223 virtual void updateSubjectHierarchyItemFromItemData(
224 vtkIdType shItemID, QStandardItem* item );
227 void updateModelItems(vtkIdType itemID);
229 static void onEvent(vtkObject* caller,
unsigned long event,
void* clientData,
void* callData);
232 virtual int maxColumnId()
const;
235 QScopedPointer<qMRMLSubjectHierarchyModelPrivate>
d_ptr;
QScopedPointer< qMRMLSubjectHierarchyModelPrivate > d_ptr
MRML node ID of the parent transform.
void printStandardItem(QStandardItem *item, const QString &offset)
MRML node to represent a complete subject hierarchy tree.
QStandardItemModel Superclass
A set of MRML Nodes that supports serialization and undo/redo.
Item model for subject hierarchy.
Abstract Superclass for all specific types of MRML nodes.