Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qMRMLSubjectHierarchyTreeView.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
6 Queen's University, Kingston, ON, Canada. All Rights Reserved.
7
8 See COPYRIGHT.txt
9 or http://www.slicer.org/copyright/copyright.txt for details.
10
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16
17 This file was originally developed by Csaba Pinter, PerkLab, Queen's University
18 and was supported through the Applied Cancer Research Unit program of Cancer Care
19 Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
20
21==============================================================================*/
22
23#ifndef __qMRMLSubjectHierarchyTreeView_h
24#define __qMRMLSubjectHierarchyTreeView_h
25
26// Qt includes
27#include <QTreeView>
28
29// CTK includes
30#include <ctkVTKObject.h>
31
32// SubjectHierarchy includes
33#include "qSlicerSubjectHierarchyModuleWidgetsExport.h"
34
35class qMRMLSubjectHierarchyTreeViewPrivate;
38class vtkMRMLNode;
39class vtkMRMLScene;
41class vtkIdList;
42
43class Q_SLICER_MODULE_SUBJECTHIERARCHY_WIDGETS_EXPORT qMRMLSubjectHierarchyTreeView : public QTreeView
44{
45 Q_OBJECT
46 QVTK_OBJECT
47
52 Q_PROPERTY(bool showRootItem READ showRootItem WRITE setShowRootItem)
67 Q_PROPERTY(QStringList levelFilter READ levelFilter WRITE setLevelFilter)
68 Q_PROPERTY(QString nameFilter READ nameFilter WRITE setNameFilter)
69 Q_PROPERTY(QStringList nodeTypes READ nodeTypes WRITE setNodeTypes)
76 Q_PROPERTY(QStringList pluginAllowList READ pluginAllowList WRITE setPluginAllowList)
77 Q_PROPERTY(QStringList pluginBlockList READ pluginBlockList WRITE setPluginBlockList)
78
81 Q_PROPERTY(bool noneEnabled READ noneEnabled WRITE setNoneEnabled)
85 Q_PROPERTY(QString noneDisplay READ noneDisplay WRITE setNoneDisplay)
86
97
107
110
111public:
112 typedef QTreeView Superclass;
113 qMRMLSubjectHierarchyTreeView(QWidget* parent = nullptr);
115
116public:
117 Q_INVOKABLE vtkMRMLScene* mrmlScene() const;
118
122
124 Q_INVOKABLE vtkIdType currentItem() const;
126 QList<vtkIdType> currentItems();
129 Q_INVOKABLE void currentItems(vtkIdList* selectedItems);
130
132 Q_INVOKABLE virtual vtkMRMLNode* currentNode() const;
133
135 Q_INVOKABLE vtkIdType rootItem() const;
137 bool showRootItem() const;
138
141
144
149 QString attributeValueFilter() const;
150 QString attributeNameFilter() const;
155 Q_INVOKABLE void setAttributeFilter(const QString& attributeName, const QVariant& attributeValue = QVariant());
157 Q_INVOKABLE void removeAttributeFilter();
165 Q_INVOKABLE void addItemAttributeFilter(QString attributeName, QVariant attributeValue = QString(), bool include = true);
167 Q_INVOKABLE void removeItemAttributeFilter(QString attributeName, QVariant attributeValue, bool include);
169 Q_INVOKABLE void removeItemAttributeFilter(QString attributeName, bool include);
178 Q_INVOKABLE void addNodeAttributeFilter(QString attributeName, QVariant attributeValue = QString(), bool include = true, QString className = QString());
180 Q_INVOKABLE void removeNodeAttributeFilter(QString attributeName, QVariant attributeValue, bool include, QString className);
182 Q_INVOKABLE void removeNodeAttributeFilter(QString attributeName, bool include);
183
185 void setLevelFilter(QStringList& levelFilter);
186 QStringList levelFilter() const;
187
189 void setNameFilter(QString& nameFilter);
190 QString nameFilter() const;
191
193 void setNodeTypes(const QStringList& types);
194 QStringList nodeTypes() const;
195
200 void setBaseName(const QString& baseName, const QString& nodeType = "");
201 QString baseName(const QString& nodeType = "") const;
202
207 Q_INVOKABLE void setNodeTypeLabel(const QString& label, const QString& nodeType);
208 Q_INVOKABLE QString nodeTypeLabel(const QString& nodeType) const;
209
212 void setHideChildNodeTypes(const QStringList& types);
213 QStringList hideChildNodeTypes() const;
214
216 Q_INVOKABLE qMRMLSubjectHierarchyModel* model() const;
217
219 Q_INVOKABLE int displayedItemCount() const;
220
222 bool contextMenuEnabled() const;
225 bool noneEnabled() const;
226 QString noneDisplay() const;
227
229 void setVisibilityColumnVisible(bool visible);
232 void setIdColumnVisible(bool visible);
235 void setColorColumnVisible(bool visible);
238 void setTransformColumnVisible(bool visible);
241 void setDescriptionColumnVisible(bool visible);
243
247
250 QStringList pluginAllowList() const;
253 QStringList pluginBlockList() const;
254
257 Q_INVOKABLE vtkMRMLNode* findFirstNodeByClass(const QString& className) const;
258
259public slots:
261 virtual void setMRMLScene(vtkMRMLScene* scene);
262
264 virtual void setCurrentItem(vtkIdType itemID);
266 virtual void setCurrentItems(QList<vtkIdType> items);
268 virtual void setCurrentItems(vtkIdList* items);
270 virtual void setCurrentNode(vtkMRMLNode* node);
271
273 virtual void setRootItem(vtkIdType itemID);
275 void setShowRootItem(bool show);
276
279
291 virtual void editCurrentItem();
292
302 virtual vtkMRMLNode* addNode(QString nodeType);
303
305 virtual void expandItem(vtkIdType itemID);
307 virtual void collapseItem(vtkIdType itemID);
308
311
317
319 virtual void setMultiSelection(bool multiSelectionOn);
320
324 void setPluginAllowList(QStringList allowlist);
326 void setPluginAllowlist(QStringList allowlist) { this->setPluginAllowList(allowlist); }
330 void setPluginBlockList(QStringList blocklist);
332 void setPluginBlocklist(QStringList blocklist) { this->setPluginBlockList(blocklist); }
335 void disablePlugin(QString plugin);
336
338 void setPluginWhitelist(QStringList allowlist)
339 {
340 qWarning("qMRMLSubjectHierarchyTreeView::setPluginWhitelist is deprecated. Use setPluginAllowlist instead.");
341 this->setPluginAllowlist(allowlist);
342 }
343
344 void setPluginBlacklist(QStringList blocklist)
345 {
346 qWarning("qMRMLSubjectHierarchyTreeView::setPluginBlacklist is deprecated. Use setPluginBlocklist instead.");
347 this->setPluginBlocklist(blocklist);
348 }
349
353 bool showContextMenuHint(bool visibility = false);
354
355 void setHighlightReferencedItems(bool highlightOn);
356 void setContextMenuEnabled(bool enabled);
357 void setEditMenuActionVisible(bool visible);
358 void setSelectRoleSubMenuVisible(bool visible);
359 void setNoneEnabled(bool enable);
360 void setNoneDisplay(const QString& displayName);
361
364
365 void setIncludeItemAttributeNamesFilter(QStringList filter);
366 void setIncludeNodeAttributeNamesFilter(QStringList filter);
367 void setExcludeItemAttributeNamesFilter(QStringList filter);
368 void setExcludeNodeAttributeNamesFilter(QStringList filter);
369 void setAttributeNameFilter(QString& filter);
370 void setAttributeValueFilter(QString& filter);
371
374
375signals:
376 void currentItemChanged(vtkIdType);
379 void currentItemModified(vtkIdType);
380
383
384protected slots:
385 virtual void onSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
386
388 virtual void onItemExpanded(const QModelIndex& expandedItemIndex);
390 virtual void onItemCollapsed(const QModelIndex& collapsedItemIndex);
391
394 virtual void updateRootItem();
395
397 virtual void onSubjectHierarchyItemModified(vtkObject* caller, void* callData);
399 virtual void onSubjectHierarchyItemTransformModified(vtkObject* caller, void* callData);
400
402 virtual void onMRMLSceneStartClose(vtkObject* sceneObject);
404 virtual void onMRMLSceneEndClose(vtkObject* sceneObject);
406 virtual void onMRMLSceneStartBatchProcess(vtkObject* sceneObject);
408 virtual void onMRMLSceneEndBatchProcess(vtkObject* sceneObject);
409
410 void onCustomContextMenu(const QPoint& point);
411
412 virtual void addNode();
413
414protected:
417
422 virtual void populateContextMenuForItem(vtkIdType itemID);
424 virtual void populateVisibilityContextMenuForItem(vtkIdType itemID);
426 virtual void populateTransformContextMenuForItem(vtkIdType itemID);
427
431 virtual bool clickDecoration(QMouseEvent* e);
433 void mousePressEvent(QMouseEvent* e) override;
435 void keyPressEvent(QKeyEvent* e) override;
436
440
443 vtkIdType firstSelectedSubjectHierarchyItemInBranch(vtkIdType itemID);
444
445 void changeEvent(QEvent* e) override;
446
447protected:
448 QScopedPointer<qMRMLSubjectHierarchyTreeViewPrivate> d_ptr;
449
450private:
451 Q_DECLARE_PRIVATE(qMRMLSubjectHierarchyTreeView);
452 Q_DISABLE_COPY(qMRMLSubjectHierarchyTreeView);
454};
455
456#endif
Item model for subject hierarchy.
void setIncludeNodeAttributeNamesFilter(QStringList filter)
void setTransformColumnVisible(bool visible)
Set transform column visibility.
Q_INVOKABLE qMRMLSortFilterSubjectHierarchyProxyModel * sortFilterProxyModel() const
void setNoneDisplay(const QString &displayName)
virtual void setRootItem(vtkIdType itemID)
Set subject hierarchy item to be the root in the shown tree.
virtual Q_INVOKABLE vtkMRMLNode * currentNode() const
Convenience method to set current item by associated data node.
Q_INVOKABLE vtkIdType rootItem() const
Get root item of the tree.
void currentNodeChanged(vtkMRMLNode *)
Q_INVOKABLE void setNodeTypeLabel(const QString &label, const QString &nodeType)
virtual void setCurrentItems(QList< vtkIdType > items)
Set current (=selected) subject hierarchy items.
void setAddNodeMenuActionVisible(bool show)
Set whether to show the "Create node" actions in the context menu of the scene.
void setExcludeNodeAttributeNamesFilter(QStringList filter)
void setPluginWhitelist(QStringList allowlist)
Deprecated. Use setPluginAllowlist instead.
virtual void onMRMLSceneStartBatchProcess(vtkObject *sceneObject)
Called when batch processing starts. Makes sure stored selection does not get emptied before restorin...
void currentItemsChanged(QList< vtkIdType >)
void setPluginAllowlist(QStringList allowlist)
Deprecated. Use setPluginAllowList instead.
void setExcludeItemAttributeNamesFilter(QStringList filter)
Q_INVOKABLE void removeAttributeFilter()
Remove item attribute filtering.
Q_INVOKABLE vtkMRMLSubjectHierarchyNode * subjectHierarchyNode() const
QStringList includeItemAttributeNamesFilter
Filter to show only items that contain any of the given attributes with this name....
void keyPressEvent(QKeyEvent *e) override
Handle key press event.
void currentItemChanged(vtkIdType)
void setPluginBlockList(QStringList blocklist)
Q_INVOKABLE void addNodeAttributeFilter(QString attributeName, QVariant attributeValue=QString(), bool include=true, QString className=QString())
void onCustomContextMenu(const QPoint &point)
virtual void onSubjectHierarchyItemModified(vtkObject *caller, void *callData)
Propagate item modified event.
virtual void editCurrentItem()
Edit properties of current item.
virtual void setMultiSelection(bool multiSelectionOn)
Set multi-selection.
vtkIdType firstSelectedSubjectHierarchyItemInBranch(vtkIdType itemID)
Q_INVOKABLE qMRMLSubjectHierarchyModel * model() const
virtual void setCurrentItem(vtkIdType itemID)
Set current (=selected) subject hierarchy item.
void applyReferenceHighlightForItems(QList< vtkIdType > itemIDs)
bool selectRoleSubMenuVisible
This property controls whether the Select role context menu sub-menu is visible. Visible by default.
virtual void setCurrentNode(vtkMRMLNode *node)
Convenience method to set current item by associated data node.
void setIdColumnVisible(bool visible)
Set ID column visibility.
virtual void onMRMLSceneEndBatchProcess(vtkObject *sceneObject)
Called when batch processing ends. Restores selection, which is lost when the hierarchy is rebuilt.
virtual bool clickDecoration(QMouseEvent *e)
bool editMenuActionVisible
This property controls whether the Edit properties context menu action is visible....
Q_INVOKABLE QString nodeTypeLabel(const QString &nodeType) const
QStringList includeNodeAttributeNamesFilter
Filter to show only items for data nodes that contain any of the given attributes with this name....
void toggleVisibilityOfSelectedItems()
Toggle visibility of selected subject hierarchy items.
void changeEvent(QEvent *e) override
void setNameFilter(QString &nameFilter)
Set name filter that allows showing only items containing a specified string (case-insensitive)....
Q_INVOKABLE vtkIdType currentItem() const
Get current (=selected) item. If there are multiple items selected, then the first one is returned.
void setPluginBlacklist(QStringList blocklist)
Deprecated. Use setPluginBlocklist instead.
void mousePressEvent(QMouseEvent *e) override
Handle mouse press event.
bool addNodeMenuActionVisible
This property controls whether the add node context menu of the scene is visible for node types speci...
void setHideChildNodeTypes(const QStringList &types)
void setUseTerminologySelector(bool useTerminologySelector)
Set if standard terminologies are used for choosing segment name and color.
void setNodeTypes(const QStringList &types)
Set node type filter that allows showing only data nodes of a certain type. Show all data nodes if em...
bool contextMenuEnabled
Flag determining whether context menu is enabled.
bool showContextMenuHint(bool visibility=false)
void setIncludeItemAttributeNamesFilter(QStringList filter)
void setBaseName(const QString &baseName, const QString &nodeType="")
virtual void onMRMLSceneStartClose(vtkObject *sceneObject)
Called when scene close is started.
QList< vtkIdType > currentItems()
Get current (=selected) items.
void hideSelectedItems()
Hide selected subject hierarchy items.
void setVisibilityColumnVisible(bool visible)
Set visibility column visibility.
virtual void populateContextMenuForItem(vtkIdType itemID)
virtual void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
Q_INVOKABLE void removeNodeAttributeFilter(QString attributeName, QVariant attributeValue, bool include, QString className)
Remove single node attribute filter specifying each attribute.
virtual void setSubjectHierarchyNode(vtkMRMLSubjectHierarchyNode *shNode)
Set the subject hierarchy node found in the given scene. Called only internally.
void deleteSelectedItems()
Delete selected subject hierarchy items and associated data nodes.
void resetColumnSizesToDefault()
Resets column sizes and size policies to default.
void currentItemModified(vtkIdType)
virtual void updateSelectPluginActions()
virtual void populateVisibilityContextMenuForItem(vtkIdType itemID)
Populate visibility context menu for given subject hierarchy item.
virtual vtkMRMLNode * addNode(QString nodeType)
Creates a node of the same type as in the "node types" property.
void setPluginBlocklist(QStringList blocklist)
Deprecated. Use setPluginBlockList instead.
void setPluginAllowList(QStringList allowlist)
virtual void expandItem(vtkIdType itemID)
Handle expand item requests in the subject hierarchy tree. Expands branch.
Q_INVOKABLE void setAttributeFilter(const QString &attributeName, const QVariant &attributeValue=QVariant())
qMRMLSubjectHierarchyTreeView(QWidget *parent=nullptr)
void setContextMenuEnabled(bool enabled)
void showSelectedItems()
Show selected subject hierarchy items.
void setEditMenuActionVisible(bool visible)
void disablePlugin(QString plugin)
Q_INVOKABLE vtkMRMLNode * findFirstNodeByClass(const QString &className) const
bool useTerminologySelector
Double-clicking the color will show a standard terminology selector if true, otherwise show simple co...
Q_INVOKABLE void removeItemAttributeFilter(QString attributeName, QVariant attributeValue, bool include)
Remove single item attribute filter specifying each attribute.
Q_INVOKABLE vtkMRMLScene * mrmlScene() const
QScopedPointer< qMRMLSubjectHierarchyTreeViewPrivate > d_ptr
virtual void onItemCollapsed(const QModelIndex &collapsedItemIndex)
Updates subject hierarchy item expanded property when item is collapsed.
bool multiSelection
Flag determining whether multiple items can be selected.
void setColorColumnVisible(bool visible)
Set color column visibility.
virtual void selectPluginForCurrentItem()
Handle manual selection of a plugin as the new owner of a subject hierarchy node.
void renameCurrentItem()
Rename currently selected one item by popping up a dialog.
virtual void collapseItem(vtkIdType itemID)
Handle collapse item requests in the subject hierarchy tree. Collapses branch.
void nodeAddedByUser(vtkMRMLNode *node)
Signal emitted when node is added by the user.
virtual void setMRMLScene(vtkMRMLScene *scene)
Set MRML scene.
void setShowRootItem(bool show)
Set root item visibility.
Q_INVOKABLE int displayedItemCount() const
Determine the number of shown items.
virtual void onItemExpanded(const QModelIndex &expandedItemIndex)
Updates subject hierarchy item expanded property when item is expanded.
void setDescriptionColumnVisible(bool visible)
Set description column visibility.
virtual void onSubjectHierarchyItemTransformModified(vtkObject *caller, void *callData)
Propagate item transform modified event.
virtual void onMRMLSceneEndClose(vtkObject *sceneObject)
Called when scene close is finished. Hierarchy is cleared in that case.
void setNoneEnabled(bool enable)
Q_INVOKABLE void addItemAttributeFilter(QString attributeName, QVariant attributeValue=QString(), bool include=true)
void setAttributeValueFilter(QString &filter)
void setLevelFilter(QStringList &levelFilter)
Set level filter that allows showing only items at a specified level and their parents....
QString baseName(const QString &nodeType="") const
void setAttributeNameFilter(QString &filter)
void setSelectRoleSubMenuVisible(bool visible)
void setHighlightReferencedItems(bool highlightOn)
virtual void populateTransformContextMenuForItem(vtkIdType itemID)
Populate transform context menu for given subject hierarchy item.
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.
MRML node to represent a complete subject hierarchy tree.