Slicer 5.11
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qSlicerMarkupsModuleWidget.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Portions (c) Copyright Brigham and Women's Hospital (BWH) All Rights Reserved.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16==============================================================================*/
17
18#ifndef __qSlicerMarkupsModuleWidget_h
19#define __qSlicerMarkupsModuleWidget_h
20
21// Slicer includes
23
24// Markups widgets include
25#include "qSlicerMarkupsModuleExport.h"
26
27// Qt includes
28#include <QStringList>
29
30class QItemSelection;
31class QMenu;
32class QModelIndex;
33class QTableWidgetItem;
34class QShortcut;
35class qMRMLMarkupsOptionsWidget;
36class qSlicerMarkupsModuleWidgetPrivate;
38class vtkMRMLNode;
40
41class Q_SLICER_QTMODULES_MARKUPS_EXPORT qSlicerMarkupsModuleWidget : public qSlicerAbstractModuleWidget
42{
43 Q_OBJECT
44
45public:
47 qSlicerMarkupsModuleWidget(QWidget* parent = nullptr);
49
52 void enter() override;
54 void exit() override;
55
58
74 void updateRow(int m);
76 void updateRows();
77
81
84
87
91
92 // Set number of columns for organization of create markups buttons
93 void setCreateMarkupsButtonsColumns(unsigned int columns);
94
95 bool setEditedNode(vtkMRMLNode* node, QString role = QString(), QString context = QString()) override;
96 double nodeEditable(vtkMRMLNode* node) override;
97
98 // Returns the list of associated markups
99 QStringList& associatedMarkups();
100
101 // Add additional widget
103
104 Q_INVOKABLE void updateToolBar(vtkMRMLMarkupsNode* node);
105
106public slots:
107
110 void onNodeAddedEvent(vtkObject* scene, vtkObject* node);
114 void onNodeRemovedEvent(vtkObject* scene, vtkObject* node);
126
130
148 void onDeleteControlPointPushButtonClicked(bool confirm = true);
150
156
160
162 void onCreateMarkupByClass(const QString& className);
163
166
169
172
174 void onNameFormatLineEditTextEdited(const QString text);
175
178
183
185 void onActiveMarkupTableCellChanged(int row, int column);
187 void onActiveMarkupTableCellClicked(QTableWidgetItem* item);
189 void onActiveMarkupTableCurrentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn);
198
202 QStringList getOtherMarkupNames(vtkMRMLNode* thisMarkup);
203
207
211 void onActiveMarkupsNodePointModifiedEvent(vtkObject* caller, void* callData);
215 void onActiveMarkupsNodePointRemovedEvent(vtkObject* caller, void* callData);
220
224
229
232
235
245 void onMeasurementModified(vtkObject* caller);
248
251
254
255 // Enable or disable markup table buttons
256 void enableMarkupTableButtons(bool enable);
257
260
263
264 //-----------------------------------------------------------
265 // All public methods below are deprecated
266 //
267 // These methods are deprecated because they use old terms (markup instead of control point),
268
271 {
272 qWarning(
273 "qSlicerMarkupsModuleWidget::onVisibilityOnAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOnAllControlPointsInListPushButtonClicked instead");
275 };
276
278 {
279 qWarning("qSlicerMarkupsModuleWidget::onVisibilityOffAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOffAllControlPointsInListPushButtonClicked "
280 "instead");
282 };
283
285 {
286 qWarning("qSlicerMarkupsModuleWidget::onVisibilityAllMarkupsInListToggled method is deprecated, please use onVisibilityAllControlPointsInListToggled instead");
288 };
289
291 {
292 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListPushButtonClicked method is deprecated, please use onLockAllControlPointsInListPushButtonClicked instead");
294 };
295
297 {
298 qWarning("qSlicerMarkupsModuleWidget::onUnlockAllMarkupsInListPushButtonClicked method is deprecated, please use onUnlockAllControlPointsInListPushButtonClicked instead");
300 };
301
303 {
304 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListToggled method is deprecated, please use onLockAllControlPointsInListToggled instead");
306 };
307
309 {
310 qWarning("qSlicerMarkupsModuleWidget::onSelectAllMarkupsInListPushButtonClicked method is deprecated, please use onSelectAllControlPointsInListPushButtonClicked instead");
312 };
313
315 {
316 qWarning("qSlicerMarkupsModuleWidget::onDeselectAllMarkupsInListPushButtonClicked method is deprecated, please use onDeselectAllControlPointsInListPushButtonClicked instead");
318 };
319
321 {
322 qWarning("qSlicerMarkupsModuleWidget::onSelectedAllMarkupsInListToggled method is deprecated, please use onSelectedAllControlPointsInListToggled instead");
324 };
325
327 {
328 qWarning("qSlicerMarkupsModuleWidget::onAddMarkupPushButtonClicked method is deprecated, please use onAddControlPointPushButtonClicked instead");
330 };
331
333 {
334 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupUpPushButtonClicked method is deprecated, please use onMoveControlPointUpPushButtonClicked instead");
336 };
337
339 {
340 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupDownPushButtonClicked method is deprecated, please use onMoveControlPointDownPushButtonClicked instead");
342 };
343
345 {
346 qWarning("qSlicerMarkupsModuleWidget::onRestoreMarkupPushButtonClicked method is deprecated, please use onRestoreControlPointPushButtonClicked instead");
348 };
349
351 {
352 qWarning("qSlicerMarkupsModuleWidget::onResetMarkupPushButtonClicked method is deprecated, please use onResetControlPointPushButtonClicked instead");
354 };
355
357 {
358 qWarning("qSlicerMarkupsModuleWidget::onUnsetMarkupPushButtonClicked method is deprecated, please use onUnsetControlPointPushButtonClicked instead");
360 };
361
363 {
364 qWarning("qSlicerMarkupsModuleWidget::onMissingMarkupPushButtonClicked method is deprecated, please use onMissingControlPointPushButtonClicked instead");
366 };
367
368 void onDeleteMarkupPushButtonClicked(bool confirm = true)
369 {
370 qWarning("qSlicerMarkupsModuleWidget::onDeleteMarkupPushButtonClicked method is deprecated, please use onDeleteControlPointPushButtonClicked instead");
372 };
373
375 {
376 qWarning("qSlicerMarkupsModuleWidget::onDeleteAllMarkupsInListPushButtonClicked method is deprecated, please use onDeleteAllControlPointsInListPushButtonClicked instead");
378 };
379
380protected:
381 QScopedPointer<qSlicerMarkupsModuleWidgetPrivate> d_ptr;
382
383 void setup() override;
384
389
390private:
391 Q_DECLARE_PRIVATE(qSlicerMarkupsModuleWidget);
392 Q_DISABLE_COPY(qSlicerMarkupsModuleWidget);
393};
394
395#endif
qSlicerAbstractModuleWidget(QWidget *parent=nullptr)
void onMRMLSceneEndImportEvent()
Update the table after a scene is imported.
void onDeleteMarkupPushButtonClicked(bool confirm=true)
void onActiveMarkupMRMLNodeAdded(vtkMRMLNode *markupsNode)
void onHideCoordinateColumnsToggled(int index)
update visibility of the coordinate columns in the table
bool setEditedNode(vtkMRMLNode *node, QString role=QString(), QString context=QString()) override
Node editing.
QStringList & associatedMarkups()
~qSlicerMarkupsModuleWidget() override
void onLockAllControlPointsInListToggled()
Q_INVOKABLE void updateToolBar(vtkMRMLMarkupsNode *node)
void onDeselectAllControlPointsInListPushButtonClicked()
void onActiveMarkupTableCurrentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
React to arrows setting the current cell.
void onMissingControlPointPushButtonClicked()
qSlicerMarkupsModuleWidget(QWidget *parent=nullptr)
void onMeasurementModified(vtkObject *caller)
Update measurement information on GUI when a measurement is modified.
void exit() override
Disconnect from scene when exiting.
vtkMRMLMarkupsNode * mrmlMarkupsNode()
Get currently selected markups node.
void updateLogicFromSettings()
Set up the logic default display settings from the application settings.
void onJumpSlicesActionTriggered()
Jump slices action slot.
void onListLockedUnlockedPushButtonClicked()
Toggle the markups node locked flag.
void onSelectAllControlPointsInListPushButtonClicked()
void onResetToDefaultDisplayPropertiesPushButtonClicked()
Display property button slots.
void onResetControlPointPushButtonClicked()
vtkSlicerMarkupsLogic * markupsLogic()
Get the logic in the proper class.
void onMRMLSceneEndRestoreEvent()
Update the table after a scene view is restored.
void onCreateMarkupByClass(const QString &className)
Create markups node by class.
void observeMeasurementsInCurrentMarkupsNode()
Make sure all measurements in the current markups node are observed.
void onSelectedAllControlPointsInListToggled()
void onVisibilityAllControlPointsInListToggled()
void onSelectionNodeActivePlaceNodeIDChanged()
Update the combo box from the selection node.
void onRenameAllWithCurrentNameFormatPushButtonClicked()
void onNameFormatLineEditTextEdited(const QString text)
Update the markup label from the line edit entry.
void onDeleteControlPointPushButtonClicked(bool confirm=true)
QScopedPointer< qSlicerMarkupsModuleWidgetPrivate > d_ptr
void onListVisibleInvisiblePushButtonClicked()
Toggle the markups node visibility flag.
void populateMeasurementSettingsTable()
Populate measurement settings frame from the available measurements in the current markup.
void onActiveMarkupsNodeDisplayModifiedEvent()
Update the display properties widgets when the display node is modified.
void onMeasurementEnabledCheckboxToggled(bool on)
Enable/disable measurement when an enable checkbox has been toggled.
void onRefocusCamerasActionTriggered()
Refocus cameras action slot.
void onActiveMarkupTableCellClicked(QTableWidgetItem *item)
React to clicks in the table.
void onUnsetControlPointPushButtonClicked()
qSlicerAbstractModuleWidget Superclass
void onUpdateMarkupsOptionsWidgets()
Update internal list of markups options widgets from qMRMLMarkupsOptionsWidgetsFactory.
void onNewMarkupWithCurrentDisplayPropertiesTriggered()
void onActiveMarkupsNodeModifiedEvent()
Update table when markups node is modified.
void onActiveMarkupTableCellChanged(int row, int column)
Update the mrml node from the table.
void onFixedNumberOfControlPointsPushButtonClicked()
Toggle the markups node control point number locked flag.
void setCreateMarkupsButtonsColumns(unsigned int columns)
void onLockAllControlPointsInListPushButtonClicked()
void onCreateMarkupsPushButtons()
Update set of create markups push buttons.
void updateRow(int m)
Refresh a row of the control points table from the m-th markup.
void onSliceIntersectionsVisibilityToggled(bool checked)
void onActiveMarkupsNodeTransformModifiedEvent()
Update the transform related elements of the gui when the transform node is modified.
void enableMarkupTableButtons(bool enable)
void onMoveControlPointUpPushButtonClicked()
void addSelectedCoordinatesToMenu(QMenu *menu)
Add the coordinates of the currently selected markups as strings to the given menu,...
void onMeasurementsCollectionModified()
Update observations on measurements when their container is modified (i.e. measurement added or remov...
void onActiveMarkupMRMLNodeChanged(vtkMRMLNode *markupsNode)
void onRightClickActiveMarkupTableWidget(QPoint pos)
Provide a right click menu in the table.
void onMRMLSceneEndCloseEvent()
Clear out the gui when the scene is closed.
void onColorLegendCollapsibleGroupBoxToggled(bool)
Create or get first color legend if group box is expanded.
void onActiveMarkupsNodePointAddedEvent()
Update the table with the new point information if the node is active.
void onMoveControlPointDownPushButtonClicked()
void onVisibilityOnAllControlPointsInListPushButtonClicked()
List button slots.
void onUnlockAllControlPointsInListPushButtonClicked()
void onResetNameFormatToDefaultPushButtonClicked()
Reset the name format string and use list name to default.
void updateRows()
Refresh all the rows of the control points table from the markup node.
double nodeEditable(vtkMRMLNode *node) override
QStringList getOtherMarkupNames(vtkMRMLNode *thisMarkup)
void onNodeAddedEvent(vtkObject *scene, vtkObject *node)
void onRestoreControlPointPushButtonClicked()
void updateMeasurementsDescriptionLabel()
Update measurements description label.
void onPKeyActivated()
Respond to the p key being pressed.
void onSaveToDefaultDisplayPropertiesPushButtonClicked()
void setMRMLMarkupsNode(vtkMRMLMarkupsNode *markupsNode)
QList< qMRMLMarkupsOptionsWidget * > & additionalWidgets()
void onDeleteAllControlPointsInListPushButtonClicked()
void onNodeRemovedEvent(vtkObject *scene, vtkObject *node)
void onTransformedCoordinatesToggled(bool checked)
update the coordinates shown in the table to be either the transformed coordinates (checked) or the u...
void onActiveMarkupsNodePointModifiedEvent(vtkObject *caller, void *callData)
Update the table with the modified point information if the node is active.
void onActiveMarkupsNodePointRemovedEvent(vtkObject *caller, void *callData)
Update the table for the removed point if the node is active.
void onVisibilityOffAllControlPointsInListPushButtonClicked()
void onActiveMarkupItemChanged(vtkIdType)
Update the selection node from the tree view.
Abstract Superclass for all specific types of MRML nodes.