]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
refs #638: zone name should not be changed when it is moved into another region
authorasl <asl@opencascade.com>
Mon, 28 Sep 2015 13:34:20 +0000 (16:34 +0300)
committerasl <asl@opencascade.com>
Mon, 28 Sep 2015 13:34:20 +0000 (16:34 +0300)
12 files changed:
src/HYDROData/HYDROData_CalculationCase.cxx
src/HYDROData/HYDROData_Entity.cxx
src/HYDROData/HYDROData_Entity.h
src/HYDROData/HYDROData_Region.cxx
src/HYDROData/HYDROData_Stream.cxx
src/HYDROData/HYDROData_Stream.h
src/HYDROData/test_HYDROData_Bathymetry.cxx
src/HYDROData/test_HYDROData_Entity.cxx
src/HYDROData/test_HYDROData_Image.cxx
src/HYDROData/test_HYDROData_PolylineXY.cxx
src/HYDROGUI/HYDROGUI_DataModel.cxx
src/HYDROPy/HYDROData_Entity.sip

index be8f1a8bc754b1ae72501518a4222e840f5c55e3..55bb858b6d751f8558dd0d01249573e76a30014b 100644 (file)
@@ -691,7 +691,7 @@ bool HYDROData_CalculationCase::AddRegion( const Handle(HYDROData_Region)& theRe
   if ( !aFatherCalc.IsNull() && aFatherCalc->Label() != myLab )
   {
     Handle(HYDROData_Region) aNewRegion = addNewRegion( aDocument, CALCULATION_REGIONS_PREF, theLandCover );
-    theRegion->CopyTo( aNewRegion );
+    theRegion->CopyTo( aNewRegion, true );
 
     aFatherCalc->RemoveRegion( theRegion, theLandCover );
 
index bd47a0901b01a77cefa535af91340f540d39da8c..95d7426c7bfc99a04e8e85abc2fa5d5258c34eaa 100644 (file)
@@ -167,7 +167,8 @@ HYDROData_Entity::~HYDROData_Entity()
 {
 }
 
-void HYDROData_Entity::CopyTo( const Handle(HYDROData_Entity)& theDestination ) const
+void HYDROData_Entity::CopyTo( const Handle(HYDROData_Entity)& theDestination,
+                               bool isGenerateNewName ) const
 {
   Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
   if ( aDocument.IsNull() ) {
@@ -177,23 +178,26 @@ void HYDROData_Entity::CopyTo( const Handle(HYDROData_Entity)& theDestination )
   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;
-  }
+  if( isGenerateNewName )
+  {
+    // 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 );
+    aName = HYDROData_Tool::GenerateObjectName( aDocument, aPrefix );
+    theDestination->SetName( aName );
+  }
 }
 
 Handle(HYDROData_Entity) HYDROData_Entity::GetFatherObject() const
index 8e4937291bcf518b08e967f2bba8e24f7cf72ca9..f02cb5eb49fad82dade8413eda0e6e5f12e0042f 100644 (file)
@@ -195,7 +195,8 @@ public:
    * Objects must be the same type.
    * \param theDestination initialized object (from any document) - target of copying
    */
-  HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination ) const;
+  HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination,
+                                        bool isGenerateNewName ) const;
 
   /**
    * Returns the label of this object.
index 20a86e42665435658222b149d6832e021bcf6c0c..c82d17e9d4ea42aa3e38597b1f5400a63bcbf669 100644 (file)
@@ -107,7 +107,7 @@ bool HYDROData_Region::AddZone( const Handle(HYDROData_Zone)& theZone )
   if ( !aFatherRegion.IsNull() && aFatherRegion->Label() != myLab )
   {
     Handle(HYDROData_Zone) aNewZone = addNewZone( aDocument, "", TopoDS_Face(), QStringList() );
-    theZone->CopyTo( aNewZone );
+    theZone->CopyTo( aNewZone, false );
 
     // To prevent changing of stored shape
     aNewZone->SetShape( theZone->GetShape() );
index 6f77d56dd3db5fac21714cc564b3e83180134a5f..242310905264fab10a71851065867906ac382c1d 100644 (file)
@@ -1007,7 +1007,8 @@ bool HYDROData_Stream::Interpolate( HYDROData_IProfilesInterpolator* theInterpol
   return isOK;
 }
 
-void HYDROData_Stream::CopyTo( const Handle(HYDROData_Entity)& theDestination ) const
+void HYDROData_Stream::CopyTo( const Handle(HYDROData_Entity)& theDestination,
+                               bool isGenerateNewName ) const
 {
   // Get the document
   Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
@@ -1016,7 +1017,7 @@ void HYDROData_Stream::CopyTo( const Handle(HYDROData_Entity)& theDestination )
   }
 
   // Call base method
-  HYDROData_Entity::CopyTo( theDestination );
+  HYDROData_Entity::CopyTo( theDestination, isGenerateNewName );
 
   Handle(HYDROData_Stream) aStreamCopy = 
     Handle(HYDROData_Stream)::DownCast( theDestination );
index 6ebf6427e19a4bfba0df279a5f31bb499196ba01..fd4ffca5f1784e6741e632ade6f93e980a9087a0 100644 (file)
@@ -136,7 +136,8 @@ public:
   /**
    *
    */
