Slicer  4.8
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
qMRMLSortFilterSubjectHierarchyProxyModel.h
Go to the documentation of this file.
1 /*==============================================================================
2 
3  Program: 3D Slicer
4 
5  Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
6  Queen's University, Kingston, ON, Canada. All Rights Reserved.
7 
8  See COPYRIGHT.txt
9  or http://www.slicer.org/copyright/copyright.txt for details.
10 
11  Unless required by applicable law or agreed to in writing, software
12  distributed under the License is distributed on an "AS IS" BASIS,
13  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  See the License for the specific language governing permissions and
15  limitations under the License.
16 
17  This file was originally developed by Csaba Pinter, PerkLab, Queen's University
18  and was supported through the Applied Cancer Research Unit program of Cancer Care
19  Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
20 
21 ==============================================================================*/
22 
23 #ifndef __qMRMLSortFilterSubjectHierarchyProxyModel_h
24 #define __qMRMLSortFilterSubjectHierarchyProxyModel_h
25 
26 // SubjectHierarchy includes
27 #include "qSlicerSubjectHierarchyModuleWidgetsExport.h"
28 
29 // Qt includes
30 #include <QSortFilterProxyModel>
31 
32 // CTK includes
33 #include <ctkVTKObject.h>
34 #include <ctkPimpl.h>
35 
36 class qMRMLSortFilterSubjectHierarchyProxyModelPrivate;
38 class vtkMRMLScene;
39 class QStandardItem;
40 
42 class Q_SLICER_MODULE_SUBJECTHIERARCHY_WIDGETS_EXPORT qMRMLSortFilterSubjectHierarchyProxyModel : public QSortFilterProxyModel
43 {
44  Q_OBJECT
45  QVTK_OBJECT
46 
48  Q_PROPERTY(QString nameFilter READ nameFilter WRITE setNameFilter)
50  Q_PROPERTY(QString attributeNameFilter READ attributeNameFilter WRITE setAttributeNameFilter)
54  Q_PROPERTY(QString attributeValueFilter READ attributeValueFilter WRITE setAttributeValueFilter)
57  Q_PROPERTY(vtkIdType hideItemsUnaffiliatedWithItemID READ hideItemsUnaffiliatedWithItemID WRITE setHideItemsUnaffiliatedWithItemID)
60  Q_PROPERTY(QString levelFilter READ levelFilter WRITE setLevelFilter)
61 
62 public:
63  typedef QSortFilterProxyModel Superclass;
66 
67  Q_INVOKABLE vtkMRMLSubjectHierarchyNode* subjectHierarchyNode()const;
68  Q_INVOKABLE vtkMRMLScene* mrmlScene()const;
69 
70  QString nameFilter()const;
71  QString attributeNameFilter()const;
72  QString attributeValueFilter()const;
73  QString levelFilter()const;
74 
75  vtkIdType hideItemsUnaffiliatedWithItemID();
76  void setHideItemsUnaffiliatedWithItemID(vtkIdType itemID);
77 
79  Q_INVOKABLE QModelIndex subjectHierarchySceneIndex()const;
80 
82  Q_INVOKABLE vtkIdType subjectHierarchyItemFromIndex(const QModelIndex& index)const;
83 
85  Q_INVOKABLE QModelIndex indexFromSubjectHierarchyItem(vtkIdType itemID, int column=0)const;
86 
89  Q_INVOKABLE int acceptedItemCount(vtkIdType rootItemID)const;
90 
94  virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent)const;
95 
97  virtual bool filterAcceptsItem(vtkIdType itemID, bool canAcceptIfAnyChildIsAccepted=true)const;
98 
99  virtual Qt::ItemFlags flags(const QModelIndex & index)const;
100 
101 public slots:
102  void setNameFilter(QString filter);
103  void setAttributeNameFilter(QString filter);
104  void setAttributeValueFilter(QString filter);
105  void setLevelFilter(QString filter);
106 
107 protected:
108 
109  QStandardItem* sourceItem(const QModelIndex& index)const;
110 
111 protected:
112  QScopedPointer<qMRMLSortFilterSubjectHierarchyProxyModelPrivate> d_ptr;
113 
114 private:
115  Q_DECLARE_PRIVATE(qMRMLSortFilterSubjectHierarchyProxyModel);
116  Q_DISABLE_COPY(qMRMLSortFilterSubjectHierarchyProxyModel);
117 };
118 
119 #endif
MRML node to represent a complete subject hierarchy tree.
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:54