Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
QmitkDataNodeContextMenu.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef QmitkDataNodeContextMenu_h
14 #define QmitkDataNodeContextMenu_h
15 
17 
18 // qt widgets module
34 #include <QmitkNodeDescriptor.h>
35 
36 // mitk core
37 #include <mitkBaseRenderer.h>
38 #include <mitkDataStorage.h>
39 #include <mitkWeakPointer.h>
40 
41 // blueberry ui qt plugin
44 
45 // qt
46 #include <QMenu>
47 
49 {
50  Q_OBJECT
51 
52 public:
53 
54  QmitkDataNodeContextMenu(berry::IWorkbenchPartSite::Pointer workbenchPartSite, QWidget* parent = nullptr);
55 
57 
58  void SetDataStorage(mitk::DataStorage* dataStorage);
59  void SetBaseRenderer(mitk::BaseRenderer* baseRenderer);
60 
61  void SetSelectedNodes(const QList<mitk::DataNode::Pointer>& selectedNodes);
62 
63 public Q_SLOTS:
64 
65  void OnContextMenuRequested(const QPoint& pos);
66  void OnExtensionPointActionTriggered(QAction* action);
67 
68 private:
69 
70  using DescriptorActionListType = std::vector<std::pair<QmitkNodeDescriptor*, QAction*>>;
71  using ConfigurationElementsType = std::map<QAction*, berry::IConfigurationElement::Pointer>;
72 
73  void InitNodeDescriptors();
74  void InitDefaultActions();
75  void InitExtensionPointActions();
76  void InitServiceActions();
77 
78  void AddColorAction(QWidgetAction* colorAction);
79  void AddDescriptorActionList(DescriptorActionListType& descriptorActionList);
80 
81  QList<QAction*> GetActions(const mitk::DataNode* node);
82  QList<QAction*> GetActions(const QList<mitk::DataNode::Pointer>& nodes);
83 
84  QWidget* m_Parent;
85  berry::IWorkbenchPartSite::WeakPtr m_WorkbenchPartSite;
86 
89  QList<mitk::DataNode::Pointer> m_SelectedNodes;
90 
91  // store a list of all actions to remove them on menu destruction
92  DescriptorActionListType m_DescriptorActionList;
93 
94  // stores the configuration elements for the context menu actions from extension points
95  ConfigurationElementsType m_ConfigElements;
96 
97  QmitkNodeDescriptor* m_UnknownDataNodeDescriptor;
98  QmitkNodeDescriptor* m_ImageDataNodeDescriptor;
99  QmitkNodeDescriptor* m_MultiComponentImageDataNodeDescriptor;
100  QmitkNodeDescriptor* m_DiffusionImageDataNodeDescriptor;
101  QmitkNodeDescriptor* m_FiberBundleDataNodeDescriptor;
102  QmitkNodeDescriptor* m_PeakImageDataNodeDescriptor;
103  QmitkNodeDescriptor* m_SegmentDataNodeDescriptor;
104  QmitkNodeDescriptor* m_SurfaceDataNodeDescriptor;
105  QmitkNodeDescriptor* m_PointSetNodeDescriptor;
106  QmitkNodeDescriptor* m_PlanarLineNodeDescriptor;
107  QmitkNodeDescriptor* m_PlanarCircleNodeDescriptor;
108  QmitkNodeDescriptor* m_PlanarEllipseNodeDescriptor;
109  QmitkNodeDescriptor* m_PlanarAngleNodeDescriptor;
110  QmitkNodeDescriptor* m_PlanarFourPointAngleNodeDescriptor;
111  QmitkNodeDescriptor* m_PlanarRectangleNodeDescriptor;
112  QmitkNodeDescriptor* m_PlanarPolygonNodeDescriptor;
113  QmitkNodeDescriptor* m_PlanarPathNodeDescriptor;
114  QmitkNodeDescriptor* m_PlanarDoubleEllipseNodeDescriptor;
115  QmitkNodeDescriptor* m_PlanarBezierCurveNodeDescriptor;
116  QmitkNodeDescriptor* m_PlanarSubdivisionPolygonNodeDescriptor;
117  QmitkNodeDescriptor* m_MultiLabelSegmentationDescriptor;
118 
120  // default actions
122  QmitkDataNodeGlobalReinitAction* m_GlobalReinitAction;
123  QmitkDataNodeReinitAction* m_ReinitAction;
124  QmitkDataNodeResetGeometryAction* m_ResetGeometryAction;
125  QmitkDataNodeRemoveAction* m_RemoveAction;
126  QmitkDataNodeRenameAction* m_RenameAction;
127  QmitkDataNodeShowSelectedNodesAction* m_ShowSelectedNodesAction;
128  QmitkDataNodeToggleVisibilityAction* m_ToggleVisibilityAction;
129  QmitkDataNodeShowDetailsAction* m_ShowDetailsAction;
130  QmitkDataNodeOpacityAction* m_OpacityAction;
131  QmitkDataNodeColorAction* m_ColorAction;
132  QmitkDataNodeColorMapAction* m_ColormapAction;
133  QmitkDataNodeComponentAction* m_ComponentAction;
134  QmitkDataNodeTextureInterpolationAction* m_TextureInterpolationAction;
135  QmitkDataNodeSurfaceRepresentationAction* m_SurfaceRepresentationAction;
136  Qmitk3DMultiSegVisStyleAction* m_3DMultiSegVisStyleAction;
137 };
138 
139 #endif
void SetBaseRenderer(mitk::BaseRenderer *baseRenderer)
QmitkDataNodeContextMenu(berry::IWorkbenchPartSite::Pointer workbenchPartSite, QWidget *parent=nullptr)
void SetSelectedNodes(const QList< mitk::DataNode::Pointer > &selectedNodes)
void OnContextMenuRequested(const QPoint &pos)
void OnExtensionPointActionTriggered(QAction *action)
void SetDataStorage(mitk::DataStorage *dataStorage)
~QmitkDataNodeContextMenu() override
Decorator class for mitk::DataNode.
Implements transparent reference counting.
implements a WeakPointer class to deal with circular reference problems.
Organizes the rendering process.
Central node class of the MITK data tree, associating a data object with properties and mappers.
Definition: mitkDataNode.h:72
Abstract data management class that organizes DataNode objects in a directed acyclic graph.