Public Member Functions | Public Attributes

SelListenerPointBasedRegistration Struct Reference

Inheritance diagram for SelListenerPointBasedRegistration:
Inheritance graph
[legend]
Collaboration diagram for SelListenerPointBasedRegistration:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 berryObjectMacro (SelListenerPointBasedRegistration)
 SelListenerPointBasedRegistration (QmitkPointBasedRegistrationView *view)
void DoSelectionChanged (ISelection::ConstPointer selection)
void SelectionChanged (IWorkbenchPart::Pointer part, ISelection::ConstPointer selection)

Public Attributes

QmitkPointBasedRegistrationViewm_View

Detailed Description

Definition at line 62 of file QmitkPointBasedRegistrationView.cpp.


Constructor & Destructor Documentation

SelListenerPointBasedRegistration::SelListenerPointBasedRegistration ( QmitkPointBasedRegistrationView view ) [inline]

Definition at line 66 of file QmitkPointBasedRegistrationView.cpp.

  {
    m_View = view;
  }

Member Function Documentation

SelListenerPointBasedRegistration::berryObjectMacro ( SelListenerPointBasedRegistration   )
void SelListenerPointBasedRegistration::DoSelectionChanged ( ISelection::ConstPointer  selection ) [inline]

Definition at line 71 of file QmitkPointBasedRegistrationView.cpp.

References berry::SmartPointer< TObjectType >::Cast(), QmitkPointBasedRegistrationView::m_CurrentSelection, mitk::NodePredicateAnd::New(), and mitk::NodePredicateNot::New().

  {
//    if(!m_View->IsVisible())
//      return;
    // save current selection in member variable
    m_View->m_CurrentSelection = selection.Cast<const IStructuredSelection>();

    // do something with the selected items
    if(m_View->m_CurrentSelection)
    {
      if (m_View->m_CurrentSelection->Size() != 2)
      {
        if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull())
        {
          m_View->m_Controls.m_StatusLabel->show();
          m_View->m_Controls.TextLabelFixed->hide();
          m_View->m_Controls.m_FixedLabel->hide();
          m_View->m_Controls.line2->hide();
          m_View->m_Controls.m_FixedPointListWidget->hide();
          m_View->m_Controls.TextLabelMoving->hide();
          m_View->m_Controls.m_MovingLabel->hide();
          m_View->m_Controls.line1->hide();
          m_View->m_Controls.m_MovingPointListWidget->hide();
          m_View->m_Controls.m_OpacityLabel->hide();
          m_View->m_Controls.m_OpacitySlider->hide();
          m_View->m_Controls.label->hide();
          m_View->m_Controls.label_2->hide();
          m_View->m_Controls.m_SwitchImages->hide();
          m_View->m_Controls.m_ShowRedGreenValues->setEnabled(false);
        }
      }
      else
      {
        m_View->m_Controls.m_StatusLabel->hide();
        bool foundFixedImage = false;
        mitk::DataNode::Pointer fixedNode;
        // iterate selection
        for (IStructuredSelection::iterator i = m_View->m_CurrentSelection->Begin();
          i != m_View->m_CurrentSelection->End(); ++i)
        {
          // extract datatree node
          if (mitk::DataNodeObject::Pointer nodeObj = i->Cast<mitk::DataNodeObject>())
          {
            mitk::TNodePredicateDataType<mitk::BaseData>::Pointer isBaseData(mitk::TNodePredicateDataType<mitk::BaseData>::New());
            mitk::TNodePredicateDataType<mitk::PointSet>::Pointer isPointSet(mitk::TNodePredicateDataType<mitk::PointSet>::New());
            mitk::NodePredicateNot::Pointer notPointSet = mitk::NodePredicateNot::New(isPointSet);
            mitk::TNodePredicateDataType<mitk::Geometry2DData>::Pointer isGeometry2DData(mitk::TNodePredicateDataType<mitk::Geometry2DData>::New());
            mitk::NodePredicateNot::Pointer notGeometry2DData = mitk::NodePredicateNot::New(isGeometry2DData);
            mitk::NodePredicateAnd::Pointer notPointSetAndNotGeometry2DData = mitk::NodePredicateAnd::New( notPointSet, notGeometry2DData );
            mitk::NodePredicateAnd::Pointer predicate = mitk::NodePredicateAnd::New( isBaseData, notPointSetAndNotGeometry2DData );


            mitk::DataStorage::SetOfObjects::ConstPointer setOfObjects = m_View->GetDataStorage()->GetSubset(predicate);

            mitk::DataNode::Pointer node = nodeObj->GetDataNode();

            // only look at interesting types
            for (mitk::DataStorage::SetOfObjects::ConstIterator nodeIt = setOfObjects->Begin()
              ; nodeIt != setOfObjects->End(); ++nodeIt)  // for each node
            {
              if(nodeIt->Value().GetPointer() == node.GetPointer())
              {
                if(QString("Image").compare(node->GetData()->GetNameOfClass())==0)
                {
                  if (dynamic_cast<mitk::Image*>(node->GetData())->GetDimension() == 4)
                  {
                    m_View->m_Controls.m_StatusLabel->show();
                    QMessageBox::information( NULL, "PointBasedRegistration", "Only 2D or 3D images can be processed.", QMessageBox::Ok );
                    return;
                  }
                  if (foundFixedImage == false)
                  {
                    fixedNode = node;
                    foundFixedImage = true;
                  }
                  else
                  {
                    m_View->SetImagesVisible(selection);
                    m_View->FixedSelected(fixedNode);
                    m_View->MovingSelected(node);
                    m_View->m_Controls.m_StatusLabel->hide();
                    m_View->m_Controls.TextLabelFixed->show();
                    m_View->m_Controls.m_FixedLabel->show();
                    m_View->m_Controls.line2->show();
                    m_View->m_Controls.m_FixedPointListWidget->show();
                    m_View->m_Controls.TextLabelMoving->show();
                    m_View->m_Controls.m_MovingLabel->show();
                    m_View->m_Controls.line1->show();
                    m_View->m_Controls.m_MovingPointListWidget->show();
                    m_View->m_Controls.m_OpacityLabel->show();
                    m_View->m_Controls.m_OpacitySlider->show();
                    m_View->m_Controls.label->show();
                    m_View->m_Controls.label_2->show();
                    m_View->m_Controls.m_SwitchImages->show();
                    m_View->m_Controls.m_ShowRedGreenValues->setEnabled(true);
                  }
                }

                else
                {
                  m_View->m_Controls.m_StatusLabel->show();
                  return;
                }

              }
            }
          }
        }
        if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull())
        {
          m_View->m_Controls.m_StatusLabel->show();
        }
      }
    }
    else if (m_View->m_FixedNode.IsNull() || m_View->m_MovingNode.IsNull())
    {
      m_View->m_Controls.m_StatusLabel->show();
    }
  }
void SelListenerPointBasedRegistration::SelectionChanged ( IWorkbenchPart::Pointer  part,
ISelection::ConstPointer  selection 
) [inline, virtual]

Implements berry::ISelectionListener.

Definition at line 191 of file QmitkPointBasedRegistrationView.cpp.

  {
    // check, if selection comes from datamanager
    if (part)
    {
      QString partname(part->GetPartName().c_str());
      if(partname.compare("Datamanager")==0)
      {
        // apply selection
        DoSelectionChanged(selection);
      }
    }
  }

Member Data Documentation

Definition at line 205 of file QmitkPointBasedRegistrationView.cpp.


The documentation for this struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines