X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Zone.cxx;h=c1139e1e4e66153e03a82a6dddabb20245e7f8d7;hb=55fe0d2de7e15a256965d71280dc61fd58863d7e;hp=8a5bc0d3b21e59a901452aa62108a0f7bcb214c6;hpb=8543e637cbb4ae48998c596241fce567a729eb67;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Zone.cxx b/src/HYDROGUI/HYDROGUI_Zone.cxx index 8a5bc0d3..c1139e1e 100644 --- a/src/HYDROGUI/HYDROGUI_Zone.cxx +++ b/src/HYDROGUI/HYDROGUI_Zone.cxx @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 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 -// version 2.1 of the License. +// 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 @@ -25,6 +21,7 @@ #include #include #include +#include #include #include @@ -49,8 +46,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 +62,12 @@ 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 = + Handle(HYDROData_Entity)::DownCast( anIter.Value() ); if ( !aRefGeomObj.IsNull() ) { // Get Ref.Object name @@ -85,13 +82,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 +101,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,13 +117,29 @@ QString HYDROGUI_Zone::getAltitudeName() const aRes = aName; break; } - - if ( !aNamesSet.contains( aName ) ) + } + } + else + { + Handle(HYDROData_LandCover) aRefLandCoverObj = + Handle(HYDROData_LandCover)::DownCast( anIter.Value() ); + if ( !aRefLandCoverObj.IsNull() ) + { + // Get name of land cover object + aName = aRefLandCoverObj->GetName(); + if ( !isMergingNeed ) { - aRes += aName + ", "; - aNamesSet.insert( aName ); + // Get the first land cover object's altitude name and go out + aRes = aName; + break; } - } + } + } + + if ( !aName.isEmpty() && !aNamesSet.contains( aName ) ) + { + aRes += aName + ", "; + aNamesSet.insert( aName ); } } // Remove the last comma if necessary @@ -144,11 +158,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 +220,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 +239,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 +258,37 @@ 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(); + } else { + aMergeObject = Handle(HYDROData_LandCover)::DownCast( anIter.Value() ); + } + + if ( !aMergeObject.IsNull() && theMergeObjectName == aMergeObject->GetName() ) + { + aZone->SetMergeObject( aMergeObject ); + break; } } }