Salome HOME
porting on linux
[modules/hydro.git] / src / HYDROData / HYDROData_Entity.cxx
index db2a8cdc4be7e353ace80a76cfcf436e59488a8a..4b8a76ede2252fff6b4f2700f68fba7273368190 100644 (file)
@@ -24,6 +24,7 @@
 #include <TDataStd_Name.hxx>
 #include <TDataStd_ByteArray.hxx>
 #include <TDataStd_UAttribute.hxx>
+#include <TDataStd_AsciiString.hxx>
 #include <TDataStd_Integer.hxx>
 #include <TDataStd_IntegerArray.hxx>
 #include <TDataStd_ReferenceList.hxx>
@@ -85,9 +86,40 @@ QString HYDROData_Entity::GetObjPyName() const
   return aName;
 }
 
-void HYDROData_Entity::SetName(const QString& theName)
+QString HYDROData_Entity::GetDefaultName() const
+{
+  QString aName;
+
+  TDF_Label aLabel = myLab.FindChild(DataTag_DefaultName, false);
+  if (!aLabel.IsNull())
+    {
+      Handle(TDataStd_AsciiString) anAsciiStr;
+      if (aLabel.FindAttribute(TDataStd_AsciiString::GetID(), anAsciiStr))
+        aName = QString(anAsciiStr->Get().ToCString());
+    }
+  else
+    aName = GetName();
+
+  return aName;
+
+}
+
+void HYDROData_Entity::SetName(const QString& theName, bool isDefault)
 {
   TDataStd_Name::Set(myLab, TCollection_ExtendedString(theName.toLatin1().constData()));
+  if (isDefault)
+    {
+      TDF_Label aDefaultNameLabel = myLab.FindChild( DataTag_DefaultName, true );
+      if ( aDefaultNameLabel.IsNull() )
+        return;
+      Handle(TDataStd_AsciiString) theDefaultName;
+
+      if ( !aDefaultNameLabel.FindAttribute( TDataStd_AsciiString::GetID(), theDefaultName ))
+        {
+          TCollection_AsciiString aName = theName.toStdString().c_str();
+          theDefaultName = TDataStd_AsciiString::Set(myLab.FindChild( DataTag_DefaultName), aName );
+        }
+    }
 }
 
 QStringList HYDROData_Entity::DumpToPython( const QString& thePyScriptPath,
@@ -722,16 +754,36 @@ void HYDROData_Entity::setPythonObjectColor( QStringList&         theScript,
               .arg( theColor.blue() ).arg( theColor.alpha() );
 }
 
-void HYDROData_Entity::findPythonReferenceObject( MapOfTreatedObjects& theTreatedObjects,
-                                                  QStringList& theScript ) const
+void HYDROData_Entity::findPythonReferenceObject( QStringList& theScript,
+                                                  QString      defName) const
 {
   Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
   if ( aDocument.IsNull() )
     return;
-    
-  theScript << QString( "%1 = %2.FindObjectByName( \"%3\" )" ).arg( GetObjPyName() )
-                                                               .arg( aDocument->GetDocPyName() )
-                                                               .arg( GetName() );
+
+  if (defName.isEmpty())
+    theScript << QString( "%1 = %2.FindObjectByName( \"%3\" )" ).arg( GetObjPyName() )
+                                                                .arg( aDocument->GetDocPyName() )
+                                                                .arg( GetDefaultName() );
+  else
+    theScript << QString( "%1 = %2.FindObjectByName( \"%3\" )" ).arg( GetObjPyName() )
+                                                                .arg( aDocument->GetDocPyName() )
+                                                                .arg( defName );
+}
+
+void HYDROData_Entity::SetNameInDumpPython(QStringList&  theScript,
+                                           QString       theName) const
+{
+  Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+  if ( aDocument.IsNull() )
+    return;
+
+  if (theName.isEmpty())
+      theScript << QString( "%1.SetName( \"%2\" )" ).arg( GetObjPyName() )
+                                                    .arg( GetName() );
+  else
+    theScript << QString( "%1.SetName( \"%2\" )" ).arg( GetObjPyName() )
+                                                  .arg( theName );
 }
 
 void HYDROData_Entity::SetShape( int theTag, const TopoDS_Shape& theShape )