Slicer 5.4
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qMRMLNodeComboBox.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Kitware Inc.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 This file was originally developed by Julien Finet, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qMRMLNodeComboBox_h
22#define __qMRMLNodeComboBox_h
23
24// Qt includes
25#include <QComboBox>
26
27// qMRML includes
29#include "qMRMLWidgetsExport.h"
31class qMRMLNodeComboBoxPrivate;
32class qMRMLSceneModel;
33
34// VTK includes
35class vtkMRMLNode;
36class vtkMRMLScene;
37
55class QMRML_WIDGETS_EXPORT qMRMLNodeComboBox
56 : public QWidget
57{
58 Q_OBJECT
59 Q_PROPERTY(QString currentNodeID READ currentNodeID WRITE setCurrentNodeID NOTIFY currentNodeIDChanged DESIGNABLE false)
60 Q_PROPERTY(QString currentNodeId READ currentNodeId WRITE setCurrentNode DESIGNABLE false) // \deprecated
61 Q_PROPERTY(QStringList nodeTypes READ nodeTypes WRITE setNodeTypes)
62 Q_PROPERTY(bool showHidden READ showHidden WRITE setShowHidden)
63 Q_PROPERTY(bool showChildNodeTypes READ showChildNodeTypes WRITE setShowChildNodeTypes)
64 Q_PROPERTY(QStringList hideChildNodeTypes READ hideChildNodeTypes WRITE setHideChildNodeTypes)
65
66 Q_PROPERTY(QString baseName READ baseName WRITE setBaseName)
73 Q_PROPERTY(bool noneEnabled READ noneEnabled WRITE setNoneEnabled)
74 Q_PROPERTY(bool addEnabled READ addEnabled WRITE setAddEnabled)
75 Q_PROPERTY(bool removeEnabled READ removeEnabled WRITE setRemoveEnabled)
76 Q_PROPERTY(bool editEnabled READ editEnabled WRITE setEditEnabled)
77 Q_PROPERTY(bool renameEnabled READ renameEnabled WRITE setRenameEnabled)
78
85 Q_PROPERTY(QString interactionNodeSingletonTag READ interactionNodeSingletonTag WRITE setInteractionNodeSingletonTag)
86
87 Q_PROPERTY(bool selectNodeUponCreation READ selectNodeUponCreation WRITE setSelectNodeUponCreation)
91 Q_PROPERTY(QString noneDisplay READ noneDisplay WRITE setNoneDisplay)
92
93 Q_PROPERTY(QComboBox::SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy)
94
95public:
96 typedef QWidget Superclass;
97
100 explicit qMRMLNodeComboBox(QWidget* parent = nullptr);
101 ~qMRMLNodeComboBox() override;
102
106 Q_INVOKABLE vtkMRMLScene* mrmlScene()const;
107
111 QStringList nodeTypes()const;
112 void setNodeTypes(const QStringList& nodeTypes);
113
116 inline void setShowHidden(bool);
117 inline bool showHidden()const;
118
125 inline void setShowChildNodeTypes(bool show);
126 inline bool showChildNodeTypes()const;
127
131 inline void setHideChildNodeTypes(const QStringList& nodeTypes);
132 inline QStringList hideChildNodeTypes()const;
133
144 Q_INVOKABLE void addAttribute(const QString& nodeType,
145 const QString& attributeName,
146 const QVariant& attributeValue = QVariant());
149 Q_INVOKABLE void removeAttribute(const QString& nodeType,
150 const QString& attributeName);
151
156 void setBaseName(const QString& baseName, const QString& nodeType = "");
157 QString baseName(const QString& nodeType = "")const;
158
163 Q_INVOKABLE void setNodeTypeLabel(const QString& label, const QString& nodeType);
164 Q_INVOKABLE QString nodeTypeLabel(const QString& nodeType)const;
165
168 Q_INVOKABLE int nodeCount()const;
169
173 Q_INVOKABLE vtkMRMLNode* nodeFromIndex(int index)const;
174
176 Q_INVOKABLE vtkMRMLNode* currentNode()const;
177
180 QString currentNodeID()const;
181
184 Q_INVOKABLE QString currentNodeId()const;
185
189 bool selectNodeUponCreation()const;
190 void setSelectNodeUponCreation(bool value);
191
194 bool noneEnabled()const;
197 void setNoneEnabled(bool enable);
198
201 bool addEnabled()const;
202 void setAddEnabled(bool enable);
203
206 bool removeEnabled()const;
207 void setRemoveEnabled(bool enable);
208
211 bool editEnabled()const;
212 void setEditEnabled(bool enable);
213
215 bool renameEnabled()const;
216 void setRenameEnabled(bool enable);
217
220 QString noneDisplay()const;
221
224 void setNoneDisplay(const QString& displayName);
225
227 QList<vtkMRMLNode*> nodes()const;
228
232 QAbstractItemModel* model()const;
233
237 Q_INVOKABLE qMRMLSortFilterProxyModel* sortFilterProxyModel()const;
238
243 qMRMLSceneModel* sceneModel()const;
244
252 qMRMLNodeFactory* nodeFactory()const;
253
255 QComboBox::SizeAdjustPolicy sizeAdjustPolicy()const;
256 void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy);
257
267 Q_INVOKABLE virtual void addMenuAction(QAction *newAction);
268
269 virtual QString interactionNodeSingletonTag()const;
270 virtual void setInteractionNodeSingletonTag(const QString& tag);
271
272public slots:
275 virtual void setMRMLScene(vtkMRMLScene* scene);
276
278 void setCurrentNode(vtkMRMLNode* node);
279
282 void setCurrentNode(const QString& nodeID);
283
286 void setCurrentNodeID(const QString& nodeID);
287
292 void setCurrentNodeIndex(int index);
293
303 virtual vtkMRMLNode* addNode(QString nodeType);
304
311 virtual vtkMRMLNode* addNode();
312
315 virtual void removeCurrentNode();
316
318 virtual void editCurrentNode();
319
323 virtual void renameCurrentNode();
324
325signals:
328 void currentNodeChanged(vtkMRMLNode* node);
329
332 void currentNodeIDChanged(const QString& id);
333
340 void nodeActivated(vtkMRMLNode* node);
341
347 void currentNodeChanged(bool validNode);
348
351
354 void nodeAdded(vtkMRMLNode* node);
355
357 void nodeAddedByUser(vtkMRMLNode* node);
358
361 void nodeAboutToBeRemoved(vtkMRMLNode* node);
362
365
367 void currentNodeRenamed(const QString& newName);
368
370 void nodeAboutToBeEdited(vtkMRMLNode* node);
371
372protected:
374 qMRMLNodeComboBox(QAbstractItemModel* model, QWidget* parent = nullptr);
375 qMRMLNodeComboBox(qMRMLNodeComboBoxPrivate* pimpl, QWidget* parent = nullptr);
376 QAbstractItemModel* rootModel()const;
377
378 void setComboBox(QComboBox* comboBox);
379
382 QComboBox* comboBox()const;
383
384 void changeEvent(QEvent* event) override;
385
386protected slots:
387 void activateExtraItem(const QModelIndex& index);
388 void emitCurrentNodeChanged();
389 void emitNodeActivated(int currentIndex);
390 void emitNodesAdded(const QModelIndex & parent, int start, int end);
391 void emitNodesAboutToBeRemoved(const QModelIndex & parent, int start, int end);
392 void refreshIfCurrentNodeHidden();
393
394protected:
395 QScopedPointer<qMRMLNodeComboBoxPrivate> d_ptr;
396
397private:
398 Q_DECLARE_PRIVATE(qMRMLNodeComboBox);
399 Q_DISABLE_COPY(qMRMLNodeComboBox);
400};
401
402// --------------------------------------------------------------------------
403void qMRMLNodeComboBox::setShowHidden(bool enable)
404{
405 this->sortFilterProxyModel()->setShowHidden(enable);
406}
407
408// --------------------------------------------------------------------------
410{
411 return this->sortFilterProxyModel()->showHidden();
412}
413
414// --------------------------------------------------------------------------
416{
417 this->sortFilterProxyModel()->setShowChildNodeTypes(show);
418}
419
420// --------------------------------------------------------------------------
422{
423 return this->sortFilterProxyModel()->showChildNodeTypes();
424}
425
426// --------------------------------------------------------------------------
427void qMRMLNodeComboBox::setHideChildNodeTypes(const QStringList& _nodeTypes)
428{
429 this->sortFilterProxyModel()->setHideChildNodeTypes(_nodeTypes);
430}
431
432// --------------------------------------------------------------------------
434{
435 return this->sortFilterProxyModel()->hideChildNodeTypes();
436}
437
438#endif
Combobox that automatically displays all the nodes of the scene that match filtering criteria.
void setShowChildNodeTypes(bool show)
QStringList hideChildNodeTypes
void setHideChildNodeTypes(const QStringList &nodeTypes)
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.