Salome HOME
version 5_1_4 HOMARD_SRC
[modules/homard.git] / src / HOMARDGUI / MonEditIteration.cxx
1 using namespace std;
2
3 #include "MonEditIteration.h"
4
5 #include <QMessageBox>
6
7 #include "SalomeApp_Tools.h"
8 #include "HOMARDGUI_Utils.h"
9 #include "HomardQtCommun.h"
10 #include <utilities.h>
11
12
13 // -------------------------------------------------------------------------------------------------------------------------------------
14 MonEditIteration::MonEditIteration ( QWidget* parent, bool modal,
15                                      HOMARD::HOMARD_Gen_var myHomardGen,
16                                      QString IterParentName, QString IterName ):
17 // -------------------------------------------------------------------------------------------------------------------------------------
18 /* Constructs a MonEditIteration
19     herite de MonCreateIteration
20 */
21    MonCreateIteration(parent, modal, myHomardGen, IterParentName),
22    _rank(0), _step(0), _IterationName(""), _FieldFile(""),_aTypeAdap()
23 {
24     MESSAGE("Debut de  MonEditIteration" << IterName.toStdString().c_str());
25     setWindowTitle("Edit iteration");
26     _IterationName = IterName;
27     aIter = _myHomardGen->GetIteration(_IterationName.toStdString().c_str());
28
29 //  Attention au cas ou c'est une iteration initiale : il faut inhiber l'essentiel
30     int number = aIter->GetNumber() ;
31     if ( number == 0 ) { InitValEdit0(); }
32     else               { InitValEdit(); }
33 }
34 // ------------------------------
35 MonEditIteration::~MonEditIteration()
36 // ------------------------------
37 {
38 }
39
40 // ------------------------------
41 void MonEditIteration::InitValEdit0()
42 // ------------------------------
43 //    Cas d'une iteration 0
44 {
45 //
46       LEIterationName->setText(_IterationName);
47       LEIterationName->setReadOnly(true);
48
49 //    Invisibilite de l'iteration parent
50       Iter_Parent->setVisible(0);
51       PBIterParent->setVisible(0);
52       LEIterationParentName->setVisible(0);
53
54 //    Affichage bloque du nom du maillage de l'iteration courante
55       QString MeshName = aIter->GetMeshName();
56       Mesh_n->setText(QString("Mesh name"));
57       LEMeshName_n->setText(MeshName);
58       LEMeshName_n->setReadOnly(1);
59
60 //    Message general
61       Mesh_np1->setText(QString("First iteration of the case."));
62       LEMeshName_np1->setVisible(0);
63 //
64 //    Invisibilite des hypotheses et des champs
65       Hypothese->setVisible(0);
66       GBField->setVisible(0);
67       adjustSize();
68 //
69 }
70 // ------------------------------
71 void MonEditIteration::InitValEdit()
72 // ------------------------------
73 //    Cas d'une iteration > 0
74 {
75 //    Affichage bloque du nom de l'iteration
76       LEIterationName->setText(_IterationName);
77       LEIterationName->setReadOnly(true);
78
79 //    Affichage bloque du nom de l'iteration parent
80       _IterParentName = aIter->GetIterParent();
81       LEIterationParentName->setText(_IterParentName);
82       LEIterationParentName->setReadOnly(true);
83       PBIterParent->setEnabled(false);
84       PBIterParent->setVisible(0);
85
86 //    Affichage bloque du nom du maillage de l'iteration parent
87       aIterParent = _myHomardGen->GetIteration(_IterParentName.toStdString().c_str());
88       QString MeshNameParent = aIterParent->GetMeshName();
89       LEMeshName_n->setText(MeshNameParent);
90       LEMeshName_n->setReadOnly(1);
91
92 //    Affichage bloque du nom du maillage de l'iteration courante
93       QString MeshName = aIter->GetMeshName();
94       LEMeshName_np1->setText(MeshName);
95       LEMeshName_np1->setReadOnly(1);
96
97 //    Affichage de la bonne hypothese
98       QString HypoName = aIter->GetHypoName();
99       CBHypothese->insertItem(0,HypoName);
100       CBHypothese->setCurrentIndex(0);
101       CBHypothese->setEnabled(false);
102       PBHypoNew->setVisible(0);
103
104 //    Pour une adaptation selon un champ
105       HOMARD::HOMARD_Hypothesis_var myHypo = _myHomardGen->GetHypothesis(HypoName.toStdString().c_str()) ;
106       _aTypeAdap = myHypo->GetAdapType() ;
107       if ( _aTypeAdap == 1 )
108       {
109           _FieldFile = aIter->GetFieldFile();
110           LEFieldFile->setText(_FieldFile);
111           _step = aIter->GetTimeStep() ;
112           SpinBox_TimeStep->setValue(_step);
113           _rank = aIter->GetRank() ;
114           SpinBox_Rank->setValue(_rank);
115
116 // Cas ou on prend le dernier pas de temps ou sans pas de temps
117           if ( _step <= -1 )
118           {
119             Rank->setVisible(0);
120             SpinBox_Rank->setVisible(0);
121             TimeStep->setVisible(0);
122             SpinBox_TimeStep->setVisible(0);
123
124             if ( _step == -2 ) { RBLast->setChecked(true); }
125             else               { RBNo->setChecked(true); }
126           }
127
128 // Cas avec pas de temps
129           else
130           {
131             Rank->setVisible(1);
132             SpinBox_Rank->setVisible(1);
133             TimeStep->setVisible(1);
134             SpinBox_TimeStep->setVisible(1);
135             RBChosen->setChecked(true);
136           }
137       }
138       else
139       {
140           GBField->setVisible(0);
141       }
142       adjustSize();
143 //
144 }
145
146 // -------------------------------------
147 bool MonEditIteration::PushOnApply()
148 // -------------------------------------
149 {
150   if ( _aTypeAdap ==  1)
151   {
152 // Pour du raffinement selon un champ, les instants ont-ils change ?
153     if ( (_FieldFile != LEFieldFile->text().trimmed()) or 
154        (  _rank != SpinBox_Rank->value())  or
155        (  _step != SpinBox_TimeStep->value()))
156     {
157       _FieldFile = LEFieldFile->text().trimmed();
158       _rank = SpinBox_Rank->value();
159       _step = SpinBox_TimeStep->value();
160       aIter->SetFieldFile(CORBA::string_dup(_FieldFile.toStdString().c_str()));
161       aIter->SetTimeStepRank(_step, _rank);
162       _myHomardGen->InvalideIter(_IterationName.toStdString().c_str());
163       HOMARD_UTILS::updateObjBrowser();
164     }
165   }
166   return true;
167
168 };