//=============================================================================
/*!
- * SMESH_Hypothesis_i::SetParameters()
- *
+ * SMESH_Hypothesis_i::GetEntry()
*/
//=============================================================================
-void SMESH_Hypothesis_i::SetParameters(const char* theParameters)
+char* SMESH_Hypothesis_i::GetEntry()
{
- SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen();
- char * aParameters = CORBA::string_dup(theParameters);
- if(gen){
- if(IsPublished()) {
- SMESH_Gen_i::GetSMESHGen()->UpdateParameters(SMESH::SMESH_Hypothesis::_narrow(_this()),aParameters);
- }
- else {
- myBaseImpl->SetParameters(gen->ParseParameters(aParameters));
- }
- }
+ char aBuf[100];
+ sprintf( aBuf, "%i", GetId() );
+ return CORBA::string_dup( aBuf );
}
//=============================================================================
/*!
- * SMESH_Hypothesis_i::GetParameters()
+ * SMESH_Hypothesis_i::GetComponent()
+ */
+//=============================================================================
+char* SMESH_Hypothesis_i::GetComponent()
+{
+ return CORBA::string_dup( "SMESH" );
+}
+
+//=============================================================================
+/*!
+ * SMESH_Hypothesis_i::IsValid()
+ */
+//=============================================================================
+CORBA::Boolean SMESH_Hypothesis_i::IsValid()
+{
+ return true;
+}
+
+//=============================================================================
+/*!
+ * SMESH_Hypothesis_i::SetParameters()
*
*/
//=============================================================================
-char* SMESH_Hypothesis_i::GetParameters()
+void SMESH_Hypothesis_i::SetParameters( SALOME::Notebook_ptr theNotebook, const SALOME::StringArray& theParameters )
{
- SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen();
- char* aResult;
- if(IsPublished()) {
- MESSAGE("SMESH_Hypothesis_i::GetParameters() : Get Parameters from SObject");
- aResult = gen->GetParameters(SMESH::SMESH_Hypothesis::_narrow(_this()));
+ theNotebook->ClearDependencies( _this(), SALOME::Parameters );
+ std::list<std::string> aParams;
+ int n = theParameters.length();
+ for( int i=0; i<n; i++ )
+ {
+ std::string aParam = CORBA::string_dup( theParameters[i] );
+ aParams.push_back( aParam );
+
+ SALOME::Parameter_ptr aParamPtr = theNotebook->GetParameter( aParam.c_str() );
+ if( !CORBA::is_nil( aParamPtr ) )
+ theNotebook->AddDependency( _this(), aParamPtr );
}
- else {
- MESSAGE("SMESH_Hypothesis_i::GetParameters() : Get local parameters");
- aResult = myBaseImpl->GetParameters();
- }
- return CORBA::string_dup(aResult);
+ myBaseImpl->SetParameters( aParams );
+
+ UpdateStringAttribute();
}
//=============================================================================
/*!
- * SMESH_Hypothesis_i::GetLastParameters()
+ * SMESH_Hypothesis_i::GetParameters()
*
*/
//=============================================================================
-SMESH::ListOfParameters* SMESH_Hypothesis_i::GetLastParameters()
+SALOME::StringArray* SMESH_Hypothesis_i::GetParameters()
{
- SMESH::ListOfParameters_var aResult = new SMESH::ListOfParameters();
- SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen();
- if(gen) {
- char *aParameters;
- if(IsPublished())
- aParameters = GetParameters();
- else
- aParameters = myBaseImpl->GetLastParameters();
-
- SALOMEDS::Study_ptr aStudy = gen->GetCurrentStudy();
- if(!aStudy->_is_nil()) {
- SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters);
- if(aSections->length() > 0) {
- SALOMEDS::ListOfStrings aVars = aSections[aSections->length()-1];
- aResult->length(aVars.length());
- for(int i = 0;i < aVars.length();i++)
- aResult[i] = CORBA::string_dup( aVars[i]);
- }
- }
- }
- return aResult._retn();
+ std::list<std::string> aParams = myBaseImpl->GetParameters();
+ SALOME::StringArray_var aRes = new SALOME::StringArray();
+ aRes->length( aParams.size() );
+ std::list<std::string>::const_iterator it = aParams.begin(), last = aParams.end();
+ for( int i=0; it!=last; it++, i++ )
+ aRes[i] = CORBA::string_dup( it->c_str() );
+ return aRes._retn();
}
//=============================================================================
/*!
- * SMESH_Hypothesis_i::SetLastParameters()
+ * SMESH_Hypothesis_i::Update()
*
*/
//=============================================================================
-void SMESH_Hypothesis_i::SetLastParameters(const char* theParameters)
+void SMESH_Hypothesis_i::Update( SALOME::Notebook_ptr theNotebook )
{
- if(!IsPublished()) {
- myBaseImpl->SetLastParameters(theParameters);
- }
}
+
//=============================================================================
/*!
- * SMESH_Hypothesis_i::ClearParameters()
+ * SMESH_Hypothesis_i::UpdateStringAttribute()
*
*/
//=============================================================================
-void SMESH_Hypothesis_i::ClearParameters()
+void SMESH_Hypothesis_i::UpdateStringAttribute()
{
- if(!IsPublished()) {
- myBaseImpl->ClearParameters();
+ SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
+
+ SALOME::Notebook_ptr aNotebook = aSMESHGen->GetNotebook( myBaseImpl->GetStudyId() );
+
+ SALOME::StringArray* anObjectParameters = aNotebook->GetObjectParameters( GetComponent(), GetEntry() );
+ int aParametersLength = anObjectParameters ? anObjectParameters->length() : 0;
+ if( aParametersLength == 0 )
+ return;
+
+ SALOMEDS::Study_ptr aStudy = aSMESHGen->GetStudy( myBaseImpl->GetStudyId() );
+ SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
+ SALOMEDS::SObject_var aSObject = SMESH_Gen_i::ObjectToSObject( aStudy, SMESH::SMESH_Hypothesis::_narrow( _this() ) );
+ if( CORBA::is_nil( aSObject ) )
+ return;
+
+ SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute( aSObject, "AttributeString" );
+ SALOMEDS::AttributeString_var aStringAttrib = SALOMEDS::AttributeString::_narrow( anAttr );
+
+ std::string aString;
+ for( int i = 0, n = anObjectParameters->length(); i < n; i++ ) {
+ std::string aParameter = anObjectParameters->operator[](i).in();
+ if( aParameter != "" )
+ {
+ if( aString != "" )
+ aString += ", ";
+ aString += aParameter;
+ }
}
+ aStringAttrib->SetValue( aString.c_str() );
+ aStringAttrib->Destroy();
}
//=============================================================================