-  HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination ) const;
+  HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination,
+                                        bool isGenerateNewName ) const;
 
 
   /**
index dbc229fd9464ea2f7ca9c83400246426acb0c582..e3b2509a4ec903299251ce162cf76151133e039e 100755 (executable)
@@ -185,7 +185,7 @@ void test_HYDROData_Bathymetry::testCopy()
   Handle(HYDROData_Bathymetry) aBathymetry2 = 
     Handle(HYDROData_Bathymetry)::DownCast( aDoc->CreateObject( KIND_BATHYMETRY ) );
 
-  aBathymetry1->CopyTo( aBathymetry2 );
+  aBathymetry1->CopyTo( aBathymetry2, true );
 
   if ( anIsFileCreated )
   {
index a68508017da090b044283c03686db778e8f95d96..e55530bbfb3525c98b23239c3a473111b7536767 100644 (file)
@@ -57,7 +57,7 @@ void test_HYDROData_Entity::testCopy()
 
   Handle(HYDROData_Entity) aCopy = aDoc->CreateObject(KIND_IMAGE); // object for copy
   CPPUNIT_ASSERT(aCopy->GetName().isEmpty());
-  anObj->CopyTo(aCopy);
+  anObj->CopyTo(aCopy, true);
 
   // check the copied object has same name as original
   CPPUNIT_ASSERT_EQUAL(aName.toStdString(), aCopy->GetName().toStdString());
index 689c7a64f1198b74c1b3462eff4fda245cb92e11..ddeeeb87193851436a5a3e33b695b811eb95fd73 100644 (file)
@@ -154,7 +154,7 @@ void test_HYDROData_Image::testCopy()
   // copy image to the new one
   Handle(HYDROData_Image) anImage3 = 
     Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
-  anImage1->CopyTo(anImage3);
+  anImage1->CopyTo(anImage3, true);
 
   // check all fields are correctly copied
   CPPUNIT_ASSERT(anImage1->Image() == anImage3->Image());
index 6c019831e3ef79ecf90fb04de9cd773fb4f76017..99b61069f176803719f92e44a540f220e17fd2ff 100644 (file)
@@ -66,7 +66,7 @@ void test_HYDROData_PolylineXY::testCopy()
   Handle(HYDROData_PolylineXY) aPolyline2 = 
     Handle(HYDROData_PolylineXY)::DownCast(aDoc->CreateObject(KIND_POLYLINEXY));
 
-  aPolyline1->CopyTo(aPolyline2);
+  aPolyline1->CopyTo(aPolyline2, true);
 
 
   aDoc->Close();
index 88bb35b290d435bad73c6dacad67b36ae9b8a32a..1478a7473c2deaedb6d26afbaf15645ea102e83e 100644 (file)
@@ -679,7 +679,7 @@ bool HYDROGUI_DataModel::paste()
       Handle(HYDROData_Entity) aClone = getDocument()->CreateObject( aKind );
       if( !aClone.IsNull() )
       {
-        anObject->CopyTo( aClone );
+        anObject->CopyTo( aClone, true );
         anIsChanged = true;
 
         // remove Z layer
index 9dc1676ed2653049d725949cfc06f4b36fcfdd28..7ef4fd137546ccc860428ea26da70bb4129f55a4 100644 (file)
@@ -216,24 +216,6 @@ public:
    */
   virtual void Remove();
 
-
-  /**
-   * Copies all properties of this to the destinated object.
-   * Objects must be the same type.
-   * \param theDestination initialized object (from any document) - target of copying
-   */
-  void CopyTo( HYDROData_Entity theDestination ) const [void ( const Handle_HYDROData_Entity& )];
-  %MethodCode
-    Handle(HYDROData_Entity) aCopyTo = createHandle( a0 );
-    if ( !aCopyTo.IsNull() )
-    {
-      Py_BEGIN_ALLOW_THREADS
-      sipSelfWasArg ? sipCpp->HYDROData_Entity::CopyTo( aCopyTo ):
-                      sipCpp->CopyTo( aCopyTo );
-      Py_END_ALLOW_THREADS
-    }
-  %End
-
   /**
    * Returns father object. For object created under root document label
    * this method always return NULL object.