Salome HOME
3a1c59acfcf819ef7f0666576b45d9c4fe20640e
[modules/hydro.git] / src / HYDROData / HYDROData_Region.cxx
1
2 #include "HYDROData_Region.h"
3
4 #include "HYDROData_Document.h"
5 #include "HYDROData_Iterator.h"
6 #include "HYDROData_Zone.h"
7
8 #include <QStringList>
9
10 #define PYTHON_REGION_ID "KIND_REGION"
11
12 IMPLEMENT_STANDARD_HANDLE(HYDROData_Region, HYDROData_Entity)
13 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Region, HYDROData_Entity)
14
15
16 HYDROData_Region::HYDROData_Region()
17 {
18 }
19
20 HYDROData_Region::~HYDROData_Region()
21 {
22 }
23
24 QStringList HYDROData_Region::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
25 {
26   QStringList aResList;
27
28   Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( this );
29   if ( aDocument.IsNull() )
30     return aResList;
31
32   QString aDocName = aDocument->GetDocPyName();
33   QString aRegionName = GetName();
34
35   aResList << QString( "%1 = %2.CreateObject( %3 );" )
36               .arg( aRegionName ).arg( aDocName ).arg( PYTHON_REGION_ID );
37   aResList << QString( "%1.SetName( \"%2\" );" )
38               .arg( aRegionName ).arg( aRegionName );
39   aResList << QString( "" );
40
41   HYDROData_SequenceOfObjects aZones = GetZones();
42   HYDROData_SequenceOfObjects::Iterator anIter( aZones );
43   for ( ; anIter.More(); anIter.Next() )
44   {
45     Handle(HYDROData_Zone) aRefZone =
46       Handle(HYDROData_Zone)::DownCast( anIter.Value() );
47     if ( !aRefZone.IsNull() )
48       setPythonReferenceObject( theTreatedObjects, aResList, aRefZone, "AddZone" );
49   }
50   aResList << QString( "" );
51
52   return aResList;
53 }
54
55 Handle(HYDROData_Zone) HYDROData_Region::AddNewZone()
56 {
57   TDF_Label aNewLab = myLab.FindChild( ChildTag_Zone ).NewChild();
58
59   return Handle(HYDROData_Zone)::DownCast(
60     HYDROData_Iterator::CreateObject( aNewLab, KIND_ZONE ) );
61 }
62
63 void HYDROData_Region::RemoveChildZones()
64 {
65   myLab.FindChild( ChildTag_Zone ).ForgetAllAttributes( true );
66 }
67
68 int HYDROData_Region::NbZones() const
69 {
70   return NbReferenceObjects( DataTag_Zone );
71 }
72
73 void HYDROData_Region::AddZone( const Handle(HYDROData_Zone)& theZone )
74 {
75   AddReferenceObject( theZone, DataTag_Zone );
76 }
77
78 void HYDROData_Region::SetZone( const int                     theIndex,
79                                 const Handle(HYDROData_Zone)& theZone )
80 {
81   SetReferenceObject( theZone, DataTag_Zone, theIndex );
82 }
83
84 void HYDROData_Region::InsertZone( const int                     theBeforeIndex,
85                                    const Handle(HYDROData_Zone)& theZone )
86 {
87   InsertReferenceObject( theZone, DataTag_Zone, theBeforeIndex );
88 }
89
90 void HYDROData_Region::SetZones( const HYDROData_SequenceOfObjects& theZones )
91 {
92   SetReferenceObjects( theZones, DataTag_Zone );
93 }
94
95 Handle(HYDROData_Zone) HYDROData_Region::GetZone( const int theIndex ) const
96 {
97   return Handle(HYDROData_Zone)::DownCast( 
98            GetReferenceObject( DataTag_Zone, theIndex ) );
99 }
100
101 HYDROData_SequenceOfObjects HYDROData_Region::GetZones() const
102 {
103   return GetReferenceObjects( DataTag_Zone );
104 }
105
106 void HYDROData_Region::RemoveZone( const Handle(HYDROData_Zone)& theZone )
107 {
108   if ( theZone.IsNull() )
109     return;
110
111   RemoveReferenceObject( theZone->Label(), DataTag_Zone );
112 }
113
114 void HYDROData_Region::RemoveZone( const int theIndex )
115 {
116   RemoveReferenceObject( DataTag_Zone, theIndex );
117 }
118
119 void HYDROData_Region::RemoveZones()
120 {
121   ClearReferenceObjects( DataTag_Zone );
122 }
123
124