Medical Imaging Interaction Toolkit  2025.12.02
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 SetSurfaceDecimation(bool surfaceDecimation);
62 
63  void SetSelectedNodes(const QList<mitk::DataNode::Pointer>& selectedNodes);
64 
65 public Q_SLOTS:
66 
67  void OnContextMenuRequested(const QPoint& pos);
68  void OnExtensionPointActionTriggered(QAction* action);
69 
70 private:
71 
72  using DescriptorActionListType = std::vector<std::pair<QmitkNodeDescriptor*, QAction*>>;
73  using ConfigurationElementsType = std::map<QAction*, berry::IConfigurationElement::Pointer>;
74 
75  void InitNodeDescriptors();
76  void InitDefaultActions();
77  void InitExtensionPointActions();
78  void InitServiceActions();
79 
80  void AddColorAction(QWidgetAction* colorAction);
81  void AddDescriptorActionList(DescriptorActionListType& descriptorActionList);
82 
83  QList<QAction*> GetActions(const mitk::DataNode* node);
84  QList<QAction*> GetActions(const QList<mitk::DataNode::Pointer>& nodes);
85 
86  QWidget* m_Parent;
87  berry::IWorkbenchPartSite::WeakPtr m_WorkbenchPartSite;
88 
91  QList<mitk::DataNode::Pointer> m_SelectedNodes;
92 
93  // store a list of all actions to remove them on menu destruction
94  DescriptorActionListType m_DescriptorActionList;
95 
96  // stores the configuration elements for the context menu actions from extension points
97  ConfigurationElementsType m_ConfigElements;
98 
99  QmitkNodeDescriptor* m_UnknownDataNodeDescriptor;
100  QmitkNodeDescriptor* m_ImageDataNodeDescriptor;
101  QmitkNodeDescriptor* m_MultiComponentImageDataNodeDescriptor;
102  QmitkNodeDescriptor* m_DiffusionImageDataNodeDescriptor;
103  QmitkNodeDescriptor* m_FiberBundleDataNodeDescriptor;
104  QmitkNodeDescriptor* m_PeakImageDataNodeDescriptor;
105  QmitkNodeDescriptor* m_SegmentDataNodeDescriptor;
106  QmitkNodeDescriptor* m_SurfaceDataNodeDescriptor;
107  QmitkNodeDescriptor* m_PointSetNodeDescriptor;
108  QmitkNodeDescriptor* m_PlanarLineNodeDescriptor;
109  QmitkNodeDescriptor* m_PlanarCircleNodeDescriptor;
110  QmitkNodeDescriptor* m_PlanarEllipseNodeDescriptor;
111  QmitkNodeDescriptor* m_PlanarAngleNodeDescriptor;
112  QmitkNodeDescriptor* m_PlanarFourPointAngleNodeDescriptor;
113  QmitkNodeDescriptor* m_PlanarRectangleNodeDescriptor;
114  QmitkNodeDescriptor* m_PlanarPolygonNodeDescriptor;
115  QmitkNodeDescriptor* m_PlanarPathNodeDescriptor;
116  QmitkNodeDescriptor* m_PlanarDoubleEllipseNodeDescriptor;
117  QmitkNodeDescriptor* m_PlanarBezierCurveNodeDescriptor;
118  QmitkNodeDescriptor* m_PlanarSubdivisionPolygonNodeDescriptor;
119  QmitkNodeDescriptor* m_MultiLabelSegmentationDescriptor;
120 
122  // default actions
124  QmitkDataNodeGlobalReinitAction* m_GlobalReinitAction;
125  QmitkDataNodeReinitAction* m_ReinitAction;
126  QmitkDataNodeResetGeometryAction* m_ResetGeometryAction;
127  QmitkDataNodeRemoveAction* m_RemoveAction;
128  QmitkDataNodeRenameAction* m_RenameAction;
129  QmitkDataNodeShowSelectedNodesAction* m_ShowSelectedNodesAction;
130  QmitkDataNodeToggleVisibilityAction* m_ToggleVisibilityAction;
131  QmitkDataNodeShowDetailsAction* m_ShowDetailsAction;
132  QmitkDataNodeOpacityAction* m_OpacityAction;
133  QmitkDataNodeColorAction* m_ColorAction;
134  QmitkDataNodeColorMapAction* m_ColormapAction;
135  QmitkDataNodeComponentAction* m_ComponentAction;
136  QmitkDataNodeTextureInterpolationAction* m_TextureInterpolationAction;
137  QmitkDataNodeSurfaceRepresentationAction* m_SurfaceRepresentationAction;
138  Qmitk3DMultiSegVisStyleAction* m_3DMultiSegVisStyleAction;
139 
140  bool m_SurfaceDecimation;
141 };
142 
143 #endif
void SetSurfaceDecimation(bool surfaceDecimation)
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.
Class for nodes of the DataTree.
Definition: mitkDataNode.h:64
Data management class that handles 'was created by' relations.