Salome HOME
Merge branch 'BR_H2018_3' into BR_2018_V8_5
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Zone.cxx
index 7d9a4285fa1ac4fd16fa65c2427aff7fced0ded2..6da859d9a4ede9ff32f9f022bd03304fe2aef58d 100644 (file)
@@ -1,8 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+// 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
@@ -49,8 +45,8 @@ QString HYDROGUI_Zone::text( const int theColumnId ) const
         aRes = getRefObjectNames();
         break;
       case AltitudeObjId:
-        // Get altitude object name
-        aRes = getAltitudeName();
+        // Get altitude/land cover object name
+        aRes = getObjectName();
         break;
       default:
         aRes = LightApp_DataObject::text( theColumnId );
@@ -65,12 +61,11 @@ QString HYDROGUI_Zone::getRefObjectNames() const
   Handle(HYDROData_Zone) aZone = Handle(HYDROData_Zone)::DownCast( modelObject() );
   if ( !aZone.IsNull() )
   {
-    HYDROData_SequenceOfObjects aSeq = aZone->GetGeometryObjects();
+    HYDROData_SequenceOfObjects aSeq = aZone->GetObjects();
     HYDROData_SequenceOfObjects::Iterator anIter( aSeq );
     for ( ; anIter.More(); anIter.Next() )
     {
-      Handle(HYDROData_Object) aRefGeomObj =
-        Handle(HYDROData_Object)::DownCast( anIter.Value() );
+      Handle(HYDROData_Entity) aRefGeomObj = anIter.Value();
       if ( !aRefGeomObj.IsNull() )
       {
         // Get Ref.Object name
@@ -85,13 +80,13 @@ QString HYDROGUI_Zone::getRefObjectNames() const
   return aRes;
 }
 
-QString HYDROGUI_Zone::getAltitudeName() const
+QString HYDROGUI_Zone::getObjectName() const
 {
   QString aRes;
   Handle(HYDROData_Zone) aZone = Handle(HYDROData_Zone)::DownCast( modelObject() );
   if ( !aZone.IsNull() )
   {
-    HYDROData_SequenceOfObjects aSeq = aZone->GetGeometryObjects();
+    HYDROData_SequenceOfObjects aSeq = aZone->GetObjects();
     bool isMergingNeed = aZone->IsMergingNeed();
     if ( ( isMergingNeed && aZone->GetMergeType() == HYDROData_Zone::Merge_UNKNOWN ) 
       || ( aSeq.Length() == 1 ) || ( !isMergingNeed ) )
@@ -104,6 +99,7 @@ QString HYDROGUI_Zone::getAltitudeName() const
       QString aName;
       for ( ; anIter.More(); anIter.Next() )
       {
+        aName.clear();
         Handle(HYDROData_Object) aRefGeomObj =
           Handle(HYDROData_Object)::DownCast( anIter.Value() );
         if ( !aRefGeomObj.IsNull() )
@@ -119,14 +115,14 @@ QString HYDROGUI_Zone::getAltitudeName() const
               aRes = aName;
               break;
             }
-
-            if ( !aNamesSet.contains( aName ) )
-            {
-              aRes += aName + ", ";
-              aNamesSet.insert( aName );
-            }
           }
         }
+
+        if ( !aName.isEmpty() && !aNamesSet.contains( aName ) )
+        {
+          aRes += aName + ", ";
+          aNamesSet.insert( aName );
+        }
       }
       // Remove the last comma if necessary
       if ( isMergingNeed && ( aRes.length() > 1 ) )
@@ -144,11 +140,11 @@ QString HYDROGUI_Zone::getAltitudeName() const
         case HYDROData_Zone::Merge_ZMAX:    // The maximum values
           aRes = QObject::tr( "MERGE_ZMAX" );
           break;
-        case HYDROData_Zone::Merge_Object:   // Only one altitude will be taken into account
+        case HYDROData_Zone::Merge_Object:   // Only one altitude/land cover will be taken into account
         {
-          Handle(HYDROData_IAltitudeObject) anAltitude = aZone->GetMergeAltitude();
-          if ( !anAltitude.IsNull() )
-            aRes = anAltitude->GetName();
+          Handle(HYDROData_Entity) aMergeObj = aZone->GetMergeObject();
+          if ( !aMergeObj.IsNull() )
+            aRes = aMergeObj->GetName();
           break;
         }
         default:
@@ -206,15 +202,15 @@ QColor HYDROGUI_Zone::color( const ColorRole theColorRole, const int theColumnId
   return aRes;
 }
 
-QStringList HYDROGUI_Zone::getAltitudes() const
+QStringList HYDROGUI_Zone::getObjects() const
 {
   QStringList aRes;
   Handle(HYDROData_Zone) aZone = Handle(HYDROData_Zone)::DownCast( modelObject() );
   if ( !aZone.IsNull() )
   {
-    HYDROData_SequenceOfObjects aSeq = aZone->GetGeometryObjects();
-    // Collect all used altitudes names when merging is necessary
-    // or just get the name of altitude of a single geometry object
+    HYDROData_SequenceOfObjects aSeq = aZone->GetObjects();
+    // Collect all used altitudes/land cover names when merging is necessary
+    // or just get the name of altitude/land cover of a single object
     HYDROData_SequenceOfObjects::Iterator anIter( aSeq );
     for ( ; anIter.More(); anIter.Next() )
     {
@@ -225,15 +221,17 @@ QStringList HYDROGUI_Zone::getAltitudes() const
         Handle(HYDROData_IAltitudeObject) anAltitudeObj = aRefGeomObj->GetAltitudeObject();
         if ( !anAltitudeObj.IsNull() && !aRes.contains( anAltitudeObj->GetName() ) )
           aRes.append( anAltitudeObj->GetName() );
+      } else {
+        aRes.append( anIter.Value()->GetName() );
       }
     }
   }
   return aRes;
 }
 
-HYDROData_Zone::MergeAltitudesType HYDROGUI_Zone::getMergeType() const
+HYDROData_Zone::MergeType HYDROGUI_Zone::getMergeType() const
 {
-  HYDROData_Zone::MergeAltitudesType aRes = HYDROData_Zone::Merge_UNKNOWN;
+  HYDROData_Zone::MergeType aRes = HYDROData_Zone::Merge_UNKNOWN;
   Handle(HYDROData_Zone) aZone = Handle(HYDROData_Zone)::DownCast( modelObject() );
   if ( !aZone.IsNull() )
   {
@@ -242,32 +240,35 @@ HYDROData_Zone::MergeAltitudesType HYDROGUI_Zone::getMergeType() const
   return aRes;
 }
 
-void HYDROGUI_Zone::setMergeType( int theMergeType, QString theAltitudeName )
+void HYDROGUI_Zone::setMergeType( int theMergeType, QString theMergeObjectName )
 {
   Handle(HYDROData_Zone) aZone = Handle(HYDROData_Zone)::DownCast( modelObject() );
   if ( !aZone.IsNull() )
   {
-    HYDROData_Zone::MergeAltitudesType aMergeType = 
-      ( HYDROData_Zone::MergeAltitudesType )theMergeType;
+    HYDROData_Zone::MergeType aMergeType = 
+      ( HYDROData_Zone::MergeType )theMergeType;
     aZone->SetMergeType( aMergeType );
     if ( aMergeType == HYDROData_Zone::Merge_Object )
     {
-      // Find an altitude object by the given name and set it as the zone's merge altitude
-      HYDROData_SequenceOfObjects aSeq = aZone->GetGeometryObjects();
+      // Find an altitude/land cover object by the given name and set it as the zone's merge altitude/land cover
+      HYDROData_SequenceOfObjects aSeq = aZone->GetObjects();
       HYDROData_SequenceOfObjects::Iterator anIter( aSeq );
       for ( ; anIter.More(); anIter.Next() )
       {
+        Handle(HYDROData_Entity) aMergeObject;
+
         Handle(HYDROData_Object) aRefGeomObj =
           Handle(HYDROData_Object)::DownCast( anIter.Value() );
         if ( !aRefGeomObj.IsNull() )
         {
-          // Get altitude object name
-          Handle(HYDROData_IAltitudeObject) anAltitudeObj = aRefGeomObj->GetAltitudeObject();
-          if ( !anAltitudeObj.IsNull() && theAltitudeName == anAltitudeObj->GetName() )
-          {
-            aZone->SetMergeAltitude( anAltitudeObj );
-            break;
-          }
+          // Get altitude object
+          aMergeObject = aRefGeomObj->GetAltitudeObject();
+        }
+
+        if ( !aMergeObject.IsNull() && theMergeObjectName == aMergeObject->GetName() )
+        {
+          aZone->SetMergeObject( aMergeObject );
+          break;
         }
       }
     }