Slicer 5.4
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
27class QItemSelection;
28class QMenu;
29class QModelIndex;
30class QStringList;
31class QTableWidgetItem;
32class QShortcut;
33class qMRMLMarkupsOptionsWidget;
34class qSlicerMarkupsModuleWidgetPrivate;
36class vtkMRMLNode;
38
40class Q_SLICER_QTMODULES_MARKUPS_EXPORT qSlicerMarkupsModuleWidget :
42{
43 Q_OBJECT
44
45public:
46
48 qSlicerMarkupsModuleWidget(QWidget *parent=nullptr);
50
53 void enter() override;
55 void exit() override;
56
59
75 void updateRow(int m);
77 void updateRows();
78
82
85
88
92
93 // Set number of columns for organization of create markups buttons
94 void setCreateMarkupsButtonsColumns(unsigned int columns);
95
96 bool setEditedNode(vtkMRMLNode* node, QString role = QString(), QString context = QString()) override;
97 double nodeEditable(vtkMRMLNode* node) override;
98
99 // Returns the list of associated markups
100 QStringList& associatedMarkups();
101
102 // Add additional widget
103 QList<qMRMLMarkupsOptionsWidget*>& additionalWidgets();
104
105 Q_INVOKABLE void updateToolBar(vtkMRMLMarkupsNode* node);
106
107public slots:
108
111 void onNodeAddedEvent(vtkObject* scene, vtkObject* node);
115 void onNodeRemovedEvent(vtkObject* scene, vtkObject* node);
127
131
151
157
161
163 void onCreateMarkupByClass(const QString& className);
164
167
170
173
175 void onNameFormatLineEditTextEdited(const QString text);
176
179
184
186 void onActiveMarkupTableCellChanged(int row, int column);
188 void onActiveMarkupTableCellClicked(QTableWidgetItem* item);
190 void onActiveMarkupTableCurrentCellChanged(int currentRow, int currentColumn,
191 int previousRow, int previousColumn);
200
204 QStringList getOtherMarkupNames(vtkMRMLNode *thisMarkup);
205
209
213 void onActiveMarkupsNodePointModifiedEvent(vtkObject *caller, void *callData);
217 void onActiveMarkupsNodePointRemovedEvent(vtkObject *caller, void *callData);
222
226
231
234
237
247 void onMeasurementModified(vtkObject* caller);
250
253
256
257 // Enable or disable markup table buttons
258 void enableMarkupTableButtons(bool enable);
259
262
265
266 //-----------------------------------------------------------
267 // All public methods below are deprecated
268 //
269 // These methods are deprecated because they use old terms (markup instead of control point),
270
273 {
274 qWarning("qSlicerMarkupsModuleWidget::onVisibilityOnAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOnAllControlPointsInListPushButtonClicked instead");
275 this->onVisibilityOnAllControlPointsInListPushButtonClicked();
276 };
279 {
280 qWarning("qSlicerMarkupsModuleWidget::onVisibilityOffAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOffAllControlPointsInListPushButtonClicked instead");
281 this->onVisibilityOffAllControlPointsInListPushButtonClicked();
282 };
285 {
286 qWarning("qSlicerMarkupsModuleWidget::onVisibilityAllMarkupsInListToggled method is deprecated, please use onVisibilityAllControlPointsInListToggled instead");
287 this->onVisibilityAllControlPointsInListToggled();
288 };
291 {
292 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListPushButtonClicked method is deprecated, please use onLockAllControlPointsInListPushButtonClicked instead");
293 this->onLockAllControlPointsInListPushButtonClicked();
294 };
297 {
298 qWarning("qSlicerMarkupsModuleWidget::onUnlockAllMarkupsInListPushButtonClicked method is deprecated, please use onUnlockAllControlPointsInListPushButtonClicked instead");
299 this->onUnlockAllControlPointsInListPushButtonClicked();
300 };
303 {
304 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListToggled method is deprecated, please use onLockAllControlPointsInListToggled instead");
305 this->onLockAllControlPointsInListToggled();
306 };
309 {
310 qWarning("qSlicerMarkupsModuleWidget::onSelectAllMarkupsInListPushButtonClicked method is deprecated, please use onSelectAllControlPointsInListPushButtonClicked instead");
311 this->onSelectAllControlPointsInListPushButtonClicked();
312 };
315 {
316 qWarning("qSlicerMarkupsModuleWidget::onDeselectAllMarkupsInListPushButtonClicked method is deprecated, please use onDeselectAllControlPointsInListPushButtonClicked instead");
317 this->onDeselectAllControlPointsInListPushButtonClicked();
318 };
321 {
322 qWarning("qSlicerMarkupsModuleWidget::onSelectedAllMarkupsInListToggled method is deprecated, please use onSelectedAllControlPointsInListToggled instead");
323 this->onSelectedAllControlPointsInListToggled();
324 };
327 {
328 qWarning("qSlicerMarkupsModuleWidget::onAddMarkupPushButtonClicked method is deprecated, please use onAddControlPointPushButtonClicked instead");
329 this->onAddControlPointPushButtonClicked();
330 };
333 {
334 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupUpPushButtonClicked method is deprecated, please use onMoveControlPointUpPushButtonClicked instead");
335 this->onMoveControlPointUpPushButtonClicked();
336 };
339 {
340 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupDownPushButtonClicked method is deprecated, please use onMoveControlPointDownPushButtonClicked instead");
341 this->onMoveControlPointDownPushButtonClicked();
342 };
345 {
346 qWarning("qSlicerMarkupsModuleWidget::onRestoreMarkupPushButtonClicked method is deprecated, please use onRestoreControlPointPushButtonClicked instead");
347 this->onRestoreControlPointPushButtonClicked();
348 };
351 {
352 qWarning("qSlicerMarkupsModuleWidget::onResetMarkupPushButtonClicked method is deprecated, please use onResetControlPointPushButtonClicked instead");
353 this->onResetControlPointPushButtonClicked();
354 };
357 {
358 qWarning("qSlicerMarkupsModuleWidget::onUnsetMarkupPushButtonClicked method is deprecated, please use onUnsetControlPointPushButtonClicked instead");
359 this->onUnsetControlPointPushButtonClicked();
360 };
363 {
364 qWarning("qSlicerMarkupsModuleWidget::onMissingMarkupPushButtonClicked method is deprecated, please use onMissingControlPointPushButtonClicked instead");
365 this->onMissingControlPointPushButtonClicked();
366 };
368 void onDeleteMarkupPushButtonClicked(bool confirm=true)
369 {
370 qWarning("qSlicerMarkupsModuleWidget::onDeleteMarkupPushButtonClicked method is deprecated, please use onDeleteControlPointPushButtonClicked instead");
371 this->onDeleteControlPointPushButtonClicked(confirm);
372 };
375 {
376 qWarning("qSlicerMarkupsModuleWidget::onDeleteAllMarkupsInListPushButtonClicked method is deprecated, please use onDeleteAllControlPointsInListPushButtonClicked instead");
377 this->onDeleteAllControlPointsInListPushButtonClicked();
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
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 onListVisibileInvisiblePushButtonClicked()
Toggle the markups node visibility flag.
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 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.