1 // Copyright (C) 2011-2021 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, or (at your option) any later version.
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 "SMESHGUI_HomardAdaptDlg.h"
23 #include "SMESHGUI_HomardBoundaryDlg.h"
24 #include "SMESHGUI_HomardUtils.h"
25 #include "SMESHGUI_Utils.h"
26 #include "SMESHGUI_VTKUtils.h"
27 #include "SMESHGUI_MeshUtils.h"
28 #include "SMESH_TryCatch.hxx"
30 #include <SalomeApp_Tools.h>
31 #include <SalomeApp_Module.h>
32 #include <SalomeApp_Application.h>
33 #include <LightApp_SelectionMgr.h>
34 #include <SUIT_MessageBox.h>
35 #include <SUIT_OverrideCursor.h>
36 #include <SUIT_FileDlg.h>
37 #include <SUIT_Desktop.h>
38 #include <SUIT_Session.h>
39 #include <SVTK_ViewWindow.h>
41 #include <QFileDialog>
42 #include <QMessageBox>
43 #include <QButtonGroup>
45 #include <utilities.h>
53 // La gestion des repertoires
62 const int SPACING = 6; // layout spacing
63 const int MARGIN = 9; // layout margin
65 //================================================================================
69 //================================================================================
70 SMESHGUI_HomardAdaptDlg::SMESHGUI_HomardAdaptDlg(SMESHHOMARD::HOMARD_Gen_ptr myHomardGen0)
71 : QDialog(SMESHGUI::desktop())
73 MESSAGE("Debut du constructeur de SMESHGUI_HomardAdaptDlg");
74 myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
75 myHomardGen->Register();
78 setAttribute( Qt::WA_DeleteOnClose, true );
79 setWindowTitle( tr( "ADAPT_WITH_HOMARD" ) );
80 setSizeGripEnabled( true );
82 QTabWidget* myTabWidget = new QTabWidget( this );
85 myArgs = new SMESHGUI_HomardAdaptArguments(myTabWidget);
88 myAdvOpt = new SMESHGUI_HomardAdaptAdvanced(myTabWidget);
90 myTabWidget->addTab( myArgs, tr( "Args" ) );
91 //myTabWidget->addTab( myAdvOpt, tr( "ADVOP" ) );
92 myTabWidget->addTab( myAdvOpt, tr( "LOG_GROUP_TITLE" ) );
94 //myAdvOpt->logGroupBox ->setTitle(tr( "LOG_GROUP_TITLE" ));
95 myAdvOpt->workingDirectoryLabel ->setText (tr( "WORKING_DIR" ));
96 myAdvOpt->workingDirectoryPushButton->setText (tr( "SELECT_DIR" ));
97 myAdvOpt->verboseLevelLabel ->setText (tr( "VERBOSE_LEVEL" ));
98 myAdvOpt->logInFileCheck ->setText (tr( "LOG_IN_FILE" ));
99 myAdvOpt->removeLogOnSuccessCheck ->setText (tr( "REMOVE_LOG_ON_SUCCESS" ));
100 myAdvOpt->keepWorkingFilesCheck ->setText (tr( "KEEP_WORKING_FILES" ));
102 // disable // TODO???
103 myAdvOpt->logInFileCheck->setChecked(true);
104 myAdvOpt->removeLogOnSuccessCheck->setChecked(false);
107 QString aWorkingDir = QDir::tempPath();
108 char *aTmp_dir = getenv("SALOME_TMP_DIR");
109 if (aTmp_dir != NULL) {
110 QDir aTmpDir (aTmp_dir);
111 if (aTmpDir.exists()) {
112 aWorkingDir = aTmpDir.absolutePath();
115 myAdvOpt->workingDirectoryLineEdit->setText(aWorkingDir);
117 // Out med file and/or mesh publication
118 myArgs->myOutMedFileChk->setChecked(true);
119 myArgs->myOutPublishChk->setChecked(true);
122 QHBoxLayout* btnLayout = new QHBoxLayout;
123 btnLayout->setSpacing( 6 );
124 btnLayout->setMargin( 0 );
126 buttonOk = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), this);
127 buttonOk->setAutoDefault(false);
128 btnLayout->addWidget(buttonOk);
129 btnLayout->addStretch( 10 );
131 buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), this);
132 buttonApply->setAutoDefault(false);
133 btnLayout->addWidget(buttonApply);
134 btnLayout->addStretch( 10 );
136 buttonCancel = new QPushButton(tr( "SMESH_BUT_CANCEL" ), this);
137 buttonCancel->setAutoDefault(false);
138 btnLayout->addWidget(buttonCancel);
139 btnLayout->addStretch( 10 );
141 buttonHelp = new QPushButton(tr( "SMESH_BUT_HELP" ), this);
142 buttonHelp->setAutoDefault(false);
143 btnLayout->addWidget(buttonHelp);
146 QVBoxLayout* l = new QVBoxLayout ( this );
149 l->addWidget( myTabWidget );
151 l->addLayout( btnLayout );
153 // dialog name and size
156 QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
157 sizePolicy.setHorizontalStretch(0);
158 sizePolicy.setVerticalStretch(0);
159 sizePolicy.setHeightForWidth(this->sizePolicy().hasHeightForWidth());
160 setSizePolicy(sizePolicy);
161 setMinimumSize(QSize(600, 320));
162 setSizeIncrement(QSize(1, 1));
163 setBaseSize(QSize(600, 320));
164 setAutoFillBackground(true);
170 myArgs->GBBoundaryC->setVisible(0);
171 myArgs->GBBoundaryN->setVisible(0);
172 myArgs->GBBoundaryA->setVisible(0);
173 myArgs->GBBoundaryD->setVisible(0);
177 //MESSAGE("Fin du constructeur de SMESHGUI_HomardAdaptDlg");
180 //=================================================================================
181 // function : ~SMESHGUI_HomardAdaptDlg()
182 // purpose : Destroys the object and frees any allocated resources
183 //=================================================================================
184 SMESHGUI_HomardAdaptDlg::~SMESHGUI_HomardAdaptDlg()
186 // no need to delete child widgets, Qt does it all for us
189 //=================================================================================
190 // function : InitConnect
192 //=================================================================================
193 void SMESHGUI_HomardAdaptDlg::InitConnect()
195 connect( myArgs->mySelectInMedFileButton, SIGNAL(pressed()), this, SLOT(SetFileName()));
197 connect( myArgs->RBBoundaryNo, SIGNAL(clicked()), this, SLOT(SetBoundaryNo()));
198 connect( myArgs->RBBoundaryCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryCAO()));
199 connect( myArgs->RBBoundaryNonCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryNonCAO()));
201 connect( myArgs->PBBoundaryCAONew, SIGNAL(pressed()), this, SLOT(PushBoundaryCAONew()));
202 connect( myArgs->PBBoundaryCAOEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOEdit()) );
203 connect( myArgs->PBBoundaryCAOHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOHelp()) );
204 connect( myArgs->CBBoundaryD, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
205 connect( myArgs->PBBoundaryDiNew, SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
206 connect( myArgs->PBBoundaryDiEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
207 connect( myArgs->PBBoundaryDiHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryDiHelp()) );
208 connect( myArgs->CBBoundaryA, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
209 connect( myArgs->PBBoundaryAnNew, SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
210 connect( myArgs->PBBoundaryAnEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) );
211 connect( myArgs->PBBoundaryAnHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
213 connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK()));
214 connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply()));
215 connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
216 connect( buttonHelp, SIGNAL(pressed()), this, SLOT(PushOnHelp()));
218 connect(myArgs, SIGNAL(updateSelection()), this, SLOT(updateSelection()));
219 connect(myArgs, SIGNAL(toExportMED(const char*)), this, SLOT(exportMED(const char*)));
222 //=================================================================================
223 // function : InitBoundarys
224 // purpose : Initialisation des menus avec les frontieres deja enregistrees
225 //=================================================================================
226 void SMESHGUI_HomardAdaptDlg::InitBoundarys()
228 MESSAGE("InitBoundarys");
229 //myArgs->TWBoundary->clearContents();
230 //myArgs->TWBoundary->clear();
231 // Pour les frontieres analytiques : la colonne des groupes
232 SMESHHOMARD::ListGroupType_var _listeGroupesCas = myCase->GetGroups();
233 QTableWidgetItem *__colItem = new QTableWidgetItem();
234 __colItem->setText(QApplication::translate("CreateCase", "", 0));
235 myArgs->TWBoundary->setHorizontalHeaderItem(0, __colItem);
236 for ( int i = 0; i < (int)_listeGroupesCas->length(); i++ ) {
237 myArgs->TWBoundary->insertRow(i);
238 myArgs->TWBoundary->setItem( i, 0, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
239 myArgs->TWBoundary->item( i, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
241 // Pour les frontieres CAO : la liste a saisir
242 // Pour les frontieres discretes : la liste a saisir
243 // Pour les frontieres analytiques : les colonnes de chaque frontiere
244 SMESHHOMARD::HOMARD_Boundary_var myBoundary ;
245 SMESHHOMARD::listeBoundarys_var mesBoundarys = myHomardGen->GetAllBoundarysName();
246 //MESSAGE("Nombre de frontieres enregistrees : "<<mesBoundarys->length());
247 for (int i=0; i < (int)mesBoundarys->length(); i++) {
248 myBoundary = myHomardGen->GetBoundary(mesBoundarys[i]);
249 int type_obj = myBoundary->GetType() ;
250 if ( type_obj==-1 ) { myArgs->CBBoundaryCAO->addItem(QString(mesBoundarys[i])); }
251 else if ( type_obj==0 ) { myArgs->CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
252 else { AddBoundaryAn(QString(mesBoundarys[i])); }
255 myArgs->TWBoundary->resizeColumnsToContents();
256 myArgs->TWBoundary->resizeRowsToContents();
257 myArgs->TWBoundary->clearSelection();
260 //=================================================================================
261 // function : CheckCase
263 //=================================================================================
264 bool SMESHGUI_HomardAdaptDlg::CheckCase(bool fixCase)
266 MESSAGE("CheckCase");
268 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
269 if (aWorkingDir == QString("")) {
270 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
271 QObject::tr("HOM_CASE_DIRECTORY_1") );
275 if (CHDIR(aWorkingDir.toStdString().c_str()) != 0) {
276 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
277 QObject::tr("HOM_CASE_DIRECTORY_3") );
281 QString aMeshName, aFileName;
282 if (myArgs->myInMedFileRadio->isChecked()) {
283 aFileName = myArgs->mySelectInMedFileLineEdit->text().trimmed();
284 if (aFileName == QString("")) {
285 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_MESH"));
290 aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(aFileName);
291 if (aMeshName == "") {
292 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_MED_FILE_2"));
297 aMeshName = myArgs->myInBrowserObject->text();
298 if (aMeshName == "" || myMesh->_is_nil()) {
299 QMessageBox::critical(0, QObject::tr("HOM_ERROR"),
300 QObject::tr("Mesh object is not selected"));
305 // On verifie qu'un groupe n'est pas associe a deux frontieres differentes
306 if (myArgs->CBBoundaryA->isChecked()) {
307 QStringList ListeGroup;
309 int nbcol = myArgs->TWBoundary->columnCount();
310 int nbrow = myArgs->TWBoundary->rowCount();
311 for ( int col=1; col< nbcol; col++) {
312 for ( int row=0; row< nbrow; row++) {
313 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
315 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
316 for ( int nugr = 0 ; nugr < ListeGroup.size(); nugr++) {
317 if ( NomGroup == ListeGroup[nugr] ) {
318 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
319 QObject::tr("HOM_CASE_GROUP").arg(NomGroup) );
323 ListeGroup.insert(0, NomGroup );
329 if (!fixCase) return true;
332 if (myCase->_is_nil()) {
334 if (myArgs->myInMedFileRadio->isChecked()) {
335 // create case from MED file
336 myCase = myHomardGen->CreateCase
337 (CORBA::string_dup(aMeshName.toStdString().c_str()),
338 CORBA::string_dup(aFileName.toStdString().c_str()),
339 aWorkingDir.toStdString().c_str());
342 // create case from SMESH_Mesh
343 myCase = myHomardGen->CreateCaseOnMesh
344 (CORBA::string_dup(aMeshName.toStdString().c_str()),
346 aWorkingDir.toStdString().c_str());
349 catch( SALOME::SALOME_Exception& S_ex ) {
350 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
351 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
354 // Prevent changing case data
355 myArgs->myInMedFileRadio->setEnabled(false);
356 myArgs->myInBrowserRadio->setEnabled(false);
357 myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
358 myArgs->mySelectInMedFileButton->setEnabled(false);
359 myArgs->myInBrowserObject->setReadOnly(true);
360 myAdvOpt->workingDirectoryLineEdit->setReadOnly(true);
361 myAdvOpt->workingDirectoryPushButton->setEnabled(false);
365 // Repertoire et type
366 myCase->SetConfType(myArgs->RBConforme->isChecked() ? 0 : 1);
368 // Menage des eventuelles frontieres deja enregistrees
369 myCase->SupprBoundaryGroup();
374 //=================================================================================
375 // function : PushOnApply
377 //=================================================================================
378 bool SMESHGUI_HomardAdaptDlg::PushOnApply()
380 MESSAGE("PushOnApply");
382 // Check data, create Case if not yet
383 if (!CheckCase(true))
386 MESSAGE("PushOnApply: *** aaajfa *** 12");
389 if (myArgs->RBBoundaryCAO->isChecked()) {
390 QString monBoundaryCAOName = myArgs->CBBoundaryCAO->currentText();
391 if (monBoundaryCAOName != "" ) {
392 myCase->AddBoundary(monBoundaryCAOName.toStdString().c_str());
395 if (myArgs->CBBoundaryD->isChecked()) {
396 QString monBoundaryDiName = myArgs->CBBoundaryDi->currentText();
397 if (monBoundaryDiName != "" ) {
398 myCase->AddBoundary(monBoundaryDiName.toStdString().c_str());
401 if (myArgs->CBBoundaryA->isChecked()) {
403 int nbcol = myArgs->TWBoundary->columnCount();
404 int nbrow = myArgs->TWBoundary->rowCount();
405 for ( int col = 1; col < nbcol; col++) {
406 for ( int row = 0; row < nbrow; row++) {
407 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
409 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
410 // Nom de la frontiere
411 QTableWidgetItem *__colItem = myArgs->TWBoundary->horizontalHeaderItem(col);
412 myCase->AddBoundaryGroup(QString(__colItem->text()).toStdString().c_str(),
413 NomGroup.toStdString().c_str());
418 MESSAGE("PushOnApply: *** aaajfa *** 13");
420 // Output MED and MESH parameters
421 myHomardGen->SetKeepMedOUT(myArgs->myOutMedFileChk->isChecked());
422 myHomardGen->SetPublishMeshOUT(myArgs->myOutPublishChk->isChecked());
423 QString anOutMeshName = myArgs->myOutMeshNameLineEdit->text();
424 if (anOutMeshName.isEmpty()) anOutMeshName = "DEFAULT_MESH_NAME";
425 myHomardGen->SetMeshNameOUT(anOutMeshName.toStdString().c_str());
427 std::string aMeshFileOUT;
428 if (myArgs->myOutMedFileChk->isChecked()) {
429 QString anOutMed = myArgs->mySelectOutMedFileLineEdit->text();
430 if (anOutMed.isEmpty()) {
431 // store in working directory and with default name
432 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
433 QFileInfo aFileInfo (QDir(aWorkingDir), "Uniform_01_R.med");
434 anOutMed = aFileInfo.absoluteFilePath();
436 myArgs->mySelectOutMedFileLineEdit->setText(anOutMed);
439 QFileInfo aFileInfo (anOutMed);
440 anOutMed = aFileInfo.absoluteFilePath();
442 aMeshFileOUT = anOutMed.toStdString();
445 // Set file name without path for it to be created in current directory
446 // (it will be iteration's dir, and it will be destroyed after)
447 aMeshFileOUT = "Uniform_01_R.med";
449 myHomardGen->SetMeshFileOUT(aMeshFileOUT.c_str());
452 myHomardGen->SetVerboseLevel(myAdvOpt->verboseLevelSpin->value());
453 myHomardGen->SetKeepWorkingFiles(myAdvOpt->keepWorkingFilesCheck->isChecked());
454 myHomardGen->SetLogInFile(myAdvOpt->logInFileCheck->isChecked());
455 myHomardGen->SetRemoveLogOnSuccess(myAdvOpt->removeLogOnSuccessCheck->isChecked());
458 if (myAdvOpt->logInFileCheck->isChecked()) {
459 // Write log file in the working dir
460 QString aLogBaseName;
461 if (myArgs->myInMedFileRadio->isChecked()) {
462 // Name of log file will be "<name_of_input_med_file>_Uniform_R.log"
463 QString aMedFileIn = myArgs->mySelectInMedFileLineEdit->text().trimmed();
464 QFileInfo aFileInfoIn (aMedFileIn);
465 aLogBaseName = aFileInfoIn.fileName();
468 // Name of log file will be "SMESH_Mesh_<name_of_input_mesh>_Uniform_R.log"
469 aLogBaseName = "SMESH_Mesh_";
470 aLogBaseName += myArgs->myInBrowserObject->text();
472 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
473 QFileInfo aFileInfo (QDir(aWorkingDir), aLogBaseName + "_Uniform_R.log");
474 QString anOutLog = aFileInfo.absoluteFilePath();
475 MESSAGE("myHomardGen->SetLogFile(" << anOutLog.toStdString().c_str() << ")");
476 myHomardGen->SetLogFile(anOutLog.toStdString().c_str());
478 MESSAGE("PushOnApply: *** aaajfa *** 14");
480 // Compute and publish
481 bool isSuccess = true;
483 isSuccess = myHomardGen->Compute() == 0;
485 catch( SALOME::SALOME_Exception& S_ex ) {
486 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
487 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
490 MESSAGE("PushOnApply: *** aaajfa *** 15");
492 // Update Object Browser
494 SMESHGUI::GetSMESHGUI()->updateObjBrowser();
496 // Clean case, as it is deleted after successful Compute
497 myCase = SMESHHOMARD::HOMARD_Cas::_nil();
500 // Enable new case data selection
501 myArgs->myInMedFileRadio->setEnabled(true);
502 myArgs->myInBrowserRadio->setEnabled(true);
503 myArgs->mySelectInMedFileLineEdit->setReadOnly(false);
504 //myArgs->mySelectInMedFileButton->hide();
505 myArgs->mySelectInMedFileButton->setEnabled(true);
506 myArgs->myInBrowserObject->setReadOnly(false);
507 myAdvOpt->workingDirectoryLineEdit->setReadOnly(false);
508 myAdvOpt->workingDirectoryPushButton->setEnabled(true);
510 MESSAGE("PushOnApply: *** aaajfa *** THE END");
514 //=================================================================================
515 // function : PushOnOK
517 //=================================================================================
518 void SMESHGUI_HomardAdaptDlg::PushOnOK()
520 bool bOK = PushOnApply();
521 if ( bOK ) this->close();
524 void SMESHGUI_HomardAdaptDlg::PushOnHelp()
526 //SMESH::ShowHelpFile(QString("gui_create_case.html"));
527 SMESH::ShowHelpFile("adaptation.html#_homard_adapt_anchor");
530 void SMESHGUI_HomardAdaptDlg::updateSelection()
532 LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
533 disconnect(selMgr, 0, this, 0);
534 selMgr->clearFilters();
536 if (!myArgs->myInBrowserRadio->isChecked())
539 SMESH::SetPointRepresentation(false);
540 if (SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow())
541 aViewWindow->SetSelectionMode(ActorSelection);
542 if (myArgs->myInBrowserRadio->isChecked()) {
543 connect(selMgr, SIGNAL(currentSelectionChanged()), this, SLOT(selectionChanged()));
548 void SMESHGUI_HomardAdaptDlg::selectionChanged()
550 if (!myArgs->myInBrowserRadio->isChecked())
553 LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
557 selMgr->selectedObjects(aList);
558 QString aMeshName = "";
560 if (aList.Extent() == 1) {
561 Handle(SALOME_InteractiveObject) IO = aList.First();
562 myMesh = SMESH::GetMeshByIO(IO);
563 SMESH::GetNameOfSelectedIObjects(selMgr, aMeshName);
564 if (aMeshName.isEmpty()) aMeshName = " ";
565 else aMeshName = aMeshName.trimmed();
568 myMesh = SMESH::SMESH_Mesh::_nil();
571 myArgs->myInBrowserObject->setText(aMeshName);
573 // Out mesh name default value
574 // TODO: add some suffix? "_R" or "_UnifRefin", or "_Uniform_01_R"
575 myArgs->myOutMeshNameLineEdit->setText(aMeshName);
577 // Output med file default value
578 // Construct it from Input mesh name and working directory
579 //if (myArgs->myOutMedFileChk->isChecked()) {
580 if (aMeshName.isEmpty()) {
581 myArgs->mySelectOutMedFileLineEdit->setText("");
584 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
585 QFileInfo aFileInfo (QDir(aWorkingDir), aMeshName + QString("_Uniform_01_R.med"));
586 for (int ii = 1; aFileInfo.exists(); ii++) {
587 QString anUniqueName = QString("%1_Uniform_01_R_%2.med").arg(aMeshName).arg(ii);
588 aFileInfo.setFile(QDir(aWorkingDir), anUniqueName);
590 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
595 void SMESHGUI_HomardAdaptDlg::SetFileName()
598 QString fileName0 = myArgs->mySelectInMedFileLineEdit->text().trimmed();
599 QString fileName = SMESH_HOMARD_QT_COMMUN::PushNomFichier(false, QString("med"));
600 if (fileName.isEmpty()) {
601 fileName = fileName0;
602 if (fileName.isEmpty()) return;
604 QFileInfo aFileInInfo (fileName);
605 fileName = aFileInInfo.absoluteFilePath();
606 myArgs->mySelectInMedFileLineEdit->setText(fileName);
608 // Out mesh name default value
609 // TODO: add some suffix? "_R" or "_UnifRefin", or "_Uniform_01_R"
610 QString aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(fileName);
611 myArgs->myOutMeshNameLineEdit->setText(aMeshName);
613 // Output med file default value
614 // Construct it from Input med file name and path
615 //if (myArgs->myOutMedFileChk->isChecked()) {
616 std::string fname = fileName.toStdString();
617 size_t lastdot = fname.find_last_of(".");
618 if (lastdot != std::string::npos)
619 fname = fname.substr(0, lastdot);
620 QString fileNameOut = fname.c_str();
621 QFileInfo aFileInfo (fileNameOut + QString("_Uniform_01_R.med"));
622 for (int ii = 1; aFileInfo.exists(); ii++) {
623 QString anUniqueName = QString("%1_Uniform_01_R_%2.med").arg(fileNameOut).arg(ii);
624 aFileInfo.setFile(anUniqueName);
626 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
633 // ------------------------------------------------------------------------
634 void SMESHGUI_HomardAdaptDlg::SetBoundaryNo()
636 myArgs->GBBoundaryC->setVisible(0);
637 myArgs->GBBoundaryN->setVisible(0);
641 // ------------------------------------------------------------------------
642 void SMESHGUI_HomardAdaptDlg::SetBoundaryCAO()
644 myArgs->GBBoundaryC->setVisible(1);
645 myArgs->GBBoundaryN->setVisible(0);
648 // ------------------------------------------------------------------------
649 void SMESHGUI_HomardAdaptDlg::SetBoundaryNonCAO()
651 myArgs->GBBoundaryC->setVisible(0);
652 myArgs->GBBoundaryN->setVisible(1);
655 // ------------------------------------------------------------------------
656 void SMESHGUI_HomardAdaptDlg::AddBoundaryCAO(QString newBoundary)
657 // ------------------------------------------------------------------------
659 myArgs->CBBoundaryCAO->insertItem(0,newBoundary);
660 myArgs->CBBoundaryCAO->setCurrentIndex(0);
662 // ------------------------------------------------------------------------
663 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAONew()
664 // ------------------------------------------------------------------------
666 SMESH_CreateBoundaryCAO *BoundaryDlg = new SMESH_CreateBoundaryCAO
667 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
670 // ------------------------------------------------------------------------
671 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOEdit()
672 // ------------------------------------------------------------------------
674 if (myArgs->CBBoundaryCAO->currentText() == QString("")) return;
675 SMESH_EditBoundaryCAO *BoundaryDlg = new SMESH_EditBoundaryCAO
676 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
677 "Case_1", myArgs->CBBoundaryCAO->currentText());
681 // ------------------------------------------------------------------------
682 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOHelp()
684 SMESH::ShowHelpFile(QString("gui_create_boundary.html"));
687 // ------------------------------------------------------------------------
688 void SMESHGUI_HomardAdaptDlg::SetBoundaryD()
690 MESSAGE("Debut de SetBoundaryD ");
691 if (myArgs->CBBoundaryD->isChecked()) {
692 bool bOK = CheckCase(true);
694 myArgs->GBBoundaryD->setVisible(1);
697 myArgs->GBBoundaryD->setVisible(0);
698 myArgs->CBBoundaryD->setChecked(0);
699 myArgs->CBBoundaryD->setCheckState(Qt::Unchecked);
703 myArgs->GBBoundaryD->setVisible(0);
706 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
707 //myArgs->mySelectInMedFileButton->hide();
711 // ------------------------------------------------------------------------
712 void SMESHGUI_HomardAdaptDlg::AddBoundaryDi(QString newBoundary)
713 // ------------------------------------------------------------------------
715 myArgs->CBBoundaryDi->insertItem(0,newBoundary);
716 myArgs->CBBoundaryDi->setCurrentIndex(0);
718 // ------------------------------------------------------------------------
719 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiNew()
720 // ------------------------------------------------------------------------
722 SMESH_CreateBoundaryDi *BoundaryDlg = new SMESH_CreateBoundaryDi(this, true,
723 SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
726 // ------------------------------------------------------------------------
727 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiEdit()
728 // ------------------------------------------------------------------------
730 if (myArgs->CBBoundaryDi->currentText() == QString("")) return;
731 SMESH_EditBoundaryDi *BoundaryDlg = new SMESH_EditBoundaryDi
732 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
733 "Case_1", myArgs->CBBoundaryDi->currentText());
737 // ------------------------------------------------------------------------
738 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiHelp()
740 SMESH::ShowHelpFile(QString("gui_create_boundary.html"));
741 //std::string LanguageShort = myHomardGen->GetLanguageShort();
742 //HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-discrete"), QString(LanguageShort.c_str()));
745 // ------------------------------------------------------------------------
746 void SMESHGUI_HomardAdaptDlg::SetBoundaryA()
748 MESSAGE("Debut de SetBoundaryA ");
749 if (myArgs->CBBoundaryA->isChecked()) {
750 bool bOK = CheckCase(true);
752 myArgs->GBBoundaryA->setVisible(1);
755 myArgs->GBBoundaryA->setVisible(0);
756 myArgs->CBBoundaryA->setChecked(0);
757 myArgs->CBBoundaryA->setCheckState(Qt::Unchecked);
761 myArgs->GBBoundaryA->setVisible(0);
764 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
765 //myArgs->mySelectInMedFileButton->hide();
769 // ------------------------------------------------------------------------
770 void SMESHGUI_HomardAdaptDlg::AddBoundaryAn(QString newBoundary)
771 // ------------------------------------------------------------------------
773 MESSAGE("Debut de AddBoundaryAn ");
774 // Ajout d'une nouvelle colonne
775 int nbcol = myArgs->TWBoundary->columnCount();
776 // MESSAGE("nbcol " << nbcol);
778 myArgs->TWBoundary->setColumnCount ( nbcol ) ;
779 QTableWidgetItem *__colItem = new QTableWidgetItem();
780 __colItem->setText(QApplication::translate("CreateCase", newBoundary.toStdString().c_str(), 0));
781 myArgs->TWBoundary->setHorizontalHeaderItem(nbcol-1, __colItem);
782 /* TWBoundary->horizontalHeaderItem(nbcol-1)->setFlags( Qt::ItemIsSelectable|Qt::ItemIsEnabled );*/
783 // Chaque case est a cocher
784 int nbrow = myArgs->TWBoundary->rowCount();
785 // MESSAGE("nbrow " << nbrow);
786 for ( int i = 0; i < nbrow; i++ )
788 myArgs->TWBoundary->setItem( i, nbcol-1, new QTableWidgetItem( QString ("") ) );
789 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( 0 );
790 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
791 myArgs->TWBoundary->item( i, nbcol-1 )->setCheckState( Qt::Unchecked );
793 myArgs->TWBoundary->resizeColumnToContents(nbcol-1);
794 // TWBoundary->resizeRowsToContents();
795 // MESSAGE("Fin de AddBoundaryAn ");
797 // ------------------------------------------------------------------------
798 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnNew()
799 // ------------------------------------------------------------------------
801 SMESH_CreateBoundaryAn *BoundaryDlg = new SMESH_CreateBoundaryAn
802 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1");
805 // ------------------------------------------------------------------------
806 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnEdit()
807 // ------------------------------------------------------------------------
810 int nbcol = myArgs->TWBoundary->columnCount();
811 for ( int i = 1; i < nbcol; i++ ) {
812 QTableWidgetItem *__colItem = new QTableWidgetItem();
813 __colItem = myArgs->TWBoundary->horizontalHeaderItem(i);
814 nom = QString(__colItem->text()) ;
815 MESSAGE("nom "<<nom.toStdString().c_str());
816 if (nom != QString("")) {
817 SMESH_EditBoundaryAn *BoundaryDlg = new SMESH_EditBoundaryAn
818 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", nom);
823 // ------------------------------------------------------------------------
824 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnHelp()
825 // ------------------------------------------------------------------------
827 SMESH::ShowHelpFile(QString("gui_create_boundary.html"));
828 //std::string LanguageShort = myHomardGen->GetLanguageShort();
829 //HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-analytique"), QString(LanguageShort.c_str()));
832 //=================================================================================
833 // function : SMESHGUI_HomardAdaptArguments()
835 //=================================================================================
836 SMESHGUI_HomardAdaptArguments::SMESHGUI_HomardAdaptArguments(QWidget* parent)
842 SMESHGUI_HomardAdaptArguments::~SMESHGUI_HomardAdaptArguments()
846 void SMESHGUI_HomardAdaptArguments::setupUi(QWidget *CreateCase)
849 QGroupBox* aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
850 myInMedFileRadio = new QRadioButton( tr( "MEDFile" ), aMeshIn );
851 myInBrowserRadio = new QRadioButton( tr( "Browser" ), aMeshIn );
852 myInBrowserObject = new QLineEdit( aMeshIn );
853 mySelectInMedFileButton = new QPushButton("...", aMeshIn);
854 mySelectInMedFileLineEdit = new QLineEdit( aMeshIn );
856 QGridLayout* meshIn = new QGridLayout( aMeshIn );
858 meshIn->setMargin( 9 );
859 meshIn->setSpacing( 6 );
860 meshIn->addWidget( myInMedFileRadio, 0, 0, 1, 1 );
861 meshIn->addWidget( myInBrowserRadio, 0, 1, 1, 1 );
862 meshIn->addWidget( mySelectInMedFileButton, 1, 0, 1, 1 );
863 meshIn->addWidget( mySelectInMedFileLineEdit, 1, 1, 1, 2 );
864 meshIn->addWidget( myInBrowserObject, 0, 2, 1, 1 );
866 myInMeshGroup = new QButtonGroup( this );
867 myInMeshGroup->addButton( myInMedFileRadio, 0 );
868 myInMeshGroup->addButton( myInBrowserRadio, 1 );
871 QGroupBox* aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
872 QLabel* meshName = new QLabel(tr("MeshName"), aMeshOut);
873 QSpacerItem* secondHspacer = new QSpacerItem(100, 30);
874 myOutMeshNameLineEdit = new QLineEdit(aMeshOut);
875 myOutMedFileChk = new QCheckBox(tr("MEDFile"), aMeshOut);
876 mySelectOutMedFileButton = new QPushButton("...", aMeshOut);
877 mySelectOutMedFileLineEdit = new QLineEdit(aMeshOut);
878 myOutPublishChk = new QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
880 QGridLayout* meshOut = new QGridLayout( aMeshOut );
882 meshOut->setMargin( 9 );
883 meshOut->setSpacing( 6 );
884 meshOut->addWidget( meshName, 0, 0, 1,1 );
885 meshOut->addItem( secondHspacer, 0, 1, 1, 1 );
886 meshOut->addWidget( myOutMeshNameLineEdit, 0, 2,1,1);
887 meshOut->addWidget( myOutMedFileChk, 1, 0,1,1 );
888 meshOut->addWidget( mySelectOutMedFileButton, 1, 1,1,1 );
889 meshOut->addWidget( mySelectOutMedFileLineEdit, 1, 2,1,1);
890 meshOut->addWidget( myOutPublishChk, 2, 0,1,1 );
893 QGroupBox *GBTypeConf = new QGroupBox(tr("Conformity type"), CreateCase);
894 RBConforme = new QRadioButton(tr("Conformal"), GBTypeConf);
895 RBNonConforme = new QRadioButton(tr("Non conformal"), GBTypeConf);
896 RBConforme->setChecked(true);
898 QHBoxLayout *hboxLayout2 = new QHBoxLayout(GBTypeConf);
899 hboxLayout2->setSpacing(6);
900 hboxLayout2->setContentsMargins(9, 9, 9, 9);
901 hboxLayout2->addWidget(RBConforme);
902 hboxLayout2->addWidget(RBNonConforme);
905 GBTypeBoun = new QGroupBox(tr("Boundary type"), CreateCase);
907 RBBoundaryNo = new QRadioButton(tr("No boundary"), GBTypeBoun);
908 RBBoundaryCAO = new QRadioButton(tr("CAO"), GBTypeBoun);
909 RBBoundaryNonCAO = new QRadioButton(tr("Non CAO"), GBTypeBoun);
910 RBBoundaryNo->setChecked(true);
913 GBBoundaryC = new QGroupBox(tr("CAO"), GBTypeBoun);
914 QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed);
915 sizePolicy1.setHorizontalStretch(0);
916 sizePolicy1.setVerticalStretch(0);
917 sizePolicy1.setHeightForWidth(GBBoundaryC->sizePolicy().hasHeightForWidth());
918 GBBoundaryC->setSizePolicy(sizePolicy1);
920 CBBoundaryCAO = new QComboBox(GBBoundaryC);
921 CBBoundaryCAO->setSizeAdjustPolicy(QComboBox::AdjustToContents);
923 PBBoundaryCAONew = new QPushButton(tr("CAO_NEW_BTN"), GBBoundaryC);
924 PBBoundaryCAOEdit = new QPushButton(tr("CAO_EDIT_BTN"), GBBoundaryC);
925 PBBoundaryCAOHelp = new QPushButton(tr("CAO_HELP_BTN"), GBBoundaryC);
927 PBBoundaryCAONew->setAutoDefault(false);
928 PBBoundaryCAOEdit->setAutoDefault(false);
929 PBBoundaryCAOHelp->setAutoDefault(false);
931 _2 = new QGridLayout(GBBoundaryC);
933 _2->setContentsMargins(9, 9, 9, 9);
934 _2->addWidget(CBBoundaryCAO, 0, 0, 1, 1);
935 QSpacerItem* spacerItem3 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
936 _2->addItem(spacerItem3, 0, 1, 1, 1);
937 _2->addWidget(PBBoundaryCAONew, 0, 2, 1, 1);
938 _2->addWidget(PBBoundaryCAOEdit, 0, 3, 1, 1);
939 _2->addWidget(PBBoundaryCAOHelp, 0, 4, 1, 1);
941 // Non CAO (discrete / analytical)
942 GBBoundaryN = new QGroupBox(GBTypeBoun);
943 CBBoundaryD = new QCheckBox(tr("BOUNDARY_DISCRETE"), GBBoundaryN);
944 CBBoundaryA = new QCheckBox(tr("BOUNDARY_ANALYTICAL"), GBBoundaryN);
946 //hboxLayout3 = new QHBoxLayout(GBBoundaryN);
947 //hboxLayout3->setSpacing(6);
948 //hboxLayout3->setContentsMargins(0, 0, 0, 0);
949 //hboxLayout3->addWidget(CBBoundaryD);
950 //hboxLayout3->addWidget(CBBoundaryA);
953 GBBoundaryD = new QGroupBox(tr("Discrete boundary"), GBBoundaryN);
954 sizePolicy1.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth());
955 GBBoundaryD->setSizePolicy(sizePolicy1);
956 gridLayout = new QGridLayout(GBBoundaryD);
957 gridLayout->setSpacing(6);
958 gridLayout->setContentsMargins(9, 9, 9, 9);
959 gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
960 CBBoundaryDi = new QComboBox(GBBoundaryD);
961 CBBoundaryDi->setObjectName(QString::fromUtf8("CBBoundaryDi"));
962 CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents);
964 gridLayout->addWidget(CBBoundaryDi, 0, 0, 1, 1);
966 QSpacerItem* spacerItem5 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
967 gridLayout->addItem(spacerItem5, 0, 1, 1, 1);
969 PBBoundaryDiEdit = new QPushButton(GBBoundaryD);
970 PBBoundaryDiEdit->setObjectName(QString::fromUtf8("PBBoundaryDiEdit"));
971 PBBoundaryDiEdit->setAutoDefault(false);
973 gridLayout->addWidget(PBBoundaryDiEdit, 0, 3, 1, 1);
975 PBBoundaryDiHelp = new QPushButton(GBBoundaryD);
976 PBBoundaryDiHelp->setObjectName(QString::fromUtf8("PBBoundaryDiHelp"));
977 PBBoundaryDiHelp->setAutoDefault(false);
979 gridLayout->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1);
981 PBBoundaryDiNew = new QPushButton(GBBoundaryD);
982 PBBoundaryDiNew->setAutoDefault(false);
984 gridLayout->addWidget(PBBoundaryDiNew, 0, 2, 1, 1);
987 GBBoundaryA = new QGroupBox(tr("Analytical boundary"), GBBoundaryN);
988 GBBoundaryA->setMinimumSize(QSize(548, 200));
989 formLayout = new QFormLayout(GBBoundaryA);
990 formLayout->setObjectName(QString::fromUtf8("formLayout"));
991 TWBoundary = new QTableWidget(GBBoundaryA);
992 if (TWBoundary->columnCount() < 1)
993 TWBoundary->setColumnCount(1);
994 QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
995 TWBoundary->setHorizontalHeaderItem(0, __qtablewidgetitem);
996 TWBoundary->setObjectName(QString::fromUtf8("TWBoundary"));
997 TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked);
998 TWBoundary->setShowGrid(true);
999 TWBoundary->setRowCount(0);
1000 TWBoundary->setColumnCount(1);
1002 formLayout->setWidget(0, QFormLayout::LabelRole, TWBoundary);
1004 gridLayout1 = new QGridLayout();
1005 gridLayout1->setSpacing(6);
1006 gridLayout1->setContentsMargins(0, 0, 0, 0);
1007 gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
1008 PBBoundaryAnEdit = new QPushButton(GBBoundaryA);
1009 PBBoundaryAnEdit->setObjectName(QString::fromUtf8("PBBoundaryAnEdit"));
1010 PBBoundaryAnEdit->setAutoDefault(false);
1012 gridLayout1->addWidget(PBBoundaryAnEdit, 1, 0, 1, 1);
1014 PBBoundaryAnNew = new QPushButton(GBBoundaryA);
1015 PBBoundaryAnNew->setObjectName(QString::fromUtf8("PBBoundaryAnNew"));
1016 PBBoundaryAnNew->setAutoDefault(false);
1018 gridLayout1->addWidget(PBBoundaryAnNew, 0, 0, 1, 1);
1020 PBBoundaryAnHelp = new QPushButton(GBBoundaryA);
1021 PBBoundaryAnHelp->setObjectName(QString::fromUtf8("PBBoundaryAnHelp"));
1022 PBBoundaryAnHelp->setAutoDefault(false);
1024 gridLayout1->addWidget(PBBoundaryAnHelp, 2, 0, 1, 1);
1026 formLayout->setLayout(0, QFormLayout::FieldRole, gridLayout1);
1028 // Boundary No Layout
1029 QGridLayout* aBoundaryNoLayout = new QGridLayout(GBBoundaryN);
1030 //aBoundaryNoLayout->addLayout(hboxLayout3, 0, 0);
1031 aBoundaryNoLayout->addWidget(CBBoundaryD, 0, 0);
1032 aBoundaryNoLayout->addWidget(CBBoundaryA, 0, 1);
1033 aBoundaryNoLayout->addWidget(GBBoundaryD, 1, 0, 1, 2);
1034 aBoundaryNoLayout->addWidget(GBBoundaryA, 2, 0, 1, 2);
1036 // Boundary type Layout
1037 QGridLayout* aBoundTypeLayout = new QGridLayout(GBTypeBoun);
1038 aBoundTypeLayout->addWidget(RBBoundaryNo, 0, 0);
1039 aBoundTypeLayout->addWidget(RBBoundaryCAO, 0, 1);
1040 aBoundTypeLayout->addWidget(RBBoundaryNonCAO, 0, 2);
1042 aBoundTypeLayout->addWidget(GBBoundaryC, 1, 0, 1, 3);
1043 aBoundTypeLayout->addWidget(GBBoundaryN, 2, 0, 1, 3);
1046 QGridLayout *argumentsLayout = new QGridLayout(CreateCase);
1047 argumentsLayout->addWidget(aMeshIn, 0, 0, 1, 3);
1048 argumentsLayout->addWidget(aMeshOut, 1, 0, 1, 3);
1049 argumentsLayout->addWidget(GBTypeConf, 2, 0, 1, 3);
1050 argumentsLayout->addWidget(GBTypeBoun, 3, 0, 1, 3);
1051 argumentsLayout->setColumnStretch( 1, 5 );
1052 argumentsLayout->setRowStretch( 4, 5 );
1054 mySelectInMedFileButton->setText(QString());
1055 CBBoundaryD->setText(QApplication::translate("CreateCase", "Discrete boundary", nullptr));
1056 CBBoundaryA->setText(QApplication::translate("CreateCase", "Analytical boundary", nullptr));
1057 PBBoundaryCAOEdit->setText(QApplication::translate("CreateCase", "Edit", nullptr));
1058 PBBoundaryCAOHelp->setText(QApplication::translate("CreateCase", "Help", nullptr));
1059 PBBoundaryCAONew->setText(QApplication::translate("CreateCase", "New", nullptr));
1060 PBBoundaryDiEdit->setText(QApplication::translate("CreateCase", "Edit", nullptr));
1061 PBBoundaryDiHelp->setText(QApplication::translate("CreateCase", "Help", nullptr));
1062 PBBoundaryDiNew->setText(QApplication::translate("CreateCase", "New", nullptr));
1063 QTableWidgetItem *___qtablewidgetitem = TWBoundary->horizontalHeaderItem(0);
1064 ___qtablewidgetitem->setText(QApplication::translate("CreateCase", "a_virer", nullptr));
1065 PBBoundaryAnEdit->setText(QApplication::translate("CreateCase", "Edit", nullptr));
1066 PBBoundaryAnNew->setText(QApplication::translate("CreateCase", "New", nullptr));
1067 PBBoundaryAnHelp->setText(QApplication::translate("CreateCase", "Help", nullptr));
1070 myInMedFileRadio->setChecked( true );
1071 modeInChanged( MedFile );
1072 RBBoundaryNo->setChecked( true );
1075 myOutMedFileChk->setChecked(true);
1076 CBBoundaryCAO->setCurrentIndex(-1);
1077 CBBoundaryDi->setCurrentIndex(-1);
1080 QMetaObject::connectSlotsByName(CreateCase);
1081 connect(myInMeshGroup, SIGNAL(buttonClicked(int)), this, SLOT(modeInChanged(int)));
1082 connect(myOutMedFileChk, SIGNAL(stateChanged(int)), this, SLOT(onOutMedFileChk(int)));
1083 connect(myOutPublishChk, SIGNAL(stateChanged(int)), this, SLOT(onOutPublishChk(int)));
1084 connect(mySelectOutMedFileButton, SIGNAL(pressed()), this, SLOT(onSelectOutMedFileButton()));
1085 emit updateSelection();
1088 void SMESHGUI_HomardAdaptArguments::modeInChanged( int theMode )
1091 if (theMode == MedFile) {
1092 mySelectInMedFileLineEdit->show();
1093 mySelectInMedFileButton->show();
1094 myInBrowserObject->hide();
1097 mySelectInMedFileLineEdit->hide();
1098 mySelectInMedFileButton->hide();
1099 myInBrowserObject->show();
1100 emit updateSelection();
1104 void SMESHGUI_HomardAdaptArguments::onSelectOutMedFileButton()
1107 QString fileName0 = mySelectOutMedFileLineEdit->text().trimmed();
1109 // Ask user for the new value
1110 QString filtre = QString("Med");
1111 filtre += QString(" files (*.") + QString("med") + QString(");;");
1112 QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
1114 // Check the new value
1115 if (fileName.isEmpty()) fileName = fileName0;
1117 QFileInfo aFileInfo (fileName);
1118 mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
1121 void SMESHGUI_HomardAdaptArguments::clear()
1123 mySelectInMedFileLineEdit->clear();
1124 myInBrowserObject->clear();
1126 myOutMeshNameLineEdit->clear();
1127 mySelectOutMedFileLineEdit->clear();
1130 void SMESHGUI_HomardAdaptArguments::onOutMedFileChk(int state)
1132 if (state == Qt::Checked) {
1133 mySelectOutMedFileButton->show();
1134 mySelectOutMedFileLineEdit->show();
1135 mySelectOutMedFileButton->setEnabled(true);
1136 mySelectOutMedFileLineEdit->setEnabled(true);
1139 mySelectOutMedFileButton->setEnabled(false);
1140 mySelectOutMedFileLineEdit->setEnabled(false);
1141 myOutPublishChk->setChecked(true);
1145 void SMESHGUI_HomardAdaptArguments::onOutPublishChk(int state)
1147 if (state == Qt::Unchecked) {
1148 myOutMedFileChk->setChecked(true);
1152 //////////////////////////////////////////
1153 // SMESHGUI_HomardAdaptAdvanced
1154 //////////////////////////////////////////
1156 SMESHGUI_HomardAdaptAdvanced::SMESHGUI_HomardAdaptAdvanced( QWidget* parent, Qt::WindowFlags f )
1157 : QWidget( parent, f )
1160 connect(workingDirectoryPushButton, SIGNAL(pressed()), this, SLOT(onWorkingDirectoryPushButton()));
1163 SMESHGUI_HomardAdaptAdvanced::~SMESHGUI_HomardAdaptAdvanced()
1167 void SMESHGUI_HomardAdaptAdvanced::setupWidget()
1169 if (this->objectName().isEmpty())
1170 this->setObjectName(QString(tr("MG-ADAPT-ADV")));
1171 this->resize(337, 369);
1174 logGroupBox = new QGroupBox(this);
1175 logGroupBox->setObjectName(QString("logGroupBox"));
1177 QGridLayout* logsLayout = new QGridLayout(logGroupBox);
1178 logsLayout->setObjectName(QString("logsLayout"));
1180 // Working directory + Verbose level layout
1181 QGridLayout* gridLayout = new QGridLayout();
1182 gridLayout->setObjectName(QString("gridLayout"));
1184 // Working directory
1185 workingDirectoryLabel = new QLabel(logGroupBox);
1186 workingDirectoryLabel->setObjectName(QString("workingDirectoryLabel"));
1188 gridLayout->addWidget(workingDirectoryLabel, 0, 0, 1, 1);
1190 workingDirectoryLineEdit = new QLineEdit(logGroupBox);
1191 workingDirectoryLineEdit->setObjectName(QString("workingDirectoryLineEdit"));
1193 gridLayout->addWidget(workingDirectoryLineEdit, 0, 1, 1, 1);
1195 workingDirectoryPushButton = new QPushButton(logGroupBox);
1196 workingDirectoryPushButton->setObjectName(QString("workingDirectoryPushButton"));
1198 gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
1201 verboseLevelLabel = new QLabel(logGroupBox);
1202 verboseLevelLabel->setObjectName(QString("verboseLevelLabel"));
1204 gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
1206 verboseLevelSpin = new QSpinBox(logGroupBox);
1207 verboseLevelSpin->setObjectName(QString("verboseLevelSpin"));
1209 gridLayout->addWidget(verboseLevelSpin, 1, 1, 1, 1);
1211 logsLayout->addLayout(gridLayout, 0, 0, 1, 1);
1213 // logInFileCheck + removeLogOnSuccessCheck
1214 QHBoxLayout* horizontalLayout = new QHBoxLayout();
1215 horizontalLayout->setObjectName(QString("horizontalLayout"));
1217 // Log In File Check
1218 logInFileCheck = new QCheckBox(logGroupBox);
1219 logInFileCheck->setObjectName(QString("logInFileCheck"));
1220 logInFileCheck->setChecked(true);
1222 horizontalLayout->addWidget(logInFileCheck);
1224 // Remove Log On Success Check
1225 removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
1226 removeLogOnSuccessCheck->setObjectName(QString("removeLogOnSuccessCheck"));
1227 removeLogOnSuccessCheck->setChecked(true);
1229 horizontalLayout->addWidget(removeLogOnSuccessCheck);
1231 logsLayout->addLayout(horizontalLayout, 1, 0, 1, 1);
1233 // Keep Working Files Check
1234 keepWorkingFilesCheck = new QCheckBox(logGroupBox);
1235 keepWorkingFilesCheck->setObjectName(QString("keepWorkingFilesCheck"));
1236 keepWorkingFilesCheck->setAutoExclusive(false);
1237 keepWorkingFilesCheck->setChecked(false);
1239 logsLayout->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
1242 void SMESHGUI_HomardAdaptAdvanced::onWorkingDirectoryPushButton()
1244 QString aWorkingDir = QFileDialog::getExistingDirectory();
1245 if (!(aWorkingDir.isEmpty())) workingDirectoryLineEdit->setText(aWorkingDir);