Dump Python extension.

This commit is contained in:
rnv 2008-11-14 08:38:37 +00:00
parent 5cde5a8e17
commit d5e2b6c529
3 changed files with 33 additions and 16 deletions

View File

@ -96,10 +96,12 @@ static Standard_Integer ExtractDocID(TCollection_AsciiString& theID)
void ProcessFunction(Handle(GEOM_Function)& theFunction,
TCollection_AsciiString& theScript,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
TColStd_MapOfTransient& theProcessed);
void ReplaceVariables(TCollection_AsciiString& theCommand,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames);
Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables);
@ -440,6 +442,7 @@ void GEOM_Engine::Close(int theDocID)
TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
bool isPublished,
bool& aValidScript)
{
@ -469,7 +472,7 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
MESSAGE ( "Null function !!!!" );
continue;
}
ProcessFunction(aFunction, aScript,theVariableNames,aMap);
ProcessFunction(aFunction, aScript, theVariableNames, theStudyVariables ,aMap);
}
}
@ -695,6 +698,7 @@ Handle(TColStd_HSequenceOfAsciiString) GEOM_Engine::GetAllDumpNames() const
void ProcessFunction(Handle(GEOM_Function)& theFunction,
TCollection_AsciiString& theScript,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
TColStd_MapOfTransient& theProcessed)
{
if(theFunction.IsNull() || theProcessed.Contains(theFunction)) return;
@ -719,7 +723,7 @@ void ProcessFunction(Handle(GEOM_Function)& theFunction,
if(aDescr == "None") return;
//Replace parameter by notebook variables
ReplaceVariables(aDescr,theVariableNames);
ReplaceVariables(aDescr,theVariableNames,theStudyVariables);
theScript += "\n\t";
theScript += aDescr;
@ -772,11 +776,12 @@ Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theStrin
*/
//=============================================================================
void ReplaceVariables(TCollection_AsciiString& theCommand,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames)
Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables)
{
//Get Entry of the result object
TCollection_AsciiString anEntry = theCommand.Token("=",1);
//Remove white spaces
anEntry.RightAdjust();
anEntry.LeftAdjust();
@ -874,11 +879,6 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
aEndPos = theCommand.Location(i, COMMA, 1, theCommand.Length());
}
TCollection_AsciiString aParameter = theCommand.SubString(aStartPos, aStartPos);
if(MYDEBUG)
cout<<"Current parameter "<<aParameter<<endl;
aVar = aVarSeq.Value(iVar);
//If parameter is entry, skip it
@ -892,9 +892,17 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
iVar++;
continue;
}
aVar.InsertBefore(1,"\"");
aVar.InsertAfter(aVar.Length(),"\"");
bool isVar = false;
for(Standard_Integer i = 1; i <= theStudyVariables.Length();i++)
if(theStudyVariables.Value(i).IsEqual(aVar)) {
isVar = true;
break;
}
if(isVar) {
aVar.InsertBefore(1,"\"");
aVar.InsertAfter(aVar.Length(),"\"");
}
theCommand.Remove(aStartPos, aEndPos - aStartPos);
theCommand.Insert(aStartPos,aVar);

View File

@ -85,6 +85,7 @@ class GEOM_Engine
Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID,
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
bool isPublished,
bool& aValidScript);
@ -94,7 +95,7 @@ class GEOM_Engine
protected:
Standard_EXPORT static void SetEngine(GEOM_Engine* theEngine);
private:
Handle(GEOM_Application) _OCAFApp;

View File

@ -59,7 +59,7 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy,
CORBA::String_var aName = aValue->GetName();
CORBA::String_var anEntry = GO->GetEntry();
aMap.Bind( (char*)anEntry.in(), (char*)aName.in() );
//Find attribute with list of used notebook variables
SALOMEDS::GenericAttribute_var anAttr;
SALOMEDS::AttributeString_var anAttrStr;
@ -73,10 +73,18 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy,
}
}
//Get Study variables
SALOMEDS::ListOfStrings_var aListOfVars = aStudy->GetVariableNames();
TColStd_HSequenceOfAsciiString aStudyVariables;
for(int i = 0;i < aListOfVars->length();i++)
{
aStudyVariables.Append(aListOfVars[i].in());
}
TCollection_AsciiString aScript =
"### This file is generated by SALOME automatically by dump python functionality\n"
"### of GEOM component\n\n";
aScript += _impl->DumpPython(aStudy->StudyId(), aMap, aVariableMap, isPublished, isValidScript);
aScript += _impl->DumpPython(aStudy->StudyId(), aMap, aVariableMap, aStudyVariables, isPublished, isValidScript);
if (isPublished)
{