]> SALOME platform Git repositories - modules/homard.git/blob - src/HOMARDGUI/MonPursueIteration.cxx
Salome HOME
Reorganisation des cas-tests et des tutoriaux
[modules/homard.git] / src / HOMARDGUI / MonPursueIteration.cxx
1 // Copyright (C) 2011-2012  CEA/DEN, EDF R&D
2 //
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.
7 //
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.
12 //
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
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 using namespace std;
21
22 #include "MonPursueIteration.h"
23
24 #include <QFileDialog>
25 #include <QMessageBox>
26
27 #include "SalomeApp_Tools.h"
28 #include "HOMARDGUI_Utils.h"
29 #include "HomardQtCommun.h"
30 #include <utilities.h>
31
32
33 // -----------------------------------------------------------------------------------------
34 /* Constructs a MonPursueIteration
35  * Sets attributes to default values
36  */
37 // -----------------------------------------------------------------------------------------
38 MonPursueIteration::MonPursueIteration (QWidget* parent, bool modal, HOMARD::HOMARD_Gen_var myHomardGen)
39     :
40     Ui_PursueIteration(),
41     _aCaseName(""), _aDirName(""), _aDirNameStart("")
42 {
43   MESSAGE("Debut du constructeur de MonPursueIteration");
44   myHomardGen=HOMARD::HOMARD_Gen::_duplicate(myHomardGen);
45   setupUi(this);
46   setModal(modal);
47
48   InitConnect();
49
50   SetNewCaseName() ;
51   _Type = 1 ;
52   GBIterationintoCase->setVisible(0);
53   spinBoxNumber->setVisible(0);
54
55   adjustSize();
56   MESSAGE("Fin du constructeur de MonPursueIteration");
57 }
58
59 // ------------------------------------------------------------------------
60 MonPursueIteration::~MonPursueIteration()
61 // ------------------------------------------------------------------------
62 {
63     // no need to delete child widgets, Qt does it all for us
64 }
65 // ------------------------------------------------------------------------
66 void MonPursueIteration::InitConnect()
67 // ------------------------------------------------------------------------
68 {
69     connect( LECaseName,     SIGNAL(textChanged(QString)), this, SLOT(CaseNameChanged()));
70     connect( PushDir,        SIGNAL(pressed()), this, SLOT(SetDirName()));
71
72     connect( RBIteration,    SIGNAL(clicked()), this, SLOT(FromIteration()));
73     connect( RBCase,         SIGNAL(clicked()), this, SLOT(FromCase()));
74     connect( PushDirStart,   SIGNAL(pressed()), this, SLOT(SetDirNameStart()));
75
76     connect( RBCaseLastIteration, SIGNAL(clicked()), this, SLOT(CaseLastIteration()));
77     connect( RBCaseNIteration,    SIGNAL(clicked()), this, SLOT(CaseNIteration()));
78
79     connect( buttonOk,       SIGNAL(pressed()), this, SLOT(PushOnOK()));
80     connect( buttonApply,    SIGNAL(pressed()), this, SLOT(PushOnApply()));
81     connect( buttonCancel,   SIGNAL(pressed()), this, SLOT(close()));
82     connect( buttonHelp,     SIGNAL(pressed()), this, SLOT(PushOnHelp()));
83 }
84 // -------------------------------
85 bool MonPursueIteration::PushOnApply()
86 // --------------------------------
87 {
88   MESSAGE("PushOnApply");
89
90   QString aDirName=LEDirName->text().trimmed();
91   if (aDirName == QString(""))
92   {
93     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
94                               QObject::tr("HOM_CASE_DIRECTORY_1") );
95     return false;
96   }
97   if ( aDirName != _aDirName)
98   { QString CaseNameDir = myHomardGen->VerifieDir( aDirName.toStdString().c_str()) ;
99     if ( CaseNameDir != "" )
100     {
101       QString texte ;
102       texte = QObject::tr("HOM_CASE_DIRECTORY_2") + CaseNameDir ;
103       QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
104                                 texte );
105       return false;
106     }
107   }
108   if (chdir(aDirName.toStdString().c_str()) != 0)
109   {
110     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
111                               QObject::tr("HOM_CASE_DIRECTORY_3") );
112     return false;
113   }
114
115 // Enregistrement du numero d'iteration
116   int Number ;
117   if ( _Type == 3 ) { Number = spinBoxNumber->value() ; }
118
119 // Creation du cas
120   QString _aCaseName=LECaseName->text().trimmed();
121
122   MESSAGE("_Type = "<<_Type);
123   switch (_Type)
124   {
125     case 1 : // Poursuite a partir d'une iteration
126     {
127       try
128       {
129         MESSAGE("Poursuite a partir d'une iteration");
130         aCase = myHomardGen->CreateCaseFromIteration( \
131                   CORBA::string_dup(_aCaseName.toStdString().c_str()),  \
132                   CORBA::string_dup(_aDirNameStart.toStdString().c_str()) );
133       }
134       catch( SALOME::SALOME_Exception& S_ex )
135       {
136         QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
137                                   QObject::tr(CORBA::string_dup(S_ex.details.text)) );
138         return false ;
139       }
140       break;
141     }
142     case 2 : // Poursuite a partir de la derniere iteration dans un cas
143     {
144       try
145       {
146         MESSAGE("Poursuite a partir de la derniere iteration dans un cas");
147         aCase = myHomardGen->CreateCaseFromCaseLastIteration( \
148                   CORBA::string_dup(_aCaseName.toStdString().c_str()),  \
149                   CORBA::string_dup(_aDirNameStart.toStdString().c_str()) );
150       }
151       catch( SALOME::SALOME_Exception& S_ex )
152       {
153         QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
154                                   QObject::tr(CORBA::string_dup(S_ex.details.text)) );
155         return false ;
156       }
157       break;
158     }
159     case 3 : // Poursuite a partir d'une iteration dans un cas
160     {
161       try
162       {
163         MESSAGE("Poursuite a partir d'une iteration dans un cas");
164         aCase = myHomardGen->CreateCaseFromCaseIteration( \
165                   CORBA::string_dup(_aCaseName.toStdString().c_str()),  \
166                   CORBA::string_dup(_aDirNameStart.toStdString().c_str()),  \
167                   Number );
168       }
169       catch( SALOME::SALOME_Exception& S_ex )
170       {
171         QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
172                                   QObject::tr(CORBA::string_dup(S_ex.details.text)) );
173         return false ;
174       }
175       break;
176     }
177   }
178
179   HOMARD_UTILS::updateObjBrowser();
180
181   return true;
182 }
183 // ---------------------------
184 void MonPursueIteration::PushOnOK()
185 // ---------------------------
186 {
187   bool bOK = PushOnApply();
188   if ( bOK )  this->close();
189 }
190 //------------------------------
191 void MonPursueIteration::PushOnHelp()
192 //-------------------------------
193 {
194   char* LanguageShort = myHomardGen->GetLanguageShort();
195   HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString(""), QString(LanguageShort));
196 }
197 // ---------------------------------
198 void MonPursueIteration::SetNewCaseName()
199 // ------------------------------
200 {
201   HOMARD::listeCases_var  MyCases = myHomardGen->GetAllCasesName();
202   int num = 0; QString aCaseName="";
203   while (aCaseName=="" )
204   {
205     aCaseName.setNum(num+1) ;
206     aCaseName.insert(0, QString("Case_")) ;
207     for ( int i=0; i<MyCases->length(); i++)
208     {
209       if ( aCaseName == QString((MyCases)[i]))
210       {
211           num += 1;
212           aCaseName = "";
213           break;
214       }
215    }
216   }
217   LECaseName->clear() ;
218   LECaseName->insert(aCaseName);
219 }
220 // ------------------------------------------------------------------------
221 void MonPursueIteration::SetDirName()
222 // ------------------------------------------------------------------------
223 {
224   QString aDirName=QFileDialog::getExistingDirectory ();
225   if (!(aDirName.isEmpty()))LEDirName->setText(aDirName);
226 }
227 // ------------------------------------------------------------------------
228 void MonPursueIteration::SetDirNameStart()
229 // ------------------------------------------------------------------------
230 {
231   QString aDirName=QFileDialog::getExistingDirectory ();
232   if (!(aDirName.isEmpty()))LEDirNameStart->setText(aDirName);
233 }
234 // ------------------------------------------------------------------------
235 void MonPursueIteration::FromIteration()
236 // ------------------------------------------------------------------------
237 {
238   GBIterationintoCase->setVisible(0);
239   spinBoxNumber->setVisible(0);
240   _Type = 1 ;
241   adjustSize();
242 }
243 // ------------------------------------------------------------------------
244 void MonPursueIteration::FromCase()
245 // ------------------------------------------------------------------------
246 {
247   GBIterationintoCase->setVisible(1);
248   CaseLastIteration();
249 }
250 // ------------------------------------------------------------------------
251 void MonPursueIteration::CaseLastIteration()
252 // ------------------------------------------------------------------------
253 {
254   spinBoxNumber->setVisible(0);
255   _Type = 2 ;
256   adjustSize();
257 }
258 // ------------------------------------------------------------------------
259 void MonPursueIteration::CaseNIteration()
260 // ------------------------------------------------------------------------
261 {
262   spinBoxNumber->setVisible(1);
263   _Type = 3 ;
264   adjustSize();
265 }