Slicer  4.10
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)
63  Q_PROPERTY(QStringList nodeTypes READ nodeTypes WRITE setNodeTypes)
72  Q_PROPERTY(QStringList hideChildNodeTypes READ hideChildNodeTypes WRITE setHideChildNodeTypes)
73 
74 public:
75  typedef QSortFilterProxyModel Superclass;
78 
79  Q_INVOKABLE vtkMRMLSubjectHierarchyNode* subjectHierarchyNode()const;
80  Q_INVOKABLE vtkMRMLScene* mrmlScene()const;
81 
82  QString nameFilter()const;
83  QString attributeNameFilter()const;
84  QString attributeValueFilter()const;
85  QString levelFilter()const;
86  QStringList nodeTypes()const;
87  QStringList hideChildNodeTypes()const;
88 
89  vtkIdType hideItemsUnaffiliatedWithItemID();
90  void setHideItemsUnaffiliatedWithItemID(vtkIdType itemID);
91 
93  Q_INVOKABLE QModelIndex subjectHierarchySceneIndex()const;
94 
96  Q_INVOKABLE vtkIdType subjectHierarchyItemFromIndex(const QModelIndex& index)const;
97 
99  Q_INVOKABLE QModelIndex indexFromSubjectHierarchyItem(vtkIdType itemID, int column=0)const;
100 
103  Q_INVOKABLE int acceptedItemCount(vtkIdType rootItemID)const;
104 
108  virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent)const;
109 
111  virtual bool filterAcceptsItem(vtkIdType itemID, bool canAcceptIfAnyChildIsAccepted=true)const;
112 
113  virtual Qt::ItemFlags flags(const QModelIndex & index)const;
114 
115 public slots:
116  void setNameFilter(QString filter);
117  void setAttributeNameFilter(QString filter);
118  void setAttributeValueFilter(QString filter);
119  void setLevelFilter(QString filter);
120  void setNodeTypes(const QStringList& types);
121  void setHideChildNodeTypes(const QStringList& types);
122 
123 protected:
124 
125  QStandardItem* sourceItem(const QModelIndex& index)const;
126 
127 protected:
128  QScopedPointer<qMRMLSortFilterSubjectHierarchyProxyModelPrivate> d_ptr;
129 
130 private:
133 };
134 
135 #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