Salome HOME
Merge remote-tracking branch 'origin/BR_SHP_FORMAT' into BR_v14_rc
[modules/hydro.git] / src / HYDROData / HYDROData_Entity.cxx
index ba2cb941f77c21b43c12ba93f98eb9ea7e5c00b9..bd47a0901b01a77cefa535af91340f540d39da8c 100644 (file)
@@ -1,3 +1,20 @@
+// Copyright (C) 2014-2015  EDF-R&D
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 
 #include "HYDROData_Entity.h"
 
@@ -152,8 +169,31 @@ HYDROData_Entity::~HYDROData_Entity()
 
 void HYDROData_Entity::CopyTo( const Handle(HYDROData_Entity)& theDestination ) const
 {
+  Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+  if ( aDocument.IsNull() ) {
+    return;
+  }
+
   TDF_CopyLabel aCopy(myLab, theDestination->Label());
   aCopy.Perform();
+         
+  // generate a new unique name for the clone object:
+  // case 1: Image_1 -> Image_2
+  // case 2: ImageObj -> ImageObj_1
+  QString aName = theDestination->GetName();
+  QString aPrefix = aName;
+  if( aName.contains( '_' ) ) { // case 1
+    QString aSuffix = aName.section( '_', -1 );
+    bool anIsInteger = false;
+    aSuffix.toInt( &anIsInteger );
+    if( anIsInteger )
+      aPrefix = aName.section( '_', 0, -2 );
+  } else { // case 2
+    aPrefix = aName;
+  }
+
+  aName = HYDROData_Tool::GenerateObjectName( aDocument, aPrefix );
+  theDestination->SetName( aName );
 }
 
 Handle(HYDROData_Entity) HYDROData_Entity::GetFatherObject() const
@@ -559,6 +599,8 @@ QString HYDROData_Entity::getPyTypeID() const
     case KIND_SPLITTED_GROUP:    return "KIND_SPLITTED_GROUP";
     case KIND_STREAM_ALTITUDE:   return "KIND_STREAM_ALTITUDE";
     case KIND_OBSTACLE_ALTITUDE: return "KIND_OBSTACLE_ALTITUDE";
+    case KIND_STRICKLER_TABLE:   return "KIND_STRICKLER_TABLE";
+    case KIND_LAND_COVER:        return "KIND_LAND_COVER";
     default:                     return "KIND_UNKNOWN"; ///! Unrecognized object
   }
 }