]> SALOME platform Git repositories - modules/homard.git/blob - src/HOMARDGUI/MonPursueIteration.cxx
Salome HOME
Nouvelles icones
[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) and (myHomardGen->VerifieDir( aDirName.toStdString().c_str()) == false))
98   {
99     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
100                               QObject::tr("HOM_CASE_DIRECTORY_2") );
101     return false;
102   }
103   if (chdir(aDirName.toStdString().c_str()) != 0)
104   {
105     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
106                               QObject::tr("HOM_CASE_DIRECTORY_3") );
107     return false;
108   }
109
110 // Enregistrement du numero d'iteration
111   int Number ;
112   if ( _Type == 3 ) { Number = spinBoxNumber->value() ; }
113
114 // Creation du cas
115   QString _aCaseName=LECaseName->text().trimmed();
116
117   MESSAGE("_Type = "<<_Type);
118   switch (_Type)
119   {
120     case 1 : // Poursuite a partir d'une iteration
121     {
122       try
123       {
124         MESSAGE("Poursuite a partir d'une iteration");
125         aCase = myHomardGen->CreateCaseFromIteration( \
126                   CORBA::string_dup(_aCaseName.toStdString().c_str()),  \
127                   CORBA::string_dup(_aDirNameStart.toStdString().c_str()) );
128       }
129       catch( SALOME::SALOME_Exception& S_ex )
130       {
131         QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
132                                   QObject::tr(CORBA::string_dup(S_ex.details.text)) );
133         return false ;
134       }
135       break;
136     }
137     case 2 : // Poursuite a partir de la derniere iteration dans un cas
138     {
139       try
140       {
141         MESSAGE("Poursuite a partir de la derniere iteration dans un cas");
142         aCase = myHomardGen->CreateCaseFromCaseLastIteration( \
143                   CORBA::string_dup(_aCaseName.toStdString().c_str()),  \
144                   CORBA::string_dup(_aDirNameStart.toStdString().c_str()) );
145       }
146       catch( SALOME::SALOME_Exception& S_ex )
147       {
148         QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
149                                   QObject::tr(CORBA::string_dup(S_ex.details.text)) );
150         return false ;
151       }
152       break;
153     }
154     case 3 : // Poursuite a partir d'une iteration dans un cas
155     {
156       try
157       {
158         MESSAGE("Poursuite a partir d'une iteration dans un cas");
159         aCase = myHomardGen->CreateCaseFromCaseIteration( \
160                   CORBA::string_dup(_aCaseName.toStdString().c_str()),  \
161                   CORBA::string_dup(_aDirNameStart.toStdString().c_str()),  \
162                   Number );
163       }
164       catch( SALOME::SALOME_Exception& S_ex )
165       {
166         QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
167                                   QObject::tr(CORBA::string_dup(S_ex.details.text)) );
168         return false ;
169       }
170       break;
171     }
172   }
173
174   HOMARD_UTILS::updateObjBrowser();
175
176   return true;
177 }
178 // ---------------------------
179 void MonPursueIteration::PushOnOK()
180 // ---------------------------
181 {
182   bool bOK = PushOnApply();
183   if ( bOK )  this->close();
184 }
185 //------------------------------
186 void MonPursueIteration::PushOnHelp()
187 //-------------------------------
188 {
189   HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString(""));
190 }
191 // ---------------------------------
192 void MonPursueIteration::SetNewCaseName()
193 // ------------------------------
194 {
195   HOMARD::listeCases_var  MyCases = myHomardGen->GetAllCasesName();
196   int num = 0; QString aCaseName="";
197   while (aCaseName=="" )
198   {
199     aCaseName.setNum(num+1) ;
200     aCaseName.insert(0, QString("Case_")) ;
201     for ( int i=0; i<MyCases->length(); i++)
202     {
203       if ( aCaseName == QString((MyCases)[i]))
204       {
205           num += 1;
206           aCaseName = "";
207           break;
208       }
209    }
210   }
211   LECaseName->clear() ;
212   LECaseName->insert(aCaseName);
213 }
214 // ------------------------------------------------------------------------
215 void MonPursueIteration::SetDirName()
216 // ------------------------------------------------------------------------
217 {
218   QString aDirName=QFileDialog::getExistingDirectory ();
219   if (!(aDirName.isEmpty()))LEDirName->setText(aDirName);
220 }
221 // ------------------------------------------------------------------------
222 void MonPursueIteration::SetDirNameStart()
223 // ------------------------------------------------------------------------
224 {
225   QString aDirName=QFileDialog::getExistingDirectory ();
226   if (!(aDirName.isEmpty()))LEDirNameStart->setText(aDirName);
227 }
228 // ------------------------------------------------------------------------
229 void MonPursueIteration::FromIteration()
230 // ------------------------------------------------------------------------
231 {
232   GBIterationintoCase->setVisible(0);
233   spinBoxNumber->setVisible(0);
234   _Type = 1 ;
235   adjustSize();
236 }
237 // ------------------------------------------------------------------------
238 void MonPursueIteration::FromCase()
239 // ------------------------------------------------------------------------
240 {
241   GBIterationintoCase->setVisible(1);
242   CaseLastIteration();
243 }
244 // ------------------------------------------------------------------------
245 void MonPursueIteration::CaseLastIteration()
246 // ------------------------------------------------------------------------
247 {
248   spinBoxNumber->setVisible(0);
249   _Type = 2 ;
250   adjustSize();
251 }
252 // ------------------------------------------------------------------------
253 void MonPursueIteration::CaseNIteration()
254 // ------------------------------------------------------------------------
255 {
256   spinBoxNumber->setVisible(1);
257   _Type = 3 ;
258   adjustSize();
259 }