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 : public qSlicerAbstractModuleWidget
40{
41 Q_OBJECT
42
43public:
45 qSlicerMarkupsModuleWidget(QWidget* parent = nullptr);
47
50 void enter() override;
52 void exit() override;
53
56
72 void updateRow(int m);
74 void updateRows();
75
79
82
85
89
90 // Set number of columns for organization of create markups buttons
91 void setCreateMarkupsButtonsColumns(unsigned int columns);
92
93 bool setEditedNode(vtkMRMLNode* node, QString role = QString(), QString context = QString()) override;
94 double nodeEditable(vtkMRMLNode* node) override;
95
96 // Returns the list of associated markups
97 QStringList& associatedMarkups();
98
99 // Add additional widget
101
102 Q_INVOKABLE void updateToolBar(vtkMRMLMarkupsNode* node);
103
104public slots:
105
108 void onNodeAddedEvent(vtkObject* scene, vtkObject* node);
112 void onNodeRemovedEvent(vtkObject* scene, vtkObject* node);
124
128
146 void onDeleteControlPointPushButtonClicked(bool confirm = true);
148
154
158
160 void onCreateMarkupByClass(const QString& className);
161
164
167
170
172 void onNameFormatLineEditTextEdited(const QString text);
173
176
181
183 void onActiveMarkupTableCellChanged(int row, int column);
185 void onActiveMarkupTableCellClicked(QTableWidgetItem* item);
187 void onActiveMarkupTableCurrentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn);
196
200 QStringList getOtherMarkupNames(vtkMRMLNode* thisMarkup);
201
205
209 void onActiveMarkupsNodePointModifiedEvent(vtkObject* caller, void* callData);
213 void onActiveMarkupsNodePointRemovedEvent(vtkObject* caller, void* callData);
218
222
227
230
233
243 void onMeasurementModified(vtkObject* caller);
246
249
252
253 // Enable or disable markup table buttons
254 void enableMarkupTableButtons(bool enable);
255
258
261
262 //-----------------------------------------------------------
263 // All public methods below are deprecated
264 //
265 // These methods are deprecated because they use old terms (markup instead of control point),
266
269 {
270 qWarning(
271 "qSlicerMarkupsModuleWidget::onVisibilityOnAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOnAllControlPointsInListPushButtonClicked instead");
273 };
274
276 {
277 qWarning("qSlicerMarkupsModuleWidget::onVisibilityOffAllMarkupsInListPushButtonClicked method is deprecated, please use onVisibilityOffAllControlPointsInListPushButtonClicked "
278 "instead");
280 };
281
283 {
284 qWarning("qSlicerMarkupsModuleWidget::onVisibilityAllMarkupsInListToggled method is deprecated, please use onVisibilityAllControlPointsInListToggled instead");
286 };
287
289 {
290 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListPushButtonClicked method is deprecated, please use onLockAllControlPointsInListPushButtonClicked instead");
292 };
293
295 {
296 qWarning("qSlicerMarkupsModuleWidget::onUnlockAllMarkupsInListPushButtonClicked method is deprecated, please use onUnlockAllControlPointsInListPushButtonClicked instead");
298 };
299
301 {
302 qWarning("qSlicerMarkupsModuleWidget::onLockAllMarkupsInListToggled method is deprecated, please use onLockAllControlPointsInListToggled instead");
304 };
305
307 {
308 qWarning("qSlicerMarkupsModuleWidget::onSelectAllMarkupsInListPushButtonClicked method is deprecated, please use onSelectAllControlPointsInListPushButtonClicked instead");
310 };
311
313 {
314 qWarning("qSlicerMarkupsModuleWidget::onDeselectAllMarkupsInListPushButtonClicked method is deprecated, please use onDeselectAllControlPointsInListPushButtonClicked instead");
316 };
317
319 {
320 qWarning("qSlicerMarkupsModuleWidget::onSelectedAllMarkupsInListToggled method is deprecated, please use onSelectedAllControlPointsInListToggled instead");
322 };
323
325 {
326 qWarning("qSlicerMarkupsModuleWidget::onAddMarkupPushButtonClicked method is deprecated, please use onAddControlPointPushButtonClicked instead");
328 };
329
331 {
332 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupUpPushButtonClicked method is deprecated, please use onMoveControlPointUpPushButtonClicked instead");
334 };
335
337 {
338 qWarning("qSlicerMarkupsModuleWidget::onMoveMarkupDownPushButtonClicked method is deprecated, please use onMoveControlPointDownPushButtonClicked instead");
340 };
341
343 {
344 qWarning("qSlicerMarkupsModuleWidget::onRestoreMarkupPushButtonClicked method is deprecated, please use onRestoreControlPointPushButtonClicked instead");
346 };
347
349 {
350 qWarning("qSlicerMarkupsModuleWidget::onResetMarkupPushButtonClicked method is deprecated, please use onResetControlPointPushButtonClicked instead");
352 };
353
355 {
356 qWarning("qSlicerMarkupsModuleWidget::onUnsetMarkupPushButtonClicked method is deprecated, please use onUnsetControlPointPushButtonClicked instead");
358 };
359
361 {
362 qWarning("qSlicerMarkupsModuleWidget::onMissingMarkupPushButtonClicked method is deprecated, please use onMissingControlPointPushButtonClicked instead");
364 };
365
366 void onDeleteMarkupPushButtonClicked(bool confirm = true)
367 {
368 qWarning("qSlicerMarkupsModuleWidget::onDeleteMarkupPushButtonClicked method is deprecated, please use onDeleteControlPointPushButtonClicked instead");
370 };
371
373 {
374 qWarning("qSlicerMarkupsModuleWidget::onDeleteAllMarkupsInListPushButtonClicked method is deprecated, please use onDeleteAllControlPointsInListPushButtonClicked instead");
376 };
377
378protected:
379 QScopedPointer<qSlicerMarkupsModuleWidgetPrivate> d_ptr;
380
381 void setup() override;
382
387
388private:
389 Q_DECLARE_PRIVATE(qSlicerMarkupsModuleWidget);
390 Q_DISABLE_COPY(qSlicerMarkupsModuleWidget);
391};
392
393#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.