23#ifndef __qMRMLSubjectHierarchyModel_h
24#define __qMRMLSubjectHierarchyModel_h
27#include <QStandardItemModel>
31#include <ctkVTKObject.h>
34#include "qSlicerSubjectHierarchyModuleWidgetsExport.h"
36class qMRMLSubjectHierarchyModelPrivate;
132 int row,
int column,
const QModelIndex &parent)
override;
152 QModelIndexList
indexes(vtkIdType itemID)
const;
159 Q_INVOKABLE
virtual bool reparent(vtkIdType itemID, vtkIdType newParentID);
161 Q_INVOKABLE
virtual bool moveToRow(vtkIdType itemID,
int newRow);
228 QStandardItem* item, vtkIdType shItemID,
int column );
230 QStandardItem* item, vtkIdType shItemID,
int column );
232 vtkIdType shItemID, QStandardItem* item );
234 vtkIdType shItemID, QStandardItem* item );
239 static void onEvent(vtkObject* caller,
unsigned long event,
void* clientData,
void* callData);
245 QScopedPointer<qMRMLSubjectHierarchyModelPrivate>
d_ptr;
QVTK_OBJECT int nameColumn
virtual bool canBeAChild(vtkIdType itemID) const
QModelIndex indexFromSubjectHierarchyItem(vtkIdType itemID, int column=0) const
void invalidateFilter()
Triggers invalidating the sort filter proxy model.
virtual void onSubjectHierarchyItemAboutToBeRemoved(vtkIdType itemID)
void setTransformColumn(int column)
virtual Q_INVOKABLE vtkIdType parentSubjectHierarchyItem(vtkIdType itemID) const
virtual void updateSubjectHierarchyItemFromItem(vtkIdType shItemID, QStandardItem *item)
void subjectHierarchyAboutToBeUpdated()
This signal is sent when the whole subject hierarchy is about to be updated.
void requestExpandItem(vtkIdType itemID)
Signal requesting expanding of the subject hierarchy tree item belonging to an item.
QStandardItemModel Superclass
virtual void setSubjectHierarchyNode(vtkMRMLSubjectHierarchyNode *shNode)
Set the subject hierarchy node found in the given scene. Called only internally.
void setIDColumn(int column)
virtual Q_INVOKABLE void setMRMLScene(vtkMRMLScene *scene)
void setNoneEnabled(bool enable)
Qt::DropActions supportedDropActions() const override
virtual void updateItemFromSubjectHierarchyItem(QStandardItem *item, vtkIdType shItemID, int column)
virtual void updateSubjectHierarchyItemFromItemData(vtkIdType shItemID, QStandardItem *item)
virtual void onMRMLSceneImported(vtkMRMLScene *scene)
void subjectHierarchyUpdated()
This signal is sent after the whole subject hierarchy is updated.
void reparentedByDragAndDrop(vtkIdType itemID, vtkIdType newParentID)
This signal is sent after a user dragged and dropped an item in the tree view.
void setColorColumn(int column)
QStandardItem * itemFromSubjectHierarchyItem(vtkIdType itemID, int column=0) const
Q_INVOKABLE vtkMRMLScene * mrmlScene() const
void setNameColumn(int column)
void requestSelectItems(QList< vtkIdType > itemIDs)
Signal requesting selecting items in the tree.
void setDescriptionColumn(int column)
virtual void onMRMLSceneEndBatchProcess(vtkMRMLScene *scene)
vtkIdType subjectHierarchyItemFromIndex(const QModelIndex &index) const
virtual void onItemChanged(QStandardItem *item)
virtual Q_INVOKABLE int subjectHierarchyItemIndex(vtkIdType itemID) const
Q_INVOKABLE bool isAffiliatedItem(vtkIdType itemA, vtkIdType itemB) const
int visibilityColumn() const
virtual void onSubjectHierarchyItemAdded(vtkIdType itemID)
void setNoneDisplay(const QString &displayName)
int descriptionColumn() const
void setVisibilityColumn(int column)
QModelIndex subjectHierarchySceneIndex() const
Invalid until a valid scene is set.
void onHardenTransformOnBranchOfCurrentItem()
Harden transform on branch of current item.
QModelIndexList indexes(vtkIdType itemID) const
Return all the QModelIndexes (all the columns) for a given subject hierarchy item.
int transformColumn() const
qMRMLSubjectHierarchyModel(qMRMLSubjectHierarchyModelPrivate *pimpl, QObject *parent=nullptr)
void aboutToReparentByDragAndDrop(vtkIdType itemID, vtkIdType newParentID)
This signal is sent when a user is about to reparent an item by drag and drop.
void onRemoveTransformsFromBranchOfCurrentItem()
Remove transforms from nodes in branch of current item.
qMRMLSubjectHierarchyModel(QObject *parent=nullptr)
virtual Q_INVOKABLE bool reparent(vtkIdType itemID, vtkIdType newParentID)
Insert/move item in subject hierarchy under new parent.
virtual void onMRMLSceneStartBatchProcess(vtkMRMLScene *scene)
QString noneDisplay() const
static void onEvent(vtkObject *caller, unsigned long event, void *clientData, void *callData)
QMimeData * mimeData(const QModelIndexList &indexes) const override
@ LastRole
Must stay the last enum in the list.
@ SubjectHierarchyItemIDRole
Unique ID of the item, typed vtkIdType.
@ TransformIDRole
MRML node ID of the parent transform.
virtual void onSubjectHierarchyItemRemoved(vtkIdType itemID)
Q_INVOKABLE bool isAncestorItem(vtkIdType child, vtkIdType ancestor) const
void requestCollapseItem(vtkIdType itemID)
Signal requesting collapsing of the subject hierarchy tree item belonging to an item.
vtkIdType subjectHierarchyItemFromItem(QStandardItem *item) const
virtual void delayedItemChanged()
virtual void onMRMLSceneClosed(vtkMRMLScene *scene)
virtual void rebuildFromSubjectHierarchy()
Rebuild model from scratch.
virtual void updateItemDataFromSubjectHierarchyItem(QStandardItem *item, vtkIdType shItemID, int column)
virtual QStandardItem * insertSubjectHierarchyItem(vtkIdType itemID)
virtual int maxColumnId() const
Must be reimplemented in subclasses that add new column types.
virtual void onMRMLNodeRemoved(vtkMRMLNode *node)
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
vtkMRMLSubjectHierarchyNode * subjectHierarchyNode() const
QScopedPointer< qMRMLSubjectHierarchyModelPrivate > d_ptr
void updateModelItems(vtkIdType itemID)
Update the model items associated with the subject hierarchy item.
virtual bool canBeAParent(vtkIdType itemID) const
virtual QStandardItem * insertSubjectHierarchyItem(vtkIdType itemID, QStandardItem *parent, int row=-1)
QStandardItem * subjectHierarchySceneItem() const
nullptr until a valid scene is set
virtual void onSubjectHierarchyItemModified(vtkIdType itemID)
virtual QFlags< Qt::ItemFlag > subjectHierarchyItemFlags(vtkIdType itemID, int column) const
virtual Q_INVOKABLE bool moveToRow(vtkIdType itemID, int newRow)
Move item in subject hierarchy branch to a new row (re-order)
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.
MRML node to represent a complete subject hierarchy tree.
void printStandardItem(QStandardItem *item, const QString &offset)