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, void ProcessFunction(Handle(GEOM_Function)& theFunction,
TCollection_AsciiString& theScript, TCollection_AsciiString& theScript,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames, Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
TColStd_MapOfTransient& theProcessed); TColStd_MapOfTransient& theProcessed);
void ReplaceVariables(TCollection_AsciiString& theCommand, 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, TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
Resource_DataMapOfAsciiStringAsciiString& theObjectNames, Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames, Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
bool isPublished, bool isPublished,
bool& aValidScript) bool& aValidScript)
{ {
@ -469,7 +472,7 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
MESSAGE ( "Null function !!!!" ); MESSAGE ( "Null function !!!!" );
continue; 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, void ProcessFunction(Handle(GEOM_Function)& theFunction,
TCollection_AsciiString& theScript, TCollection_AsciiString& theScript,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames, Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
TColStd_MapOfTransient& theProcessed) TColStd_MapOfTransient& theProcessed)
{ {
if(theFunction.IsNull() || theProcessed.Contains(theFunction)) return; if(theFunction.IsNull() || theProcessed.Contains(theFunction)) return;
@ -719,7 +723,7 @@ void ProcessFunction(Handle(GEOM_Function)& theFunction,
if(aDescr == "None") return; if(aDescr == "None") return;
//Replace parameter by notebook variables //Replace parameter by notebook variables
ReplaceVariables(aDescr,theVariableNames); ReplaceVariables(aDescr,theVariableNames,theStudyVariables);
theScript += "\n\t"; theScript += "\n\t";
theScript += aDescr; theScript += aDescr;
@ -772,7 +776,8 @@ Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theStrin
*/ */
//============================================================================= //=============================================================================
void ReplaceVariables(TCollection_AsciiString& theCommand, void ReplaceVariables(TCollection_AsciiString& theCommand,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames) Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables)
{ {
//Get Entry of the result object //Get Entry of the result object
TCollection_AsciiString anEntry = theCommand.Token("=",1); TCollection_AsciiString anEntry = theCommand.Token("=",1);
@ -874,11 +879,6 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
aEndPos = theCommand.Location(i, COMMA, 1, theCommand.Length()); 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); aVar = aVarSeq.Value(iVar);
//If parameter is entry, skip it //If parameter is entry, skip it
@ -893,8 +893,16 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
continue; continue;
} }
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.InsertBefore(1,"\"");
aVar.InsertAfter(aVar.Length(),"\""); aVar.InsertAfter(aVar.Length(),"\"");
}
theCommand.Remove(aStartPos, aEndPos - aStartPos); theCommand.Remove(aStartPos, aEndPos - aStartPos);
theCommand.Insert(aStartPos,aVar); theCommand.Insert(aStartPos,aVar);

View File

@ -85,6 +85,7 @@ class GEOM_Engine
Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID, Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID,
Resource_DataMapOfAsciiStringAsciiString& theObjectNames, Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
Resource_DataMapOfAsciiStringAsciiString& theVariableNames, Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
TColStd_HSequenceOfAsciiString& theStudyVariables,
bool isPublished, bool isPublished,
bool& aValidScript); bool& aValidScript);

View File

@ -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 = TCollection_AsciiString aScript =
"### This file is generated by SALOME automatically by dump python functionality\n" "### This file is generated by SALOME automatically by dump python functionality\n"
"### of GEOM component\n\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) if (isPublished)
{ {