Slicer 5.9
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
39class Q_SLICER_QTMODULES_MARKUPS_EXPORT qSlicerMarkupsModuleWidget :
41{
42 Q_OBJECT
43
44public:
45
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
102 QList<qMRMLMarkupsOptionsWidget*>& additionalWidgets();
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
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,
190 int previousRow, int previousColumn);
199
203 QStringList getOtherMarkupNames(vtkMRMLNode *thisMarkup);
204
208
212 void onActiveMarkupsNodePointModifiedEvent(vtkObject *caller, void *callData);
216 void onActiveMarkupsNodePointRemovedEvent(vtkObject *caller, void *callData);
221
225
230
233
236
246 void onMeasurementModified(vtkObject* caller);
249
252
255
256 // Enable or disable markup table buttons
257 void enableMarkupTableButtons(bool enable);
258
261
264
265 //-----------------------------------------------------------
266 // All public methods below are deprecated
267 //
268 // These methods are deprecated because they use old terms (markup instead of control point),
269
272 {
273 qWarning("qSlicerMarkupsModuleWidget::onVisibilityOnAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOnAllControlPointsInListPushButtonClicked instead");
274 this->onVisibilityOnAllControlPointsInListPushButtonClicked();
275 };
278 {
279 qWarning("qSlicerMarkupsModuleWidget::onVisibilityOffAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOffAllControlPointsInListPushButtonClicked instead");
280 this->onVisibilityOffAllControlPointsInListPushButtonClicked();
281 };
284 {
285 qWarning("qSlicerMarkupsModuleWidget::onVisibilityAllMarkupsInListToggled method is deprecated, please use onVisibilityAllControlPointsInListToggled instead");
286 this->onVisibilityAllControlPointsInListToggled();
287 };
290 {
291 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListPushButtonClicked method is deprecated, please use onLockAllControlPointsInListPushButtonClicked instead");
292 this->onLockAllControlPointsInListPushButtonClicked();
293 };
296 {
297 qWarning("qSlicerMarkupsModuleWidget::onUnlockAllMarkupsInListPushButtonClicked method is deprecated, please use onUnlockAllControlPointsInListPushButtonClicked instead");
298 this->onUnlockAllControlPointsInListPushButtonClicked();
299 };
302 {
303 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListToggled method is deprecated, please use onLockAllControlPointsInListToggled instead");
304 this->onLockAllControlPointsInListToggled();
305 };
308 {
309 qWarning("qSlicerMarkupsModuleWidget::onSelectAllMarkupsInListPushButtonClicked method is deprecated, please use onSelectAllControlPointsInListPushButtonClicked instead");
310 this->onSelectAllControlPointsInListPushButtonClicked();
311 };
314 {
315 qWarning("qSlicerMarkupsModuleWidget::onDeselectAllMarkupsInListPushButtonClicked method is deprecated, please use onDeselectAllControlPointsInListPushButtonClicked instead");
316 this->onDeselectAllControlPointsInListPushButtonClicked();
317 };
320 {
321 qWarning("qSlicerMarkupsModuleWidget::onSelectedAllMarkupsInListToggled method is deprecated, please use onSelectedAllControlPointsInListToggled instead");
322 this->onSelectedAllControlPointsInListToggled();
323 };
326 {
327 qWarning("qSlicerMarkupsModuleWidget::onAddMarkupPushButtonClicked method is deprecated, please use onAddControlPointPushButtonClicked instead");
328 this->onAddControlPointPushButtonClicked();
329 };
332 {
333 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupUpPushButtonClicked method is deprecated, please use onMoveControlPointUpPushButtonClicked instead");
334 this->onMoveControlPointUpPushButtonClicked();
335 };
338 {
339 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupDownPushButtonClicked method is deprecated, please use onMoveControlPointDownPushButtonClicked instead");
340 this->onMoveControlPointDownPushButtonClicked();
341 };
344 {
345 qWarning("qSlicerMarkupsModuleWidget::onRestoreMarkupPushButtonClicked method is deprecated, please use onRestoreControlPointPushButtonClicked instead");
346 this->onRestoreControlPointPushButtonClicked();
347 };
350 {
351 qWarning("qSlicerMarkupsModuleWidget::onResetMarkupPushButtonClicked method is deprecated, please use onResetControlPointPushButtonClicked instead");
352 this->onResetControlPointPushButtonClicked();
353 };
356 {
357 qWarning("qSlicerMarkupsModuleWidget::onUnsetMarkupPushButtonClicked method is deprecated, please use onUnsetControlPointPushButtonClicked instead");
358 this->onUnsetControlPointPushButtonClicked();
359 };
362 {
363 qWarning("qSlicerMarkupsModuleWidget::onMissingMarkupPushButtonClicked method is deprecated, please use onMissingControlPointPushButtonClicked instead");
364 this->onMissingControlPointPushButtonClicked();
365 };
367 void onDeleteMarkupPushButtonClicked(bool confirm=true)
368 {
369 qWarning("qSlicerMarkupsModuleWidget::onDeleteMarkupPushButtonClicked method is deprecated, please use onDeleteControlPointPushButtonClicked instead");
370 this->onDeleteControlPointPushButtonClicked(confirm);
371 };
374 {
375 qWarning("qSlicerMarkupsModuleWidget::onDeleteAllMarkupsInListPushButtonClicked method is deprecated, please use onDeleteAllControlPointsInListPushButtonClicked instead");
376 this->onDeleteAllControlPointsInListPushButtonClicked();
377 };
378
379protected:
380 QScopedPointer<qSlicerMarkupsModuleWidgetPrivate> d_ptr;
381
382 void setup() override;
383
388
389private:
390 Q_DECLARE_PRIVATE(qSlicerMarkupsModuleWidget);
391 Q_DISABLE_COPY(qSlicerMarkupsModuleWidget);
392};
393
394#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 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.