Medical Imaging Interaction Toolkit  2025.08.99-f7084adb
Medical Imaging Interaction Toolkit
QmitkSynchronizedNodeSelectionWidget.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 QmitkSynchronizedNodeSelectionWidget_h
14 #define QmitkSynchronizedNodeSelectionWidget_h
15 
16 #include <MitkQtWidgetsExports.h>
17 
18 #include "ui_QmitkSynchronizedNodeSelectionWidget.h"
19 
20 // mitk core
21 #include <mitkBaseRenderer.h>
22 
23 // qt widgets module
26 
27 /*
28 * @brief The 'QmitkSynchronizedNodeSelectionWidget' implements the 'QmitkAbstractNodeSelectionWidget'
29 * by providing a table view, using a 'QmitkRenderWindowDataNodeTableModel' and extending it
30 * with base renderer-specific functionality.
31 *
32 * Given a base renderer, the selection widget is able to display and access render window specific properties
33 * of the selected nodes. It can be connected with other QmitkSynchronizedNodeSelectionWidgets to synchronize
34 * their state.
35 * The widget can be used to decide if all data nodes of the data storage should be selected or
36 * only an individually selected set of nodes, defined by a 'QmitkNodeSelectionDialog'.
37 * If individual nodes are selected / removed from the selection, the widget can inform other
38 * 'QmitkSynchronizedNodeSelectionWidget' about the current selection, if desired.
39 * Additionally the widget allows to reinitialize the corresponding base renderer with a specific
40 * data node geometry.
41 */
43 {
44  Q_OBJECT
45 
46 public:
47 
48  QmitkSynchronizedNodeSelectionWidget(QWidget* parent);
50 
52 
53  void SetBaseRenderer(mitk::BaseRenderer* baseRenderer);
54 
55  QmitkRenderWindowDataNodeTableModel* GetStorageModel() const;
56 
57  void SetSelectAll(bool selectAll);
58  bool GetSelectAll() const;
59  void SelectAll();
60  using GroupSyncIndexType = int;
61  void SetSyncGroup(const GroupSyncIndexType index);
62  GroupSyncIndexType GetSyncGroup() const;
63 
64 Q_SIGNALS:
65 
66  void SelectionModeChanged(bool selectAll);
67  void DeregisterSynchronization();
68  void NodeVisibilityChanged(mitk::DataNode::Pointer node, const bool visibility);
69 
70 public Q_SLOTS:
71  void SetSelection(const NodeList& newSelection);
72  void SetNodeVisibility(mitk::DataNode::Pointer node, const bool visibility);
73 
74 private Q_SLOTS:
75 
76  void OnSelectionModeChanged(bool selectAll);
77  void OnEditSelection();
78  void OnTableClicked(const QModelIndex& index);
79 
80 protected:
81 
82  void SetUpConnections();
83  void Initialize();
84 
85  void UpdateInfo() override;
86  void OnDataStorageChanged() override;
87  void OnNodePredicateChanged() override;
88  void ReviseSelectionChanged(const NodeList& oldInternalSelection, NodeList& newInternalSelection) override;
89  void OnInternalSelectionChanged() override;
90  void OnNodeAddedToStorage(const mitk::DataNode* node) override;
91  void OnNodeModified(const itk::Object* caller, const itk::EventObject& event) override;
92 
93 private:
94 
95  void ReinitNode(const mitk::DataNode* dataNode);
96  void RemoveFromInternalSelection(mitk::DataNode* dataNode);
97  bool IsParentNodeSelected(const mitk::DataNode* dataNode) const;
98  void DeselectNode(mitk::DataNode* dataNode);
99 
100  Ui::QmitkSynchronizedNodeSelectionWidget m_Controls;
102 
103  std::unique_ptr<QmitkRenderWindowDataNodeTableModel> m_StorageModel;
104  GroupSyncIndexType m_SyncGroupIndex;
105 
106 };
107 
108 #endif
QmitkAbstractNodeSelectionWidget
Abstract base class for the selection of data from a data storage.
Definition: QmitkAbstractNodeSelectionWidget.h:31
QmitkAbstractNodeSelectionWidget::OnNodeModified
virtual void OnNodeModified(const itk::Object *caller, const itk::EventObject &event)
MITKQTWIDGETS_EXPORT
#define MITKQTWIDGETS_EXPORT
Definition: MitkQtWidgetsExports.h:15
itk::SmartPointer< Self >
QmitkAbstractNodeSelectionWidget::UpdateInfo
virtual void UpdateInfo()=0
QmitkAbstractNodeSelectionWidget::ReviseSelectionChanged
virtual void ReviseSelectionChanged(const NodeList &oldInternalSelection, NodeList &newInternalSelection)
QmitkAbstractNodeSelectionWidget::OnNodeAddedToStorage
virtual void OnNodeAddedToStorage(const mitk::DataNode *node)
QmitkRenderWindowDataNodeTableModel
Definition: QmitkRenderWindowDataNodeTableModel.h:34
QmitkSynchronizedNodeSelectionWidget
Definition: QmitkSynchronizedNodeSelectionWidget.h:42
MitkQtWidgetsExports.h
QmitkRenderWindowDataNodeTableModel.h
QmitkAbstractNodeSelectionWidget.h
QmitkAbstractNodeSelectionWidget::OnNodePredicateChanged
virtual void OnNodePredicateChanged()
QmitkAbstractNodeSelectionWidget::NodeList
QList< mitk::DataNode::Pointer > NodeList
Definition: QmitkAbstractNodeSelectionWidget.h:65
QmitkAbstractNodeSelectionWidget::OnInternalSelectionChanged
virtual void OnInternalSelectionChanged()
QmitkAbstractNodeSelectionWidget::OnDataStorageChanged
virtual void OnDataStorageChanged()
mitk::BaseRenderer
Definition: mitkBaseRenderer.h:56
mitkBaseRenderer.h
mitk::WeakPointer< mitk::BaseRenderer >
mitk::DataNode
Class for nodes of the DataTree.
Definition: mitkDataNode.h:63
QmitkSynchronizedNodeSelectionWidget::GroupSyncIndexType
int GroupSyncIndexType
Definition: QmitkSynchronizedNodeSelectionWidget.h:60