|
Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
|
00001 /*============================================================================== 00002 00003 Program: 3D Slicer 00004 00005 Copyright (c) Kitware Inc. 00006 00007 See COPYRIGHT.txt 00008 or http://www.slicer.org/copyright/copyright.txt for details. 00009 00010 Unless required by applicable law or agreed to in writing, software 00011 distributed under the License is distributed on an "AS IS" BASIS, 00012 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 See the License for the specific language governing permissions and 00014 limitations under the License. 00015 00016 This file was originally developed by Julien Finet, Kitware Inc. 00017 and was partially funded by NIH grant 3P41RR013218-12S1 00018 00019 ==============================================================================*/ 00020 00021 #ifndef __qMRMLSortFilterProxyModel_h 00022 #define __qMRMLSortFilterProxyModel_h 00023 00024 // Qt includes 00025 #include <QSortFilterProxyModel> 00026 #include <QStringList> 00027 class QStandardItem; 00028 00029 // CTK includes 00030 #include <ctkVTKObject.h> 00031 00032 // qMRML includes 00033 #include "qMRMLWidgetsExport.h" 00034 00035 class vtkMRMLNode; 00036 class vtkMRMLScene; 00037 class qMRMLAbstractItemHelper; 00038 class qMRMLSceneModel; 00039 class qMRMLSortFilterProxyModelPrivate; 00040 00043 class QMRML_WIDGETS_EXPORT qMRMLSortFilterProxyModel : public QSortFilterProxyModel 00044 { 00045 Q_OBJECT 00046 QVTK_OBJECT 00047 00051 Q_PROPERTY(QStringList nodeTypes READ nodeTypes WRITE setNodeTypes) 00052 00053 00054 00055 00056 00057 Q_PROPERTY(bool showHidden READ showHidden WRITE setShowHidden) 00058 00062 Q_PROPERTY(QStringList showHiddenForTypes READ showHiddenForTypes WRITE setShowHiddenForTypes) 00063 00068 Q_PROPERTY(bool showChildNodeTypes READ showChildNodeTypes WRITE setShowChildNodeTypes) 00069 00078 Q_PROPERTY(QStringList hideChildNodeTypes READ hideChildNodeTypes WRITE setHideChildNodeTypes) 00079 00084 Q_PROPERTY(FilterType filterType READ filterType WRITE setFilterType) 00085 Q_ENUMS(FilterType) 00090 Q_PROPERTY(bool showAll READ showAll WRITE setShowAll STORED false) 00094 Q_PROPERTY(bool hideAll READ hideAll WRITE setHideAll STORED false) 00095 00100 Q_PROPERTY(QStringList hiddenNodeIDs READ hiddenNodeIDs WRITE setHiddenNodeIDs) 00101 00106 Q_PROPERTY(QStringList visibleNodeIDs READ visibleNodeIDs WRITE setVisibleNodeIDs) 00107 00111 Q_PROPERTY(QString hideNodesUnaffiliatedWithNodeID READ hideNodesUnaffiliatedWithNodeID WRITE setHideNodesUnaffiliatedWithNodeID) 00112 00113 public: 00114 enum FilterType 00115 { 00116 HideAll = 0, 00117 ShowAll, 00118 UseFilters 00119 }; 00120 00121 typedef QSortFilterProxyModel Superclass; 00122 qMRMLSortFilterProxyModel(QObject *parent=0); 00123 virtual ~qMRMLSortFilterProxyModel(); 00124 00126 vtkMRMLScene* mrmlScene()const; 00127 00129 Q_INVOKABLE QModelIndex mrmlSceneIndex()const; 00130 00132 Q_INVOKABLE vtkMRMLNode* mrmlNodeFromIndex(const QModelIndex& index)const; 00133 00135 Q_INVOKABLE QModelIndex indexFromMRMLNode(vtkMRMLNode* node, int column = 0)const; 00136 00140 QStringList nodeTypes()const; 00141 void setNodeTypes(const QStringList& nodeTypes); 00142 00146 bool showHidden()const; 00147 00152 QStringList showHiddenForTypes()const; 00153 void setShowHiddenForTypes(const QStringList& nodeTypes); 00154 00158 Q_INVOKABLE void addAttribute(const QString& nodeType, 00159 const QString& attributeName, 00160 const QVariant& attributeValue = QVariant()); 00161 00165 void setShowChildNodeTypes(bool show); 00166 bool showChildNodeTypes()const; 00167 00172 void setHideChildNodeTypes(const QStringList& nodeTypes); 00174 QStringList hideChildNodeTypes()const; 00175 00178 void setHiddenNodeIDs(const QStringList& nodeIDsToHide); 00181 QStringList hiddenNodeIDs()const; 00182 00185 void setVisibleNodeIDs(const QStringList& nodeIDsToShow); 00188 QStringList visibleNodeIDs()const; 00189 00193 void setHideNodesUnaffiliatedWithNodeID(const QString& nodeID); 00196 QString hideNodesUnaffiliatedWithNodeID()const; 00197 00200 FilterType filterType()const; 00203 bool showAll()const; 00206 bool hideAll()const; 00207 00209 Q_INVOKABLE qMRMLSceneModel* sceneModel()const; 00210 00211 public slots: 00214 void setShowHidden(bool); 00215 00218 void setFilterType(FilterType filterType); 00221 void setShowAll(bool show); 00224 void setHideAll(bool hide); 00225 00226 // TODO Add setMRMLScene() to propagate to the scene model 00227 protected: 00239 enum AcceptType 00240 { 00241 Reject = 0, 00242 Accept, 00243 RejectButPotentiallyAcceptable, 00244 AcceptButPotentiallyRejectable, 00245 }; 00254 virtual bool filterAcceptsRow(int source_row, 00255 const QModelIndex &source_parent)const; 00260 virtual AcceptType filterAcceptsNode(vtkMRMLNode* node)const; 00261 00262 QStandardItem* sourceItem(const QModelIndex& index)const; 00263 00264 protected: 00265 QScopedPointer<qMRMLSortFilterProxyModelPrivate> d_ptr; 00266 00267 private: 00268 Q_DECLARE_PRIVATE(qMRMLSortFilterProxyModel); 00269 Q_DISABLE_COPY(qMRMLSortFilterProxyModel); 00270 }; 00271 00272 #endif
1.7.4