diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputProcessXMLParameter.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputProcessXMLParameter.h index be5f9dc2154e8f13ebee5cefc1f14fb4dfa60112..1db4f6ecc2cacbee7ee630af05c5a61a0030b6cf 100644 --- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputProcessXMLParameter.h +++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputProcessXMLParameter.h @@ -43,19 +43,10 @@ public: // Get Value //TODO otbGetObjectMemberMacro(StringParam, Value , std::string); - void SetFileName(std::string value) - { - this->SetValue(value); - } + bool SetFileName(std::string value); // Set Value - virtual void SetValue(const std::string value) - { - itkDebugMacro("setting member m_FileName to " << value); - this->m_FileName = value; - SetActive(true); - this->Modified(); - } + virtual void SetValue(const std::string value); ImagePixelType GetPixelTypeFromString(std::string pixTypeAsString); diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx index 8176e2f7ff99e11544d58e04538a2ecd1ff6a6f0..5f0075229d04e623830b7cdb3c9e2fd7717613ca 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx @@ -807,7 +807,8 @@ void Application::SetParameterString(std::string parameter, std::string value) else if (dynamic_cast<InputProcessXMLParameter*>(param)) { InputProcessXMLParameter* paramDown = dynamic_cast<InputProcessXMLParameter*>(param); - paramDown->SetValue(value); + if ( !paramDown->SetFileName(value) ) + otbAppLogCRITICAL( <<"Invalid XML parameter filename " << value <<"."); } } diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx index 87b94e868d178446e6996e216751dbb502300711..be17bb948f81ea97a661a1e7fb6165db44f0ccd3 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputProcessXMLParameter.cxx @@ -41,6 +41,34 @@ InputProcessXMLParameter::~InputProcessXMLParameter() } +bool +InputProcessXMLParameter::SetFileName(std::string value) +{ + // Check if the filename is not empty + if(!value.empty()) + { + // Check that the right extension is given : expected .xml + if (itksys::SystemTools::GetFilenameLastExtension(value) == ".xml") + { + if (itksys::SystemTools::FileExists(value.c_str(),true)) + { + this->SetValue(value); + return true; + } + } + } + return false; +} + +void +InputProcessXMLParameter::SetValue(const std::string value) +{ + itkDebugMacro("setting member m_FileName to " << value); + this->m_FileName = value; + SetActive(true); + this->Modified(); +} + ImagePixelType InputProcessXMLParameter::GetPixelTypeFromString(std::string strType) { @@ -134,18 +162,6 @@ InputProcessXMLParameter::GetChildNodeTextOf(TiXmlElement *parentElement, std::s int InputProcessXMLParameter::Read(Application::Pointer this_) { - - // Check if the filename is not empty - if(m_FileName.empty()) - itkExceptionMacro(<<"The XML input FileName is empty, please set the filename via the method SetFileName"); - - // Check that the right extension is given : expected .xml - if (itksys::SystemTools::GetFilenameLastExtension(m_FileName) != ".xml") - { - itkExceptionMacro(<<itksys::SystemTools::GetFilenameLastExtension(m_FileName) << " " << m_FileName << " " - <<" is a wrong Extension FileName : Expected .xml"); - } - // Open the xml file TiXmlDocument doc; diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputProcessXMLParameter.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputProcessXMLParameter.cxx index fbd32e34e91478248ee0c04cf75e70cf3aef6b08..d7b768675a679b271042869803d711ce4916b974 100644 --- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputProcessXMLParameter.cxx +++ b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetInputProcessXMLParameter.cxx @@ -34,10 +34,13 @@ QtWidgetInputProcessXMLParameter::~QtWidgetInputProcessXMLParameter() void QtWidgetInputProcessXMLParameter::DoUpdateGUI() { - // Update the lineEdit - QString text( m_XMLParam->GetFileName() ); - if (text != m_Input->text()) - m_Input->setText(text); + if (m_XMLParam->HasUserValue()) + { + // Update the lineEdit + QString text( m_XMLParam->GetFileName() ); + if (text != m_Input->text()) + m_Input->setText(text); + } } void QtWidgetInputProcessXMLParameter::DoCreateWidget() @@ -85,15 +88,13 @@ void QtWidgetInputProcessXMLParameter::SelectFile() void QtWidgetInputProcessXMLParameter::SetFileName(const QString& value) { // load xml file name - m_XMLParam->SetValue(value.toAscii().constData()); - - // notify of value change - QString key( m_XMLParam->GetKey() ); - - emit ParameterChanged(key); - - GetModel()->UpdateAllWidgets(); - + if (m_XMLParam->SetFileName(value.toAscii().constData())) + { + // notify of value change + QString key( m_XMLParam->GetKey() ); + emit ParameterChanged(key); + GetModel()->UpdateAllWidgets(); + } } }