#ifdef _DEBUG_
static int MYDEBUG = 0;
+static int VARIABLE_DEBUG = 0;
#else
static int MYDEBUG = 0;
+static int VARIABLE_DEBUG = 0;
#endif
//=============================================================================
}
//=======================================================================
-//function : UpdateSObject
+//function : UpdateParameters
//purpose :
//=======================================================================
void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters)
{
+
+ if(VARIABLE_DEBUG)
+ cout<<"UpdateParameters : "<<theParameters<<endl;
SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
if(aStudy->_is_nil() || CORBA::is_nil(theObject))
return;
SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject);
- if(aSObj->_is_nil())
+ if(aSObj->_is_nil())
return;
SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
+
+ SALOMEDS::GenericAttribute_var aFindAttr;
+ bool hasAttr = aSObj->FindAttribute(aFindAttr, "AttributeString");
+ if(VARIABLE_DEBUG)
+ cout<<"Find Attribute "<<hasAttr<<endl;
+
SALOMEDS::GenericAttribute_var anAttr;
anAttr = aStudyBuilder->FindOrCreateAttribute( aSObj, "AttributeString");
SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
TCollection_AsciiString aOldParameters(aStringAttr->Value());
TCollection_AsciiString anInputParams(ParseParameters(theParameters));
- if(!aOldParameters.Length())
+ if(!hasAttr)
aNewParams = anInputParams;
else
aNewParams = aOldParameters+"|"+anInputParams;
+
+ if(VARIABLE_DEBUG)
+ {
+ cout<<"Input Parameters : "<<anInputParams<<endl;
+ cout<<"Old Parameters : "<<aOldParameters<<endl;
+ cout<<"New Parameters : "<<aNewParams<<endl;
+ }
+
aStringAttr->SetValue( aNewParams.ToCString() );
}
//=======================================================================
-//function : GetParameters
+//function : ParseParameters
//purpose :
//=======================================================================
char* SMESH_Gen_i::ParseParameters(const char* theParameters)
SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
if( !aStudy->_is_nil() ) {
SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters);
- if(aSections->length() > 0) {
- SALOMEDS::ListOfStrings aVars= aSections[0];
+ for(int j=0;j<aSections->length();j++) {
+ SALOMEDS::ListOfStrings aVars= aSections[j];
for(int i=0;i<aVars.length();i++ ) {
anInputParams += aStudy->IsVariable(aVars[i].in()) ?
TCollection_AsciiString(aVars[i].in()) : TCollection_AsciiString("");
if(i != aVars.length()-1)
anInputParams+=":";
}
+ if(j!=aSections->length()-1)
+ anInputParams+="|";
}
}
return CORBA::string_dup(anInputParams.ToCString());