| 320 | } |
| 321 | |
| 322 | void QmitkSlicesInterpolator::Initialize(mitk::ToolManager *toolManager, |
| 323 | const QList<QmitkRenderWindow*>& windows) |
| 324 | { |
| 325 | Q_ASSERT(!windows.empty()); |
| 326 | |
| 327 | if (m_Initialized) |
| 328 | { |
| 329 | // remove old observers |
| 330 | this->Uninitialize(); |
| 331 | } |
| 332 | |
| 333 | m_ToolManager = toolManager; |
| 334 | |
| 335 | if (m_ToolManager) |
| 336 | { |
| 337 | // set enabled only if a segmentation is selected |
| 338 | mitk::DataNode *node = m_ToolManager->GetWorkingData(0); |
| 339 | QWidget::setEnabled(node != nullptr); |
| 340 | |
| 341 | // react whenever the set of selected segmentation changes |
| 342 | m_ToolManager->WorkingDataChanged += |
| 343 | mitk::MessageDelegate<QmitkSlicesInterpolator>(this, &QmitkSlicesInterpolator::OnToolManagerWorkingDataModified); |
| 344 | m_ToolManager->ReferenceDataChanged += mitk::MessageDelegate<QmitkSlicesInterpolator>( |
| 345 | this, &QmitkSlicesInterpolator::OnToolManagerReferenceDataModified); |
| 346 | |
| 347 | auto* timeNavigationController = mitk::RenderingManager::GetInstance()->GetTimeNavigationController(); |
| 348 | itk::MemberCommand<QmitkSlicesInterpolator>::Pointer timeChangedCommand = |
| 349 | itk::MemberCommand<QmitkSlicesInterpolator>::New(); |
| 350 | timeChangedCommand->SetCallbackFunction(this, &QmitkSlicesInterpolator::OnTimeChanged); |
| 351 | m_ControllerToTimeObserverTag = |
| 352 | timeNavigationController->AddObserver(mitk::TimeNavigationController::TimeEvent(0), timeChangedCommand); |
| 353 | |
| 354 | m_TimePoint = timeNavigationController->GetSelectedTimePoint(); |
| 355 | |
| 356 | // connect to the slice navigation controller. after each change, call the interpolator |
| 357 | for (auto* window : windows) |
| 358 | { |
| 359 | this->InitializeWindow(window); |
| 360 | } |
| 361 | |
| 362 | m_ActionToSlicerMap = CreateActionToSlicer(windows); |
| 363 | } |
| 364 | |
| 365 | m_Initialized = true; |
| 366 | } |
| 367 | |
| 368 | void QmitkSlicesInterpolator::Uninitialize() |
| 369 | { |