From c98df203674d941d6cf50a63a0320f49aee9d5be Mon Sep 17 00:00:00 2001 From: adv Date: Fri, 17 Jan 2014 08:06:12 +0000 Subject: [PATCH] Check and if necessary dump the reference object to python. --- src/HYDROData/HYDROData_Entity.cxx | 50 ++++++++++++++------------ src/HYDROData/HYDROData_Entity.h | 4 +++ src/HYDROData/HYDROData_Polyline3D.cxx | 4 +-- 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/HYDROData/HYDROData_Entity.cxx b/src/HYDROData/HYDROData_Entity.cxx index af16992f..f3f37eeb 100644 --- a/src/HYDROData/HYDROData_Entity.cxx +++ b/src/HYDROData/HYDROData_Entity.cxx @@ -499,38 +499,44 @@ void HYDROData_Entity::setPythonReferenceObject( MapOfTreatedObjects& const Handle(HYDROData_Entity)& theRefObject, const QString& theMethod ) const { - if ( theRefObject.IsNull() ) + if ( !checkObjectPythonDefinition( theTreatedObjects, theScript, theRefObject ) ) return; + QString aRefObjName = theRefObject->GetObjPyName(); + + QString anObjName = GetObjPyName(); + theScript << QString( "%1.%2( %3 );" ) + .arg( anObjName ).arg( theMethod ).arg( aRefObjName ); +} + +bool HYDROData_Entity::checkObjectPythonDefinition( MapOfTreatedObjects& theTreatedObjects, + QStringList& theScript, + const Handle(HYDROData_Entity)& theRefObject ) const +{ + if ( theRefObject.IsNull() ) + return false; + QString aRefObjName = theRefObject->GetObjPyName(); if ( aRefObjName.isEmpty() ) - return; + return false; - bool anIsToSetObject = true; + if ( theTreatedObjects.contains( aRefObjName ) ) + return true; // The definition of reference object must be dumped before this - if ( !theTreatedObjects.contains( aRefObjName ) ) - { - // Write definition of reference polyline - QStringList aRefObjDump = theRefObject->DumpToPython( theTreatedObjects ); - if ( ( anIsToSetObject = !aRefObjDump.isEmpty() ) ) - { - QStringList aTmpList = theScript; - theScript = aRefObjDump; + QStringList aRefObjDump = theRefObject->DumpToPython( theTreatedObjects ); + if ( aRefObjDump.isEmpty() ) + return false; - theScript << QString( "" ); - theScript << aTmpList; + QStringList aTmpList = theScript; + theScript = aRefObjDump; - theTreatedObjects.insert( aRefObjName, theRefObject ); - } - } + theScript << QString( "" ); + theScript << aTmpList; - if ( anIsToSetObject ) - { - QString anObjName = GetObjPyName(); - theScript << QString( "%1.%2( %3 );" ) - .arg( anObjName ).arg( theMethod ).arg( aRefObjName ); - } + theTreatedObjects.insert( aRefObjName, theRefObject ); + + return true; } void HYDROData_Entity::setPythonObjectColor( QStringList& theScript, diff --git a/src/HYDROData/HYDROData_Entity.h b/src/HYDROData/HYDROData_Entity.h index 0f48dbbc..1ac88c3f 100644 --- a/src/HYDROData/HYDROData_Entity.h +++ b/src/HYDROData/HYDROData_Entity.h @@ -333,6 +333,10 @@ protected: const Handle(HYDROData_Entity)& theRefObject, const QString& theMethod ) const; + bool checkObjectPythonDefinition( MapOfTreatedObjects& theTreatedObjects, + QStringList& theScript, + const Handle(HYDROData_Entity)& theRefObject ) const; + void setPythonObjectColor( QStringList& theScript, const QColor& theColor, const QColor& theDefaultColor, diff --git a/src/HYDROData/HYDROData_Polyline3D.cxx b/src/HYDROData/HYDROData_Polyline3D.cxx index c55cbe07..dd246a23 100644 --- a/src/HYDROData/HYDROData_Polyline3D.cxx +++ b/src/HYDROData/HYDROData_Polyline3D.cxx @@ -44,7 +44,7 @@ QStringList HYDROData_Polyline3D::DumpToPython( MapOfTreatedObjects& theTreatedO { Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast( aRefProfileUZ->GetFatherObject() ); - if ( !aProfile.IsNull() ) + if ( checkObjectPythonDefinition( theTreatedObjects, aResList, aProfile ) ) { QString aProfileName = aProfile->GetObjPyName(); if ( !aProfileName.isEmpty() ) @@ -64,7 +64,7 @@ QStringList HYDROData_Polyline3D::DumpToPython( MapOfTreatedObjects& theTreatedO { Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast( aChildProfileUZ->GetFatherObject() ); - if ( !aProfile.IsNull() ) + if ( checkObjectPythonDefinition( theTreatedObjects, aResList, aProfile ) ) { QString aProfileName = aProfile->GetObjPyName(); if ( !aProfileName.isEmpty() ) -- 2.39.2