17 #include <itkCommand.h> 23 : QAbstractListModel(parent),
24 m_PointSetNode(nullptr),
25 m_PointSetModifiedObserverTag(0),
26 m_PointSetDeletedObserverTag(0),
35 return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
46 QAbstractListModel::beginResetModel();
47 QAbstractListModel::endResetModel();
59 QAbstractListModel::beginResetModel();
60 QAbstractListModel::endResetModel();
78 if (oldPointSet.IsNotNull())
84 catch (std::exception &e)
86 MITK_ERROR <<
"Exception while removing observer from old point set node: " << e.what();
95 if (pointSet.IsNotNull())
98 itk::ReceptorMemberCommand<QmitkPointListModel>::Pointer modCommand =
99 itk::ReceptorMemberCommand<QmitkPointListModel>::New();
104 itk::ReceptorMemberCommand<QmitkPointListModel>::Pointer delCommand =
105 itk::ReceptorMemberCommand<QmitkPointListModel>::New();
118 QAbstractListModel::beginResetModel();
119 QAbstractListModel::endResetModel();
134 QAbstractListModel::beginResetModel();
135 QAbstractListModel::endResetModel();
141 if (pointSet.IsNotNull())
155 if (pointSet.IsNull())
160 if (!index.isValid())
165 if (index.row() >= pointSet->GetSize(
m_TimeStep))
170 if (role == Qt::DisplayRole)
172 mitk::PointSet::PointsContainer::ElementIdentifier id;
175 if (pointFound ==
false)
178 QString s = QString(
"%0: (%1, %2, %3)").arg(
id, 3).arg(p[0], 0,
'f', 3).arg(p[1], 0,
'f', 3).arg(p[2], 0,
'f', 3);
189 if (role != Qt::DisplayRole)
194 if (orientation == Qt::Horizontal)
196 return QString(
"Coordinates").arg(section);
200 return QString(
"Row %1").arg(section);
209 if (pointSet.IsNull())
212 if ((index.row() < 0) || (index.row() >= (int)pointSet->GetPointSet(
m_TimeStep)->GetPoints()->Size()))
219 mitk::PointSet::PointsContainer::Iterator it = pointSet->GetPointSet(
m_TimeStep)->GetPoints()->Begin();
220 for (
int i = 0; i < index.row(); ++i)
224 if (it == pointSet->GetPointSet(
m_TimeStep)->GetPoints()->End())
228 if (it != pointSet->GetPointSet(
m_TimeStep)->GetPoints()->End())
241 if (pointSet.IsNull())
244 mitk::PointSet::PointsContainer::Pointer points = pointSet->GetPointSet(
m_TimeStep)->GetPoints();
246 if (points->IndexExists(
id) ==
false)
249 unsigned int idx = 0;
250 for (mitk::PointSet::PointsContainer::Iterator it = points->Begin(); it != points->End(); ++it)
252 if (it->Index() == id)
254 index = this->index(idx);
267 if (pointSet.IsNull())
271 selectedID = pointSet->SearchSelectedPoint(
m_TimeStep);
275 pointSet->ExecuteOperation(doOp);
282 if (pointSet.IsNull())
286 selectedID = pointSet->SearchSelectedPoint(
m_TimeStep);
290 pointSet->ExecuteOperation(doOp);
297 if (pointSet.IsNull())
301 selectedID = pointSet->SearchSelectedPoint(
m_TimeStep);
305 pointSet->ExecuteOperation(doOp);
314 if (pointSet.IsNotNull())
void RemoveSelectedPoint()
QVariant data(const QModelIndex &index, int role) const override
interface of QAbstractListModel
mitk::PointSet * CheckForPointSetInNode(mitk::DataNode *node) const
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
interface of QAbstractListModel
int rowCount(const QModelIndex &parent=QModelIndex()) const override
interface of QAbstractListModel
mitk::PointSet * GetPointSet() const
which point set to work on
void MoveSelectedPointUp()
Constants for most interaction classes, due to the generic StateMachines.
QmitkPointListModel(mitk::DataNode *=nullptr, int t=0, QObject *parent=nullptr)
void SetTimeStep(int t)
which time step to display/model
unsigned int m_PointSetDeletedObserverTag
void SetPointSetNode(mitk::DataNode *pointSetNode)
which point set to work on
void ObserveNewPointSet(mitk::DataNode *pointSetNode)
internally observe different point set
DataType::PointIdentifier PointIdentifier
void OnPointSetChanged(const itk::EventObject &e)
itk observer for point set "modified" events
BaseData * GetData() const
Get the data object (instance of BaseData, e.g., an Image) managed by this DataNode.
Data structure which stores a set of points. Superclass of mitk::Mesh.
static RenderingManager * GetInstance()
int GetTimeStep() const
which time step to display/model
Operation that handles all actions on one Point.
bool GetPointForModelIndex(const QModelIndex &index, mitk::PointSet::PointType &p, mitk::PointSet::PointIdentifier &id) const
get point and point ID that correspond to a given QModelIndex
bool GetModelIndexForPointID(mitk::PointSet::PointIdentifier id, QModelIndex &index) const
returns a QModelIndex for a given point ID
void MoveSelectedPointDown()
Qt::ItemFlags flags(const QModelIndex &) const override
unsigned int m_PointSetModifiedObserverTag
mitk::DataNode * m_PointSetNode
void OnPointSetDeleted(const itk::EventObject &e)
itk observer for point set "delete" events
void SignalUpdateSelection()
void RequestUpdateAll(RequestType type=REQUEST_UPDATE_ALL)
Class for nodes of the DataTree.
~QmitkPointListModel() override