]> SALOME platform Git repositories - modules/homard.git/blob - src/HOMARDGUI/MonMeshInfo.cxx
Salome HOME
Message d'erreur en cas de mauvais répertoire pour le cas en GUI
[modules/homard.git] / src / HOMARDGUI / MonMeshInfo.cxx
1 // Copyright (C) 2011-2013  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 "MonMeshInfo.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 "MonEditFile.h"
31 #include <utilities.h>
32
33
34 // -----------------------------------------------------------------------------------------
35 MonMeshInfo::MonMeshInfo(QWidget* parent, bool modal, HOMARD::HOMARD_Gen_var myHomardGen0)
36 // -----------------------------------------------------------------------------------------
37 /* Constructs a MonMeshInfo
38  * Inherits from CasHomard
39  * Sets attributes to default values
40  */
41     :
42     Ui_MeshInfo(),
43     _aCaseName(""),_aDirName(""),
44     _BlockSize(0),
45     _Connection(0),
46     _Diametre(0),
47     _Entanglement(0),
48     _Quality(0)
49 {
50       myHomardGen=HOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
51       setupUi(this);
52       setModal(modal);
53       InitConnect();
54
55       SetNewCaseName() ;
56       adjustSize();
57 }
58
59 // ------------------------------------------------------------------------
60 MonMeshInfo::~MonMeshInfo()
61 // ------------------------------------------------------------------------
62 {
63     // no need to delete child widgets, Qt does it all for us
64 }
65 // ------------------------------------------------------------------------
66 void MonMeshInfo::InitConnect()
67 // ------------------------------------------------------------------------
68 {
69     connect( LECaseName,     SIGNAL(textChanged(QString)), this, SLOT(CaseNameChanged()));
70     connect( PushDir,        SIGNAL(pressed()), this, SLOT(SetDirName()));
71     connect( PushFichier,    SIGNAL(pressed()), this, SLOT(SetFileName()));
72
73     connect( CBBlockSize,    SIGNAL(stateChanged(int)), this, SLOT(SetBlockSize()));
74     connect( CBConnection,   SIGNAL(stateChanged(int)), this, SLOT(SetConnection()));
75     connect( CBDiametre,     SIGNAL(stateChanged(int)), this, SLOT(SetDiametre()));
76     connect( CBEntanglement, SIGNAL(stateChanged(int)), this, SLOT(SetEntanglement()));
77     connect( CBQuality,      SIGNAL(stateChanged(int)), this, SLOT(SetQuality()));
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 MonMeshInfo::PushOnApply()
86 // --------------------------------
87 {
88   MESSAGE("PushOnApply");
89   QString aCaseName=LECaseName->text().trimmed();
90   if ( aCaseName == "" )
91   {
92     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
93                               QObject::tr("HOM_CASE_NAME") );
94     return false;
95   }
96
97   QString aDirName=LEDirName->text().trimmed();
98   if (aDirName == QString(""))
99   {
100     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
101                               QObject::tr("HOM_CASE_DIRECTORY_1") );
102     return false;
103   }
104   if ( aDirName != _aDirName)
105   { QString CaseNameDir = myHomardGen->VerifieDir( aDirName.toStdString().c_str()) ;
106     if ( CaseNameDir != "" )
107     {
108       INFOS(CaseNameDir.toStdString().c_str());
109       QString texte ;
110       texte = QObject::tr("HOM_CASE_DIRECTORY_2") + CaseNameDir ;
111       QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
112                                 texte );
113       return false;
114     }
115   }
116   if (chdir(aDirName.toStdString().c_str()) != 0)
117   {
118     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
119                               QObject::tr("HOM_CASE_DIRECTORY_3") );
120     return false;
121   }
122
123   QString aFileName=LEFileName->text().trimmed();
124   if (aFileName ==QString(""))
125   {
126     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
127                               QObject::tr("HOM_CASE_MESH") );
128     return false;
129   }
130
131   QString aMeshName = HOMARD_QT_COMMUN::LireNomMaillage(aFileName);
132   if (aMeshName == "" )
133   {
134     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
135                               QObject::tr("HOM_MED_FILE_2") );
136     return false;
137   }
138   if ( ( _Quality == 0 ) and ( _Diametre == 0 ) and ( _Connection == 0 ) and ( _BlockSize == 0 ) and ( _Entanglement == 0 ) )
139   {
140     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
141                               QObject::tr("HOM_MESH_INFO") );
142     return false;
143   }
144
145   if (aCaseName != _aCaseName )
146   {
147     _aCaseName = aCaseName;
148     try
149     {
150       myHomardGen->MeshInfo( \
151             CORBA::string_dup(_aCaseName.toStdString().c_str()),  \
152             CORBA::string_dup(aMeshName.toStdString().c_str()),  \
153             CORBA::string_dup(aFileName.toStdString().c_str()),  \
154             CORBA::string_dup(aDirName.toStdString().c_str()),  \
155             _Quality, _Diametre, _Connection, _BlockSize, _Entanglement );
156     }
157     catch( SALOME::SALOME_Exception& S_ex )
158     {
159       QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
160                                 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
161       return false;
162     }
163   }
164
165   // Le bilan de l'analyse a afficher
166   aCase = myHomardGen->GetCase(_aCaseName.toStdString().c_str());
167   string iter0 = aCase->GetIter0Name();
168   HOMARD::HOMARD_Iteration_var aIter =  myHomardGen->GetIteration(iter0.c_str());
169   aFileName = aIter->GetFileInfo() ;
170   MonEditFile *aDlg = new MonEditFile( 0, true, HOMARD::HOMARD_Gen::_duplicate(myHomardGen), aFileName, 1 ) ;
171   if ( aDlg->_codret == 0 ) { aDlg->show(); }
172
173 HOMARD_UTILS::updateObjBrowser();
174   return true;
175 }
176 // ---------------------------
177 void MonMeshInfo::PushOnOK()
178 // ---------------------------
179 {
180   bool bOK = PushOnApply();
181   if ( bOK )  this->close();
182 }
183 //------------------------------
184 void MonMeshInfo::PushOnHelp()
185 //-------------------------------
186 {
187   char* LanguageShort = myHomardGen->GetLanguageShort();
188   HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString(""), QString(LanguageShort));
189 }
190 // ---------------------------------
191 void MonMeshInfo::SetNewCaseName()
192 // ------------------------------
193 {
194   HOMARD::listeCases_var  MyCases = myHomardGen->GetAllCasesName();
195   int num = 0; QString aCaseName="";
196   while (aCaseName=="" )
197   {
198     aCaseName.setNum(num+1) ;
199     aCaseName.insert(0, QString("Case_")) ;
200     for ( int i=0; i<MyCases->length(); i++)
201     {
202       if ( aCaseName == QString((MyCases)[i]) )
203       {
204         num += 1 ;
205         aCaseName="";
206         break;
207       }
208    }
209   }
210   LECaseName->clear() ;
211   LECaseName->insert(aCaseName);
212 }
213 // ------------------------------------------------------------------------
214 void MonMeshInfo::SetDirName()
215 // ------------------------------------------------------------------------
216 {
217   QString aDirName=QFileDialog::getExistingDirectory ();
218   if (!(aDirName.isEmpty()))LEDirName->setText(aDirName);
219 }
220 // ------------------------------------------------------------------------
221 void MonMeshInfo::SetFileName()
222 // ------------------------------------------------------------------------
223 {
224   QString fileName0 = LEFileName->text().trimmed();
225   QString fileName = HOMARD_QT_COMMUN::PushNomFichier();
226   if (fileName.isEmpty()) fileName = fileName0 ;
227   LEFileName->setText(fileName);
228 }
229 // ------------------------------------------------------------------------
230 void MonMeshInfo::CaseNameChanged()
231 // ------------------------------------------------------------------------
232 {
233   if (_aCaseName != LECaseName->text().trimmed())
234   {
235     LEFileName->setReadOnly(false);
236     PushFichier->show();
237   }
238 }
239 // ------------------------------------------------------------------------
240 void MonMeshInfo::SetBlockSize()
241 // ------------------------------------------------------------------------
242 {
243   MESSAGE("Debut de SetBlockSize ");
244   if ( CBBlockSize->isChecked() ) { _BlockSize = 1 ; }
245   else                            { _BlockSize = 0 ; }
246 }
247 // ------------------------------------------------------------------------
248 void MonMeshInfo::SetConnection()
249 // ------------------------------------------------------------------------
250 {
251   MESSAGE("Debut de SetConnection ");
252   if ( CBConnection->isChecked() ) { _Connection = 1 ; }
253   else                             { _Connection = 0 ; }
254 }
255 // ------------------------------------------------------------------------
256 void MonMeshInfo::SetDiametre()
257 // ------------------------------------------------------------------------
258 {
259   MESSAGE("Debut de SetDiametre ");
260   if ( CBDiametre->isChecked() ) { _Diametre = 1 ; }
261   else                           { _Diametre = 0 ; }
262 }
263 // ------------------------------------------------------------------------
264 void MonMeshInfo::SetEntanglement()
265 // ------------------------------------------------------------------------
266 {
267   MESSAGE("Debut de SetEntanglement ");
268   if ( CBEntanglement->isChecked() ) { _Entanglement = 1 ; }
269   else                               { _Entanglement = 0 ; }
270 }
271 // ------------------------------------------------------------------------
272 void MonMeshInfo::SetQuality()
273 // ------------------------------------------------------------------------
274 {
275   MESSAGE("Debut de SetQuality ");
276   if ( CBQuality->isChecked() ) { _Quality = 1 ; }
277   else                          { _Quality = 0 ; }
278 }