Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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)
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
86
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
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
228
232 QAbstractItemModel* model()const;
233
238
244
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
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
312
315 virtual void removeCurrentNode();
316
318 virtual void editCurrentNode();
319
323 virtual void renameCurrentNode();
324
325signals:
329
332 void currentNodeIDChanged(const QString& id);
333
341
347 void currentNodeChanged(bool validNode);
348
351
355
358
362
365
367 void currentNodeRenamed(const QString& newName);
368
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);
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);
393
394protected:
395 QScopedPointer<qMRMLNodeComboBoxPrivate> d_ptr;
396
397private:
398 Q_DECLARE_PRIVATE(qMRMLNodeComboBox);
399 Q_DISABLE_COPY(qMRMLNodeComboBox);
400
402 void createNodeAs(const QString& nodeTypeName);
403
408 virtual QString getNameFromDialog(const QString& dialogTitle, const QString& defaultName, bool* ok);
409};
410
411// --------------------------------------------------------------------------
413{
414 this->sortFilterProxyModel()->setShowHidden(enable);
415}
416
417// --------------------------------------------------------------------------
419{
420 return this->sortFilterProxyModel()->showHidden();
421}
422
423// --------------------------------------------------------------------------
425{
426 this->sortFilterProxyModel()->setShowChildNodeTypes(show);
427}
428
429// --------------------------------------------------------------------------
431{
432 return this->sortFilterProxyModel()->showChildNodeTypes();
433}
434
435// --------------------------------------------------------------------------
436void qMRMLNodeComboBox::setHideChildNodeTypes(const QStringList& _nodeTypes)
437{
438 this->sortFilterProxyModel()->setHideChildNodeTypes(_nodeTypes);
439}
440
441// --------------------------------------------------------------------------
443{
444 return this->sortFilterProxyModel()->hideChildNodeTypes();
445}
446
447#endif
Q_INVOKABLE void addAttribute(const QString &nodeType, const QString &attributeName, const QVariant &attributeValue=QVariant())
Q_INVOKABLE vtkMRMLScene * mrmlScene() const
void currentNodeRenamed(const QString &newName)
Signal emitted when the current node is renamed.
void changeEvent(QEvent *event) override
void emitCurrentNodeChanged()
void setCurrentNodeID(const QString &nodeID)
void setNoneDisplay(const QString &displayName)
Q_INVOKABLE qMRMLSortFilterProxyModel * sortFilterProxyModel() const
void setNodeTypes(const QStringList &nodeTypes)
virtual void setMRMLScene(vtkMRMLScene *scene)
QList< vtkMRMLNode * > nodes() const
Return a list of all the nodes that are displayed in the combo box.
QString interactionNodeSingletonTag
void emitNodesAboutToBeRemoved(const QModelIndex &parent, int start, int end)
void nodeAddedByUser(vtkMRMLNode *node)
Signal emitted when node is added by the user.
virtual void editCurrentNode()
Edits the currently selected node.
virtual void removeCurrentNode()
void nodeActivated(vtkMRMLNode *node)
Q_INVOKABLE int nodeCount() const
void refreshIfCurrentNodeHidden()
void setShowChildNodeTypes(bool show)
void setCurrentNodeIndex(int index)
void setComboBox(QComboBox *comboBox)
void setRenameEnabled(bool enable)
void currentNodeIDChanged(const QString &id)
void setNoneEnabled(bool enable)
QScopedPointer< qMRMLNodeComboBoxPrivate > d_ptr
void setAddEnabled(bool enable)
qMRMLNodeComboBox(QWidget *parent=nullptr)
QStringList hideChildNodeTypes
Q_INVOKABLE void removeAttribute(const QString &nodeType, const QString &attributeName)
void setSelectNodeUponCreation(bool value)
QComboBox::SizeAdjustPolicy sizeAdjustPolicy
QAbstractItemModel * model() const
void currentNodeChanged(vtkMRMLNode *node)
void setBaseName(const QString &baseName, const QString &nodeType="")
Q_INVOKABLE vtkMRMLNode * currentNode() const
Return the currently selected node. 0 if no node is selected.
Q_INVOKABLE vtkMRMLNode * nodeFromIndex(int index) const
Q_INVOKABLE QString nodeTypeLabel(const QString &nodeType) const
QComboBox * comboBox() const
void emitNodesAdded(const QModelIndex &parent, int start, int end)
void nodeAboutToBeEdited(vtkMRMLNode *node)
Signal emitted when edit node menu action is selected.
virtual void renameCurrentNode()
void activateExtraItem(const QModelIndex &index)
virtual void setInteractionNodeSingletonTag(const QString &tag)
Q_INVOKABLE void setNodeTypeLabel(const QString &label, const QString &nodeType)
void nodeAboutToBeRemoved(vtkMRMLNode *node)
void setRemoveEnabled(bool enable)
QAbstractItemModel * rootModel() const
virtual Q_INVOKABLE void addMenuAction(QAction *newAction)
void setEditEnabled(bool enable)
qMRMLSceneModel * sceneModel() const
void nodeAdded(vtkMRMLNode *node)
void setCurrentNode(vtkMRMLNode *node)
Select the node to be current.
void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy)
void emitNodeActivated(int currentIndex)
qMRMLNodeFactory * nodeFactory() const
void setHideChildNodeTypes(const QStringList &nodeTypes)
virtual vtkMRMLNode * addNode(QString nodeType)
Creates a node of the same type as in the "node types" property.
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.