2 #include "HYDROData_Region.h"
4 #include "HYDROData_Document.h"
5 #include "HYDROData_Iterator.h"
6 #include "HYDROData_Zone.h"
10 #include <TDataStd_Integer.hxx>
12 #define PYTHON_REGION_ID "KIND_REGION"
14 IMPLEMENT_STANDARD_HANDLE(HYDROData_Region, HYDROData_Entity)
15 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Region, HYDROData_Entity)
18 HYDROData_Region::HYDROData_Region()
21 SetMergeType( Merge_ZMIN );
24 HYDROData_Region::~HYDROData_Region()
28 QStringList HYDROData_Region::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
32 Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( this );
33 if ( aDocument.IsNull() )
36 QString aDocName = aDocument->GetDocPyName();
37 QString aRegionName = GetName();
39 aResList << QString( "%1 = %2.CreateObject( %3 );" )
40 .arg( aRegionName ).arg( aDocName ).arg( PYTHON_REGION_ID );
41 aResList << QString( "%1.SetName( \"%2\" );" )
42 .arg( aRegionName ).arg( aRegionName );
43 aResList << QString( "" );
45 HYDROData_SequenceOfObjects aZones = GetZones();
46 HYDROData_SequenceOfObjects::Iterator anIter( aZones );
47 for ( ; anIter.More(); anIter.Next() )
49 Handle(HYDROData_Zone) aRefZone =
50 Handle(HYDROData_Zone)::DownCast( anIter.Value() );
51 if ( !aRefZone.IsNull() )
52 setPythonReferenceObject( theTreatedObjects, aResList, aRefZone, "AddZone" );
54 aResList << QString( "" );
59 Handle(HYDROData_Zone) HYDROData_Region::AddNewZone()
61 TDF_Label aNewLab = myLab.FindChild( ChildTag_Zone ).NewChild();
63 return Handle(HYDROData_Zone)::DownCast(
64 HYDROData_Iterator::CreateObject( aNewLab, KIND_ZONE ) );
67 void HYDROData_Region::RemoveChildZones()
69 myLab.FindChild( ChildTag_Zone ).ForgetAllAttributes( true );
72 void HYDROData_Region::SetMergeType( const MergeBathymetriesType& theType )
74 Handle(TDataStd_Integer) anInt;
75 if ( !myLab.FindChild( DataTag_MergeType ).FindAttribute( TDataStd_Integer::GetID(), anInt ) )
76 anInt = TDataStd_Integer::Set( myLab, 0 );
77 anInt->Set( (int)theType );
80 HYDROData_Region::MergeBathymetriesType HYDROData_Region::GetMergeType() const
82 MergeBathymetriesType aMergeType = Merge_ZMIN;
84 Handle(TDataStd_Integer) anInt;
85 if ( myLab.FindChild( DataTag_MergeType ).FindAttribute( TDataStd_Integer::GetID(), anInt ) )
86 aMergeType = (MergeBathymetriesType)anInt->Get();
91 int HYDROData_Region::NbZones() const
93 return NbReferenceObjects( DataTag_Zone );
96 void HYDROData_Region::AddZone( const Handle(HYDROData_Zone)& theZone )
98 AddReferenceObject( theZone, DataTag_Zone );
101 void HYDROData_Region::SetZone( const int theIndex,
102 const Handle(HYDROData_Zone)& theZone )
104 SetReferenceObject( theZone, DataTag_Zone, theIndex );
107 void HYDROData_Region::InsertZone( const int theBeforeIndex,
108 const Handle(HYDROData_Zone)& theZone )
110 InsertReferenceObject( theZone, DataTag_Zone, theBeforeIndex );
113 void HYDROData_Region::SetZones( const HYDROData_SequenceOfObjects& theZones )
115 SetReferenceObjects( theZones, DataTag_Zone );
118 Handle(HYDROData_Zone) HYDROData_Region::GetZone( const int theIndex ) const
120 return Handle(HYDROData_Zone)::DownCast(
121 GetReferenceObject( DataTag_Zone, theIndex ) );
124 HYDROData_SequenceOfObjects HYDROData_Region::GetZones() const
126 return GetReferenceObjects( DataTag_Zone );
129 void HYDROData_Region::RemoveZone( const Handle(HYDROData_Zone)& theZone )
131 if ( theZone.IsNull() )
134 RemoveReferenceObject( theZone->Label(), DataTag_Zone );
137 void HYDROData_Region::RemoveZone( const int theIndex )
139 RemoveReferenceObject( DataTag_Zone, theIndex );
142 void HYDROData_Region::RemoveZones()
144 ClearReferenceObjects( DataTag_Zone );