Medical Imaging Interaction Toolkit
2024.06.00
Medical Imaging Interaction Toolkit
QmitkSynchronizedWidgetConnector.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 QmitkSynchronizedWidgetConnector_h
14
#define QmitkSynchronizedWidgetConnector_h
15
16
#include <
MitkQtWidgetsExports.h
>
17
18
// mitk core
19
#include <
mitkDataNode.h
>
20
21
// mitk qt widgets
22
#include <
QmitkSynchronizedNodeSelectionWidget.h
>
23
24
// qt
25
#include <QList>
26
27
/*
28
* @brief This class connects different 'QmitkSynchronizedNodeSelectionWidget', such that
29
* they can synchronize their current node selection and their current selection mode.
30
*
31
* In order to synchronize a new node selection widget with other already connected
32
* node selection widgets, 'ConnectWidget(const QmitkSynchronizedNodeSelectionWidget*)' has to be used.
33
* In order to desynchronize a node selection widget,
34
* 'DisconnectWidget(const QmitkSynchronizedNodeSelectionWidget*)' has to be used.
35
* If a new node selection has been connected / synchronized,
36
* 'SynchronizeWidget(QmitkSynchronizedNodeSelectionWidget*' can be used to initialy set
37
* the current selection and the current selection mode.
38
* For this, both values are stored in this class internally.
39
*/
40
class
MITKQTWIDGETS_EXPORT
QmitkSynchronizedWidgetConnector
:
public
QObject
41
{
42
Q_OBJECT
43
44
public
:
45
46
using
NodeList
=
QmitkSynchronizedNodeSelectionWidget::NodeList
;
47
48
QmitkSynchronizedWidgetConnector
();
49
50
/*
51
* @brief This function connects the different signals and slots of this instance and the given
52
* given node selection widget, such that changes to the current list of nodes
53
* and the selection mode can be forwarded or received.
54
* The connections are as follows:
55
* - QmitkAbstractNodeSelectionWidget::CurrentSelectionChanged
56
* -> QmitkSynchronizedWidgetConnector::ChangeSelection
57
* - QmitkSynchronizedWidgetConnector::NodeSelectionChanged
58
* -> QmitkAbstractNodeSelectionWidget::SetCurrentSelection
59
* - QmitkSynchronizedNodeSelectionWidget::SelectionModeChanged
60
* -> QmitkSynchronizedWidgetConnector::ChangeSelectionMode
61
* - QmitkSynchronizedWidgetConnector::SelectionModeChanged
62
* -> QmitkSynchronizedNodeSelectionWidget::SetSelectAll
63
*
64
* @param nodeSelectionWidget The synchronized node selection widget to be connected / synchronized.
65
*/
66
void
ConnectWidget(
const
QmitkSynchronizedNodeSelectionWidget
* nodeSelectionWidget);
67
/*
68
* @brief This function disconnects the different signals and slot of this instance and the given
69
* given node selection widget, such that changes to the current list of nodes
70
* and the selection mode cannot be forwarded or received anymore.
71
*
72
* @param nodeSelectionWidget The synchronized node selection widget to be disconnected / desynchronized.
73
*/
74
void
DisconnectWidget(
const
QmitkSynchronizedNodeSelectionWidget
* nodeSelectionWidget);
75
/*
76
* @brief This function sets the current selection and the selection mode of the given node selection widget
77
* to the values of this instance. The required values are stored in this class internally.
78
* It can be used to newly initialize the given node selection widget.
79
*
80
* @param nodeSelectionWidget The synchronized node selection widget for which the
81
* current selection and the selection mode should be set.
82
*/
83
void
SynchronizeWidget(
QmitkSynchronizedNodeSelectionWidget
* nodeSelectionWidget)
const
;
84
/*
85
* @brief Get the current internal node selection.
86
*
87
* @return NodeList The current internal node selection stored as a member variable.
88
*/
89
NodeList
GetNodeSelection()
const
;
90
/*
91
* @brief Get the current internal selection mode.
92
*
93
* @return The current internal selection mode stored as a member variable.
94
*/
95
bool
GetSelectionMode()
const
;
96
97
Q_SIGNALS:
98
/*
99
* @brief A signal that will be emitted by the 'ChangeSelection'-slot.
100
* This happens if a new selection / list of nodes is set from outside of this class,
101
* e.g. from a QmitkSynchronizedNodeSelectionWidget.
102
* This signal is connected to the 'SetCurrentSelection'-slot of each
103
* QmitkSynchronizedNodeSelectionWidget to propagate the new selection.
104
*
105
* @param nodes A list of data nodes that are newly selected.
106
*/
107
void
NodeSelectionChanged(
NodeList
nodes);
108
/*
109
* @brief A signal that will be emitted by the 'ChangeSelectionMode'-slot.
110
* This happens if the selection mode is change from outside of this class,
111
* e.g. from a QmitkSynchronizedNodeSelectionWidget.
112
* This signal is connected to the 'SetSelectAll'-slot of each
113
* QmitkSynchronizedNodeSelectionWidget to propagate the selection mode.
114
*
115
* @param selectAll True, if the selection mode is changed to "select all" nodes.
116
* False otherwise.
117
*/
118
void
SelectionModeChanged(
bool
selectAll);
119
120
public
Q_SLOTS:
121
/*
122
* @brief Set a new internal selection and send this new selection to connected
123
* QmitkSynchronizedNodeSelectionWidgets using the 'NodeSelectionChanged'-signal.
124
*
125
* This slot itself is connected to the 'CurrentSelectionChanged'-signal of each
126
* QmitkSynchronizedNodeSelectionWidget to receive a new selection.
127
*
128
* @param nodes A list of data nodes that are newly selected.
129
*/
130
void
ChangeSelection(
NodeList
nodes);
131
/*
132
* @brief Set a new selection mode and send this new selection mode to connected
133
* QmitkSynchronizedNodeSelectionWidgets using the 'SelectionModeChanged'-signal.
134
*
135
* This slot itself is connected to the 'SelectionModeChanged'-signal of each
136
* QmitkSynchronizedNodeSelectionWidget to receive a new selection mode.
137
*
138
* @param selectAll True, if the selection mode is changed to "select all" nodes.
139
* False otherwise.
140
*/
141
void
ChangeSelectionMode(
bool
selectAll);
142
/*
143
* @brief Decrease the internal counter of connections to keep track of how many
144
* QmitkSynchronizedNodeSelectionWidgets are synchronized.
145
*
146
* This slot itself is connected to the 'DeregisterSynchronization'-signal of each
147
* QmitkSynchronizedNodeSelectionWidget to get notified when a synchronized
148
* widget is deleted.
149
*/
150
void
DeregisterWidget();
151
152
private
:
153
154
NodeList
m_InternalSelection;
155
bool
m_SelectAll;
156
unsigned
int
m_ConnectionCounter;
157
158
};
159
160
#endif
MITKQTWIDGETS_EXPORT
#define MITKQTWIDGETS_EXPORT
Definition:
MitkQtWidgetsExports.h:15
QmitkSynchronizedNodeSelectionWidget::NodeList
QmitkAbstractNodeSelectionWidget::NodeList NodeList
Definition:
QmitkSynchronizedNodeSelectionWidget.h:51
QmitkSynchronizedWidgetConnector::NodeList
QmitkSynchronizedNodeSelectionWidget::NodeList NodeList
Definition:
QmitkSynchronizedWidgetConnector.h:46
QmitkSynchronizedWidgetConnector
Definition:
QmitkSynchronizedWidgetConnector.h:40
QmitkSynchronizedNodeSelectionWidget.h
QmitkSynchronizedNodeSelectionWidget
Definition:
QmitkSynchronizedNodeSelectionWidget.h:42
MitkQtWidgetsExports.h
mitkDataNode.h
src
MITK
Modules
QtWidgets
include
QmitkSynchronizedWidgetConnector.h
Generated on Mon Jun 17 2024 12:43:31 for Medical Imaging Interaction Toolkit by
1.8.17