Slicer 5.9
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 : public QWidget
56{
57 Q_OBJECT
58 Q_PROPERTY(QString currentNodeID READ currentNodeID WRITE setCurrentNodeID NOTIFY currentNodeIDChanged DESIGNABLE false)
59 Q_PROPERTY(QString currentNodeId READ currentNodeId WRITE setCurrentNode DESIGNABLE false) // \deprecated
60 Q_PROPERTY(QStringList nodeTypes READ nodeTypes WRITE setNodeTypes)
61 Q_PROPERTY(bool showHidden READ showHidden WRITE setShowHidden)
64
65 Q_PROPERTY(QString baseName READ baseName WRITE setBaseName)
72 Q_PROPERTY(bool noneEnabled READ noneEnabled WRITE setNoneEnabled)
73 Q_PROPERTY(bool addEnabled READ addEnabled WRITE setAddEnabled)
74 Q_PROPERTY(bool removeEnabled READ removeEnabled WRITE setRemoveEnabled)
75 Q_PROPERTY(bool editEnabled READ editEnabled WRITE setEditEnabled)
76 Q_PROPERTY(bool renameEnabled READ renameEnabled WRITE setRenameEnabled)
77
85
90 Q_PROPERTY(QString noneDisplay READ noneDisplay WRITE setNoneDisplay)
91
92 Q_PROPERTY(QComboBox::SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy)
93
94public:
95 typedef QWidget Superclass;
96
99 explicit qMRMLNodeComboBox(QWidget* parent = nullptr);
100 ~qMRMLNodeComboBox() override;
101
105 Q_INVOKABLE vtkMRMLScene* mrmlScene() const;
106
110 QStringList nodeTypes() const;
111 void setNodeTypes(const QStringList& nodeTypes);
112
115 inline void setShowHidden(bool);
116 inline bool showHidden() const;
117
124 inline void setShowChildNodeTypes(bool show);
125 inline bool showChildNodeTypes() const;
126
130 inline void setHideChildNodeTypes(const QStringList& nodeTypes);
131 inline QStringList hideChildNodeTypes() const;
132
143 Q_INVOKABLE void addAttribute(const QString& nodeType, const QString& attributeName, const QVariant& attributeValue = QVariant());
146 Q_INVOKABLE void removeAttribute(const QString& nodeType, const QString& attributeName);
147
152 void setBaseName(const QString& baseName, const QString& nodeType = "");
153 QString baseName(const QString& nodeType = "") const;
154
159 Q_INVOKABLE void setNodeTypeLabel(const QString& label, const QString& nodeType);
160 Q_INVOKABLE QString nodeTypeLabel(const QString& nodeType) const;
161
164 Q_INVOKABLE int nodeCount() const;
165
169 Q_INVOKABLE vtkMRMLNode* nodeFromIndex(int index) const;
170
172 Q_INVOKABLE vtkMRMLNode* currentNode() const;
173
176 QString currentNodeID() const;
177
180 Q_INVOKABLE QString currentNodeId() const;
181
187
190 bool noneEnabled() const;
193 void setNoneEnabled(bool enable);
194
197 bool addEnabled() const;
198 void setAddEnabled(bool enable);
199
202 bool removeEnabled() const;
203 void setRemoveEnabled(bool enable);
204
207 bool editEnabled() const;
208 void setEditEnabled(bool enable);
209
211 bool renameEnabled() const;
212 void setRenameEnabled(bool enable);
213
216 QString noneDisplay() const;
217
220 void setNoneDisplay(const QString& displayName);
221
224
228 QAbstractItemModel* model() const;
229
234
240
249
251 QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const;
252 void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy);
253
263 Q_INVOKABLE virtual void addMenuAction(QAction* newAction);
264
265 virtual QString interactionNodeSingletonTag() const;
266 virtual void setInteractionNodeSingletonTag(const QString& tag);
267
268public slots:
271 virtual void setMRMLScene(vtkMRMLScene* scene);
272
275
278 void setCurrentNode(const QString& nodeID);
279
282 void setCurrentNodeID(const QString& nodeID);
283
288 void setCurrentNodeIndex(int index);
289
299 virtual vtkMRMLNode* addNode(QString nodeType);
300
308
311 virtual void removeCurrentNode();
312
314 virtual void editCurrentNode();
315
319 virtual void renameCurrentNode();
320
321signals:
325
328 void currentNodeIDChanged(const QString& id);
329
337
343 void currentNodeChanged(bool validNode);
344
347
351
354
358
361
363 void currentNodeRenamed(const QString& newName);
364
367
368protected:
370 qMRMLNodeComboBox(QAbstractItemModel* model, QWidget* parent = nullptr);
371 qMRMLNodeComboBox(qMRMLNodeComboBoxPrivate* pimpl, QWidget* parent = nullptr);
372 QAbstractItemModel* rootModel() const;
373
374 void setComboBox(QComboBox* comboBox);
375
378 QComboBox* comboBox() const;
379
380 void changeEvent(QEvent* event) override;
381
382protected slots:
383 void activateExtraItem(const QModelIndex& index);
385 void emitNodeActivated(int currentIndex);
386 void emitNodesAdded(const QModelIndex& parent, int start, int end);
387 void emitNodesAboutToBeRemoved(const QModelIndex& parent, int start, int end);
389
390protected:
391 QScopedPointer<qMRMLNodeComboBoxPrivate> d_ptr;
392
393private:
394 Q_DECLARE_PRIVATE(qMRMLNodeComboBox);
395 Q_DISABLE_COPY(qMRMLNodeComboBox);
396
398 void createNodeAs(const QString& nodeTypeName);
399
404 virtual QString getNameFromDialog(const QString& dialogTitle, const QString& defaultName, bool* ok);
405};
406
407// --------------------------------------------------------------------------
409{
410 this->sortFilterProxyModel()->setShowHidden(enable);
411}
412
413// --------------------------------------------------------------------------
415{
416 return this->sortFilterProxyModel()->showHidden();
417}
418
419// --------------------------------------------------------------------------
421{
422 this->sortFilterProxyModel()->setShowChildNodeTypes(show);
423}
424
425// --------------------------------------------------------------------------
427{
428 return this->sortFilterProxyModel()->showChildNodeTypes();
429}
430
431// --------------------------------------------------------------------------
432void qMRMLNodeComboBox::setHideChildNodeTypes(const QStringList& _nodeTypes)
433{
434 this->sortFilterProxyModel()->setHideChildNodeTypes(_nodeTypes);
435}
436
437// --------------------------------------------------------------------------
439{
440 return this->sortFilterProxyModel()->hideChildNodeTypes();
441}
442
443#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.