Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkImageStatisticsTreeModel.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 
14 #ifndef QmitkImageStatisticsTreeModel_h
15 #define QmitkImageStatisticsTreeModel_h
16 
17 #include "itkSimpleFastMutexLock.h"
18 
20 
21 //MITK
24 
26 
32 {
33  Q_OBJECT
34 
35 public:
36 
37  QmitkImageStatisticsTreeModel(QObject *parent = nullptr);
39 
40  void SetImageNodes(const std::vector<mitk::DataNode::ConstPointer>& nodes);
41  void SetMaskNodes(const std::vector<mitk::DataNode::ConstPointer>& nodes);
42  void Clear();
43 
44  Qt::ItemFlags flags(const QModelIndex &index) const override;
45  QVariant data(const QModelIndex &index, int role) const override;
46  QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
47  int rowCount(const QModelIndex &parent = QModelIndex()) const override;
48  int columnCount(const QModelIndex &parent = QModelIndex()) const override;
49 
50  QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
51  QModelIndex parent(const QModelIndex &child) const override;
52 
53 signals:
54  void dataAvailable();
56  void modelChanged();
57 
58 protected:
59  /*
60  * @brief See 'QmitkAbstractDataStorageModel'
61  */
62  void DataStorageChanged() override;
63  /*
64  * @brief See 'QmitkAbstractDataStorageModel'
65  */
66  void NodePredicateChanged() override;
67  /*
68  * @brief See 'QmitkAbstractDataStorageModel'
69  */
70  void NodeAdded(const mitk::DataNode *node) override;
71  /*
72  * @brief See 'QmitkAbstractDataStorageModel'
73  */
74  void NodeChanged(const mitk::DataNode *node) override;
75  /*
76  * @brief See 'QmitkAbstractDataStorageModel'
77  */
78  void NodeRemoved(const mitk::DataNode *node) override;
79 
80 private:
81  void UpdateByDataStorage();
82 
83  using StatisticsContainerVector = std::vector<mitk::ImageStatisticsContainer::ConstPointer>;
84  /* builds a hierarchical tree model for the image statistics
85  1. Level: Image
86  --> 2. Level: Mask [if exist]
87  --> 3. Level: Timestep [if >1 exist] */
88  void BuildHierarchicalModel();
89 
90  StatisticsContainerVector m_Statistics;
91 
93  std::vector<mitk::DataNode::ConstPointer> m_ImageNodes;
99  std::vector<std::pair<mitk::DataNode::ConstPointer, unsigned int> > m_TimeStepResolvedImageNodes;
101  std::vector<mitk::DataNode::ConstPointer> m_MaskNodes;
103  std::vector<std::pair<mitk::DataNode::ConstPointer, unsigned int>> m_TimeStepResolvedMaskNodes;
104  std::vector<std::string> m_StatisticNames;
105 
106  itk::SimpleFastMutexLock m_Mutex;
107  QmitkImageStatisticsTreeItem *m_RootItem;
108  QVariant m_HeaderFirstColumn;
109 };
110 
111 #endif // mitkQmitkImageStatisticsTreeModel_h
virtual void NodePredicateChanged()=0
virtual void DataStorageChanged()=0
#define MITKIMAGESTATISTICSUI_EXPORT
virtual void NodeChanged(const mitk::DataNode *node)=0
virtual void NodeRemoved(const mitk::DataNode *node)=0
virtual void NodeAdded(const mitk::DataNode *node)=0
Class for nodes of the DataTree.
Definition: mitkDataNode.h:57