| 217 | } |
| 218 | |
| 219 | void QmitkMultiLabelInspector::SetMultiLabelNode(mitk::DataNode* node) |
| 220 | { |
| 221 | if (node != this->m_SegmentationNode.GetPointer()) |
| 222 | { |
| 223 | m_SegmentationObserver.Reset(); |
| 224 | m_SegmentationNode = node; |
| 225 | m_LabelHighlightGuard.SetSegmentationNode(m_SegmentationNode); |
| 226 | m_SegmentationNodeDataMTime = 0; |
| 227 | |
| 228 | if (m_SegmentationNode.IsNotNull()) |
| 229 | { |
| 230 | auto& widget = *this; |
| 231 | auto checkAndSetSeg = [&widget, node](const itk::EventObject&) |
| 232 | { |
| 233 | if (widget.m_SegmentationNodeDataMTime < node->GetDataReferenceChangedTime()) |
| 234 | { |
| 235 | auto newSeg = dynamic_cast<mitk::MultiLabelSegmentation*>(node->GetData()); |
| 236 | if (nullptr == newSeg) mitkThrow() << "Invalid usage. Node set does not contain a segmentation."; |
| 237 | |
| 238 | widget.m_SegmentationNodeDataMTime = node->GetDataReferenceChangedTime(); |
| 239 | widget.SetMultiLabelSegmentation(newSeg); |
| 240 | } |
| 241 | }; |
| 242 | |
| 243 | m_SegmentationObserver.Reset(node, itk::ModifiedEvent(), checkAndSetSeg); |
| 244 | checkAndSetSeg(itk::ModifiedEvent()); |
| 245 | } |
| 246 | else |
| 247 | { |
| 248 | this->SetMultiLabelSegmentation(nullptr); |
| 249 | } |
| 250 | } |
| 251 | } |
| 252 | |
| 253 | mitk::DataNode* QmitkMultiLabelInspector::GetMultiLabelNode() const |
| 254 | { |
nothing calls this directly
no test coverage detected