#include <QmitkSegmentationView.h>


Definition at line 34 of file QmitkSegmentationView.h.
typedef std::vector<mitk::DataNode*> QmitkSegmentationView::NodeList [protected] |
Definition at line 92 of file QmitkSegmentationView.h.
| QmitkSegmentationView::QmitkSegmentationView | ( | ) |
Definition at line 39 of file QmitkSegmentationView.cpp.
:m_Parent(NULL) ,m_Controls(NULL) ,m_MultiWidget(NULL) ,m_PostProcessing(NULL) ,m_RenderingManagerObserverTag(0) { }
| QmitkSegmentationView::~QmitkSegmentationView | ( | ) | [virtual] |
Definition at line 48 of file QmitkSegmentationView.cpp.
References m_Controls, and m_PostProcessing.
{
delete m_PostProcessing;
delete m_Controls;
}
| void QmitkSegmentationView::Activated | ( | ) | [virtual] |
Only called when IsExclusiveFunctionality() returns true.
Reimplemented from QmitkFunctionality.
Definition at line 72 of file QmitkSegmentationView.cpp.
References QmitkSlicesInterpolator::EnableInterpolation(), mitk::RenderingManager::GetInstance(), m_Controls, Ui_QmitkSegmentationControls::m_LesionToolSelectionBox, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, Ui_QmitkSegmentationControls::m_OrganToolSelectionBox, m_RenderingManagerObserverTag, Ui_QmitkSegmentationControls::m_SlicesInterpolator, Ui_QmitkSegmentationControls::pageManual, RenderingManagerReinitialized(), QmitkToolSelectionBox::setEnabled(), and Ui_QmitkSegmentationControls::widgetStack.
{
// should be moved to ::BecomesVisible() or similar
if( m_Controls )
{
m_Controls->m_ManualToolSelectionBox->setEnabled( true );
m_Controls->m_OrganToolSelectionBox->setEnabled( true );
m_Controls->m_LesionToolSelectionBox->setEnabled( true );
m_Controls->m_SlicesInterpolator->EnableInterpolation( m_Controls->widgetStack->currentWidget() == m_Controls->pageManual );
itk::ReceptorMemberCommand<QmitkSegmentationView>::Pointer command1 = itk::ReceptorMemberCommand<QmitkSegmentationView>::New();
command1->SetCallbackFunction( this, &QmitkSegmentationView::RenderingManagerReinitialized );
m_RenderingManagerObserverTag = mitk::RenderingManager::GetInstance()->AddObserver( mitk::RenderingManagerViewsInitializedEvent(), command1 );
}
}
| void QmitkSegmentationView::AppendToOrganList | ( | QStringList & | organColors, |
| const QString & | organname, | ||
| int | r, | ||
| int | g, | ||
| int | b | ||
| ) | [protected] |
Definition at line 98 of file QmitkSegmentationOrganNamesHandling.cpp.
Referenced by GetDefaultOrganColorString().
{
organColors.append( organname + QColor(r, g, b).name() );
}
| void QmitkSegmentationView::ApplyDisplayOptions | ( | mitk::DataNode * | node ) | [protected] |
Definition at line 726 of file QmitkSegmentationView.cpp.
References QmitkFunctionality::GetPreferences(), mitk::DataNode::GetPropertyValue(), mitk::FloatProperty::New(), mitk::BoolProperty::New(), and mitk::DataNode::SetProperty().
Referenced by ForceDisplayPreferencesUponAllImages().
{
if (!node) return;
bool isBinary(false);
node->GetPropertyValue("binary", isBinary);
if (isBinary)
{
node->SetProperty( "outline binary", mitk::BoolProperty::New( this->GetPreferences()->GetBool("draw outline", true)) );
node->SetProperty( "outline width", mitk::FloatProperty::New( 2.0 ) );
node->SetProperty( "opacity", mitk::FloatProperty::New( this->GetPreferences()->GetBool("draw outline", true) ? 1.0 : 0.3 ) );
node->SetProperty( "volumerendering", mitk::BoolProperty::New( this->GetPreferences()->GetBool("volume rendering", false) ) );
}
}
| void QmitkSegmentationView::CheckImageAlignment | ( | ) | [protected] |
Definition at line 630 of file QmitkSegmentationView.cpp.
References mitk::ToolManager::GetReferenceData(), QmitkStdMultiWidget::GetRenderWindow1(), QmitkStdMultiWidget::GetRenderWindow2(), QmitkStdMultiWidget::GetRenderWindow3(), QmitkToolSelectionBox::GetToolManager(), IsRenderWindowAligned(), Ui_QmitkSegmentationControls::lblAlignmentWarning, m_Controls, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, and m_MultiWidget.
Referenced by RenderingManagerReinitialized(), SetToolManagerSelection(), and SliceRotation().
{
bool wrongAlignment(false);
mitk::DataNode::Pointer node = m_Controls->m_ManualToolSelectionBox->GetToolManager()->GetReferenceData(0);
if (node.IsNotNull())
{
mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( node->GetData() );
if (image.IsNotNull() && m_MultiWidget)
{
wrongAlignment = !( IsRenderWindowAligned(m_MultiWidget->GetRenderWindow1(), image )
&& IsRenderWindowAligned(m_MultiWidget->GetRenderWindow2(), image )
&& IsRenderWindowAligned(m_MultiWidget->GetRenderWindow3(), image )
);
}
}
if (wrongAlignment)
{
m_Controls->lblAlignmentWarning->show();
}
else
{
m_Controls->lblAlignmentWarning->hide();
}
}
| void QmitkSegmentationView::CreateNewSegmentation | ( | ) | [protected, slot] |
Definition at line 190 of file QmitkSegmentationView.cpp.
References mitk::Tool::CreateEmptySegmentationNode(), QmitkFunctionality::FireNodeSelected(), QmitkNewSegmentationDialog::GetColor(), QmitkFunctionality::GetDefaultDataStorage(), GetDefaultOrganColorString(), QmitkFunctionality::GetPreferences(), mitk::ToolManager::GetReferenceData(), QmitkNewSegmentationDialog::GetSegmentationName(), mitk::ToolManager::GetToolById(), QmitkToolSelectionBox::GetToolManager(), m_Controls, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, m_Parent, MITK_DEBUG, MITK_ERROR, OnSelectionChanged(), QmitkNewSegmentationDialog::SetSuggestionList(), and UpdateOrganList().
Referenced by CreateQtPartControl().
{
mitk::DataNode::Pointer node = m_Controls->m_ManualToolSelectionBox->GetToolManager()->GetReferenceData(0);
if (node.IsNotNull())
{
mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( node->GetData() );
if (image.IsNotNull())
{
if (image->GetDimension()>2)
{
// ask about the name and organ type of the new segmentation
QmitkNewSegmentationDialog* dialog = new QmitkNewSegmentationDialog( m_Parent ); // needs a QWidget as parent, "this" is not QWidget
QString storedList = QString::fromStdString( this->GetPreferences()->GetByteArray("Organ-Color-List","") );
QStringList organColors;
if (storedList.isEmpty())
{
organColors = GetDefaultOrganColorString();
}
else
{
/*
a couple of examples of how organ names are stored:
a simple item is built up like 'name#AABBCC' where #AABBCC is the hexadecimal notation of a color as known from HTML
items are stored separated by ';'
this makes it necessary to escape occurrences of ';' in name.
otherwise the string "hugo;ypsilon#AABBCC;eugen#AABBCC" could not be parsed as two organs
but we would get "hugo" and "ypsilon#AABBCC" and "eugen#AABBCC"
so the organ name "hugo;ypsilon" is stored as "hugo\;ypsilon"
and must be unescaped after loading
the following lines could be one split with Perl's negative lookbehind
*/
// recover string list from BlueBerry view's preferences
QString storedString = QString::fromStdString( this->GetPreferences()->GetByteArray("Organ-Color-List","") );
MITK_DEBUG << "storedString: " << storedString.toStdString();
// match a string consisting of any number of repetitions of either "anything but ;" or "\;". This matches everything until the next unescaped ';'
QRegExp onePart("(?:[^;]|\\\\;)*");
MITK_DEBUG << "matching " << onePart.pattern().toStdString();
int count = 0;
int pos = 0;
while( (pos = onePart.indexIn( storedString, pos )) != -1 )
{
++count;
int length = onePart.matchedLength();
if (length == 0) break;
QString matchedString = storedString.mid(pos, length);
MITK_DEBUG << " Captured length " << length << ": " << matchedString.toStdString();
pos += length + 1; // skip separating ';'
// unescape possible occurrences of '\;' in the string
matchedString.replace("\\;", ";");
// add matched string part to output list
organColors << matchedString;
}
MITK_DEBUG << "Captured " << count << " organ name/colors";
}
dialog->SetSuggestionList( organColors );
int dialogReturnValue = dialog->exec();
if ( dialogReturnValue == QDialog::Rejected ) return; // user clicked cancel or pressed Esc or something similar
// ask the user about an organ type and name, add this information to the image's (!) propertylist
// create a new image of the same dimensions and smallest possible pixel type
mitk::ToolManager* toolManager = m_Controls->m_ManualToolSelectionBox->GetToolManager();
mitk::Tool* firstTool = toolManager->GetToolById(0);
if (firstTool)
{
try
{
mitk::DataNode::Pointer emptySegmentation =
firstTool->CreateEmptySegmentationNode( image, dialog->GetSegmentationName().toStdString(), dialog->GetColor() );
if (!emptySegmentation) return; // could be aborted by user
UpdateOrganList( organColors, dialog->GetSegmentationName(), dialog->GetColor() );
/*
escape ';' here (replace by '\;'), see longer comment above
*/
std::string stringForStorage = organColors.replaceInStrings(";","\\;").join(";").toStdString();
MITK_DEBUG << "Will store: " << stringForStorage;
this->GetPreferences()->PutByteArray("Organ-Color-List", stringForStorage );
this->GetPreferences()->Flush();
this->GetDefaultDataStorage()->Add( emptySegmentation, node ); // add as a child, because the segmentation "derives" from the original
this->FireNodeSelected( emptySegmentation );
this->OnSelectionChanged( emptySegmentation );
}
catch (std::bad_alloc)
{
QMessageBox::warning(NULL,"Create new segmentation","Could not allocate memory for new segmentation");
}
}
}
else
{
QMessageBox::information(NULL,"Segmentation","Segmentation is currently not supported for 2D images");
}
}
}
else
{
MITK_ERROR << "'Create new segmentation' button should never be clickable unless a patient image is selected...";
}
}
| void QmitkSegmentationView::CreateQtPartControl | ( | QWidget * | parent ) | [protected, virtual] |
Implements berry::QtViewPart.
Definition at line 742 of file QmitkSegmentationView.cpp.
References Ui_QmitkSegmentationControls::btnNewSegmentation, CreateNewSegmentation(), CreateSegmentationFromSurface(), Ui_QmitkSegmentationControls::CreateSegmentationFromSurface, QmitkToolSelectionBox::EnabledWithReferenceAndWorkingData, QmitkToolSelectionBox::EnabledWithReferenceData, QmitkFunctionality::GetDefaultDataStorage(), QmitkDataStorageComboBox::GetSelectedNode(), QmitkToolSelectionBox::GetToolManager(), Ui_QmitkSegmentationControls::lblAlignmentWarning, Ui_QmitkSegmentationControls::lblReferenceImageSelectionWarning, Ui_QmitkSegmentationControls::lblSegImage, Ui_QmitkSegmentationControls::lblSegmentation, Ui_QmitkSegmentationControls::lblWorkingImageSelectionWarning, m_Controls, Ui_QmitkSegmentationControls::m_LesionToolGUIContainer, Ui_QmitkSegmentationControls::m_LesionToolSelectionBox, Ui_QmitkSegmentationControls::m_ManualToolGUIContainer, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, Ui_QmitkSegmentationControls::m_OrganToolGUIContainer, Ui_QmitkSegmentationControls::m_OrganToolSelectionBox, m_Parent, m_PostProcessing, ManualToolSelected(), Ui_QmitkSegmentationControls::MaskSurfaces, mitk::NodePredicateDataType::New(), NewNodeObjectsGenerated(), mitk::ToolManager::NewNodeObjectsGenerated, NewNodesGenerated(), mitk::ToolManager::NewNodesGenerated, OnComboBoxSelectionChanged(), OnSelectionChanged(), OnSurfaceSelectionChanged(), Ui_QmitkSegmentationControls::refImageSelector, mitk::ToolManager::SetDataStorage(), QmitkDataStorageComboBox::SetDataStorage(), QmitkToolSelectionBox::SetDisplayedToolGroups(), QmitkToolSelectionBox::SetEnabledMode(), QmitkToolSelectionBox::SetGenerateAccelerators(), QmitkDataStorageComboBox::SetPredicate(), QmitkToolSelectionBox::SetToolGUIArea(), QmitkToolSelectionBox::SetToolManager(), Ui_QmitkSegmentationControls::setupUi(), ToolboxStackPageChanged(), and Ui_QmitkSegmentationControls::widgetStack.
{
// setup the basic GUI of this view
m_Parent = parent;
m_Controls = new Ui::QmitkSegmentationControls;
m_Controls->setupUi(parent);
m_Controls->lblWorkingImageSelectionWarning->hide();
m_Controls->lblAlignmentWarning->hide();
m_Controls->lblSegImage->hide();
m_Controls->lblSegmentation->hide();
m_Controls->refImageSelector->SetDataStorage(this->GetDefaultDataStorage());
m_Controls->refImageSelector->SetPredicate(mitk::NodePredicateDataType::New("Image"));
if( m_Controls->refImageSelector->GetSelectedNode().IsNotNull() )
m_Controls->lblReferenceImageSelectionWarning->hide();
else
m_Controls->refImageSelector->hide();
mitk::ToolManager* toolManager = m_Controls->m_ManualToolSelectionBox->GetToolManager();
toolManager->SetDataStorage( *(this->GetDefaultDataStorage()) );
assert ( toolManager );
// all part of open source MITK
m_Controls->m_ManualToolSelectionBox->SetGenerateAccelerators(true);
m_Controls->m_ManualToolSelectionBox->SetToolGUIArea( m_Controls->m_ManualToolGUIContainer );
m_Controls->m_ManualToolSelectionBox->SetDisplayedToolGroups("Add Subtract Paint Wipe 'Region Growing' Correction Fill Erase");
m_Controls->m_ManualToolSelectionBox->SetEnabledMode( QmitkToolSelectionBox::EnabledWithReferenceAndWorkingData );
// available only in the 3M application
if ( !m_Controls->m_OrganToolSelectionBox->children().count() )
{
m_Controls->widgetStack->setItemEnabled( 1, false );
}
m_Controls->m_OrganToolSelectionBox->SetToolManager( *toolManager );
m_Controls->m_OrganToolSelectionBox->SetToolGUIArea( m_Controls->m_OrganToolGUIContainer );
m_Controls->m_OrganToolSelectionBox->SetDisplayedToolGroups("'Hippocampus left' 'Hippocampus right' 'Lung left' 'Lung right' 'Liver' 'Heart LV' 'Endocard LV' 'Epicard LV' 'Prostate'");
m_Controls->m_OrganToolSelectionBox->SetEnabledMode( QmitkToolSelectionBox::EnabledWithReferenceData );
// available only in the 3M application
if ( !m_Controls->m_LesionToolSelectionBox->children().count() )
{
m_Controls->widgetStack->setItemEnabled( 2, false );
}
m_Controls->m_LesionToolSelectionBox->SetToolManager( *toolManager );
m_Controls->m_LesionToolSelectionBox->SetToolGUIArea( m_Controls->m_LesionToolGUIContainer );
m_Controls->m_LesionToolSelectionBox->SetDisplayedToolGroups("'Lymph Node'");
m_Controls->m_LesionToolSelectionBox->SetEnabledMode( QmitkToolSelectionBox::EnabledWithReferenceData );
toolManager->NewNodesGenerated +=
mitk::MessageDelegate<QmitkSegmentationView>( this, &QmitkSegmentationView::NewNodesGenerated ); // update the list of segmentations
toolManager->NewNodeObjectsGenerated +=
mitk::MessageDelegate1<QmitkSegmentationView, mitk::ToolManager::DataVectorType*>( this, &QmitkSegmentationView::NewNodeObjectsGenerated ); // update the list of segmentations
// create signal/slot connections
connect( m_Controls->refImageSelector, SIGNAL( OnSelectionChanged( const mitk::DataNode* ) ),
this, SLOT( OnComboBoxSelectionChanged( const mitk::DataNode* ) ) );
connect( m_Controls->btnNewSegmentation, SIGNAL(clicked()), this, SLOT(CreateNewSegmentation()) );
connect( m_Controls->CreateSegmentationFromSurface, SIGNAL(clicked()), this, SLOT(CreateSegmentationFromSurface()) );
connect( m_Controls->m_ManualToolSelectionBox, SIGNAL(ToolSelected(int)), this, SLOT(ManualToolSelected(int)) );
connect( m_Controls->widgetStack, SIGNAL(currentChanged(int)), this, SLOT(ToolboxStackPageChanged(int)) );
connect(m_Controls->MaskSurfaces, SIGNAL( OnSelectionChanged( const mitk::DataNode* ) ),
this, SLOT( OnSurfaceSelectionChanged( ) ) );
m_Controls->MaskSurfaces->SetDataStorage(this->GetDefaultDataStorage());
m_Controls->MaskSurfaces->SetPredicate(mitk::NodePredicateDataType::New("Surface"));
m_PostProcessing = new QmitkSegmentationPostProcessing(this->GetDefaultDataStorage(), this, m_Parent);
}
| void QmitkSegmentationView::CreateSegmentationFromSurface | ( | ) | [protected, slot] |
Definition at line 305 of file QmitkSegmentationView.cpp.
References QmitkFunctionality::GetDataStorage(), mitk::ToolManager::GetReferenceData(), QmitkDataStorageComboBox::GetSelectedNode(), QmitkToolSelectionBox::GetToolManager(), QmitkFunctionality::HandleException(), m_Controls, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, m_Parent, Ui_QmitkSegmentationControls::MaskSurfaces, mitk::BoolProperty::New(), mitk::StringProperty::New(), mitk::DataNode::New(), and mitk::SurfaceToImageFilter::New().
Referenced by CreateQtPartControl().
{
mitk::DataNode::Pointer surfaceNode =
m_Controls->MaskSurfaces->GetSelectedNode();
mitk::Surface::Pointer surface(0);
if(surfaceNode.IsNotNull())
surface = dynamic_cast<mitk::Surface*> ( surfaceNode->GetData() );
if(surface.IsNull())
{
this->HandleException( "No surface selected.", m_Parent, true);
return;
}
mitk::DataNode::Pointer imageNode
= m_Controls->m_ManualToolSelectionBox->GetToolManager()->GetReferenceData(0);
mitk::Image::Pointer image(0);
if (imageNode.IsNotNull())
image = dynamic_cast<mitk::Image*>( imageNode->GetData() );
if(image.IsNull())
{
this->HandleException( "No image selected.", m_Parent, true);
return;
}
mitk::SurfaceToImageFilter::Pointer s2iFilter
= mitk::SurfaceToImageFilter::New();
s2iFilter->MakeOutputBinaryOn();
s2iFilter->SetInput(surface);
s2iFilter->SetImage(image);
s2iFilter->Update();
mitk::DataNode::Pointer resultNode = mitk::DataNode::New();
std::string nameOfResultImage = imageNode->GetName();
nameOfResultImage.append(surfaceNode->GetName());
resultNode->SetProperty("name", mitk::StringProperty::New(nameOfResultImage) );
resultNode->SetProperty("binary", mitk::BoolProperty::New(true) );
resultNode->SetData( s2iFilter->GetOutput() );
this->GetDataStorage()->Add(resultNode, imageNode);
}
| void QmitkSegmentationView::Deactivated | ( | ) | [virtual] |
Only called when IsExclusiveFunctionality() returns true.
Reimplemented from QmitkFunctionality.
Definition at line 89 of file QmitkSegmentationView.cpp.
References mitk::ToolManager::ActivateTool(), QmitkSlicesInterpolator::EnableInterpolation(), mitk::RenderingManager::GetInstance(), QmitkToolSelectionBox::GetToolManager(), m_Controls, Ui_QmitkSegmentationControls::m_LesionToolSelectionBox, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, Ui_QmitkSegmentationControls::m_OrganToolSelectionBox, m_RenderingManagerObserverTag, Ui_QmitkSegmentationControls::m_SlicesInterpolator, and QmitkToolSelectionBox::setEnabled().
{
if( m_Controls )
{
mitk::RenderingManager::GetInstance()->RemoveObserver( m_RenderingManagerObserverTag );
m_Controls->m_ManualToolSelectionBox->setEnabled( false );
//deactivate all tools
m_Controls->m_ManualToolSelectionBox->GetToolManager()->ActivateTool(-1);
m_Controls->m_OrganToolSelectionBox->setEnabled( false );
m_Controls->m_LesionToolSelectionBox->setEnabled( false );
m_Controls->m_SlicesInterpolator->EnableInterpolation( false );
}
}
| mitk::DataNode::Pointer QmitkSegmentationView::FindFirstRegularImage | ( | std::vector< mitk::DataNode * > | nodes ) | [protected] |
Definition at line 525 of file QmitkSegmentationView.cpp.
Referenced by OnSelectionChanged().
{
if (nodes.empty()) return NULL;
for(unsigned int i = 0; i < nodes.size(); ++i)
{
//mitk::DataNode::Pointer node = i.value()
bool isImage(false);
if (nodes.at(i)->GetData())
{
isImage = dynamic_cast<mitk::Image*>(nodes.at(i)->GetData()) != NULL;
}
// make sure this is not a binary image
bool isSegmentation(false);
nodes.at(i)->GetBoolProperty("binary", isSegmentation);
// return first proper mitk::Image
if (isImage && !isSegmentation) return nodes.at(i);
}
return NULL;
}
| mitk::DataNode::Pointer QmitkSegmentationView::FindFirstSegmentation | ( | std::vector< mitk::DataNode * > | nodes ) | [protected] |
Definition at line 550 of file QmitkSegmentationView.cpp.
Referenced by OnSelectionChanged().
{
if (nodes.empty()) return NULL;
for(unsigned int i = 0; i < nodes.size(); ++i)
{
bool isImage(false);
if (nodes.at(i)->GetData())
{
isImage = dynamic_cast<mitk::Image*>(nodes.at(i)->GetData()) != NULL;
}
bool isSegmentation(false);
nodes.at(i)->GetBoolProperty("binary", isSegmentation);
// return first proper binary mitk::Image
if (isImage && isSegmentation)
{
return nodes.at(i);
}
}
return NULL;
}
| void QmitkSegmentationView::ForceDisplayPreferencesUponAllImages | ( | ) | [protected] |
Definition at line 672 of file QmitkSegmentationView.cpp.
References ApplyDisplayOptions(), QmitkFunctionality::GetDefaultDataStorage(), mitk::RenderingManager::GetInstance(), mitk::ToolManager::GetReferenceData(), QmitkToolSelectionBox::GetToolManager(), mitk::ToolManager::GetWorkingData(), m_Controls, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, m_Parent, and mitk::DataNode::SetVisibility().
Referenced by NewNodesGenerated(), OnPreferencesChanged(), and OnSelectionChanged().
{
if (!m_Parent || !m_Parent->isVisible()) return;
// check all images and segmentations in DataStorage:
// (items in brackets are implicitly done by previous steps)
// 1.
// if a reference image is selected,
// show the reference image
// and hide all other images (orignal and segmentation),
// (and hide all segmentations of the other original images)
// and show all the reference's segmentations
// if no reference image is selected, do do nothing
//
// 2.
// if a segmentation is selected,
// show it
// (and hide all all its siblings (childs of the same parent, incl, NULL parent))
// if no segmentation is selected, do nothing
if (!m_Controls) return; // might happen on initialization (preferences loaded)
mitk::DataNode::Pointer referenceData = m_Controls->m_ManualToolSelectionBox->GetToolManager()->GetReferenceData(0);
mitk::DataNode::Pointer workingData = m_Controls->m_ManualToolSelectionBox->GetToolManager()->GetWorkingData(0);
// 1.
if (referenceData.IsNotNull())
{
// iterate all images
mitk::TNodePredicateDataType<mitk::Image>::Pointer isImage = mitk::TNodePredicateDataType<mitk::Image>::New();
mitk::DataStorage::SetOfObjects::ConstPointer allImages = this->GetDefaultDataStorage()->GetSubset( isImage );
for ( mitk::DataStorage::SetOfObjects::const_iterator iter = allImages->begin();
iter != allImages->end();
++iter)
{
mitk::DataNode* node = *iter;
// apply display preferences
ApplyDisplayOptions(node);
// set visibility
node->SetVisibility(node == referenceData);
}
}
// 2.
if (workingData.IsNotNull())
{
workingData->SetVisibility(true);
}
mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
| QStringList QmitkSegmentationView::GetDefaultOrganColorString | ( | ) | [protected] |
Definition at line 20 of file QmitkSegmentationOrganNamesHandling.cpp.
References AppendToOrganList().
Referenced by CreateNewSegmentation().
{
QStringList organColors;
AppendToOrganList(organColors, "Ankle", 255, 255, 153);
AppendToOrganList(organColors, "Appendix", 161, 107, 54);
AppendToOrganList(organColors, "Blood vessels", 255, 49, 49);
AppendToOrganList(organColors, "Bone", 255, 255, 153);
AppendToOrganList(organColors, "Brain", 255, 156, 202);
AppendToOrganList(organColors, "Bronchial tree", 0, 160, 209);
AppendToOrganList(organColors, "Coccyx", 255, 255, 153);
AppendToOrganList(organColors, "Colon", 161, 107, 54);
AppendToOrganList(organColors, "Cyst", 150, 189, 228);
AppendToOrganList(organColors, "Elbow", 255, 255, 153);
AppendToOrganList(organColors, "Eye", 18, 7, 161);
AppendToOrganList(organColors, "Fallopian tube", 161, 19, 39);
AppendToOrganList(organColors, "Fat", 237, 255, 41);
AppendToOrganList(organColors, "Gall Bladder", 86, 127, 24);
AppendToOrganList(organColors, "Hand", 255, 222, 199);
AppendToOrganList(organColors, "Heart", 153, 0, 0);
AppendToOrganList(organColors, "Hip", 255, 255, 153);
AppendToOrganList(organColors, "Kidney", 250, 89, 0);
AppendToOrganList(organColors, "Knee", 255, 255, 153);
AppendToOrganList(organColors, "Larynx", 102, 0, 0);
AppendToOrganList(organColors, "Liver", 194, 142, 0);
AppendToOrganList(organColors, "Lung", 107, 220, 255);
AppendToOrganList(organColors, "Lymph node", 10, 250, 56);
AppendToOrganList(organColors, "Muscle", 102, 0, 0);
AppendToOrganList(organColors, "Nerve", 255, 234, 79);
AppendToOrganList(organColors, "Nose", 255, 222, 199);
AppendToOrganList(organColors, "Oesophagus", 102, 0, 0);
AppendToOrganList(organColors, "Ovaries", 234, 0, 117);
AppendToOrganList(organColors, "Pancreas", 249, 171, 61);
AppendToOrganList(organColors, "Pelvis", 255, 255, 153);
AppendToOrganList(organColors, "Penis", 255, 222, 199);
AppendToOrganList(organColors, "Pharynx", 102, 0, 0);
AppendToOrganList(organColors, "Prostate", 209, 163, 117);
AppendToOrganList(organColors, "Rectum", 161, 107, 54);
AppendToOrganList(organColors, "Sacrum", 255, 255, 153);
AppendToOrganList(organColors, "Seminal vesicle", 199, 232, 255);
AppendToOrganList(organColors, "Shoulder", 255, 255, 153);
AppendToOrganList(organColors, "Spinal cord", 255, 234, 79);
AppendToOrganList(organColors, "Spleen", 249, 108, 61);
AppendToOrganList(organColors, "Stomach", 161, 107, 54);
AppendToOrganList(organColors, "Teeth", 255, 252, 216);
AppendToOrganList(organColors, "Testicles", 199, 232, 255);
AppendToOrganList(organColors, "Thyroid", 255, 179, 184);
AppendToOrganList(organColors, "Tongue", 102, 0, 0);
AppendToOrganList(organColors, "Tumor", 147, 112, 17);
AppendToOrganList(organColors, "Urethra", 197, 204, 0);
AppendToOrganList(organColors, "Urinary bladder", 197, 204, 0);
AppendToOrganList(organColors, "Uterus", 161, 19, 39);
AppendToOrganList(organColors, "Vagina", 161, 19, 39);
AppendToOrganList(organColors, "Vertebra", 255, 255, 153);
AppendToOrganList(organColors, "Wrist", 255, 255, 153);
return organColors;
}
| bool QmitkSegmentationView::IsRenderWindowAligned | ( | QmitkRenderWindow * | renderWindow, |
| mitk::Image * | image | ||
| ) | [protected] |
Definition at line 659 of file QmitkSegmentationView.cpp.
References mitk::SegTool2D::DetermineAffectedImageSlice(), mitk::BaseRenderer::GetCurrentWorldGeometry2D(), and mitk::RenderWindowBase::GetRenderer().
Referenced by CheckImageAlignment().
{
if (!renderWindow) return false;
// for all 2D renderwindows of m_MultiWidget check alignment
mitk::PlaneGeometry::ConstPointer displayPlane = dynamic_cast<const mitk::PlaneGeometry*>( renderWindow->GetRenderer()->GetCurrentWorldGeometry2D() );
if (displayPlane.IsNull()) return false;
int affectedDimension(-1);
int affectedSlice(-1);
return mitk::SegTool2D::DetermineAffectedImageSlice( image, displayPlane, affectedDimension, affectedSlice );
}
| void QmitkSegmentationView::ManualToolSelected | ( | int | id ) | [protected, slot] |
Definition at line 348 of file QmitkSegmentationView.cpp.
References QmitkStdMultiWidget::DisableNavigationControllerEventListening(), QmitkStdMultiWidget::EnableNavigationControllerEventListening(), and m_MultiWidget.
Referenced by CreateQtPartControl().
{
// disable crosshair movement when a manual drawing tool is active (otherwise too much visual noise)
if (m_MultiWidget)
{
if (id >= 0)
{
m_MultiWidget->DisableNavigationControllerEventListening();
}
else
{
m_MultiWidget->EnableNavigationControllerEventListening();
}
}
}
| void QmitkSegmentationView::NewNodeObjectsGenerated | ( | mitk::ToolManager::DataVectorType * | nodes ) |
Definition at line 59 of file QmitkSegmentationView.cpp.
References QmitkFunctionality::FireNodeSelected(), QmitkToolSelectionBox::GetToolManager(), m_Controls, and Ui_QmitkSegmentationControls::m_ManualToolSelectionBox.
Referenced by CreateQtPartControl().
{
if (!nodes) return;
mitk::ToolManager* toolManager = m_Controls->m_ManualToolSelectionBox->GetToolManager();
if (!toolManager) return;
for (mitk::ToolManager::DataVectorType::iterator iter = nodes->begin(); iter != nodes->end(); ++iter)
{
this->FireNodeSelected( *iter );
// only last iteration meaningful, multiple generated objects are not taken into account here
}
}
| void QmitkSegmentationView::NewNodesGenerated | ( | ) |
Definition at line 54 of file QmitkSegmentationView.cpp.
References ForceDisplayPreferencesUponAllImages().
Referenced by CreateQtPartControl().
| void QmitkSegmentationView::OnComboBoxSelectionChanged | ( | const mitk::DataNode * | node ) | [protected, slot] |
Definition at line 406 of file QmitkSegmentationView.cpp.
References Ui_QmitkSegmentationControls::lblReferenceImageSelectionWarning, m_Controls, OnSelectionChanged(), and Ui_QmitkSegmentationControls::refImageSelector.
Referenced by CreateQtPartControl(), and OnSelectionChanged().
{
mitk::DataNode* selectedNode = const_cast<mitk::DataNode*>(node);
if( selectedNode != NULL )
{
m_Controls->refImageSelector->show();
m_Controls->lblReferenceImageSelectionWarning->hide();
this->OnSelectionChanged( const_cast<mitk::DataNode*>(node) );
}
else
{
m_Controls->refImageSelector->hide();
m_Controls->lblReferenceImageSelectionWarning->show();
}
}
| void QmitkSegmentationView::OnPreferencesChanged | ( | const berry::IBerryPreferences * | ) | [virtual] |
Called when the preferences object of this view changed.
Reimplemented from QmitkFunctionality.
Definition at line 172 of file QmitkSegmentationView.cpp.
References ForceDisplayPreferencesUponAllImages().
| void QmitkSegmentationView::OnSelectionChanged | ( | std::vector< mitk::DataNode * > | ) | [virtual] |
Called when the selection in the workbench changed
Reimplemented from QmitkFunctionality.
Definition at line 440 of file QmitkSegmentationView.cpp.
References Ui_QmitkSegmentationControls::CreateSegmentationFromSurface, QmitkDataStorageComboBox::Find(), FindFirstRegularImage(), FindFirstSegmentation(), ForceDisplayPreferencesUponAllImages(), QmitkFunctionality::GetDefaultDataStorage(), QmitkDataStorageComboBox::GetSelectedNode(), m_Controls, m_Parent, Ui_QmitkSegmentationControls::MaskSurfaces, MITK_ERROR, mitk::NodePredicateAnd::New(), mitk::NodePredicateNot::New(), mitk::BoolProperty::New(), mitk::NodePredicateProperty::New(), OnComboBoxSelectionChanged(), OnSelectionChanged(), Ui_QmitkSegmentationControls::refImageSelector, and SetToolManagerSelection().
{
// if Image and Surface are selected, enable button
if ( (m_Controls->refImageSelector->GetSelectedNode().IsNull()) ||
(m_Controls->MaskSurfaces->GetSelectedNode().IsNull()))
m_Controls->CreateSegmentationFromSurface->setEnabled(false);
else
m_Controls->CreateSegmentationFromSurface->setEnabled(true);
if (!m_Parent || !m_Parent->isVisible()) return;
// reaction to BlueBerry selection events
// this method will try to figure out if a relevant segmentation and its corresponding original image were selected
// a warning is issued if the selection is invalid
// appropriate reactions are triggered otherwise
mitk::DataNode::Pointer referenceData = FindFirstRegularImage( nodes ); //m_Controls->refImageSelector->GetSelectedNode(); //FindFirstRegularImage( nodes );
mitk::DataNode::Pointer workingData = FindFirstSegmentation( nodes );
bool invalidSelection( !nodes.empty() &&
(
nodes.size() > 2 || // maximum 2 selected nodes
(nodes.size() == 2 && (workingData.IsNull() || referenceData.IsNull()) ) || // with two nodes, one must be the original image, one the segmentation
( workingData.GetPointer() == referenceData.GetPointer() ) //one node is selected as reference and working image
// one item is always ok (might be working or reference or nothing
)
);
if (invalidSelection)
{
// TODO visible warning when two images are selected
MITK_ERROR << "WARNING: No image, too many (>2) or two equal images were selected.";
workingData = NULL;
if( m_Controls->refImageSelector->GetSelectedNode().IsNull() )
referenceData = NULL;
}
if ( workingData.IsNotNull() && referenceData.IsNull() )
{
// find the DataStorage parent of workingData
// try to find a "normal image" parent, select this as reference image
mitk::TNodePredicateDataType<mitk::Image>::Pointer isImage = mitk::TNodePredicateDataType<mitk::Image>::New();
mitk::NodePredicateProperty::Pointer isBinary = mitk::NodePredicateProperty::New("binary", mitk::BoolProperty::New(true));
mitk::NodePredicateNot::Pointer isNotBinary = mitk::NodePredicateNot::New( isBinary );
mitk::NodePredicateAnd::Pointer isNormalImage = mitk::NodePredicateAnd::New( isImage, isNotBinary );
mitk::DataStorage::SetOfObjects::ConstPointer possibleParents = this->GetDefaultDataStorage()->GetSources( workingData, isNormalImage );
if (possibleParents->size() > 0)
{
if (possibleParents->size() > 1)
{
// TODO visible warning for this rare case
MITK_ERROR << "Selected binary image has multiple parents. Using arbitrary first one for segmentation.";
}
referenceData = (*possibleParents)[0];
}
}
//set comboBox to reference image
disconnect( m_Controls->refImageSelector, SIGNAL( OnSelectionChanged( const mitk::DataNode* ) ),
this, SLOT( OnComboBoxSelectionChanged( const mitk::DataNode* ) ) );
m_Controls->refImageSelector->setCurrentIndex( m_Controls->refImageSelector->Find(referenceData) );
connect( m_Controls->refImageSelector, SIGNAL( OnSelectionChanged( const mitk::DataNode* ) ),
this, SLOT( OnComboBoxSelectionChanged( const mitk::DataNode* ) ) );
// if Image and Surface are selected, enable button
if ( (m_Controls->refImageSelector->GetSelectedNode().IsNull()) ||
(m_Controls->MaskSurfaces->GetSelectedNode().IsNull()) ||
(!referenceData))
m_Controls->CreateSegmentationFromSurface->setEnabled(false);
else
m_Controls->CreateSegmentationFromSurface->setEnabled(true);
SetToolManagerSelection(referenceData, workingData);
ForceDisplayPreferencesUponAllImages();
}
| void QmitkSegmentationView::OnSelectionChanged | ( | mitk::DataNode * | node ) | [virtual] |
Invoked when the DataManager selection changed.
Definition at line 421 of file QmitkSegmentationView.cpp.
Referenced by CreateNewSegmentation(), CreateQtPartControl(), OnComboBoxSelectionChanged(), and OnSelectionChanged().
{
std::vector<mitk::DataNode*> nodes;
nodes.push_back( node );
this->OnSelectionChanged( nodes );
}
| void QmitkSegmentationView::OnSurfaceSelectionChanged | ( | ) | [protected, slot] |
Definition at line 430 of file QmitkSegmentationView.cpp.
References Ui_QmitkSegmentationControls::CreateSegmentationFromSurface, QmitkDataStorageComboBox::GetSelectedNode(), m_Controls, Ui_QmitkSegmentationControls::MaskSurfaces, and Ui_QmitkSegmentationControls::refImageSelector.
Referenced by CreateQtPartControl().
{
// if Image and Surface are selected, enable button
if ( (m_Controls->refImageSelector->GetSelectedNode().IsNull()) ||
(m_Controls->MaskSurfaces->GetSelectedNode().IsNull()))
m_Controls->CreateSegmentationFromSurface->setEnabled(false);
else
m_Controls->CreateSegmentationFromSurface->setEnabled(true);
}
| void QmitkSegmentationView::RenderingManagerReinitialized | ( | const itk::EventObject & | ) |
Definition at line 177 of file QmitkSegmentationView.cpp.
References CheckImageAlignment().
Referenced by Activated().
{
CheckImageAlignment();
}
| void QmitkSegmentationView::SetMultiWidget | ( | QmitkStdMultiWidget * | multiWidget ) | [protected] |
Definition at line 120 of file QmitkSegmentationView.cpp.
References QmitkFunctionality::GetDefaultDataStorage(), QmitkStdMultiWidget::GetSlicesRotator(), QmitkStdMultiWidget::GetSlicesSwiveller(), QmitkToolSelectionBox::GetToolManager(), QmitkSlicesInterpolator::Initialize(), m_Controls, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, m_MultiWidget, m_Parent, Ui_QmitkSegmentationControls::m_SlicesInterpolator, m_SlicesRotationObserverTag1, m_SlicesRotationObserverTag2, QmitkSlicesInterpolator::SetDataStorage(), and SliceRotation().
Referenced by StdMultiWidgetAvailable(), StdMultiWidgetClosed(), and StdMultiWidgetNotAvailable().
{
if (m_MultiWidget)
{
mitk::SlicesCoordinator* coordinator = m_MultiWidget->GetSlicesRotator();
if (coordinator)
{
coordinator->RemoveObserver( m_SlicesRotationObserverTag1 );
}
coordinator = m_MultiWidget->GetSlicesSwiveller();
if (coordinator)
{
coordinator->RemoveObserver( m_SlicesRotationObserverTag2 );
}
}
// save the current multiwidget as the working widget
m_MultiWidget = multiWidget;
if (m_MultiWidget)
{
mitk::SlicesCoordinator* coordinator = m_MultiWidget->GetSlicesRotator();
if (coordinator)
{
itk::ReceptorMemberCommand<QmitkSegmentationView>::Pointer command2 = itk::ReceptorMemberCommand<QmitkSegmentationView>::New();
command2->SetCallbackFunction( this, &QmitkSegmentationView::SliceRotation );
m_SlicesRotationObserverTag1 = coordinator->AddObserver( mitk::SliceRotationEvent(), command2 );
}
coordinator = m_MultiWidget->GetSlicesSwiveller();
if (coordinator)
{
itk::ReceptorMemberCommand<QmitkSegmentationView>::Pointer command2 = itk::ReceptorMemberCommand<QmitkSegmentationView>::New();
command2->SetCallbackFunction( this, &QmitkSegmentationView::SliceRotation );
m_SlicesRotationObserverTag2 = coordinator->AddObserver( mitk::SliceRotationEvent(), command2 );
}
}
if (m_Parent)
{
m_Parent->setEnabled(m_MultiWidget);
}
// tell the interpolation about toolmanager and multiwidget (and data storage)
if (m_Controls && m_MultiWidget)
{
mitk::ToolManager* toolManager = m_Controls->m_ManualToolSelectionBox->GetToolManager();
m_Controls->m_SlicesInterpolator->SetDataStorage( *(this->GetDefaultDataStorage()));
m_Controls->m_SlicesInterpolator->Initialize( toolManager, m_MultiWidget );
}
}
| void QmitkSegmentationView::SetToolManagerSelection | ( | const mitk::DataNode * | referenceData, |
| const mitk::DataNode * | workingData | ||
| ) | [protected] |
Definition at line 576 of file QmitkSegmentationView.cpp.
References Ui_QmitkSegmentationControls::btnNewSegmentation, CheckImageAlignment(), mitk::DataNode::GetName(), QmitkToolSelectionBox::GetToolManager(), Ui_QmitkSegmentationControls::lblReferenceImageSelectionWarning, Ui_QmitkSegmentationControls::lblSegImage, Ui_QmitkSegmentationControls::lblSegmentation, Ui_QmitkSegmentationControls::lblWorkingImageSelectionWarning, m_Controls, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, mitk::ToolManager::SetReferenceData(), mitk::ToolManager::SetWorkingData(), and Ui_QmitkSegmentationControls::widgetStack.
Referenced by OnSelectionChanged().
{
// called as a result of new BlueBerry selections
// tells the ToolManager for manual segmentation about new selections
// updates GUI information about what the user should select
mitk::ToolManager* toolManager = m_Controls->m_ManualToolSelectionBox->GetToolManager();
toolManager->SetReferenceData(const_cast<mitk::DataNode*>(referenceData));
toolManager->SetWorkingData( const_cast<mitk::DataNode*>(workingData));
// check original image
m_Controls->btnNewSegmentation->setEnabled(referenceData != NULL);
if (referenceData)
{
m_Controls->lblReferenceImageSelectionWarning->hide();
}
else
{
m_Controls->lblReferenceImageSelectionWarning->show();
m_Controls->lblWorkingImageSelectionWarning->hide();
m_Controls->lblSegImage->hide();
m_Controls->lblSegmentation->hide();
}
// check, wheter reference image is aligned like render windows. Otherwise display a visible warning (because 2D tools will probably not work)
CheckImageAlignment();
// check segmentation
if (referenceData)
{
if (!workingData)
{
m_Controls->lblWorkingImageSelectionWarning->show();
if( m_Controls->widgetStack->currentIndex() == 0 )
{
m_Controls->lblSegImage->hide();
m_Controls->lblSegmentation->hide();
}
}
else
{
m_Controls->lblWorkingImageSelectionWarning->hide();
if( m_Controls->widgetStack->currentIndex() == 0 )
{
m_Controls->lblSegmentation->setText( workingData->GetName().c_str() );
m_Controls->lblSegmentation->show();
m_Controls->lblSegImage->show();
}
}
}
}
| void QmitkSegmentationView::SliceRotation | ( | const itk::EventObject & | ) |
Definition at line 182 of file QmitkSegmentationView.cpp.
References CheckImageAlignment().
Referenced by SetMultiWidget().
{
CheckImageAlignment();
}
| void QmitkSegmentationView::StdMultiWidgetAvailable | ( | QmitkStdMultiWidget & | stdMultiWidget ) | [virtual] |
Called when a StdMultiWidget is available. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 105 of file QmitkSegmentationView.cpp.
References SetMultiWidget().
{
SetMultiWidget(&stdMultiWidget);
}
| void QmitkSegmentationView::StdMultiWidgetClosed | ( | QmitkStdMultiWidget & | stdMultiWidget ) | [virtual] |
Called when a StdMultiWidget is available. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 115 of file QmitkSegmentationView.cpp.
References SetMultiWidget().
{
SetMultiWidget(NULL);
}
| void QmitkSegmentationView::StdMultiWidgetNotAvailable | ( | ) | [virtual] |
Called when no StdMultiWidget is available anymore. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 110 of file QmitkSegmentationView.cpp.
References SetMultiWidget().
{
SetMultiWidget(NULL);
}
| void QmitkSegmentationView::ToolboxStackPageChanged | ( | int | id ) | [protected, slot] |
Definition at line 364 of file QmitkSegmentationView.cpp.
References QmitkSlicesInterpolator::EnableInterpolation(), mitk::ToolManager::GetReferenceData(), QmitkToolSelectionBox::GetToolManager(), mitk::ToolManager::GetWorkingData(), Ui_QmitkSegmentationControls::lblSegImage, Ui_QmitkSegmentationControls::lblSegmentation, m_Controls, Ui_QmitkSegmentationControls::m_ManualToolSelectionBox, Ui_QmitkSegmentationControls::m_SlicesInterpolator, and Ui_QmitkSegmentationControls::widgetStack.
Referenced by CreateQtPartControl().
{
// interpolation only with manual tools visible
m_Controls->m_SlicesInterpolator->EnableInterpolation( id == 0 );
if( id == 0 )
{
mitk::DataNode::Pointer workingData = m_Controls->m_ManualToolSelectionBox->GetToolManager()->GetWorkingData(0);
if( workingData.IsNotNull() )
{
m_Controls->lblSegmentation->setText( workingData->GetName().c_str() );
m_Controls->lblSegImage->show();
m_Controls->lblSegmentation->show();
}
}
else
{
m_Controls->lblSegImage->hide();
m_Controls->lblSegmentation->hide();
}
// this is just a workaround, should be removed when all tools support 3D+t
if (id==2) // lesions
{
mitk::DataNode::Pointer node = m_Controls->m_ManualToolSelectionBox->GetToolManager()->GetReferenceData(0);
if (node.IsNotNull())
{
mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( node->GetData() );
if (image.IsNotNull())
{
if (image->GetDimension()>3)
{
m_Controls->widgetStack->setCurrentIndex(0);
QMessageBox::information(NULL,"Segmentation","Lesion segmentation is currently not supported for 4D images");
}
}
}
}
}
| void QmitkSegmentationView::UpdateOrganList | ( | QStringList & | organColors, |
| const QString & | organname, | ||
| mitk::Color | colorname | ||
| ) | [protected] |
Definition at line 79 of file QmitkSegmentationOrganNamesHandling.cpp.
Referenced by CreateNewSegmentation().
{
QString listElement( organname + QColor(color.GetRed() * 255 , color.GetGreen() * 255 , color.GetBlue() * 255).name() );
// remove previous definition if necessary
int oldIndex = organColors.indexOf( QRegExp(QRegExp::escape(organname) + "#......", Qt::CaseInsensitive));
if (oldIndex < 0 || organColors.at(oldIndex) != listElement )
{
if (oldIndex >= 0)
{
organColors.removeAt( oldIndex );
}
// add colored organ name AND sort list
organColors.append( listElement );
organColors.sort();
}
}
Definition at line 133 of file QmitkSegmentationView.h.
Referenced by Activated(), CheckImageAlignment(), CreateNewSegmentation(), CreateQtPartControl(), CreateSegmentationFromSurface(), Deactivated(), ForceDisplayPreferencesUponAllImages(), NewNodeObjectsGenerated(), OnComboBoxSelectionChanged(), OnSelectionChanged(), OnSurfaceSelectionChanged(), SetMultiWidget(), SetToolManagerSelection(), ToolboxStackPageChanged(), and ~QmitkSegmentationView().
QmitkStdMultiWidget* QmitkSegmentationView::m_MultiWidget [protected] |
Definition at line 136 of file QmitkSegmentationView.h.
Referenced by CheckImageAlignment(), ManualToolSelected(), and SetMultiWidget().
QWidget* QmitkSegmentationView::m_Parent [protected] |
Saves the parent of this view (this is the scrollarea created in CreatePartControl(void*)
Reimplemented from QmitkFunctionality.
Definition at line 130 of file QmitkSegmentationView.h.
Referenced by CreateNewSegmentation(), CreateQtPartControl(), CreateSegmentationFromSurface(), ForceDisplayPreferencesUponAllImages(), OnSelectionChanged(), and SetMultiWidget().
Definition at line 138 of file QmitkSegmentationView.h.
Referenced by CreateQtPartControl(), and ~QmitkSegmentationView().
unsigned long QmitkSegmentationView::m_RenderingManagerObserverTag [protected] |
Definition at line 140 of file QmitkSegmentationView.h.
Referenced by Activated(), and Deactivated().
unsigned long QmitkSegmentationView::m_SlicesRotationObserverTag1 [protected] |
Definition at line 141 of file QmitkSegmentationView.h.
Referenced by SetMultiWidget().
unsigned long QmitkSegmentationView::m_SlicesRotationObserverTag2 [protected] |
Definition at line 142 of file QmitkSegmentationView.h.
Referenced by SetMultiWidget().
1.7.2