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 myAdvOpt->logInFileCheck->setChecked(true);
103 myAdvOpt->removeLogOnSuccessCheck->setChecked(false);
106 QString aWorkingDir = QDir::tempPath();
107 char *aTmp_dir = getenv("SALOME_TMP_DIR");
108 if (aTmp_dir != NULL) {
109 QDir aTmpDir (aTmp_dir);
110 if (aTmpDir.exists()) {
111 aWorkingDir = aTmpDir.absolutePath();
114 myAdvOpt->workingDirectoryLineEdit->setText(aWorkingDir);
116 // Out med file and/or mesh publication
117 myArgs->myOutMedFileChk->setChecked(true);
118 myArgs->myOutPublishChk->setChecked(true);
121 QHBoxLayout* btnLayout = new QHBoxLayout;
122 btnLayout->setSpacing( 6 );
123 btnLayout->setMargin( 0 );
125 buttonOk = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), this);
126 buttonOk->setAutoDefault(false);
127 btnLayout->addWidget(buttonOk);
128 btnLayout->addStretch( 10 );
130 buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), this);
131 buttonApply->setAutoDefault(false);
132 btnLayout->addWidget(buttonApply);
133 btnLayout->addStretch( 10 );
135 buttonCancel = new QPushButton(tr( "SMESH_BUT_CANCEL" ), this);
136 buttonCancel->setAutoDefault(false);
137 btnLayout->addWidget(buttonCancel);
138 btnLayout->addStretch( 10 );
140 buttonHelp = new QPushButton(tr( "SMESH_BUT_HELP" ), this);
141 buttonHelp->setAutoDefault(false);
142 btnLayout->addWidget(buttonHelp);
145 QVBoxLayout* l = new QVBoxLayout ( this );
148 l->addWidget( myTabWidget );
150 l->addLayout( btnLayout );
152 // dialog name and size
154 QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
155 sizePolicy.setHorizontalStretch(0);
156 sizePolicy.setVerticalStretch(0);
157 sizePolicy.setHeightForWidth(this->sizePolicy().hasHeightForWidth());
158 setSizePolicy(sizePolicy);
159 setMinimumSize(QSize(600, 320));
160 setSizeIncrement(QSize(1, 1));
161 setBaseSize(QSize(600, 600));
162 setAutoFillBackground(true);
167 myArgs->GBBoundaryC->setVisible(0);
168 myArgs->GBBoundaryN->setVisible(0);
169 myArgs->GBBoundaryA->setVisible(0);
170 myArgs->GBBoundaryD->setVisible(0);
174 //MESSAGE("Fin du constructeur de SMESHGUI_HomardAdaptDlg");
177 //=================================================================================
178 // function : ~SMESHGUI_HomardAdaptDlg()
179 // purpose : Destroys the object and frees any allocated resources
180 //=================================================================================
181 SMESHGUI_HomardAdaptDlg::~SMESHGUI_HomardAdaptDlg()
183 // no need to delete child widgets, Qt does it all for us
186 //=================================================================================
187 // function : InitConnect
189 //=================================================================================
190 void SMESHGUI_HomardAdaptDlg::InitConnect()
192 connect( myArgs->mySelectInMedFileButton, SIGNAL(pressed()), this, SLOT(SetFileName()));
194 connect( myArgs->RBBoundaryNo, SIGNAL(clicked()), this, SLOT(SetBoundaryNo()));
195 connect( myArgs->RBBoundaryCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryCAO()));
196 connect( myArgs->RBBoundaryNonCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryNonCAO()));
198 connect( myArgs->PBBoundaryCAONew, SIGNAL(pressed()), this, SLOT(PushBoundaryCAONew()));
199 connect( myArgs->PBBoundaryCAOEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOEdit()) );
200 connect( myArgs->PBBoundaryCAOHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOHelp()) );
201 connect( myArgs->CBBoundaryD, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
202 connect( myArgs->PBBoundaryDiNew, SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
203 connect( myArgs->PBBoundaryDiEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
204 connect( myArgs->PBBoundaryDiHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryDiHelp()) );
205 connect( myArgs->CBBoundaryA, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
206 connect( myArgs->PBBoundaryAnNew, SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
207 connect( myArgs->PBBoundaryAnEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) );
208 connect( myArgs->PBBoundaryAnHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
210 connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK()));
211 connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply()));
212 connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
213 connect( buttonHelp, SIGNAL(pressed()), this, SLOT(PushOnHelp()));
215 connect(myArgs, SIGNAL(updateSelection()), this, SLOT(updateSelection()));
218 //=================================================================================
219 // function : InitBoundarys
220 // purpose : Initialisation des menus avec les frontieres deja enregistrees
221 //=================================================================================
222 void SMESHGUI_HomardAdaptDlg::InitBoundarys()
224 MESSAGE("InitBoundarys");
225 //myArgs->TWBoundary->clearContents();
226 //myArgs->TWBoundary->clear();
227 // Pour les frontieres analytiques : la colonne des groupes
228 SMESHHOMARD::ListGroupType_var _listeGroupesCas = myCase->GetGroups();
229 QTableWidgetItem *__colItem = new QTableWidgetItem();
230 __colItem->setText(QApplication::translate("CreateCase", "", 0));
231 myArgs->TWBoundary->setHorizontalHeaderItem(0, __colItem);
232 for ( int i = 0; i < (int)_listeGroupesCas->length(); i++ ) {
233 myArgs->TWBoundary->insertRow(i);
234 myArgs->TWBoundary->setItem( i, 0, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
235 myArgs->TWBoundary->item( i, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
237 // Pour les frontieres CAO : la liste a saisir
238 // Pour les frontieres discretes : la liste a saisir
239 // Pour les frontieres analytiques : les colonnes de chaque frontiere
240 SMESHHOMARD::HOMARD_Boundary_var myBoundary ;
241 SMESHHOMARD::listeBoundarys_var mesBoundarys = myHomardGen->GetAllBoundarysName();
242 //MESSAGE("Nombre de frontieres enregistrees : "<<mesBoundarys->length());
243 for (int i=0; i < (int)mesBoundarys->length(); i++) {
244 myBoundary = myHomardGen->GetBoundary(mesBoundarys[i]);
245 int type_obj = myBoundary->GetType() ;
246 if ( type_obj==-1 ) { myArgs->CBBoundaryCAO->addItem(QString(mesBoundarys[i])); }
247 else if ( type_obj==0 ) { myArgs->CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
248 else { AddBoundaryAn(QString(mesBoundarys[i])); }
251 myArgs->TWBoundary->resizeColumnsToContents();
252 myArgs->TWBoundary->resizeRowsToContents();
253 myArgs->TWBoundary->clearSelection();
256 //=================================================================================
257 // function : CheckCase
259 //=================================================================================
260 bool SMESHGUI_HomardAdaptDlg::CheckCase(bool fixCase)
262 MESSAGE("CheckCase");
264 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
265 if (aWorkingDir == QString("")) {
266 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
267 QObject::tr("HOM_CASE_DIRECTORY_1") );
271 if (CHDIR(aWorkingDir.toStdString().c_str()) != 0) {
272 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
273 QObject::tr("HOM_CASE_DIRECTORY_3") );
277 QString aMeshName, aFileName;
278 if (myArgs->myInMedFileRadio->isChecked()) {
279 aFileName = myArgs->mySelectInMedFileLineEdit->text().trimmed();
280 if (aFileName == QString("")) {
281 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_MESH"));
286 aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(aFileName);
287 if (aMeshName == "") {
288 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_MED_FILE_2"));
293 aMeshName = myArgs->myInBrowserObject->text();
294 if (aMeshName == "" || myMesh->_is_nil()) {
295 QMessageBox::critical(0, QObject::tr("HOM_ERROR"),
296 QObject::tr("Mesh object is not selected"));
301 // On verifie qu'un groupe n'est pas associe a deux frontieres differentes
302 if (myArgs->CBBoundaryA->isChecked()) {
303 QStringList ListeGroup;
305 int nbcol = myArgs->TWBoundary->columnCount();
306 int nbrow = myArgs->TWBoundary->rowCount();
307 for ( int col=1; col< nbcol; col++) {
308 for ( int row=0; row< nbrow; row++) {
309 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
311 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
312 for ( int nugr = 0 ; nugr < ListeGroup.size(); nugr++) {
313 if ( NomGroup == ListeGroup[nugr] ) {
314 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
315 QObject::tr("HOM_CASE_GROUP").arg(NomGroup) );
319 ListeGroup.insert(0, NomGroup );
325 if (!fixCase) return true;
328 if (myCase->_is_nil()) {
330 if (myArgs->myInMedFileRadio->isChecked()) {
331 // create case from MED file
332 myCase = myHomardGen->CreateCase
333 (CORBA::string_dup(aMeshName.toStdString().c_str()),
334 CORBA::string_dup(aFileName.toStdString().c_str()),
335 aWorkingDir.toStdString().c_str());
338 // create case from SMESH_Mesh
339 myCase = myHomardGen->CreateCaseOnMesh
340 (CORBA::string_dup(aMeshName.toStdString().c_str()),
342 aWorkingDir.toStdString().c_str());
345 catch( SALOME::SALOME_Exception& S_ex ) {
346 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
347 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
350 // Prevent changing case data
351 myArgs->myInMedFileRadio->setEnabled(false);
352 myArgs->myInBrowserRadio->setEnabled(false);
353 myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
354 myArgs->mySelectInMedFileButton->setEnabled(false);
355 myArgs->myInBrowserObject->setReadOnly(true);
356 myAdvOpt->workingDirectoryLineEdit->setReadOnly(true);
357 myAdvOpt->workingDirectoryPushButton->setEnabled(false);
361 // Repertoire et type
362 myCase->SetConfType(myArgs->RBConforme->isChecked() ? 0 : 1);
364 // Menage des eventuelles frontieres deja enregistrees
365 myCase->SupprBoundaryGroup();
370 //=================================================================================
371 // function : PushOnApply
373 //=================================================================================
374 bool SMESHGUI_HomardAdaptDlg::PushOnApply()
376 MESSAGE("PushOnApply");
378 // Check data, create Case if not yet
379 if (!CheckCase(true))
383 if (myArgs->RBBoundaryCAO->isChecked()) {
384 QString monBoundaryCAOName = myArgs->CBBoundaryCAO->currentText();
385 if (monBoundaryCAOName != "" ) {
386 myCase->AddBoundary(monBoundaryCAOName.toStdString().c_str());
389 if (myArgs->CBBoundaryD->isChecked()) {
390 QString monBoundaryDiName = myArgs->CBBoundaryDi->currentText();
391 if (monBoundaryDiName != "" ) {
392 myCase->AddBoundary(monBoundaryDiName.toStdString().c_str());
395 if (myArgs->CBBoundaryA->isChecked()) {
397 int nbcol = myArgs->TWBoundary->columnCount();
398 int nbrow = myArgs->TWBoundary->rowCount();
399 for ( int col = 1; col < nbcol; col++) {
400 for ( int row = 0; row < nbrow; row++) {
401 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
403 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
404 // Nom de la frontiere
405 QTableWidgetItem *__colItem = myArgs->TWBoundary->horizontalHeaderItem(col);
406 myCase->AddBoundaryGroup(QString(__colItem->text()).toStdString().c_str(),
407 NomGroup.toStdString().c_str());
413 // Output MED and MESH parameters
414 myHomardGen->SetKeepMedOUT(myArgs->myOutMedFileChk->isChecked());
415 myHomardGen->SetPublishMeshOUT(myArgs->myOutPublishChk->isChecked());
416 QString anOutMeshName = myArgs->myOutMeshNameLineEdit->text();
417 if (anOutMeshName.isEmpty()) anOutMeshName = "DEFAULT_MESH_NAME";
418 myHomardGen->SetMeshNameOUT(anOutMeshName.toStdString().c_str());
420 std::string aMeshFileOUT;
421 if (myArgs->myOutMedFileChk->isChecked()) {
422 QString anOutMed = myArgs->mySelectOutMedFileLineEdit->text();
423 if (anOutMed.isEmpty()) {
424 // store in working directory and with default name
425 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
426 QFileInfo aFileInfo (QDir(aWorkingDir), "Uniform_01_R.med");
427 anOutMed = aFileInfo.absoluteFilePath();
429 myArgs->mySelectOutMedFileLineEdit->setText(anOutMed);
432 QFileInfo aFileInfo (anOutMed);
433 anOutMed = aFileInfo.absoluteFilePath();
435 aMeshFileOUT = anOutMed.toStdString();
438 // Set file name without path for it to be created in current directory
439 // (it will be iteration's dir, and it will be destroyed after)
440 aMeshFileOUT = "Uniform_01_R.med";
442 myHomardGen->SetMeshFileOUT(aMeshFileOUT.c_str());
445 myHomardGen->SetVerboseLevel(myAdvOpt->verboseLevelSpin->value());
446 myHomardGen->SetKeepWorkingFiles(myAdvOpt->keepWorkingFilesCheck->isChecked());
447 myHomardGen->SetLogInFile(myAdvOpt->logInFileCheck->isChecked());
448 myHomardGen->SetRemoveLogOnSuccess(myAdvOpt->removeLogOnSuccessCheck->isChecked());
451 if (myAdvOpt->logInFileCheck->isChecked()) {
452 // Write log file in the working dir
453 QString aLogBaseName;
454 if (myArgs->myInMedFileRadio->isChecked()) {
455 // Name of log file will be "<name_of_input_med_file>_Uniform_R.log"
456 QString aMedFileIn = myArgs->mySelectInMedFileLineEdit->text().trimmed();
457 QFileInfo aFileInfoIn (aMedFileIn);
458 aLogBaseName = aFileInfoIn.fileName();
461 // Name of log file will be "SMESH_Mesh_<name_of_input_mesh>_Uniform_R.log"
462 aLogBaseName = "SMESH_Mesh_";
463 aLogBaseName += myArgs->myInBrowserObject->text();
465 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
466 QFileInfo aFileInfo (QDir(aWorkingDir), aLogBaseName + "_Uniform_R.log");
467 QString anOutLog = aFileInfo.absoluteFilePath();
468 MESSAGE("myHomardGen->SetLogFile(" << anOutLog.toStdString().c_str() << ")");
469 myHomardGen->SetLogFile(anOutLog.toStdString().c_str());
472 // Compute and publish
473 bool isSuccess = true;
475 isSuccess = myHomardGen->Compute() == 0;
477 catch( SALOME::SALOME_Exception& S_ex ) {
478 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
479 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
483 // Update Object Browser
485 SMESHGUI::GetSMESHGUI()->updateObjBrowser();
487 // Clean case, as it is deleted after successful Compute
488 myCase = SMESHHOMARD::HOMARD_Cas::_nil();
491 // Enable new case data selection
492 myArgs->myInMedFileRadio->setEnabled(true);
493 myArgs->myInBrowserRadio->setEnabled(true);
494 myArgs->mySelectInMedFileLineEdit->setReadOnly(false);
495 //myArgs->mySelectInMedFileButton->hide();
496 myArgs->mySelectInMedFileButton->setEnabled(true);
497 myArgs->myInBrowserObject->setReadOnly(false);
498 myAdvOpt->workingDirectoryLineEdit->setReadOnly(false);
499 myAdvOpt->workingDirectoryPushButton->setEnabled(true);
504 //=================================================================================
505 // function : PushOnOK
507 //=================================================================================
508 void SMESHGUI_HomardAdaptDlg::PushOnOK()
510 bool bOK = PushOnApply();
511 if ( bOK ) this->close();
514 void SMESHGUI_HomardAdaptDlg::PushOnHelp()
516 //SMESH::ShowHelpFile(QString("gui_create_case.html"));
517 SMESH::ShowHelpFile("adaptation.html#_homard_adapt_anchor");
520 void SMESHGUI_HomardAdaptDlg::updateSelection()
522 LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
523 disconnect(selMgr, 0, this, 0);
524 selMgr->clearFilters();
526 if (!myArgs->myInBrowserRadio->isChecked())
529 SMESH::SetPointRepresentation(false);
530 if (SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow())
531 aViewWindow->SetSelectionMode(ActorSelection);
532 if (myArgs->myInBrowserRadio->isChecked()) {
533 connect(selMgr, SIGNAL(currentSelectionChanged()), this, SLOT(selectionChanged()));
538 void SMESHGUI_HomardAdaptDlg::selectionChanged()
540 if (!myArgs->myInBrowserRadio->isChecked())
543 LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
547 selMgr->selectedObjects(aList);
548 QString aMeshName = "";
550 if (aList.Extent() == 1) {
551 Handle(SALOME_InteractiveObject) IO = aList.First();
552 myMesh = SMESH::GetMeshByIO(IO);
553 SMESH::GetNameOfSelectedIObjects(selMgr, aMeshName);
554 if (aMeshName.isEmpty()) aMeshName = " ";
555 else aMeshName = aMeshName.trimmed();
558 myMesh = SMESH::SMESH_Mesh::_nil();
561 myArgs->myInBrowserObject->setText(aMeshName);
563 // Out mesh name default value
564 // TODO: add some suffix? "_R" or "_UnifRefin", or "_Uniform_01_R"
565 myArgs->myOutMeshNameLineEdit->setText(aMeshName);
567 // Output med file default value
568 // Construct it from Input mesh name and working directory
569 //if (myArgs->myOutMedFileChk->isChecked()) {
570 if (aMeshName.isEmpty()) {
571 myArgs->mySelectOutMedFileLineEdit->setText("");
574 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
575 QFileInfo aFileInfo (QDir(aWorkingDir), aMeshName + QString("_Uniform_01_R.med"));
576 for (int ii = 1; aFileInfo.exists(); ii++) {
577 QString anUniqueName = QString("%1_Uniform_01_R_%2.med").arg(aMeshName).arg(ii);
578 aFileInfo.setFile(QDir(aWorkingDir), anUniqueName);
580 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
585 void SMESHGUI_HomardAdaptDlg::SetFileName()
588 QString fileName0 = myArgs->mySelectInMedFileLineEdit->text().trimmed();
589 QString fileName = SMESH_HOMARD_QT_COMMUN::PushNomFichier(false, QString("med"));
590 if (fileName.isEmpty()) {
591 fileName = fileName0;
592 if (fileName.isEmpty()) return;
594 QFileInfo aFileInInfo (fileName);
595 fileName = aFileInInfo.absoluteFilePath();
596 myArgs->mySelectInMedFileLineEdit->setText(fileName);
598 // Out mesh name default value
599 // TODO: add some suffix? "_R" or "_UnifRefin", or "_Uniform_01_R"
600 QString aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(fileName);
601 myArgs->myOutMeshNameLineEdit->setText(aMeshName);
603 // Output med file default value
604 // Construct it from Input med file name and path
605 //if (myArgs->myOutMedFileChk->isChecked()) {
606 std::string fname = fileName.toStdString();
607 size_t lastdot = fname.find_last_of(".");
608 if (lastdot != std::string::npos)
609 fname = fname.substr(0, lastdot);
610 QString fileNameOut = fname.c_str();
611 QFileInfo aFileInfo (fileNameOut + QString("_Uniform_01_R.med"));
612 for (int ii = 1; aFileInfo.exists(); ii++) {
613 QString anUniqueName = QString("%1_Uniform_01_R_%2.med").arg(fileNameOut).arg(ii);
614 aFileInfo.setFile(anUniqueName);
616 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
623 // ------------------------------------------------------------------------
624 void SMESHGUI_HomardAdaptDlg::SetBoundaryNo()
626 myArgs->GBBoundaryC->setVisible(0);
627 myArgs->GBBoundaryN->setVisible(0);
631 // ------------------------------------------------------------------------
632 void SMESHGUI_HomardAdaptDlg::SetBoundaryCAO()
634 myArgs->GBBoundaryC->setVisible(1);
635 myArgs->GBBoundaryN->setVisible(0);
638 // ------------------------------------------------------------------------
639 void SMESHGUI_HomardAdaptDlg::SetBoundaryNonCAO()
641 myArgs->GBBoundaryC->setVisible(0);
642 myArgs->GBBoundaryN->setVisible(1);
645 // ------------------------------------------------------------------------
646 void SMESHGUI_HomardAdaptDlg::AddBoundaryCAO(QString newBoundary)
647 // ------------------------------------------------------------------------
649 myArgs->CBBoundaryCAO->insertItem(0,newBoundary);
650 myArgs->CBBoundaryCAO->setCurrentIndex(0);
652 // ------------------------------------------------------------------------
653 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAONew()
654 // ------------------------------------------------------------------------
656 SMESH_CreateBoundaryCAO *BoundaryDlg = new SMESH_CreateBoundaryCAO
657 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
660 // ------------------------------------------------------------------------
661 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOEdit()
662 // ------------------------------------------------------------------------
664 if (myArgs->CBBoundaryCAO->currentText() == QString("")) return;
665 SMESH_EditBoundaryCAO *BoundaryDlg = new SMESH_EditBoundaryCAO
666 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
667 "Case_1", myArgs->CBBoundaryCAO->currentText());
671 // ------------------------------------------------------------------------
672 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOHelp()
674 SMESH::ShowHelpFile(QString("gui_create_boundary.html"));
677 // ------------------------------------------------------------------------
678 void SMESHGUI_HomardAdaptDlg::SetBoundaryD()
680 MESSAGE("Debut de SetBoundaryD ");
681 if (myArgs->CBBoundaryD->isChecked()) {
682 bool bOK = CheckCase(true);
684 myArgs->GBBoundaryD->setVisible(1);
687 myArgs->GBBoundaryD->setVisible(0);
688 myArgs->CBBoundaryD->setChecked(0);
689 myArgs->CBBoundaryD->setCheckState(Qt::Unchecked);
693 myArgs->GBBoundaryD->setVisible(0);
696 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
697 //myArgs->mySelectInMedFileButton->hide();
701 // ------------------------------------------------------------------------
702 void SMESHGUI_HomardAdaptDlg::AddBoundaryDi(QString newBoundary)
703 // ------------------------------------------------------------------------
705 myArgs->CBBoundaryDi->insertItem(0,newBoundary);
706 myArgs->CBBoundaryDi->setCurrentIndex(0);
708 // ------------------------------------------------------------------------
709 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiNew()
710 // ------------------------------------------------------------------------
712 SMESH_CreateBoundaryDi *BoundaryDlg = new SMESH_CreateBoundaryDi(this, true,
713 SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
716 // ------------------------------------------------------------------------
717 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiEdit()
718 // ------------------------------------------------------------------------
720 if (myArgs->CBBoundaryDi->currentText() == QString("")) return;
721 SMESH_EditBoundaryDi *BoundaryDlg = new SMESH_EditBoundaryDi
722 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
723 "Case_1", myArgs->CBBoundaryDi->currentText());
727 // ------------------------------------------------------------------------
728 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiHelp()
730 SMESH::ShowHelpFile(QString("gui_create_boundary.html"));
731 //std::string LanguageShort = myHomardGen->GetLanguageShort();
732 //HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-discrete"), QString(LanguageShort.c_str()));
735 // ------------------------------------------------------------------------
736 void SMESHGUI_HomardAdaptDlg::SetBoundaryA()
738 MESSAGE("Debut de SetBoundaryA ");
739 if (myArgs->CBBoundaryA->isChecked()) {
740 bool bOK = CheckCase(true);
742 myArgs->GBBoundaryA->setVisible(1);
745 myArgs->GBBoundaryA->setVisible(0);
746 myArgs->CBBoundaryA->setChecked(0);
747 myArgs->CBBoundaryA->setCheckState(Qt::Unchecked);
751 myArgs->GBBoundaryA->setVisible(0);
754 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
755 //myArgs->mySelectInMedFileButton->hide();
759 // ------------------------------------------------------------------------
760 void SMESHGUI_HomardAdaptDlg::AddBoundaryAn(QString newBoundary)
761 // ------------------------------------------------------------------------
763 MESSAGE("Debut de AddBoundaryAn ");
764 // Ajout d'une nouvelle colonne
765 int nbcol = myArgs->TWBoundary->columnCount();
766 // MESSAGE("nbcol " << nbcol);
768 myArgs->TWBoundary->setColumnCount ( nbcol ) ;
769 QTableWidgetItem *__colItem = new QTableWidgetItem();
770 __colItem->setText(QApplication::translate("CreateCase", newBoundary.toStdString().c_str(), 0));
771 myArgs->TWBoundary->setHorizontalHeaderItem(nbcol-1, __colItem);
772 /* TWBoundary->horizontalHeaderItem(nbcol-1)->setFlags( Qt::ItemIsSelectable|Qt::ItemIsEnabled );*/
773 // Chaque case est a cocher
774 int nbrow = myArgs->TWBoundary->rowCount();
775 // MESSAGE("nbrow " << nbrow);
776 for ( int i = 0; i < nbrow; i++ )
778 myArgs->TWBoundary->setItem( i, nbcol-1, new QTableWidgetItem( QString ("") ) );
779 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( 0 );
780 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
781 myArgs->TWBoundary->item( i, nbcol-1 )->setCheckState( Qt::Unchecked );
783 myArgs->TWBoundary->resizeColumnToContents(nbcol-1);
784 // TWBoundary->resizeRowsToContents();
785 // MESSAGE("Fin de AddBoundaryAn ");
787 // ------------------------------------------------------------------------
788 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnNew()
789 // ------------------------------------------------------------------------
791 SMESH_CreateBoundaryAn *BoundaryDlg = new SMESH_CreateBoundaryAn
792 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1");
795 // ------------------------------------------------------------------------
796 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnEdit()
797 // ------------------------------------------------------------------------
800 int nbcol = myArgs->TWBoundary->columnCount();
801 for ( int i = 1; i < nbcol; i++ ) {
802 QTableWidgetItem *__colItem = new QTableWidgetItem();
803 __colItem = myArgs->TWBoundary->horizontalHeaderItem(i);
804 nom = QString(__colItem->text()) ;
805 MESSAGE("nom "<<nom.toStdString().c_str());
806 if (nom != QString("")) {
807 SMESH_EditBoundaryAn *BoundaryDlg = new SMESH_EditBoundaryAn
808 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", nom);
813 // ------------------------------------------------------------------------
814 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnHelp()
815 // ------------------------------------------------------------------------
817 SMESH::ShowHelpFile(QString("gui_create_boundary.html"));
818 //std::string LanguageShort = myHomardGen->GetLanguageShort();
819 //HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-analytique"), QString(LanguageShort.c_str()));
822 //=================================================================================
823 // function : SMESHGUI_HomardAdaptArguments()
825 //=================================================================================
826 SMESHGUI_HomardAdaptArguments::SMESHGUI_HomardAdaptArguments(QWidget* parent)
832 SMESHGUI_HomardAdaptArguments::~SMESHGUI_HomardAdaptArguments()
836 void SMESHGUI_HomardAdaptArguments::setupUi(QWidget *CreateCase)
839 QGroupBox* aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
840 myInMedFileRadio = new QRadioButton( tr( "MEDFile" ), aMeshIn );
841 myInBrowserRadio = new QRadioButton( tr( "Browser" ), aMeshIn );
842 myInBrowserObject = new QLineEdit( aMeshIn );
843 mySelectInMedFileButton = new QPushButton("...", aMeshIn);
844 mySelectInMedFileLineEdit = new QLineEdit( aMeshIn );
846 QGridLayout* meshIn = new QGridLayout( aMeshIn );
848 meshIn->setMargin( 9 );
849 meshIn->setSpacing( 6 );
850 meshIn->addWidget( myInMedFileRadio, 0, 0, 1, 1 );
851 meshIn->addWidget( myInBrowserRadio, 0, 1, 1, 1 );
852 meshIn->addWidget( mySelectInMedFileButton, 1, 0, 1, 1 );
853 meshIn->addWidget( mySelectInMedFileLineEdit, 1, 1, 1, 2 );
854 meshIn->addWidget( myInBrowserObject, 0, 2, 1, 1 );
856 myInMeshGroup = new QButtonGroup( this );
857 myInMeshGroup->addButton( myInMedFileRadio, 0 );
858 myInMeshGroup->addButton( myInBrowserRadio, 1 );
861 QGroupBox* aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
862 QLabel* meshName = new QLabel(tr("MeshName"), aMeshOut);
863 QSpacerItem* secondHspacer = new QSpacerItem(100, 30);
864 myOutMeshNameLineEdit = new QLineEdit(aMeshOut);
865 myOutMedFileChk = new QCheckBox(tr("MEDFile"), aMeshOut);
866 mySelectOutMedFileButton = new QPushButton("...", aMeshOut);
867 mySelectOutMedFileLineEdit = new QLineEdit(aMeshOut);
868 myOutPublishChk = new QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
870 QGridLayout* meshOut = new QGridLayout( aMeshOut );
872 meshOut->setMargin( 9 );
873 meshOut->setSpacing( 6 );
874 meshOut->addWidget( meshName, 0, 0, 1,1 );
875 meshOut->addItem( secondHspacer, 0, 1, 1, 1 );
876 meshOut->addWidget( myOutMeshNameLineEdit, 0, 2,1,1);
877 meshOut->addWidget( myOutMedFileChk, 1, 0,1,1 );
878 meshOut->addWidget( mySelectOutMedFileButton, 1, 1,1,1 );
879 meshOut->addWidget( mySelectOutMedFileLineEdit, 1, 2,1,1);
880 meshOut->addWidget( myOutPublishChk, 2, 0,1,1 );
883 QGroupBox *GBTypeConf = new QGroupBox(tr("Conformity type"), CreateCase);
884 RBConforme = new QRadioButton(tr("Conformal"), GBTypeConf);
885 RBNonConforme = new QRadioButton(tr("Non conformal"), GBTypeConf);
886 RBConforme->setChecked(true);
888 QHBoxLayout *hboxLayout2 = new QHBoxLayout(GBTypeConf);
889 hboxLayout2->setSpacing(6);
890 hboxLayout2->setContentsMargins(9, 9, 9, 9);
891 hboxLayout2->addWidget(RBConforme);
892 hboxLayout2->addWidget(RBNonConforme);
895 GBTypeBoun = new QGroupBox(tr("Boundary type"), CreateCase);
897 RBBoundaryNo = new QRadioButton(tr("No boundary"), GBTypeBoun);
898 RBBoundaryCAO = new QRadioButton(tr("CAO"), GBTypeBoun);
899 RBBoundaryNonCAO = new QRadioButton(tr("Non CAO"), GBTypeBoun);
900 RBBoundaryNo->setChecked(true);
903 GBBoundaryC = new QGroupBox(tr("CAO"), GBTypeBoun);
904 QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed);
905 sizePolicy1.setHorizontalStretch(0);
906 sizePolicy1.setVerticalStretch(0);
907 sizePolicy1.setHeightForWidth(GBBoundaryC->sizePolicy().hasHeightForWidth());
908 GBBoundaryC->setSizePolicy(sizePolicy1);
910 CBBoundaryCAO = new QComboBox(GBBoundaryC);
911 CBBoundaryCAO->setSizeAdjustPolicy(QComboBox::AdjustToContents);
913 PBBoundaryCAONew = new QPushButton(tr("CAO_NEW_BTN"), GBBoundaryC);
914 PBBoundaryCAOEdit = new QPushButton(tr("CAO_EDIT_BTN"), GBBoundaryC);
915 PBBoundaryCAOHelp = new QPushButton(tr("CAO_HELP_BTN"), GBBoundaryC);
917 PBBoundaryCAONew->setAutoDefault(false);
918 PBBoundaryCAOEdit->setAutoDefault(false);
919 PBBoundaryCAOHelp->setAutoDefault(false);
921 _2 = new QGridLayout(GBBoundaryC);
923 _2->setContentsMargins(9, 9, 9, 9);
924 _2->addWidget(CBBoundaryCAO, 0, 0, 1, 1);
925 QSpacerItem* spacerItem3 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
926 _2->addItem(spacerItem3, 0, 1, 1, 1);
927 _2->addWidget(PBBoundaryCAONew, 0, 2, 1, 1);
928 _2->addWidget(PBBoundaryCAOEdit, 0, 3, 1, 1);
929 _2->addWidget(PBBoundaryCAOHelp, 0, 4, 1, 1);
931 // Non CAO (discrete / analytical)
932 GBBoundaryN = new QGroupBox(GBTypeBoun);
933 CBBoundaryD = new QCheckBox(tr("BOUNDARY_DISCRETE"), GBBoundaryN);
934 CBBoundaryA = new QCheckBox(tr("BOUNDARY_ANALYTICAL"), GBBoundaryN);
936 //hboxLayout3 = new QHBoxLayout(GBBoundaryN);
937 //hboxLayout3->setSpacing(6);
938 //hboxLayout3->setContentsMargins(0, 0, 0, 0);
939 //hboxLayout3->addWidget(CBBoundaryD);
940 //hboxLayout3->addWidget(CBBoundaryA);
943 GBBoundaryD = new QGroupBox(tr("Discrete boundary"), GBBoundaryN);
944 sizePolicy1.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth());
945 GBBoundaryD->setSizePolicy(sizePolicy1);
946 gridLayout = new QGridLayout(GBBoundaryD);
947 gridLayout->setSpacing(6);
948 gridLayout->setContentsMargins(9, 9, 9, 9);
949 gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
950 CBBoundaryDi = new QComboBox(GBBoundaryD);
951 CBBoundaryDi->setObjectName(QString::fromUtf8("CBBoundaryDi"));
952 CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents);
954 gridLayout->addWidget(CBBoundaryDi, 0, 0, 1, 1);
956 QSpacerItem* spacerItem5 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
957 gridLayout->addItem(spacerItem5, 0, 1, 1, 1);
959 PBBoundaryDiEdit = new QPushButton(GBBoundaryD);
960 PBBoundaryDiEdit->setObjectName(QString::fromUtf8("PBBoundaryDiEdit"));
961 PBBoundaryDiEdit->setAutoDefault(false);
963 gridLayout->addWidget(PBBoundaryDiEdit, 0, 3, 1, 1);
965 PBBoundaryDiHelp = new QPushButton(GBBoundaryD);
966 PBBoundaryDiHelp->setObjectName(QString::fromUtf8("PBBoundaryDiHelp"));
967 PBBoundaryDiHelp->setAutoDefault(false);
969 gridLayout->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1);
971 PBBoundaryDiNew = new QPushButton(GBBoundaryD);
972 PBBoundaryDiNew->setAutoDefault(false);
974 gridLayout->addWidget(PBBoundaryDiNew, 0, 2, 1, 1);
977 GBBoundaryA = new QGroupBox(tr("Analytical boundary"), GBBoundaryN);
978 GBBoundaryA->setMinimumSize(QSize(548, 200));
979 formLayout = new QFormLayout(GBBoundaryA);
980 formLayout->setObjectName(QString::fromUtf8("formLayout"));
981 TWBoundary = new QTableWidget(GBBoundaryA);
982 if (TWBoundary->columnCount() < 1)
983 TWBoundary->setColumnCount(1);
984 QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
985 TWBoundary->setHorizontalHeaderItem(0, __qtablewidgetitem);
986 TWBoundary->setObjectName(QString::fromUtf8("TWBoundary"));
987 TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked);
988 TWBoundary->setShowGrid(true);
989 TWBoundary->setRowCount(0);
990 TWBoundary->setColumnCount(1);
992 formLayout->setWidget(0, QFormLayout::LabelRole, TWBoundary);
994 gridLayout1 = new QGridLayout();
995 gridLayout1->setSpacing(6);
996 gridLayout1->setContentsMargins(0, 0, 0, 0);
997 gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
998 PBBoundaryAnEdit = new QPushButton(GBBoundaryA);
999 PBBoundaryAnEdit->setObjectName(QString::fromUtf8("PBBoundaryAnEdit"));
1000 PBBoundaryAnEdit->setAutoDefault(false);
1002 gridLayout1->addWidget(PBBoundaryAnEdit, 1, 0, 1, 1);
1004 PBBoundaryAnNew = new QPushButton(GBBoundaryA);
1005 PBBoundaryAnNew->setObjectName(QString::fromUtf8("PBBoundaryAnNew"));
1006 PBBoundaryAnNew->setAutoDefault(false);
1008 gridLayout1->addWidget(PBBoundaryAnNew, 0, 0, 1, 1);
1010 PBBoundaryAnHelp = new QPushButton(GBBoundaryA);
1011 PBBoundaryAnHelp->setObjectName(QString::fromUtf8("PBBoundaryAnHelp"));
1012 PBBoundaryAnHelp->setAutoDefault(false);
1014 gridLayout1->addWidget(PBBoundaryAnHelp, 2, 0, 1, 1);
1016 formLayout->setLayout(0, QFormLayout::FieldRole, gridLayout1);
1018 // Boundary No Layout
1019 QGridLayout* aBoundaryNoLayout = new QGridLayout(GBBoundaryN);
1020 //aBoundaryNoLayout->addLayout(hboxLayout3, 0, 0);
1021 aBoundaryNoLayout->addWidget(CBBoundaryD, 0, 0);
1022 aBoundaryNoLayout->addWidget(CBBoundaryA, 0, 1);
1023 aBoundaryNoLayout->addWidget(GBBoundaryD, 1, 0, 1, 2);
1024 aBoundaryNoLayout->addWidget(GBBoundaryA, 2, 0, 1, 2);
1026 // Boundary type Layout
1027 QGridLayout* aBoundTypeLayout = new QGridLayout(GBTypeBoun);
1028 aBoundTypeLayout->addWidget(RBBoundaryNo, 0, 0);
1029 aBoundTypeLayout->addWidget(RBBoundaryCAO, 0, 1);
1030 aBoundTypeLayout->addWidget(RBBoundaryNonCAO, 0, 2);
1032 aBoundTypeLayout->addWidget(GBBoundaryC, 1, 0, 1, 3);
1033 aBoundTypeLayout->addWidget(GBBoundaryN, 2, 0, 1, 3);
1036 QGridLayout *argumentsLayout = new QGridLayout(CreateCase);
1037 argumentsLayout->addWidget(aMeshIn, 0, 0, 1, 3);
1038 argumentsLayout->addWidget(aMeshOut, 1, 0, 1, 3);
1039 argumentsLayout->addWidget(GBTypeConf, 2, 0, 1, 3);
1040 argumentsLayout->addWidget(GBTypeBoun, 3, 0, 1, 3);
1041 argumentsLayout->setColumnStretch( 1, 5 );
1042 argumentsLayout->setRowStretch( 4, 5 );
1044 //mySelectInMedFileButton->setText(QString());
1045 CBBoundaryD->setText(QApplication::translate("CreateCase", "Discrete boundary", nullptr));
1046 CBBoundaryA->setText(QApplication::translate("CreateCase", "Analytical boundary", nullptr));
1047 PBBoundaryCAOEdit->setText(QApplication::translate("CreateCase", "Edit", nullptr));
1048 PBBoundaryCAOHelp->setText(QApplication::translate("CreateCase", "Help", nullptr));
1049 PBBoundaryCAONew->setText(QApplication::translate("CreateCase", "New", nullptr));
1050 PBBoundaryDiEdit->setText(QApplication::translate("CreateCase", "Edit", nullptr));
1051 PBBoundaryDiHelp->setText(QApplication::translate("CreateCase", "Help", nullptr));
1052 PBBoundaryDiNew->setText(QApplication::translate("CreateCase", "New", nullptr));
1053 QTableWidgetItem *___qtablewidgetitem = TWBoundary->horizontalHeaderItem(0);
1054 ___qtablewidgetitem->setText(QApplication::translate("CreateCase", "a_virer", nullptr));
1055 PBBoundaryAnEdit->setText(QApplication::translate("CreateCase", "Edit", nullptr));
1056 PBBoundaryAnNew->setText(QApplication::translate("CreateCase", "New", nullptr));
1057 PBBoundaryAnHelp->setText(QApplication::translate("CreateCase", "Help", nullptr));
1060 myInMedFileRadio->setChecked( true );
1061 modeInChanged( MedFile );
1062 RBBoundaryNo->setChecked( true );
1065 myOutMedFileChk->setChecked(true);
1066 CBBoundaryCAO->setCurrentIndex(-1);
1067 CBBoundaryDi->setCurrentIndex(-1);
1070 QMetaObject::connectSlotsByName(CreateCase);
1071 connect(myInMeshGroup, SIGNAL(buttonClicked(int)), this, SLOT(modeInChanged(int)));
1072 connect(myOutMedFileChk, SIGNAL(stateChanged(int)), this, SLOT(onOutMedFileChk(int)));
1073 connect(myOutPublishChk, SIGNAL(stateChanged(int)), this, SLOT(onOutPublishChk(int)));
1074 connect(mySelectOutMedFileButton, SIGNAL(pressed()), this, SLOT(onSelectOutMedFileButton()));
1075 emit updateSelection();
1078 void SMESHGUI_HomardAdaptArguments::modeInChanged( int theMode )
1081 if (theMode == MedFile) {
1082 mySelectInMedFileLineEdit->show();
1083 mySelectInMedFileButton->show();
1084 myInBrowserObject->hide();
1087 mySelectInMedFileLineEdit->hide();
1088 mySelectInMedFileButton->hide();
1089 myInBrowserObject->show();
1090 emit updateSelection();
1094 void SMESHGUI_HomardAdaptArguments::onSelectOutMedFileButton()
1097 QString fileName0 = mySelectOutMedFileLineEdit->text().trimmed();
1099 // Ask user for the new value
1100 QString filtre = QString("Med");
1101 filtre += QString(" files (*.") + QString("med") + QString(");;");
1102 QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
1104 // Check the new value
1105 if (fileName.isEmpty()) fileName = fileName0;
1107 QFileInfo aFileInfo (fileName);
1108 mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
1111 void SMESHGUI_HomardAdaptArguments::clear()
1113 mySelectInMedFileLineEdit->clear();
1114 myInBrowserObject->clear();
1116 myOutMeshNameLineEdit->clear();
1117 mySelectOutMedFileLineEdit->clear();
1120 void SMESHGUI_HomardAdaptArguments::onOutMedFileChk(int state)
1122 if (state == Qt::Checked) {
1123 mySelectOutMedFileButton->show();
1124 mySelectOutMedFileLineEdit->show();
1125 mySelectOutMedFileButton->setEnabled(true);
1126 mySelectOutMedFileLineEdit->setEnabled(true);
1129 mySelectOutMedFileButton->setEnabled(false);
1130 mySelectOutMedFileLineEdit->setEnabled(false);
1131 myOutPublishChk->setChecked(true);
1135 void SMESHGUI_HomardAdaptArguments::onOutPublishChk(int state)
1137 if (state == Qt::Unchecked) {
1138 myOutMedFileChk->setChecked(true);
1142 //////////////////////////////////////////
1143 // SMESHGUI_HomardAdaptAdvanced
1144 //////////////////////////////////////////
1146 SMESHGUI_HomardAdaptAdvanced::SMESHGUI_HomardAdaptAdvanced( QWidget* parent, Qt::WindowFlags f )
1147 : QWidget( parent, f )
1150 connect(workingDirectoryPushButton, SIGNAL(pressed()), this, SLOT(onWorkingDirectoryPushButton()));
1153 SMESHGUI_HomardAdaptAdvanced::~SMESHGUI_HomardAdaptAdvanced()
1157 void SMESHGUI_HomardAdaptAdvanced::setupWidget()
1159 if (this->objectName().isEmpty())
1160 this->setObjectName(QString(tr("MG-ADAPT-ADV")));
1161 this->resize(337, 369);
1164 logGroupBox = new QGroupBox(this);
1165 logGroupBox->setObjectName(QString("logGroupBox"));
1167 QGridLayout* logsLayout = new QGridLayout(logGroupBox);
1168 logsLayout->setObjectName(QString("logsLayout"));
1170 // Working directory + Verbose level layout
1171 QGridLayout* gridLayout = new QGridLayout();
1172 gridLayout->setObjectName(QString("gridLayout"));
1174 // Working directory
1175 workingDirectoryLabel = new QLabel(logGroupBox);
1176 workingDirectoryLabel->setObjectName(QString("workingDirectoryLabel"));
1178 gridLayout->addWidget(workingDirectoryLabel, 0, 0, 1, 1);
1180 workingDirectoryLineEdit = new QLineEdit(logGroupBox);
1181 workingDirectoryLineEdit->setObjectName(QString("workingDirectoryLineEdit"));
1183 gridLayout->addWidget(workingDirectoryLineEdit, 0, 1, 1, 1);
1185 workingDirectoryPushButton = new QPushButton(logGroupBox);
1186 workingDirectoryPushButton->setObjectName(QString("workingDirectoryPushButton"));
1188 gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
1191 verboseLevelLabel = new QLabel(logGroupBox);
1192 verboseLevelLabel->setObjectName(QString("verboseLevelLabel"));
1194 gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
1196 verboseLevelSpin = new QSpinBox(logGroupBox);
1197 verboseLevelSpin->setObjectName(QString("verboseLevelSpin"));
1199 gridLayout->addWidget(verboseLevelSpin, 1, 1, 1, 1);
1201 logsLayout->addLayout(gridLayout, 0, 0, 1, 1);
1203 // logInFileCheck + removeLogOnSuccessCheck
1204 QHBoxLayout* horizontalLayout = new QHBoxLayout();
1205 horizontalLayout->setObjectName(QString("horizontalLayout"));
1207 // Log In File Check
1208 logInFileCheck = new QCheckBox(logGroupBox);
1209 logInFileCheck->setObjectName(QString("logInFileCheck"));
1210 logInFileCheck->setChecked(true);
1212 horizontalLayout->addWidget(logInFileCheck);
1214 // Remove Log On Success Check
1215 removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
1216 removeLogOnSuccessCheck->setObjectName(QString("removeLogOnSuccessCheck"));
1217 removeLogOnSuccessCheck->setChecked(true);
1219 horizontalLayout->addWidget(removeLogOnSuccessCheck);
1221 logsLayout->addLayout(horizontalLayout, 1, 0, 1, 1);
1223 // Keep Working Files Check
1224 keepWorkingFilesCheck = new QCheckBox(logGroupBox);
1225 keepWorkingFilesCheck->setObjectName(QString("keepWorkingFilesCheck"));
1226 keepWorkingFilesCheck->setAutoExclusive(false);
1227 keepWorkingFilesCheck->setChecked(false);
1229 logsLayout->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
1232 void SMESHGUI_HomardAdaptAdvanced::onWorkingDirectoryPushButton()
1234 QString aWorkingDir = QFileDialog::getExistingDirectory();
1235 if (!(aWorkingDir.isEmpty())) workingDirectoryLineEdit->setText(aWorkingDir);