1 // Copyright (C) 2011-2013 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "MonEditIteration.h"
22 #include "SalomeApp_Tools.h"
23 #include "HOMARDGUI_Utils.h"
24 #include "HomardQtCommun.h"
25 #include <utilities.h>
29 // -------------------------------------------------------------------------------------------------------------------------------------
30 MonEditIteration::MonEditIteration ( QWidget* parent, bool modal,
31 HOMARD::HOMARD_Gen_var myHomardGen,
32 QString IterParentName, QString IterName ):
33 // -------------------------------------------------------------------------------------------------------------------------------------
34 /* Constructs a MonEditIteration
35 herite de MonCreateIteration
37 MonCreateIteration(parent, modal, myHomardGen, IterParentName),
38 _rank(-1), _step(-1), _IterationName(""), _FieldFile(""),_aTypeAdap()
40 MESSAGE("Debut de MonEditIteration" << IterName.toStdString().c_str());
41 setWindowTitle(QObject::tr("HOM_ITER_EDIT_WINDOW_TITLE"));
42 _IterationName = IterName;
43 aIter = myHomardGen->GetIteration(_IterationName.toStdString().c_str());
45 // Attention au cas ou c'est une iteration initiale : il faut inhiber l'essentiel
46 int etat = aIter->GetState() ;
47 if ( etat <= 0 ) { InitValEdit0(etat); }
48 else { InitValEdit(); }
50 // ------------------------------
51 MonEditIteration::~MonEditIteration()
52 // ------------------------------
56 // ------------------------------
57 void MonEditIteration::InitValEdit0(int etat)
58 // ------------------------------
59 // Cas d'une iteration initiale d'un cas (initial ou poursuite)
62 LEName->setText(_IterationName);
63 LEName->setReadOnly(true);
65 // Invisibilite de l'iteration parent
66 Iter_Parent->setVisible(0);
67 PBIterParent->setVisible(0);
68 LEIterationParentName->setVisible(0);
70 // Affichage bloque du nom du maillage de l'iteration courante
71 QString MeshName = aIter->GetMeshName();
72 Mesh_n->setText(QObject::tr("HOM_ITER_STARTING_POINT_0"));
73 LEMeshName_n->setText(MeshName);
74 LEMeshName_n->setReadOnly(1);
77 if ( etat == 0 ) { Mesh_np1->setText(QObject::tr("HOM_ITER_STARTING_POINT_1")) ; }
78 else { Mesh_np1->setText(QObject::tr("HOM_ITER_STARTING_POINT_2")) ; }
79 LEMeshName_np1->setVisible(0);
81 // Invisibilite des hypotheses et des champs
82 Hypothese->setVisible(0);
83 GBField->setVisible(0);
87 // ------------------------------
88 void MonEditIteration::InitValEdit()
89 // ------------------------------
90 // Cas d'une iteration courante
92 // Affichage bloque du nom de l'iteration
93 LEName->setText(_IterationName);
94 LEName->setReadOnly(true);
96 // Affichage bloque du nom de l'iteration parent
97 _IterParentName = aIter->GetIterParentName();
98 LEIterationParentName->setText(_IterParentName);
99 LEIterationParentName->setReadOnly(true);
100 PBIterParent->setEnabled(false);
101 PBIterParent->setVisible(0);
103 // Affichage bloque du nom du maillage de l'iteration parent
104 aIterParent = myHomardGen->GetIteration(_IterParentName.toStdString().c_str());
105 QString MeshNameParent = aIterParent->GetMeshName();
106 LEMeshName_n->setText(MeshNameParent);
107 LEMeshName_n->setReadOnly(1);
109 // Affichage bloque du nom du maillage de l'iteration courante
110 QString MeshName = aIter->GetMeshName();
111 LEMeshName_np1->setText(MeshName);
112 LEMeshName_np1->setReadOnly(1);
114 // Affichage de la bonne hypothese
115 QString HypoName = aIter->GetHypoName();
116 CBHypothese->insertItem(0,HypoName);
117 CBHypothese->setCurrentIndex(0);
118 CBHypothese->setEnabled(false);
119 PBHypoNew->setVisible(0);
121 // Pour une adaptation selon un champ
122 HOMARD::HOMARD_Hypothesis_var myHypo = myHomardGen->GetHypothesis(HypoName.toStdString().c_str()) ;
123 _aTypeAdap = myHypo->GetAdapType() ;
124 if ( _aTypeAdap == 1 )
126 _FieldFile = aIter->GetFieldFile();
127 LEFieldFile->setText(_FieldFile);
128 _step = aIter->GetTimeStep() ;
129 SpinBox_TimeStep->setValue(_step);
130 _rank = aIter->GetRank() ;
131 SpinBox_Rank->setValue(_rank);
133 // Cas ou on prend le dernier pas de temps ou sans pas de temps
137 SpinBox_Rank->setVisible(0);
138 TimeStep->setVisible(0);
139 SpinBox_TimeStep->setVisible(0);
141 if ( _step == -2 ) { RBLast->setChecked(true); }
142 else { RBNo->setChecked(true); }
145 // Cas avec pas de temps
149 SpinBox_Rank->setVisible(1);
150 TimeStep->setVisible(1);
151 SpinBox_TimeStep->setVisible(1);
152 RBChosen->setChecked(true);
157 GBField->setVisible(0);
163 // -------------------------------------
164 bool MonEditIteration::PushOnApply()
165 // -------------------------------------
167 if ( _aTypeAdap == 1)
169 // Pour du raffinement selon un champ, les instants ont-ils change ?
170 if ( (_FieldFile != LEFieldFile->text().trimmed()) ||
171 ( _rank != SpinBox_Rank->value()) ||
172 ( _step != SpinBox_TimeStep->value()))
174 _FieldFile = LEFieldFile->text().trimmed();
175 aIter->SetFieldFile(CORBA::string_dup(_FieldFile.toStdString().c_str()));
176 _rank = SpinBox_Rank->value();
177 _step = SpinBox_TimeStep->value();
178 if ( _step == -2 ) { aIter->SetTimeStepRankLast(); }
179 else { aIter->SetTimeStepRank(_step, _rank); }
180 myHomardGen->InvalideIter(_IterationName.toStdString().c_str());
181 HOMARD_UTILS::updateObjBrowser();