00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision: 1.12 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "mitkSegmentationsProcessingTool.h" 00019 #include "mitkToolManager.h" 00020 #include "mitkProgressBar.h" 00021 00022 mitk::SegmentationsProcessingTool::SegmentationsProcessingTool() 00023 :Tool("dummy") 00024 { 00025 } 00026 00027 mitk::SegmentationsProcessingTool::~SegmentationsProcessingTool() 00028 { 00029 } 00030 00031 const char* mitk::SegmentationsProcessingTool::GetGroup() const 00032 { 00033 return "segmentationProcessing"; 00034 } 00035 00036 void mitk::SegmentationsProcessingTool::Activated() 00037 { 00038 ProcessAllObjects(); 00039 m_ToolManager->ActivateTool(-1); 00040 } 00041 00042 void mitk::SegmentationsProcessingTool::Deactivated() 00043 { 00044 } 00045 00046 void mitk::SegmentationsProcessingTool::ProcessAllObjects() 00047 { 00048 m_FailedNodes.clear(); 00049 StartProcessingAllData(); 00050 00051 ToolManager::DataVectorType nodes = m_ToolManager->GetWorkingData(); 00052 ProgressBar::GetInstance()->AddStepsToDo(nodes.size() + 2); 00053 00054 // for all selected nodes 00055 for ( ToolManager::DataVectorType::iterator nodeiter = nodes.begin(); 00056 nodeiter != nodes.end(); 00057 ++nodeiter ) 00058 { 00059 DataNode::Pointer node = *nodeiter; 00060 00061 if ( !ProcessOneWorkingData(node) ) 00062 { 00063 std::string nodeName; 00064 m_FailedNodes += " '"; 00065 if ( node->GetName( nodeName ) ) 00066 { 00067 m_FailedNodes += nodeName.c_str(); 00068 } 00069 else 00070 { 00071 m_FailedNodes += "(no name)"; 00072 } 00073 m_FailedNodes += "'"; 00074 } 00075 00076 ProgressBar::GetInstance()->Progress(); 00077 } 00078 00079 FinishProcessingAllData(); 00080 ProgressBar::GetInstance()->Progress(2); 00081 00082 } 00083 00084 void mitk::SegmentationsProcessingTool::StartProcessingAllData() 00085 { 00086 } 00087 00088 bool mitk::SegmentationsProcessingTool::ProcessOneWorkingData( DataNode* ) 00089 { 00090 return true; 00091 } 00092 00093 void mitk::SegmentationsProcessingTool::FinishProcessingAllData() 00094 { 00095 SendErrorMessageIfAny(); 00096 } 00097 00098 void mitk::SegmentationsProcessingTool::SendErrorMessageIfAny() 00099 { 00100 if ( !m_FailedNodes.empty() ) 00101 { 00102 Tool::ErrorMessage( GetErrorMessage() + m_FailedNodes ); 00103 } 00104 } 00105 00106 std::string mitk::SegmentationsProcessingTool::GetErrorMessage() 00107 { 00108 return "Processing of these nodes failed:"; 00109 } 00110