#include "wxItkProgressDialogCallback.h" #include // For compilers that supports precompilation , includes wx/wx.h #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include wxItkProgressDialogCallback::wxItkProgressDialogCallback() { m_Dialog=0; } void wxItkProgressDialogCallback::Execute(itk::Object *caller, const itk::EventObject &event) { itk::ProcessObject* po = dynamic_cast(caller); if( !po || !m_Dialog ) return; if( typeid(event) == typeid ( itk::ProgressEvent) ) { if( po->GetProgress()==0.0 ) { m_Dialog->Centre (wxCENTER_FRAME | wxBOTH); m_Dialog->Show (true); //m_Dialog->ShowModal(); m_Dialog->Resume(); } if( !m_Dialog->Update ( (int)(po->GetProgress()*100) ) ) { std::cerr << "Progress: " << po->GetProgress() << std::endl; po->AbortGenerateDataOn(); m_Dialog->Show (false); } if( po->GetProgress() == 1.0 ) m_Dialog->Show (false); } } void wxItkProgressDialogCallback::Execute(const itk::Object *caller, const itk::EventObject &event) { itk::ProcessObject* po = dynamic_cast( const_cast(caller)); if( !po || !m_Dialog ) return; if( typeid(event) == typeid ( itk::ProgressEvent) ) { if( po->GetProgress()==0.0 ) { m_Dialog->Show (true); m_Dialog->Resume(); } if( !m_Dialog->Update ( (int)(po->GetProgress()*100) ) ) { po->AbortGenerateDataOn(); m_Dialog->Show (false); } if( po->GetProgress() == 1.0 ) m_Dialog->Show (false); } }