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)
68 Q_PROPERTY (
int transformColumn READ transformColumn WRITE setTransformColumn)
71 Q_PROPERTY (
int idColumn READ idColumn WRITE setIDColumn)
81 SubjectHierarchyItemIDRole = Qt::UserRole + 1,
91 int nameColumn()
const;
92 void setNameColumn(
int column);
94 int visibilityColumn()
const;
95 void setVisibilityColumn(
int column);
97 int colorColumn()
const;
98 void setColorColumn(
int column);
100 int transformColumn()
const;
101 void setTransformColumn(
int column);
104 void setIDColumn(
int column);
106 virtual Qt::DropActions supportedDropActions()
const;
107 virtual QMimeData* mimeData(
const QModelIndexList& indexes)
const;
108 virtual bool dropMimeData(
const QMimeData *data, Qt::DropAction action,
109 int row,
int column,
const QModelIndex &parent);
111 Q_INVOKABLE
virtual void setMRMLScene(
vtkMRMLScene* scene);
117 QStandardItem* subjectHierarchySceneItem()
const;
119 QModelIndex subjectHierarchySceneIndex()
const;
120 virtual bool canBeAChild(vtkIdType itemID)
const;
121 virtual bool canBeAParent(vtkIdType itemID)
const;
123 vtkIdType subjectHierarchyItemFromIndex(
const QModelIndex &index)
const;
124 vtkIdType subjectHierarchyItemFromItem(QStandardItem* item)
const;
125 QModelIndex indexFromSubjectHierarchyItem(vtkIdType itemID,
int column=0)
const;
126 QStandardItem* itemFromSubjectHierarchyItem(vtkIdType itemID,
int column=0)
const;
129 QModelIndexList indexes(vtkIdType itemID)
const;
131 Q_INVOKABLE
virtual vtkIdType parentSubjectHierarchyItem(vtkIdType itemID)
const;
134 Q_INVOKABLE
virtual int subjectHierarchyItemIndex(vtkIdType itemID)
const;
136 Q_INVOKABLE
virtual bool reparent(vtkIdType itemID, vtkIdType newParentID);
138 Q_INVOKABLE
virtual bool moveToRow(vtkIdType itemID,
int newRow);
141 Q_INVOKABLE
bool isAncestorItem(vtkIdType child, vtkIdType ancestor)
const;
144 Q_INVOKABLE
bool isAffiliatedItem(vtkIdType itemA, vtkIdType itemB)
const;
148 void aboutToReparentByDragAndDrop(vtkIdType itemID, vtkIdType newParentID);
150 void reparentedByDragAndDrop(vtkIdType itemID, vtkIdType newParentID);
152 void subjectHierarchyAboutToBeUpdated();
154 void subjectHierarchyUpdated();
156 void requestExpandItem(vtkIdType itemID);
158 void requestCollapseItem(vtkIdType itemID);
162 void invalidateFilter();
166 void onRemoveTransformsFromBranchOfCurrentItem();
169 void onHardenTransformOnBranchOfCurrentItem();
172 virtual void onSubjectHierarchyItemAdded(vtkIdType itemID);
173 virtual void onSubjectHierarchyItemAboutToBeRemoved(vtkIdType itemID);
174 virtual void onSubjectHierarchyItemRemoved(vtkIdType itemID);
175 virtual void onSubjectHierarchyItemModified(vtkIdType itemID);
179 virtual void onMRMLSceneStartBatchProcess(
vtkMRMLScene* scene);
180 virtual void onMRMLSceneEndBatchProcess(
vtkMRMLScene* scene);
183 virtual void onItemChanged(QStandardItem* item);
184 virtual void delayedItemChanged();
188 void updateColumnCount();
196 virtual void updateFromSubjectHierarchy();
197 virtual QStandardItem* insertSubjectHierarchyItem(vtkIdType itemID);
198 virtual QStandardItem* insertSubjectHierarchyItem(vtkIdType itemID, QStandardItem* parent,
int row=-1);
200 virtual QFlags<Qt::ItemFlag> subjectHierarchyItemFlags(vtkIdType itemID,
int column)
const;
202 virtual void updateItemFromSubjectHierarchyItem(
203 QStandardItem* item, vtkIdType shItemID,
int column );
204 virtual void updateItemDataFromSubjectHierarchyItem(
205 QStandardItem* item, vtkIdType shItemID,
int column );
206 virtual void updateSubjectHierarchyItemFromItem(
207 vtkIdType shItemID, QStandardItem* item );
208 virtual void updateSubjectHierarchyItemFromItemData(
209 vtkIdType shItemID, QStandardItem* item );
212 void updateModelItems(vtkIdType itemID);
214 static void onEvent(vtkObject* caller,
unsigned long event,
void* clientData,
void* callData);
217 virtual int maxColumnId()
const;
220 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.