Salome HOME
Fix problems of 'make distcheck'
[modules/homard.git] / src / HOMARDGUI / MonEditZone.cxx
1 using namespace std;
2
3 #include "MonEditZone.h"
4
5 #include "SalomeApp_Tools.h"
6 #include "HOMARDGUI_Utils.h"
7 #include <utilities.h>
8
9
10 // ------------------------------------------------------------------------
11 MonEditZone::MonEditZone( MonCreateHypothesis* parent, bool modal,
12                           HOMARD::HOMARD_Gen_var myHomardGen,
13                           QString caseName, QString zoneName ):
14 // ------------------------------------------------------------------------
15 /* Constructs a MonEditZone
16     herite de MonCreateZone
17 */
18     MonCreateZone(parent, myHomardGen, caseName)
19 {
20     MESSAGE("Debut de MonEditZone pour " << zoneName.toStdString().c_str());
21     setWindowTitle(QObject::tr("HOM_ZONE_EDIT_WINDOW_TITLE"));
22     _aZoneName=zoneName;
23     aZone = _myHomardGen->GetZone(_aZoneName.toStdString().c_str());
24     InitValEdit();
25 }
26 // ------------------------------------------------------------------------
27 MonEditZone::~MonEditZone()
28 // ------------------------------------------------------------------------
29 {
30     // no need to delete child widgets, Qt does it all for us
31 }
32 // ------------------------------------------------------------------------
33 void MonEditZone::InitValEdit()
34 // ------------------------------------------------------------------------
35 {
36     LEZoneName->setText(_aZoneName);
37     LEZoneName->setReadOnly(true);
38     _ZoneType = aZone->GetZoneType();
39     InitValZoneLimit();
40     if (_aCaseName != QString("")) InitValZone();
41     switch (_ZoneType)
42     {
43       case 2 : // il s agit d une boite
44       {
45         InitValZoneBox();
46         SetBox();
47         break;
48       }
49       case 4 : // il s agit d une sphere
50       {
51         InitValZoneSphere();
52         SetSphere();
53         break;
54       }
55     };
56 }
57 // ------------------------------------------------------------------------
58 void MonEditZone::InitValZoneLimit()
59 // ------------------------------------------------------------------------
60 {
61       HOMARD::double_array_var  mesCoordLimits = aZone->GetLimit();
62       ASSERT(mesCoordLimits->length() == 3 );
63       _Xincr=mesCoordLimits[0];
64       _Yincr=mesCoordLimits[1];
65       _Zincr=mesCoordLimits[2];
66
67 }
68 // ------------------------------------------------------------------------
69 void MonEditZone::InitValZoneBox()
70 // ------------------------------------------------------------------------
71 {
72       HOMARD::double_array_var  mesCoordZones = aZone->GetBox();
73       ASSERT(mesCoordZones->length() == 6 );
74       _ZoneXmin=mesCoordZones[0]; _ZoneXmax=mesCoordZones[1];
75       _ZoneYmin=mesCoordZones[2]; _ZoneYmax=mesCoordZones[3];
76       _ZoneZmin=mesCoordZones[4]; _ZoneZmax=mesCoordZones[5];
77
78 }
79 // ------------------------------------------------------------------------
80 void MonEditZone::InitValZoneSphere()
81 // ------------------------------------------------------------------------
82 {
83       HOMARD::double_array_var  mesCoordZones = aZone->GetSphere();
84       ASSERT(mesCoordZones->length() == 4 );
85       _ZoneXcentre=mesCoordZones[0];
86       _ZoneYcentre=mesCoordZones[1];
87       _ZoneZcentre=mesCoordZones[2];
88       _ZoneRayon=mesCoordZones[3];
89
90 }
91 // ------------------------------------------------------------------------
92 void MonEditZone::SetBox()
93 // ------------------------------------------------------------------------
94 {
95   gBBox->setVisible(1);
96   gBSphere->setVisible(0);
97   RBBox->setChecked(1);
98   adjustSize();
99   _ZoneType=2;
100   RBSphere->setDisabled(true);
101   adjustSize();
102
103   SpinBox_Xmini->setValue(_ZoneXmin);
104   SpinBox_Xmaxi->setValue(_ZoneXmax);
105
106   double incr ;
107   if ( _Xincr > 0 ) {incr=_Xincr;} else{incr=1.;}
108   SpinBox_Xmini->setSingleStep(incr);
109   SpinBox_Xmaxi->setSingleStep(incr);
110
111   SpinBox_Ymini->setValue(_ZoneYmin);
112   SpinBox_Ymaxi->setValue(_ZoneYmax);
113   if ( _Yincr > 0 ) {incr=_Yincr;} else{incr=1.;}
114   SpinBox_Ymini->setSingleStep(incr);
115   SpinBox_Ymaxi->setSingleStep(incr);
116
117   SpinBox_Zmini->setValue(_ZoneZmin);
118   SpinBox_Zmaxi->setValue(_ZoneZmax);
119   if ( _Zincr > 0 ) {incr=_Zincr;} else{incr=1.;}
120   SpinBox_Zmini->setSingleStep(incr);
121   SpinBox_Zmaxi->setSingleStep(incr);
122
123 }
124 // ------------------------------------------------------------------------
125 void MonEditZone::SetSphere()
126 // ------------------------------------------------------------------------
127 {
128   gBBox->setVisible(0);
129   gBSphere->setVisible(1);
130   RBSphere->setChecked(1);
131   RBBox->setDisabled(true);
132   adjustSize();
133   _ZoneType=4 ;
134
135   SpinBox_Xcentre->setValue(_ZoneXcentre);
136   if ( _Xincr > 0) { SpinBox_Xcentre->setSingleStep(_Xincr); }
137   else             { SpinBox_Xcentre->setSingleStep(1) ; }
138
139   SpinBox_Ycentre->setValue(_ZoneYcentre);
140   if ( _Yincr > 0) { SpinBox_Ycentre->setSingleStep(_Yincr); }
141   else             { SpinBox_Ycentre->setSingleStep(1) ; }
142
143   SpinBox_Zcentre->setValue(_ZoneZcentre);
144   if ( _Zincr > 0) { SpinBox_Zcentre->setSingleStep(_Zincr); }
145   else             { SpinBox_Zcentre->setSingleStep(1);}
146
147   SpinBox_Rayon->setMinimum(0.);
148   SpinBox_Rayon->setValue(_ZoneRayon);
149 }
150
151
152 // ---------------------------------------------------
153 bool MonEditZone::CreateOrUpdateZone()
154 //----------------------------------------------------
155 //  Pas de Creation de la zone
156 //  Mise a jour des attributs de la Zone
157
158 {
159   try
160   {
161     aZone->SetZoneType(_ZoneType);
162     aZone->SetBox(_ZoneXmin, _ZoneXmax, _ZoneYmin, _ZoneYmax, _ZoneZmin, _ZoneZmax);
163     aZone->SetSphere(_ZoneXcentre, _ZoneYcentre, _ZoneZcentre, _ZoneRayon);
164     if (Chgt) _myHomardGen->InvalideZone(_aZoneName.toStdString().c_str());
165     HOMARD_UTILS::updateObjBrowser();
166   }
167   catch( const SALOME::SALOME_Exception& S_ex ) {
168        SalomeApp_Tools::QtCatchCorbaException( S_ex );
169        return false;
170   }
171   return true;
172 }
173