3 #include "MonCreateCase.h"
4 #include "MonCreateBoundaryDi.h"
5 #include "MonEditBoundaryDi.h"
10 #include "SalomeApp_Tools.h"
11 #include "HOMARDGUI_Utils.h"
12 #include "HomardQtCommun.h"
13 #include <utilities.h>
16 // -----------------------------------------------------------------------------------------
17 MonCreateCase::MonCreateCase(QWidget* parent, bool modal, HOMARD::HOMARD_Gen_var myHomardGen)
18 // -----------------------------------------------------------------------------------------
19 /* Constructs a MonCreateCase
20 * Inherits from CasHomard
21 * Sets attributes to default values
25 _aCaseName(""),_aDirName(""), _ConfType(1)
27 _myHomardGen=HOMARD::HOMARD_Gen::_duplicate(myHomardGen);
33 GBBoundaryA->setVisible(0);
34 GBBoundaryD->setVisible(0);
35 GBTypeNoConf->setVisible(0);
41 // ------------------------------------------------------------------------
42 MonCreateCase::~MonCreateCase()
43 // ------------------------------------------------------------------------
45 // no need to delete child widgets, Qt does it all for us
47 // ------------------------------------------------------------------------
48 void MonCreateCase::InitConnect()
49 // ------------------------------------------------------------------------
51 connect( PushDir, SIGNAL(pressed()), this, SLOT(SetDirName()));
52 connect( PushFichier, SIGNAL(pressed()), this, SLOT(SetFileName()));
54 connect( RBConforme, SIGNAL(clicked()), this, SLOT(SetConforme()));
55 connect( RBNonConforme, SIGNAL(clicked()), this, SLOT(SetNonConforme()));
56 connect( RB1NpM, SIGNAL(clicked()), this, SLOT(Set1NpM()));
57 connect( RB1NpA, SIGNAL(clicked()), this, SLOT(Set1NpA()));
58 connect( RBQuelconque, SIGNAL(clicked()), this, SLOT(SetQuelconque()));
60 connect( CBBoundaryD, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
61 connect( PBBoundaryDiNew, SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
62 connect( PBBoundaryDiEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
63 connect( CBBoundaryA, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
65 connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK()));
66 connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply()));
67 connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
68 connect( buttonHelp, SIGNAL(pressed()), this, SLOT(PushOnHelp()));
69 connect( LECaseName, SIGNAL(textChanged(QString)), this, SLOT(CaseNameChanged()));
71 // ------------------------------------------------------------------------
72 void MonCreateCase::GetBoundarys()
73 // ------------------------------------------------------------------------
75 HOMARD::HOMARD_Boundary_var myBoundary ;
76 HOMARD::listeBoundarys_var mesBoundarys = _myHomardGen->GetAllBoundarys();
77 for (int i=0; i<mesBoundarys->length(); i++)
79 myBoundary = _myHomardGen->GetBoundary(mesBoundarys[i]);
80 int type_obj = myBoundary->GetBoundaryType() ;
81 if ( type_obj==0 ) { CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
85 // -------------------------------
86 bool MonCreateCase::PushOnApply()
87 // --------------------------------
89 MESSAGE("PushOnApply");
90 QString aCaseName=LECaseName->text().trimmed();
91 if ( aCaseName == "" )
93 QMessageBox::information( 0, "Error",
94 QString("The case must be named"),
95 QMessageBox::Ok + QMessageBox::Default );
99 QString aDirName=LEDirName->text().trimmed();
100 if (aDirName == QString(""))
102 QMessageBox::information( 0, "Error",
103 QString("A directory for the case must be selected."),
104 QMessageBox::Ok + QMessageBox::Default );
107 if ((aDirName != _aDirName) and (_myHomardGen->VerifieDir( aDirName.toStdString().c_str()) == false))
109 QMessageBox::information( 0, "Error",
110 QString("This directory is already used"),
111 QMessageBox::Ok + QMessageBox::Default );
114 if (chdir(aDirName.toStdString().c_str()) != 0)
116 QMessageBox::information( 0, "Error",
117 QString("A valid directory for the case must be selected."),
118 QMessageBox::Ok + QMessageBox::Default );
122 QString aFileName=LEFileName->text().trimmed();
123 if (aFileName ==QString(""))
125 QMessageBox::information( 0, "Error",
126 QString("The initial mesh must be selected."),
127 QMessageBox::Ok + QMessageBox::Default );
131 QString aMeshName = HOMARD_QT_COMMUN::LireNomMaillage(aFileName);
132 if (aMeshName == "" )
134 QMessageBox::information( 0, "Error",
135 QString("no mesh in mesh file"),
136 QMessageBox::Ok + QMessageBox::Default );
140 if (aCaseName != _aCaseName )
142 _aCaseName = aCaseName;
145 aCase = _myHomardGen->CreateCase( \
146 CORBA::string_dup(_aCaseName.toStdString().c_str()), \
147 CORBA::string_dup(aMeshName.toStdString().c_str()), \
148 CORBA::string_dup(aFileName.toStdString().c_str()) );
150 catch( SALOME::SALOME_Exception& S_ex )
152 QMessageBox::information( 0, "Error",
153 QString(CORBA::string_dup(S_ex.details.text)),
154 QMessageBox::Ok + QMessageBox::Default );
157 aCase = _myHomardGen->GetCas(_aCaseName.toStdString().c_str());
158 string iter0 = aCase->GetIter0Name();
159 HOMARD::HOMARD_Iteration_var aIter = _myHomardGen->GetIteration(iter0.c_str());
160 QString aFileName = aIter->GetMeshFile();
161 LEFileName->setText(aFileName);
162 LEFileName->setReadOnly(true);
165 catch( SALOME::SALOME_Exception& S_ex ) {};
168 LEFileName->setReadOnly(true);
172 aCase->SetDirName(aDirName.toStdString().c_str());
174 aCase->SetConfType(_ConfType);
176 if (CBBoundaryD->isChecked())
178 QString monBoundaryDiName=CBBoundaryDi->currentText();
179 if (monBoundaryDiName != "" )
181 aCase->AddBoundaryGroup(monBoundaryDiName.toStdString().c_str(), " ");
185 HOMARD_UTILS::updateObjBrowser();
188 // ---------------------------
189 void MonCreateCase::PushOnOK()
190 // ---------------------------
192 bool bOK = PushOnApply();
193 if ( bOK ) this->close();
195 //------------------------------
196 void MonCreateCase::PushOnHelp()
197 //-------------------------------
199 HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"));
201 // ---------------------------------
202 void MonCreateCase::SetNewCaseName()
203 // ------------------------------
205 HOMARD::listeCases_var MyCases = _myHomardGen->GetAllCases();
206 int num = 0; QString aCaseName="";
207 while (aCaseName=="" )
209 aCaseName.setNum(num+1) ;
210 aCaseName.insert(0, QString("Case_")) ;
211 for ( int i=0; i<MyCases->length(); i++)
213 if ( aCaseName == QString((MyCases)[i]))
221 LECaseName->clear() ;
222 LECaseName->insert(aCaseName);
225 // ------------------------------------------------------------------------
226 void MonCreateCase::SetDirName()
227 // ------------------------------------------------------------------------
229 QString aDirName=QFileDialog::getExistingDirectory ();
230 if (!(aDirName.isEmpty()))LEDirName->setText(aDirName);
232 // ------------------------------------------------------------------------
233 void MonCreateCase::SetFileName()
234 // ------------------------------------------------------------------------
236 QString fileName = HOMARD_QT_COMMUN::PushNomFichier();
237 if (!(fileName.isEmpty())) LEFileName->setText(fileName);
239 // ------------------------------------------------------------------------
240 void MonCreateCase::SetConforme()
241 // ------------------------------------------------------------------------
243 GBTypeNoConf->setVisible(0);
247 // ------------------------------------------------------------------------
248 void MonCreateCase::SetNonConforme()
249 // ------------------------------------------------------------------------
251 GBTypeNoConf->setVisible(1);
252 RB1NpM->setChecked(true);
256 // ------------------------------------------------------------------------
257 void MonCreateCase::Set1NpM()
258 // ------------------------------------------------------------------------
262 // ------------------------------------------------------------------------
263 void MonCreateCase::Set1NpA()
264 // ------------------------------------------------------------------------
268 // ------------------------------------------------------------------------
269 void MonCreateCase::SetQuelconque()
270 // ------------------------------------------------------------------------
274 // ------------------------------------------------------------------------
275 void MonCreateCase::SetBoundaryD()
276 // ------------------------------------------------------------------------
278 if (CBBoundaryD->isChecked())
279 { GBBoundaryD->setVisible(1); }
281 { GBBoundaryD->setVisible(0); }
284 // ------------------------------------------------------------------------
285 void MonCreateCase::addBoundaryDi(QString newBoundary)
286 // ------------------------------------------------------------------------
288 CBBoundaryDi->insertItem(0,newBoundary);
289 CBBoundaryDi->setCurrentIndex(0);
291 // ------------------------------------------------------------------------
292 void MonCreateCase::PushBoundaryDiNew()
293 // ------------------------------------------------------------------------
295 MonCreateBoundaryDi *BoundaryDlg = new MonCreateBoundaryDi(this, true,
296 HOMARD::HOMARD_Gen::_duplicate(_myHomardGen), _aCaseName, "") ;
299 // ------------------------------------------------------------------------
300 void MonCreateCase::PushBoundaryDiEdit()
301 // ------------------------------------------------------------------------
303 if (CBBoundaryDi->currentText() == QString("")) return;
304 MonEditBoundaryDi *BoundaryDlg = new MonEditBoundaryDi(this, true,
305 HOMARD::HOMARD_Gen::_duplicate(_myHomardGen), _aCaseName, CBBoundaryDi->currentText() ) ;
308 // ------------------------------------------------------------------------
309 void MonCreateCase::SetBoundaryA()
310 // ------------------------------------------------------------------------
312 if (CBBoundaryA->isChecked()) { GBBoundaryA->setVisible(1); }
313 else { GBBoundaryA->setVisible(0); }
316 // ------------------------------------------------------------------------
317 void MonCreateCase::CaseNameChanged()
318 // ------------------------------------------------------------------------
320 if (_aCaseName != LECaseName->text().trimmed())
322 LEFileName->setReadOnly(false);