Slicer 5.11
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#include <QStringList>
27
28// qMRML includes
30#include "qMRMLWidgetsExport.h"
32class qMRMLNodeComboBoxPrivate;
33class qMRMLSceneModel;
34
35// VTK includes
36class vtkMRMLNode;
37class vtkMRMLScene;
38
56class QMRML_WIDGETS_EXPORT qMRMLNodeComboBox : 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, const QString& attributeName, const QVariant& attributeValue = QVariant());
147 Q_INVOKABLE void removeAttribute(const QString& nodeType, const QString& attributeName);
148
153 void setBaseName(const QString& baseName, const QString& nodeType = "");
154 QString baseName(const QString& nodeType = "") const;
155
160 Q_INVOKABLE void setNodeTypeLabel(const QString& label, const QString& nodeType);
161 Q_INVOKABLE QString nodeTypeLabel(const QString& nodeType) const;
162
165 Q_INVOKABLE int nodeCount() const;
166
170 Q_INVOKABLE vtkMRMLNode* nodeFromIndex(int index) const;
171
173 Q_INVOKABLE vtkMRMLNode* currentNode() const;
174
177 QString currentNodeID() const;
178
181 Q_INVOKABLE QString currentNodeId() const;
182
188
191 bool noneEnabled() const;
194 void setNoneEnabled(bool enable);
195
198 bool addEnabled() const;
199 void setAddEnabled(bool enable);
200
203 bool removeEnabled() const;
204 void setRemoveEnabled(bool enable);
205
208 bool editEnabled() const;
209 void setEditEnabled(bool enable);
210
212 bool renameEnabled() const;
213 void setRenameEnabled(bool enable);
214
217 QString noneDisplay() const;
218
221 void setNoneDisplay(const QString& displayName);
222
225
229 QAbstractItemModel* model() const;
230
235
241
250
252 QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const;
253 void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy);
254
264 Q_INVOKABLE virtual void addMenuAction(QAction* newAction);
265
266 virtual QString interactionNodeSingletonTag() const;
267 virtual void setInteractionNodeSingletonTag(const QString& tag);
268
269public slots:
272 virtual void setMRMLScene(vtkMRMLScene* scene);
273
276
279 void setCurrentNode(const QString& nodeID);
280
283 void setCurrentNodeID(const QString& nodeID);
284
289 void setCurrentNodeIndex(int index);
290
300 virtual vtkMRMLNode* addNode(QString nodeType);
301
309
312 virtual void removeCurrentNode();
313
315 virtual void editCurrentNode();
316
320 virtual void renameCurrentNode();
321
322signals:
326
329 void currentNodeIDChanged(const QString& id);
330
338
344 void currentNodeChanged(bool validNode);
345
348
352
355
359
362
364 void currentNodeRenamed(const QString& newName);
365
368
369protected:
371 qMRMLNodeComboBox(QAbstractItemModel* model, QWidget* parent = nullptr);
372 qMRMLNodeComboBox(qMRMLNodeComboBoxPrivate* pimpl, QWidget* parent = nullptr);
373 QAbstractItemModel* rootModel() const;
374
375 void setComboBox(QComboBox* comboBox);
376
379 QComboBox* comboBox() const;
380
381 void changeEvent(QEvent* event) override;
382
383protected slots:
384 void activateExtraItem(const QModelIndex& index);
386 void emitNodeActivated(int currentIndex);
387 void emitNodesAdded(const QModelIndex& parent, int start, int end);
388 void emitNodesAboutToBeRemoved(const QModelIndex& parent, int start, int end);
390
391protected:
392 QScopedPointer<qMRMLNodeComboBoxPrivate> d_ptr;
393
394private:
395 Q_DECLARE_PRIVATE(qMRMLNodeComboBox);
396 Q_DISABLE_COPY(qMRMLNodeComboBox);
397
399 void createNodeAs(const QString& nodeTypeName);
400
405 virtual QString getNameFromDialog(const QString& dialogTitle, const QString& defaultName, bool* ok);
406};
407
408// --------------------------------------------------------------------------
410{
411 this->sortFilterProxyModel()->setShowHidden(enable);
412}
413
414// --------------------------------------------------------------------------
416{
417 return this->sortFilterProxyModel()->showHidden();
418}
419
420// --------------------------------------------------------------------------
422{
423 this->sortFilterProxyModel()->setShowChildNodeTypes(show);
424}
425
426// --------------------------------------------------------------------------
428{
429 return this->sortFilterProxyModel()->showChildNodeTypes();
430}
431
432// --------------------------------------------------------------------------
433void qMRMLNodeComboBox::setHideChildNodeTypes(const QStringList& _nodeTypes)
434{
435 this->sortFilterProxyModel()->setHideChildNodeTypes(_nodeTypes);
436}
437
438// --------------------------------------------------------------------------
440{
441 return this->sortFilterProxyModel()->hideChildNodeTypes();
442}
443
444#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.