Salome HOME
Merge remote-tracking branch 'origin/BR_1338' into BR_2017
[modules/hydro.git] / src / HYDROData / HYDROData_CalculationCase.cxx
index 63a816a341f9bda7ceb03c594587cef78294e38f..ff5dd2980a6078f20982a483ab1d1b56403585eb 100644 (file)
@@ -674,31 +674,31 @@ void HYDROData_CalculationCase::UpdateRegionsOrder()
   if ( aDocument.IsNull() )
     return;
 
+  QString aRegsPref = CALCULATION_REGIONS_PREF;
+  std::map<int, Handle(HYDROData_Region)> IndToRegion; //index in the name of region to region itself 
   HYDROData_SequenceOfObjects aRegions = GetRegions();
   HYDROData_SequenceOfObjects::Iterator anIter( aRegions );
+  QString aName;
+  int aVal;
   for ( ; anIter.More(); anIter.Next() )
   {
-    Handle(HYDROData_Region) aRegion =
-      Handle(HYDROData_Region)::DownCast( anIter.Value() );
+    Handle(HYDROData_Region) aRegion = Handle(HYDROData_Region)::DownCast( anIter.Value() );
     if ( aRegion.IsNull() )
       continue;
 
-    aRegion->SetName( "" );
+    if (HYDROData_Tool::ExtractGeneratedObjectName(aRegion->GetName(), aVal, aName) && aName == aRegsPref)
+      IndToRegion[aVal] = aRegion;
   }
 
-  QString aRegsPref = CALCULATION_REGIONS_PREF;
-
-  anIter.Init( aRegions );
-  for ( ; anIter.More(); anIter.Next() )
-  {
-    Handle(HYDROData_Region) aRegion =
-      Handle(HYDROData_Region)::DownCast( anIter.Value() );
-    if ( aRegion.IsNull() )
-      continue;
-
-    QString aRegionName = HYDROData_Tool::GenerateObjectName( aDocument, aRegsPref );
-    aRegion->SetName( aRegionName );
-  }
+  int nbR = aRegions.Length();
+  std::map<int, Handle(HYDROData_Region)>::iterator it = IndToRegion.begin();
+  for( int i = 1; it != IndToRegion.end(); ++it )
+    if (it->first <= nbR + 1)
+    {
+      QString aNewName = QString("%1_%2").arg(aRegsPref).arg(QString::number(i));
+      it->second->SetName(aNewName);
+      i++;
+    }
 }
 
 void HYDROData_CalculationCase::RemoveRegion( const Handle(HYDROData_Region)& theRegion )