#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;
- TCollection_AsciiString aNewParams;
- TCollection_AsciiString anInputParams;
- SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(theParameters);
-
SALOMEDS::GenericAttribute_var anAttr;
anAttr = aStudyBuilder->FindOrCreateAttribute( aSObj, "AttributeString");
SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
+
+ TCollection_AsciiString aNewParams;
TCollection_AsciiString aOldParameters(aStringAttr->Value());
- SALOMEDS::ListOfStrings aVars= aSections[0];
- 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(!aOldParameters.Length())
+ TCollection_AsciiString anInputParams(ParseParameters(theParameters));
+
+ 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 : ParseParameters
+//purpose :
+//=======================================================================
+char* SMESH_Gen_i::ParseParameters(const char* theParameters)
+{
+ const char* aParameters = CORBA::string_dup(theParameters);
+ TCollection_AsciiString anInputParams;
+ SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
+ if( !aStudy->_is_nil() ) {
+ SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters);
+ 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());
+}
//=======================================================================
//function : GetParameters