Slicer 5.4
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qSlicerSubjectHierarchyPluginLogic.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 __qSlicerSubjectHierarchyPluginLogic_h
24#define __qSlicerSubjectHierarchyPluginLogic_h
25
26// Slicer includes
27#include "qSlicerObject.h"
28
29// CTK includes
30#include <ctkVTKObject.h>
31
32// Qt includes
33#include <QObject>
34
35// MRML includes
36#include <vtkMRMLScene.h>
38
39#include "qSlicerSubjectHierarchyModuleWidgetsExport.h"
40
41class QAction;
42class QMenu;
43class qSlicerSubjectHierarchyPluginLogicPrivate;
45
49class Q_SLICER_MODULE_SUBJECTHIERARCHY_WIDGETS_EXPORT qSlicerSubjectHierarchyPluginLogic :
50 public QObject, public virtual qSlicerObject
51{
52 Q_OBJECT
53 QVTK_OBJECT
54
57 Q_PROPERTY(QStringList allowedViewContextMenuActionNames READ allowedViewContextMenuActionNames WRITE setAllowedViewContextMenuActionNames)
59 Q_PROPERTY(QStringList registeredViewContextMenuActionNames READ registeredViewContextMenuActionNames)
60
61public:
62 typedef QObject Superclass;
63 qSlicerSubjectHierarchyPluginLogic(QObject *parent=nullptr);
65
66public:
68 void setMRMLScene(vtkMRMLScene* scene) override;
69
71 Q_INVOKABLE qSlicerSubjectHierarchyAbstractPlugin* subjectHierarchyPluginByName(QString name)const;
72
74 Q_INVOKABLE vtkIdType currentSubjectHierarchyItem()const;
75
78 Q_INVOKABLE void setCurrentSubjectHierarchyItem(vtkIdType itemID);
79
83 void registerCorePlugins();
84
87 QStringList registeredViewContextMenuActionNames();
88
94 void setAllowedViewContextMenuActionNames(QStringList actionObjectNames);
95
97 QStringList allowedViewContextMenuActionNames() const;
98
104 Q_INVOKABLE void setAllowedViewContextMenuActionNamesForItem(vtkIdType itemID, const QStringList& actionObjectNames);
105
108 Q_INVOKABLE QStringList allowedViewContextMenuActionNamesForItem(vtkIdType itemID);
109
116 static Q_INVOKABLE QString buildMenuFromActions(QMenu* menu, QList< QAction* > actions, const QStringList& allowedActions=QStringList());
117
118protected:
120 void observeNode(vtkMRMLNode* node);
121
126 void addSupportedDataNodesToSubjectHierarchy();
127
129 void registerViewContextMenuAction(QAction* action);
130
131protected slots:
133 void onNodeAdded(vtkObject* scene, vtkObject* nodeObject);
136 void onNodeAboutToBeRemoved(vtkObject* scene, vtkObject* nodeObject);
139 void onNodeRemoved(vtkObject* scene, vtkObject* nodeObject);
143 void onSceneImportEnded(vtkObject* sceneObject);
145 void onSceneCloseEnded(vtkObject* sceneObject);
148 void onSceneRestoreEnded(vtkObject* sceneObject);
151 void onSceneBatchProcessEnded(vtkObject* sceneObject);
152
154 void onDisplayNodeModified(vtkObject*, vtkObject*);
156 void onDisplayMenuEvent(vtkObject*, vtkObject*);
158 void editProperties();
159
160protected:
161 QScopedPointer<qSlicerSubjectHierarchyPluginLogicPrivate> d_ptr;
162
163private:
164 Q_DECLARE_PRIVATE(qSlicerSubjectHierarchyPluginLogic);
167};
168
169#endif
Abstract plugin for handling Subject Hierarchy items.
Singleton class managing Subject Hierarchy plugins.
Qt-based logic class to exercise Qt-related logic functions. The Subject hierarchy plugin mechanism a...
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.