Salome HOME
porting on linux
[modules/hydro.git] / src / HYDROData / HYDROData_Entity.cxx
index 0cdc8f5bacc9a6cbae78510c95c70508611c7e81..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>
@@ -38,6 +39,9 @@
 #include <QStringList>
 #include <QVariant>
 
+#define _DEVDEBUG_
+#include "HYDRO_trace.hxx"
+
 HYDROData_SequenceOfObjects::HYDROData_SequenceOfObjects()
   : NCollection_Sequence<Handle_HYDROData_Entity>()
 {
@@ -53,7 +57,6 @@ HYDROData_SequenceOfObjects::HYDROData_SequenceOfObjects( const NCollection_Sequ
 {
 }
 
-
 IMPLEMENT_STANDARD_HANDLE(HYDROData_Entity,MMgt_TShared)
 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Entity,MMgt_TShared)
 
@@ -83,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,
@@ -622,6 +656,7 @@ QStringList HYDROData_Entity::dumpObjectCreation( MapOfTreatedObjects& theTreate
 
 QString HYDROData_Entity::getPyTypeID() const
 {
+  DEBTRACE("HYDROData_Entity::getPyTypeID " << GetKind());
   switch( GetKind() )
   {
     case KIND_IMAGE:             return "KIND_IMAGE";
@@ -651,6 +686,7 @@ QString HYDROData_Entity::getPyTypeID() const
     case KIND_OBSTACLE_ALTITUDE: return "KIND_OBSTACLE_ALTITUDE";
     case KIND_STRICKLER_TABLE:   return "KIND_STRICKLER_TABLE";
     case KIND_LAND_COVER_OBSOLETE: return "";
+    case KIND_CHANNEL_ALTITUDE:  return "KIND_CHANNEL_ALTITUDE";
     case KIND_LAND_COVER_MAP:    return "KIND_LAND_COVER_MAP";
     default:                     return "KIND_UNKNOWN"; ///! Unrecognized object
   }
@@ -718,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;
+
+  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;
-    
-  theScript << QString( "%1 = %2.FindObjectByName( \"%3\" )" ).arg( GetObjPyName() )
-                                                               .arg( aDocument->GetDocPyName() )
-                                                               .arg( GetName() );
+
+  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 )