Slicer 5.4
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qMRMLSegmentsTableView.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
6 Queen's University, Kingston, ON, Canada. All Rights Reserved.
7
8 See COPYRIGHT.txt
9 or http://www.slicer.org/copyright/copyright.txt for details.
10
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16
17 This file was originally developed by Csaba Pinter, PerkLab, Queen's University
18 and was supported through the Applied Cancer Research Unit program of Cancer Care
19 Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
20
21==============================================================================*/
22
23#ifndef __qMRMLSegmentsTableView_h
24#define __qMRMLSegmentsTableView_h
25
26// Segmentations includes
27#include "qSlicerSegmentationsModuleWidgetsExport.h"
28
29// MRMLWidgets includes
30#include "qMRMLWidget.h"
31
32// CTK includes
33#include <ctkPimpl.h>
34#include <ctkVTKObject.h>
35
37class qMRMLSegmentsTableViewPrivate;
39class QContextMenuEvent;
40class QItemSelection;
41class QStandardItem;
42class QStringList;
43class QTableWidgetItem;
44class QTableView;
45class vtkMRMLNode;
46class vtkSegment;
47
49class Q_SLICER_MODULE_SEGMENTATIONS_WIDGETS_EXPORT qMRMLSegmentsTableView : public qMRMLWidget
50{
51 Q_OBJECT
52 QVTK_OBJECT
53
54public:
55 Q_PROPERTY(int selectionMode READ selectionMode WRITE setSelectionMode)
56 Q_PROPERTY(bool headerVisible READ headerVisible WRITE setHeaderVisible)
57 Q_PROPERTY(bool visibilityColumnVisible READ visibilityColumnVisible WRITE setVisibilityColumnVisible)
58 Q_PROPERTY(bool colorColumnVisible READ colorColumnVisible WRITE setColorColumnVisible)
59 Q_PROPERTY(bool opacityColumnVisible READ opacityColumnVisible WRITE setOpacityColumnVisible)
60 Q_PROPERTY(bool statusColumnVisible READ statusColumnVisible WRITE setStatusColumnVisible)
61 Q_PROPERTY(bool layerColumnVisible READ layerColumnVisible WRITE setLayerColumnVisible)
62 Q_PROPERTY(bool readOnly READ readOnly WRITE setReadOnly)
63 Q_PROPERTY(bool filterBarVisible READ filterBarVisible WRITE setFilterBarVisible)
64 Q_PROPERTY(QString textFilter READ textFilter WRITE setTextFilter)
65 Q_PROPERTY(bool jumpToSelectedSegmentEnabled READ jumpToSelectedSegmentEnabled WRITE setJumpToSelectedSegmentEnabled)
66
69 explicit qMRMLSegmentsTableView(QWidget* parent = nullptr);
72
74 Q_INVOKABLE vtkMRMLNode* segmentationNode();
75
77 Q_INVOKABLE QTableView* tableWidget();
78
80 int segmentCount() const;
81
83 Q_INVOKABLE QStringList selectedSegmentIDs();
85 Q_INVOKABLE void setSelectedSegmentIDs(QStringList segmentIDs);
87 Q_INVOKABLE void clearSelection();
88
90 Q_INVOKABLE static QString terminologyTooltipForSegment(vtkSegment* segment);
91
92 int selectionMode();
93 bool headerVisible();
94 bool visibilityColumnVisible();
95 bool colorColumnVisible();
96 bool opacityColumnVisible();
97 bool statusColumnVisible();
98 bool layerColumnVisible();
99 bool readOnly();
100 bool filterBarVisible();
101
104 Q_INVOKABLE void setHideSegments(const QStringList& segmentIDs);
105 Q_INVOKABLE QStringList hideSegments()const;
106
108 Q_INVOKABLE QStringList displayedSegmentIDs()const;
109
110 Q_INVOKABLE qMRMLSortFilterSegmentsProxyModel* sortFilterProxyModel()const;
111 Q_INVOKABLE qMRMLSegmentsModel* model()const;
112
115 QString textFilter();
116 // If the specified status should be shown in the table
118 Q_INVOKABLE bool statusShown(int status);
119
121 int rowForSegmentID(QString segmentID);
123 QString segmentIDForRow(int row);
124
125public slots:
127 void setSegmentationNode(vtkMRMLNode* node);
129 void setMRMLScene(vtkMRMLScene* newScene) override;
130
134 void setSelectionMode(int mode);
135
136 void setHeaderVisible(bool visible);
137 void setVisibilityColumnVisible(bool visible);
138 void setColorColumnVisible(bool visible);
139 void setOpacityColumnVisible(bool visible);
140 void setStatusColumnVisible(bool visible);
141 void setLayerColumnVisible(bool visible);
142 void setReadOnly(bool aReadOnly);
143 void setFilterBarVisible(bool visible);
144
146 void showOnlySelectedSegments();
147
150 void jumpSlices();
151
153 void setJumpToSelectedSegmentEnabled(bool enable);
154
156 void setSelectedSegmentsStatus(int status=-1);
157
159 void clearSelectedSegments();
160
162 void moveSelectedSegmentsUp();
164 void moveSelectedSegmentsDown();
165
168 void setTextFilter(QString textFilter);
171 void setStatusShown(int status, bool shown);
172
174 bool jumpToSelectedSegmentEnabled()const;
175
176signals:
178 void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
179
182 void segmentAboutToBeModified(const QString &segmentID);
183
184protected slots:
186 void onSegmentSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
187
189 void onVisibility3DActionToggled(bool visible);
190 void onVisibility2DFillActionToggled(bool visible);
191 void onVisibility2DOutlineActionToggled(bool visible);
192
194 void onSegmentsFilterModified();
196 void onShowStatusButtonClicked();
197
199 void onSegmentsTableClicked(const QModelIndex& modelIndex);
200
202 void endProcessing();
203
204 void onSegmentAddedOrRemoved();
205
208 void updateWidgetFromMRML();
209
211 void updateMRMLFromFilterParameters();
212
214 void modelAboutToBeReset();
215 void modelReset();
216
217protected:
224 void setSegmentVisibility(QObject* senderObject, int visible, int visible3D, int visible2DFill, int visible2DOutline);
225 void setSegmentVisibility(QString segmentId, int visible, int visible3D, int visible2DFill, int visible2DOutline);
226
228 bool eventFilter(QObject* target, QEvent* event) override;
229
231 void contextMenuEvent(QContextMenuEvent* event) override;
232
233protected:
234 QScopedPointer<qMRMLSegmentsTableViewPrivate> d_ptr;
235
236private:
237 Q_DECLARE_PRIVATE(qMRMLSegmentsTableView);
238 Q_DISABLE_COPY(qMRMLSegmentsTableView);
239};
240
241#endif
Item model for segments.
Base class for any widget that requires a MRML Scene.
Definition qMRMLWidget.h:36
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.
This class encapsulates a segment that is part of a segmentation.
Definition vtkSegment.h:46