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 = SMESHGUI::GetSMESHGen()->CreateHOMARD_ADAPT();
76 myHomardGen->Register();
79 setAttribute( Qt::WA_DeleteOnClose, true );
80 setWindowTitle( tr( "ADAPT_WITH_HOMARD" ) );
81 setSizeGripEnabled( true );
83 QTabWidget* myTabWidget = new QTabWidget( this );
86 myArgs = new SMESHGUI_HomardAdaptArguments(myTabWidget);
89 myAdvOpt = new SMESHGUI_HomardAdaptAdvanced(myTabWidget);
91 myTabWidget->addTab( myArgs, tr( "Args" ) );
92 myTabWidget->addTab( myAdvOpt, tr( "ADVOP" ) );
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(500, 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
184 myHomardGen->DeleteCase();
187 //=================================================================================
188 // function : InitConnect
190 //=================================================================================
191 void SMESHGUI_HomardAdaptDlg::InitConnect()
193 connect( myArgs->mySelectInMedFileButton, SIGNAL(pressed()), this, SLOT(SetFileName()));
195 connect( myArgs->RBBoundaryNo, SIGNAL(clicked()), this, SLOT(SetBoundaryNo()));
196 connect( myArgs->RBBoundaryCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryCAO()));
197 connect( myArgs->RBBoundaryNonCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryNonCAO()));
199 connect( myArgs->PBBoundaryCAONew, SIGNAL(pressed()), this, SLOT(PushBoundaryCAONew()));
200 connect( myArgs->PBBoundaryCAOEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOEdit()) );
201 connect( myArgs->PBBoundaryCAOHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOHelp()) );
202 connect( myArgs->CBBoundaryD, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
203 connect( myArgs->PBBoundaryDiNew, SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
204 connect( myArgs->PBBoundaryDiEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
205 connect( myArgs->PBBoundaryDiHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryDiHelp()) );
206 connect( myArgs->CBBoundaryA, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
207 connect( myArgs->PBBoundaryAnNew, SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
208 connect( myArgs->PBBoundaryAnEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) );
209 connect( myArgs->PBBoundaryAnHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
211 connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK()));
212 connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply()));
213 connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
214 connect( buttonHelp, SIGNAL(pressed()), this, SLOT(PushOnHelp()));
216 connect(myArgs, SIGNAL(updateSelection()), this, SLOT(updateSelection()));
219 //=================================================================================
220 // function : InitBoundarys
221 // purpose : Initialisation des menus avec les frontieres deja enregistrees
222 //=================================================================================
223 void SMESHGUI_HomardAdaptDlg::InitBoundarys()
225 MESSAGE("InitBoundarys");
226 //myArgs->TWBoundary->clearContents();
227 //myArgs->TWBoundary->clear();
228 // Pour les frontieres analytiques : la colonne des groupes
229 SMESHHOMARD::ListGroupType_var _listeGroupesCas = myCase->GetGroups();
230 QTableWidgetItem *__colItem = new QTableWidgetItem();
231 __colItem->setText(tr(""));
232 myArgs->TWBoundary->setHorizontalHeaderItem(0, __colItem);
233 for ( int i = 0; i < (int)_listeGroupesCas->length(); i++ ) {
234 myArgs->TWBoundary->insertRow(i);
235 myArgs->TWBoundary->setItem( i, 0, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
236 myArgs->TWBoundary->item( i, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
238 // Pour les frontieres CAO : la liste a saisir
239 // Pour les frontieres discretes : la liste a saisir
240 // Pour les frontieres analytiques : les colonnes de chaque frontiere
241 SMESHHOMARD::HOMARD_Boundary_var myBoundary ;
242 SMESHHOMARD::listeBoundarys_var mesBoundarys = myHomardGen->GetAllBoundarysName();
243 //MESSAGE("Nombre de frontieres enregistrees : "<<mesBoundarys->length());
244 for (int i=0; i < (int)mesBoundarys->length(); i++) {
245 myBoundary = myHomardGen->GetBoundary(mesBoundarys[i]);
246 int type_obj = myBoundary->GetType() ;
247 if ( type_obj==-1 ) { myArgs->CBBoundaryCAO->addItem(QString(mesBoundarys[i])); }
248 else if ( type_obj==0 ) { myArgs->CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
249 else { AddBoundaryAn(QString(mesBoundarys[i])); }
252 myArgs->TWBoundary->resizeColumnsToContents();
253 myArgs->TWBoundary->resizeRowsToContents();
254 myArgs->TWBoundary->clearSelection();
257 //=================================================================================
258 // function : CheckCase
260 //=================================================================================
261 bool SMESHGUI_HomardAdaptDlg::CheckCase(bool fixCase)
263 MESSAGE("CheckCase");
265 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
266 if (aWorkingDir == QString("")) {
267 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
268 QObject::tr("HOM_CASE_DIRECTORY_1") );
272 if (CHDIR(aWorkingDir.toStdString().c_str()) != 0) {
273 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
274 QObject::tr("HOM_CASE_DIRECTORY_3") );
278 QString aMeshName, aFileName;
279 if (myArgs->myInMedFileRadio->isChecked()) {
280 aFileName = myArgs->mySelectInMedFileLineEdit->text().trimmed();
281 if (aFileName == QString("")) {
282 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_MESH"));
287 aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(aFileName);
288 if (aMeshName == "") {
289 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_MED_FILE_2"));
294 aMeshName = myArgs->myInBrowserObject->text();
295 if (aMeshName == "" || myMesh->_is_nil()) {
296 QMessageBox::critical(0, QObject::tr("HOM_ERROR"),
297 QObject::tr("Mesh object is not selected"));
302 // On verifie qu'un groupe n'est pas associe a deux frontieres differentes
303 if (myArgs->CBBoundaryA->isChecked()) {
304 QStringList ListeGroup;
306 int nbcol = myArgs->TWBoundary->columnCount();
307 int nbrow = myArgs->TWBoundary->rowCount();
308 for ( int col=1; col< nbcol; col++) {
309 for ( int row=0; row< nbrow; row++) {
310 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
312 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
313 for ( int nugr = 0 ; nugr < ListeGroup.size(); nugr++) {
314 if ( NomGroup == ListeGroup[nugr] ) {
315 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
316 QObject::tr("HOM_CASE_GROUP").arg(NomGroup) );
320 ListeGroup.insert(0, NomGroup );
326 if (!fixCase) return true;
329 if (myCase->_is_nil()) {
331 if (myArgs->myInMedFileRadio->isChecked()) {
332 // create case from MED file
333 myCase = myHomardGen->CreateCase
334 (CORBA::string_dup(aMeshName.toStdString().c_str()),
335 CORBA::string_dup(aFileName.toStdString().c_str()),
336 aWorkingDir.toStdString().c_str());
339 // create case from SMESH_Mesh
340 myCase = myHomardGen->CreateCaseOnMesh
341 (CORBA::string_dup(aMeshName.toStdString().c_str()),
343 aWorkingDir.toStdString().c_str());
346 catch( SALOME::SALOME_Exception& S_ex ) {
347 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
348 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
351 // Prevent changing case data
352 myArgs->myInMedFileRadio->setEnabled(false);
353 myArgs->myInBrowserRadio->setEnabled(false);
354 myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
355 myArgs->mySelectInMedFileButton->setEnabled(false);
356 myArgs->myInBrowserObject->setReadOnly(true);
357 myAdvOpt->workingDirectoryLineEdit->setReadOnly(true);
358 myAdvOpt->workingDirectoryPushButton->setEnabled(false);
362 // Menage des eventuelles frontieres deja enregistrees
363 myCase->SupprBoundaryGroup();
368 //=================================================================================
369 // function : PushOnApply
371 //=================================================================================
372 bool SMESHGUI_HomardAdaptDlg::PushOnApply()
374 MESSAGE("PushOnApply");
376 // Check data, create Case if not yet
377 if (!CheckCase(true))
381 if (myArgs->RBBoundaryCAO->isChecked()) {
382 QString monBoundaryCAOName = myArgs->CBBoundaryCAO->currentText();
383 if (monBoundaryCAOName != "" ) {
384 myCase->AddBoundary(monBoundaryCAOName.toStdString().c_str());
387 if (myArgs->CBBoundaryD->isChecked()) {
388 QString monBoundaryDiName = myArgs->CBBoundaryDi->currentText();
389 if (monBoundaryDiName != "" ) {
390 myCase->AddBoundary(monBoundaryDiName.toStdString().c_str());
393 if (myArgs->CBBoundaryA->isChecked()) {
395 int nbcol = myArgs->TWBoundary->columnCount();
396 int nbrow = myArgs->TWBoundary->rowCount();
397 for ( int col = 1; col < nbcol; col++) {
398 for ( int row = 0; row < nbrow; row++) {
399 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
401 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
402 // Nom de la frontiere
403 QTableWidgetItem *__colItem = myArgs->TWBoundary->horizontalHeaderItem(col);
404 myCase->AddBoundaryGroup(QString(__colItem->text()).toStdString().c_str(),
405 NomGroup.toStdString().c_str());
411 // Output MED and MESH parameters
412 myHomardGen->SetKeepMedOUT(myArgs->myOutMedFileChk->isChecked());
413 myHomardGen->SetPublishMeshOUT(myArgs->myOutPublishChk->isChecked());
414 QString anOutMeshName = myArgs->myOutMeshNameLineEdit->text();
415 if (anOutMeshName.isEmpty()) anOutMeshName = "DEFAULT_MESH_NAME";
416 myHomardGen->SetMeshNameOUT(anOutMeshName.toStdString().c_str());
418 std::string aMeshFileOUT;
419 if (myArgs->myOutMedFileChk->isChecked()) {
420 QString anOutMed = myArgs->mySelectOutMedFileLineEdit->text();
421 if (anOutMed.isEmpty()) {
422 // store in working directory and with default name
423 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
424 QFileInfo aFileInfo (QDir(aWorkingDir), "Uniform_R.med");
425 anOutMed = aFileInfo.absoluteFilePath();
427 myArgs->mySelectOutMedFileLineEdit->setText(anOutMed);
430 QFileInfo aFileInfo (anOutMed);
431 anOutMed = aFileInfo.absoluteFilePath();
433 aMeshFileOUT = anOutMed.toStdString();
436 // Set file name without path for it to be created in current directory
437 // (it will be iteration's dir, and it will be destroyed after)
438 aMeshFileOUT = "Uniform_R.med";
440 myHomardGen->SetMeshFileOUT(aMeshFileOUT.c_str());
443 myHomardGen->SetConfType(myArgs->RBConforme->isChecked() ? 0 : 1);
446 myHomardGen->SetVerboseLevel(myAdvOpt->verboseLevelSpin->value());
447 myHomardGen->SetKeepWorkingFiles(myAdvOpt->keepWorkingFilesCheck->isChecked());
448 myHomardGen->SetLogInFile(myAdvOpt->logInFileCheck->isChecked());
449 myHomardGen->SetRemoveLogOnSuccess(myAdvOpt->removeLogOnSuccessCheck->isChecked());
452 if (myAdvOpt->logInFileCheck->isChecked()) {
453 // Write log file in the working dir
454 QString aLogBaseName;
455 if (myArgs->myInMedFileRadio->isChecked()) {
456 // Name of log file will be "<name_of_input_med_file>_Uniform_R.log"
457 QString aMedFileIn = myArgs->mySelectInMedFileLineEdit->text().trimmed();
458 QFileInfo aFileInfoIn (aMedFileIn);
459 aLogBaseName = aFileInfoIn.fileName();
462 // Name of log file will be "SMESH_Mesh_<name_of_input_mesh>_Uniform_R.log"
463 aLogBaseName = "SMESH_Mesh_";
464 aLogBaseName += myArgs->myInBrowserObject->text();
466 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
467 QFileInfo aFileInfo (QDir(aWorkingDir), aLogBaseName + "_Uniform_R.log");
468 QString anOutLog = aFileInfo.absoluteFilePath();
469 MESSAGE("myHomardGen->SetLogFile(" << anOutLog.toStdString().c_str() << ")");
470 myHomardGen->SetLogFile(anOutLog.toStdString().c_str());
473 // Compute and publish
474 bool isSuccess = true;
476 SUIT_OverrideCursor aWaitCursor;
477 isSuccess = myHomardGen->Compute() == 0;
479 catch( SALOME::SALOME_Exception& S_ex ) {
480 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
481 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
485 // Update Object Browser
487 SMESHGUI::GetSMESHGUI()->updateObjBrowser();
489 // Clean case, as it is deleted after successful Compute
490 myCase = SMESHHOMARD::HOMARD_Cas::_nil();
493 // Enable new case data selection
494 myArgs->myInMedFileRadio->setEnabled(true);
495 myArgs->myInBrowserRadio->setEnabled(true);
496 myArgs->mySelectInMedFileLineEdit->setReadOnly(false);
497 myArgs->mySelectInMedFileButton->setEnabled(true);
498 myArgs->myInBrowserObject->setReadOnly(false);
499 myAdvOpt->workingDirectoryLineEdit->setReadOnly(false);
500 myAdvOpt->workingDirectoryPushButton->setEnabled(true);
505 //=================================================================================
506 // function : PushOnOK
508 //=================================================================================
509 void SMESHGUI_HomardAdaptDlg::PushOnOK()
511 bool bOK = PushOnApply();
512 if ( bOK ) this->close();
515 void SMESHGUI_HomardAdaptDlg::PushOnHelp()
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 //SUIT_OverrideCursor aWaitCursor;
544 LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
548 selMgr->selectedObjects(aList);
549 QString aMeshName = "";
551 if (aList.Extent() == 1) {
552 Handle(SALOME_InteractiveObject) IO = aList.First();
553 myMesh = SMESH::GetMeshByIO(IO);
554 SMESH::GetNameOfSelectedIObjects(selMgr, aMeshName);
555 if (aMeshName.isEmpty()) aMeshName = " ";
556 else aMeshName = aMeshName.trimmed();
559 myMesh = SMESH::SMESH_Mesh::_nil();
562 myArgs->myInBrowserObject->setText(aMeshName);
564 // Out mesh name default value
565 myArgs->myOutMeshNameLineEdit->setText(aMeshName + "_Uniform_R");
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_R.med"));
576 for (int ii = 1; aFileInfo.exists(); ii++) {
577 QString anUniqueName = QString("%1_Uniform_R_%2.med").arg(aMeshName).arg(ii);
578 aFileInfo.setFile(QDir(aWorkingDir), anUniqueName);
580 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
585 if (!aMeshName.isEmpty())
589 void SMESHGUI_HomardAdaptDlg::SetFileName()
592 QString fileName0 = myArgs->mySelectInMedFileLineEdit->text().trimmed();
593 QString fileName = SMESH_HOMARD_QT_COMMUN::PushNomFichier(false, QString("med"));
594 //SUIT_OverrideCursor aWaitCursor;
595 if (fileName.isEmpty()) {
596 fileName = fileName0;
597 if (fileName.isEmpty()) return;
599 QFileInfo aFileInInfo (fileName);
600 fileName = aFileInInfo.absoluteFilePath();
601 myArgs->mySelectInMedFileLineEdit->setText(fileName);
603 // Out mesh name default value
604 QString aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(fileName);
605 myArgs->myOutMeshNameLineEdit->setText(aMeshName + "_Uniform_R");
607 // Output med file default value
608 // Construct it from Input med file name and path
609 //if (myArgs->myOutMedFileChk->isChecked()) {
610 std::string fname = fileName.toStdString();
611 size_t lastdot = fname.find_last_of(".");
612 if (lastdot != std::string::npos)
613 fname = fname.substr(0, lastdot);
614 QString fileNameOut = fname.c_str();
615 QFileInfo aFileInfo (fileNameOut + QString("_Uniform_R.med"));
616 for (int ii = 1; aFileInfo.exists(); ii++) {
617 QString anUniqueName = QString("%1_Uniform_R_%2.med").arg(fileNameOut).arg(ii);
618 aFileInfo.setFile(anUniqueName);
620 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
627 // ------------------------------------------------------------------------
628 void SMESHGUI_HomardAdaptDlg::SetBoundaryNo()
630 myArgs->GBBoundaryC->setVisible(0);
631 myArgs->GBBoundaryN->setVisible(0);
635 // ------------------------------------------------------------------------
636 void SMESHGUI_HomardAdaptDlg::SetBoundaryCAO()
638 if (CheckCase(true)) {
639 myArgs->GBBoundaryC->setVisible(1);
640 myArgs->GBBoundaryN->setVisible(0);
645 myArgs->RBBoundaryNo->click();
648 // ------------------------------------------------------------------------
649 void SMESHGUI_HomardAdaptDlg::SetBoundaryNonCAO()
651 myArgs->GBBoundaryC->setVisible(0);
652 myArgs->GBBoundaryN->setVisible(1);
654 if (myArgs->GBBoundaryD->isVisible()) aH += 50;
655 if (myArgs->GBBoundaryA->isVisible()) aH += 150;
659 // ------------------------------------------------------------------------
660 void SMESHGUI_HomardAdaptDlg::AddBoundaryCAO(QString newBoundary)
661 // ------------------------------------------------------------------------
663 myArgs->CBBoundaryCAO->insertItem(0,newBoundary);
664 myArgs->CBBoundaryCAO->setCurrentIndex(0);
666 // ------------------------------------------------------------------------
667 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAONew()
668 // ------------------------------------------------------------------------
670 SMESH_CreateBoundaryCAO *BoundaryDlg = new SMESH_CreateBoundaryCAO
671 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
674 // ------------------------------------------------------------------------
675 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOEdit()
676 // ------------------------------------------------------------------------
678 if (myArgs->CBBoundaryCAO->currentText() == QString("")) return;
679 SMESH_EditBoundaryCAO *BoundaryDlg = new SMESH_EditBoundaryCAO
680 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
681 "Case_1", myArgs->CBBoundaryCAO->currentText());
685 // ------------------------------------------------------------------------
686 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOHelp()
688 SMESH::ShowHelpFile(QString("homard_create_boundary.html#cao-boundary"));
691 // ------------------------------------------------------------------------
692 void SMESHGUI_HomardAdaptDlg::SetBoundaryD()
694 MESSAGE("Debut de SetBoundaryD ");
695 if (myArgs->CBBoundaryD->isChecked()) {
696 bool bOK = CheckCase(true);
698 myArgs->GBBoundaryD->setVisible(1);
701 myArgs->GBBoundaryD->setVisible(0);
702 myArgs->CBBoundaryD->setChecked(0);
703 myArgs->CBBoundaryD->setCheckState(Qt::Unchecked);
707 myArgs->GBBoundaryD->setVisible(0);
710 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
711 //myArgs->mySelectInMedFileButton->hide();
714 if (myArgs->GBBoundaryD->isVisible()) aH += 50;
715 if (myArgs->GBBoundaryA->isVisible()) aH += 150;
719 // ------------------------------------------------------------------------
720 void SMESHGUI_HomardAdaptDlg::AddBoundaryDi(QString newBoundary)
721 // ------------------------------------------------------------------------
723 myArgs->CBBoundaryDi->insertItem(0,newBoundary);
724 myArgs->CBBoundaryDi->setCurrentIndex(0);
726 // ------------------------------------------------------------------------
727 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiNew()
728 // ------------------------------------------------------------------------
730 SMESH_CreateBoundaryDi *BoundaryDlg = new SMESH_CreateBoundaryDi(this, true,
731 SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
734 // ------------------------------------------------------------------------
735 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiEdit()
736 // ------------------------------------------------------------------------
738 if (myArgs->CBBoundaryDi->currentText() == QString("")) return;
739 SMESH_EditBoundaryDi *BoundaryDlg = new SMESH_EditBoundaryDi
740 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
741 "Case_1", myArgs->CBBoundaryDi->currentText());
745 // ------------------------------------------------------------------------
746 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiHelp()
748 SMESH::ShowHelpFile(QString("homard_create_boundary.html#discrete-boundary"));
751 // ------------------------------------------------------------------------
752 void SMESHGUI_HomardAdaptDlg::SetBoundaryA()
754 MESSAGE("Debut de SetBoundaryA ");
755 if (myArgs->CBBoundaryA->isChecked()) {
756 bool bOK = CheckCase(true);
758 myArgs->GBBoundaryA->setVisible(1);
761 myArgs->GBBoundaryA->setVisible(0);
762 myArgs->CBBoundaryA->setChecked(0);
763 myArgs->CBBoundaryA->setCheckState(Qt::Unchecked);
767 myArgs->GBBoundaryA->setVisible(0);
770 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
771 //myArgs->mySelectInMedFileButton->hide();
774 if (myArgs->GBBoundaryD->isVisible()) aH += 50;
775 if (myArgs->GBBoundaryA->isVisible()) aH += 150;
779 // ------------------------------------------------------------------------
780 void SMESHGUI_HomardAdaptDlg::AddBoundaryAn(QString newBoundary)
781 // ------------------------------------------------------------------------
783 MESSAGE("Debut de AddBoundaryAn ");
784 // Ajout d'une nouvelle colonne
785 int nbcol = myArgs->TWBoundary->columnCount();
786 // MESSAGE("nbcol " << nbcol);
788 myArgs->TWBoundary->setColumnCount ( nbcol ) ;
789 QTableWidgetItem *__colItem = new QTableWidgetItem();
790 __colItem->setText(tr(newBoundary.toStdString().c_str()));
791 myArgs->TWBoundary->setHorizontalHeaderItem(nbcol-1, __colItem);
792 /* TWBoundary->horizontalHeaderItem(nbcol-1)->setFlags( Qt::ItemIsSelectable|Qt::ItemIsEnabled );*/
793 // Chaque case est a cocher
794 int nbrow = myArgs->TWBoundary->rowCount();
795 // MESSAGE("nbrow " << nbrow);
796 for ( int i = 0; i < nbrow; i++ )
798 myArgs->TWBoundary->setItem( i, nbcol-1, new QTableWidgetItem( QString ("") ) );
799 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( 0 );
800 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
801 myArgs->TWBoundary->item( i, nbcol-1 )->setCheckState( Qt::Unchecked );
803 myArgs->TWBoundary->resizeColumnToContents(nbcol-1);
804 // TWBoundary->resizeRowsToContents();
805 // MESSAGE("Fin de AddBoundaryAn ");
807 // ------------------------------------------------------------------------
808 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnNew()
809 // ------------------------------------------------------------------------
811 SMESH_CreateBoundaryAn *BoundaryDlg = new SMESH_CreateBoundaryAn
812 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1");
815 // ------------------------------------------------------------------------
816 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnEdit()
817 // ------------------------------------------------------------------------
820 int nbcol = myArgs->TWBoundary->columnCount();
821 for ( int i = 1; i < nbcol; i++ ) {
822 QTableWidgetItem *__colItem = new QTableWidgetItem();
823 __colItem = myArgs->TWBoundary->horizontalHeaderItem(i);
824 nom = QString(__colItem->text()) ;
825 MESSAGE("nom "<<nom.toStdString().c_str());
826 if (nom != QString("")) {
827 SMESH_EditBoundaryAn *BoundaryDlg = new SMESH_EditBoundaryAn
828 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", nom);
833 // ------------------------------------------------------------------------
834 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnHelp()
835 // ------------------------------------------------------------------------
837 SMESH::ShowHelpFile(QString("homard_create_boundary.html#analytical-boundary"));
840 //=================================================================================
841 // function : SMESHGUI_HomardAdaptArguments()
843 //=================================================================================
844 SMESHGUI_HomardAdaptArguments::SMESHGUI_HomardAdaptArguments(QWidget* parent)
850 SMESHGUI_HomardAdaptArguments::~SMESHGUI_HomardAdaptArguments()
854 void SMESHGUI_HomardAdaptArguments::setupUi()
857 QGroupBox* aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
858 myInMedFileRadio = new QRadioButton( tr( "MEDFile" ), aMeshIn );
859 myInBrowserRadio = new QRadioButton( tr( "Browser" ), aMeshIn );
860 myInBrowserObject = new QLineEdit( aMeshIn );
861 mySelectInMedFileButton = new QPushButton("...", aMeshIn);
862 mySelectInMedFileLineEdit = new QLineEdit( aMeshIn );
864 QGridLayout* meshIn = new QGridLayout( aMeshIn );
866 meshIn->setMargin( 9 );
867 meshIn->setSpacing( 6 );
868 meshIn->addWidget( myInMedFileRadio, 0, 0, 1, 1 );
869 meshIn->addWidget( myInBrowserRadio, 0, 1, 1, 1 );
870 meshIn->addWidget( mySelectInMedFileButton, 1, 0, 1, 1 );
871 meshIn->addWidget( mySelectInMedFileLineEdit, 1, 1, 1, 2 );
872 meshIn->addWidget( myInBrowserObject, 0, 2, 1, 1 );
874 myInMeshGroup = new QButtonGroup( this );
875 myInMeshGroup->addButton( myInMedFileRadio, 0 );
876 myInMeshGroup->addButton( myInBrowserRadio, 1 );
879 QGroupBox* aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
880 QLabel* meshName = new QLabel(tr("MeshName"), aMeshOut);
881 QSpacerItem* secondHspacer = new QSpacerItem(100, 30);
882 myOutMeshNameLineEdit = new QLineEdit(aMeshOut);
883 myOutMedFileChk = new QCheckBox(tr("MEDFile"), aMeshOut);
884 mySelectOutMedFileButton = new QPushButton("...", aMeshOut);
885 mySelectOutMedFileLineEdit = new QLineEdit(aMeshOut);
886 myOutPublishChk = new QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
888 QGridLayout* meshOut = new QGridLayout( aMeshOut );
890 meshOut->setMargin( 9 );
891 meshOut->setSpacing( 6 );
892 meshOut->addWidget( meshName, 0, 0, 1,1 );
893 meshOut->addItem( secondHspacer, 0, 1, 1, 1 );
894 meshOut->addWidget( myOutMeshNameLineEdit, 0, 2,1,1);
895 meshOut->addWidget( myOutMedFileChk, 1, 0,1,1 );
896 meshOut->addWidget( mySelectOutMedFileButton, 1, 1,1,1 );
897 meshOut->addWidget( mySelectOutMedFileLineEdit, 1, 2,1,1);
898 meshOut->addWidget( myOutPublishChk, 2, 0,1,1 );
901 QGroupBox *GBTypeConf = new QGroupBox(tr("Conformity type"), this);
902 RBConforme = new QRadioButton(tr("Conformal"), GBTypeConf);
903 RBNonConforme = new QRadioButton(tr("Non conformal"), GBTypeConf);
904 RBConforme->setChecked(true);
906 QHBoxLayout *hboxLayout2 = new QHBoxLayout(GBTypeConf);
907 hboxLayout2->setSpacing(6);
908 hboxLayout2->setContentsMargins(9, 9, 9, 9);
909 hboxLayout2->addWidget(RBConforme);
910 hboxLayout2->addWidget(RBNonConforme);
913 GBTypeBoun = new QGroupBox(tr("Boundary type"), this);
915 RBBoundaryNo = new QRadioButton(tr("No boundary"), GBTypeBoun);
916 RBBoundaryCAO = new QRadioButton(tr("CAO"), GBTypeBoun);
917 RBBoundaryNonCAO = new QRadioButton(tr("Non CAO"), GBTypeBoun);
918 RBBoundaryNo->setChecked(true);
921 GBBoundaryC = new QGroupBox(tr("CAO"), GBTypeBoun);
923 QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed);
924 sizePolicy1.setHorizontalStretch(0);
925 sizePolicy1.setVerticalStretch(0);
926 sizePolicy1.setHeightForWidth(GBBoundaryC->sizePolicy().hasHeightForWidth());
927 GBBoundaryC->setSizePolicy(sizePolicy1);
929 GBBoundaryC->setMinimumSize(QSize(450, 50));
931 CBBoundaryCAO = new QComboBox(GBBoundaryC);
932 CBBoundaryCAO->setSizeAdjustPolicy(QComboBox::AdjustToContents);
934 PBBoundaryCAONew = new QPushButton(tr("New"), GBBoundaryC);
935 PBBoundaryCAOEdit = new QPushButton(tr("Edit"), GBBoundaryC);
936 PBBoundaryCAOHelp = new QPushButton(tr("Help"), GBBoundaryC);
938 PBBoundaryCAONew->setAutoDefault(false);
939 PBBoundaryCAOEdit->setAutoDefault(false);
940 PBBoundaryCAOHelp->setAutoDefault(false);
942 QGridLayout* gridLayout2 = new QGridLayout(GBBoundaryC);
943 gridLayout2->setSpacing(6);
944 gridLayout2->setContentsMargins(9, 9, 9, 9);
945 gridLayout2->addWidget(CBBoundaryCAO, 0, 0, 1, 1);
946 QSpacerItem* spacerItem3 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
947 gridLayout2->addItem(spacerItem3, 0, 1, 1, 1);
948 gridLayout2->addWidget(PBBoundaryCAONew, 0, 2, 1, 1);
949 gridLayout2->addWidget(PBBoundaryCAOEdit, 0, 3, 1, 1);
950 gridLayout2->addWidget(PBBoundaryCAOHelp, 0, 4, 1, 1);
951 gridLayout2->setRowMinimumHeight(0, 80);
953 // Non CAO (discrete / analytical)
954 GBBoundaryN = new QGroupBox(tr("Non CAO"), GBTypeBoun);
955 GBBoundaryN->setMinimumSize(QSize(450, 80));
957 CBBoundaryD = new QCheckBox(tr("Discrete boundary"), GBBoundaryN);
958 CBBoundaryA = new QCheckBox(tr("Analytical boundary"), GBBoundaryN);
961 GBBoundaryD = new QGroupBox(tr("Discrete boundary"), GBBoundaryN);
962 //sizePolicy1.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth());
963 //GBBoundaryD->setSizePolicy(sizePolicy1);
964 QGridLayout* gridLayoutD = new QGridLayout(GBBoundaryD);
965 gridLayoutD->setSpacing(6);
966 gridLayoutD->setContentsMargins(9, 9, 9, 9);
967 CBBoundaryDi = new QComboBox(GBBoundaryD);
968 CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents);
970 gridLayoutD->addWidget(CBBoundaryDi, 0, 0, 1, 1);
972 QSpacerItem* spacerItem5 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
973 gridLayoutD->addItem(spacerItem5, 0, 1, 1, 1);
975 PBBoundaryDiNew = new QPushButton(tr("New"), GBBoundaryD);
976 PBBoundaryDiEdit = new QPushButton(tr("Edit"), GBBoundaryD);
977 PBBoundaryDiHelp = new QPushButton(tr("Help"), GBBoundaryD);
979 PBBoundaryDiNew->setAutoDefault(false);
980 PBBoundaryDiEdit->setAutoDefault(false);
981 PBBoundaryDiHelp->setAutoDefault(false);
983 gridLayoutD->addWidget(PBBoundaryDiNew, 0, 2, 1, 1);
984 gridLayoutD->addWidget(PBBoundaryDiEdit, 0, 3, 1, 1);
985 gridLayoutD->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1);
988 GBBoundaryA = new QGroupBox(tr("Analytical boundary"), GBBoundaryN);
989 GBBoundaryA->setMinimumSize(QSize(548, 200));
990 formLayout = new QFormLayout(GBBoundaryA);
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->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked);
997 TWBoundary->setShowGrid(true);
998 TWBoundary->setRowCount(0);
999 TWBoundary->setColumnCount(1);
1001 formLayout->setWidget(0, QFormLayout::LabelRole, TWBoundary);
1003 QGridLayout* gridLayout1 = new QGridLayout();
1004 gridLayout1->setSpacing(6);
1005 gridLayout1->setContentsMargins(0, 0, 0, 0);
1007 PBBoundaryAnNew = new QPushButton(tr("New"), GBBoundaryA);
1008 PBBoundaryAnEdit = new QPushButton(tr("Edit"), GBBoundaryA);
1009 PBBoundaryAnHelp = new QPushButton(tr("Help"), GBBoundaryA);
1011 PBBoundaryAnNew->setAutoDefault(false);
1012 PBBoundaryAnEdit->setAutoDefault(false);
1013 PBBoundaryAnHelp->setAutoDefault(false);
1015 gridLayout1->addWidget(PBBoundaryAnNew, 0, 0, 1, 1);
1016 gridLayout1->addWidget(PBBoundaryAnEdit, 1, 0, 1, 1);
1017 gridLayout1->addWidget(PBBoundaryAnHelp, 2, 0, 1, 1);
1019 formLayout->setLayout(0, QFormLayout::FieldRole, gridLayout1);
1021 // Boundary No Layout
1022 QGridLayout* aBoundaryNoLayout = new QGridLayout(GBBoundaryN);
1023 //aBoundaryNoLayout->addLayout(hboxLayout3, 0, 0);
1024 aBoundaryNoLayout->addWidget(CBBoundaryD, 0, 0);
1025 aBoundaryNoLayout->addWidget(CBBoundaryA, 0, 1);
1026 aBoundaryNoLayout->addWidget(GBBoundaryD, 1, 0, 1, 2);
1027 aBoundaryNoLayout->addWidget(GBBoundaryA, 2, 0, 1, 2);
1029 // Boundary type Layout
1030 QGridLayout* aBoundTypeLayout = new QGridLayout(GBTypeBoun);
1031 aBoundTypeLayout->addWidget(RBBoundaryNo, 0, 0);
1032 aBoundTypeLayout->addWidget(RBBoundaryCAO, 0, 1);
1033 aBoundTypeLayout->addWidget(RBBoundaryNonCAO, 0, 2);
1035 aBoundTypeLayout->addWidget(GBBoundaryC, 1, 0, 1, 3);
1036 aBoundTypeLayout->addWidget(GBBoundaryN, 2, 0, 1, 3);
1039 QGridLayout *argumentsLayout = new QGridLayout(this);
1040 argumentsLayout->addWidget(aMeshIn, 0, 0, 1, 3);
1041 argumentsLayout->addWidget(aMeshOut, 1, 0, 1, 3);
1042 argumentsLayout->addWidget(GBTypeConf, 2, 0, 1, 3);
1043 argumentsLayout->addWidget(GBTypeBoun, 3, 0, 1, 3);
1044 argumentsLayout->setColumnStretch( 1, 5 );
1045 argumentsLayout->setRowStretch( 4, 5 );
1047 QTableWidgetItem *___qtablewidgetitem = TWBoundary->horizontalHeaderItem(0);
1048 ___qtablewidgetitem->setText(tr("a_virer"));
1051 myInMedFileRadio->setChecked( true );
1052 modeInChanged( MedFile );
1053 RBBoundaryNo->setChecked( true );
1056 myOutMedFileChk->setChecked(true);
1057 CBBoundaryCAO->setCurrentIndex(-1);
1058 CBBoundaryDi->setCurrentIndex(-1);
1061 connect(myInMeshGroup, SIGNAL(buttonClicked(int)), this, SLOT(modeInChanged(int)));
1062 connect(myOutMedFileChk, SIGNAL(stateChanged(int)), this, SLOT(onOutMedFileChk(int)));
1063 connect(myOutPublishChk, SIGNAL(stateChanged(int)), this, SLOT(onOutPublishChk(int)));
1064 connect(mySelectOutMedFileButton, SIGNAL(pressed()), this, SLOT(onSelectOutMedFileButton()));
1065 emit updateSelection();
1068 void SMESHGUI_HomardAdaptArguments::modeInChanged( int theMode )
1071 if (theMode == MedFile) {
1072 mySelectInMedFileLineEdit->show();
1073 mySelectInMedFileButton->show();
1074 myInBrowserObject->hide();
1077 mySelectInMedFileLineEdit->hide();
1078 mySelectInMedFileButton->hide();
1079 myInBrowserObject->show();
1080 emit updateSelection();
1084 void SMESHGUI_HomardAdaptArguments::onSelectOutMedFileButton()
1087 QString fileName0 = mySelectOutMedFileLineEdit->text().trimmed();
1089 // Ask user for the new value
1090 QString filtre = QString("Med");
1091 filtre += QString(" files (*.") + QString("med") + QString(");;");
1092 QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
1094 // Check the new value
1095 if (fileName.isEmpty()) fileName = fileName0;
1097 QFileInfo aFileInfo (fileName);
1098 mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
1101 void SMESHGUI_HomardAdaptArguments::clear()
1103 mySelectInMedFileLineEdit->clear();
1104 myInBrowserObject->clear();
1106 myOutMeshNameLineEdit->clear();
1107 mySelectOutMedFileLineEdit->clear();
1110 void SMESHGUI_HomardAdaptArguments::onOutMedFileChk(int state)
1112 if (state == Qt::Checked) {
1113 mySelectOutMedFileButton->show();
1114 mySelectOutMedFileLineEdit->show();
1115 mySelectOutMedFileButton->setEnabled(true);
1116 mySelectOutMedFileLineEdit->setEnabled(true);
1119 mySelectOutMedFileButton->setEnabled(false);
1120 mySelectOutMedFileLineEdit->setEnabled(false);
1121 myOutPublishChk->setChecked(true);
1125 void SMESHGUI_HomardAdaptArguments::onOutPublishChk(int state)
1127 if (state == Qt::Unchecked) {
1128 myOutMedFileChk->setChecked(true);
1132 //////////////////////////////////////////
1133 // SMESHGUI_HomardAdaptAdvanced
1134 //////////////////////////////////////////
1136 SMESHGUI_HomardAdaptAdvanced::SMESHGUI_HomardAdaptAdvanced(QWidget* parent)
1140 connect(workingDirectoryPushButton, SIGNAL(pressed()),
1141 this, SLOT(onWorkingDirectoryPushButton()));
1144 SMESHGUI_HomardAdaptAdvanced::~SMESHGUI_HomardAdaptAdvanced()
1148 void SMESHGUI_HomardAdaptAdvanced::setupWidget()
1150 //this->resize(337, 369);
1153 logGroupBox = new QGroupBox(this);
1154 QGridLayout* logGroupBoxLayout = new QGridLayout(this);
1155 logGroupBoxLayout->setMargin( 9 );
1156 logGroupBoxLayout->setSpacing( 6 );
1157 logGroupBoxLayout->addWidget(logGroupBox, 0, 0, 1, 1);
1159 QGridLayout* logsLayout = new QGridLayout(logGroupBox);
1160 logsLayout->setMargin( 9 );
1161 logsLayout->setSpacing( 6 );
1163 // Working directory + Verbose level layout
1164 QGridLayout* gridLayout = new QGridLayout();
1166 // Working directory
1167 workingDirectoryLabel = new QLabel(logGroupBox);
1168 workingDirectoryLineEdit = new QLineEdit(logGroupBox);
1169 workingDirectoryPushButton = new QPushButton(logGroupBox);
1171 gridLayout->addWidget(workingDirectoryLabel, 0, 0, 1, 1);
1172 gridLayout->addWidget(workingDirectoryLineEdit, 0, 1, 1, 1);
1173 gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
1176 verboseLevelLabel = new QLabel(logGroupBox);
1177 verboseLevelSpin = new QSpinBox(logGroupBox);
1179 gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
1180 gridLayout->addWidget(verboseLevelSpin, 1, 1, 1, 1);
1182 logsLayout->addLayout(gridLayout, 0, 0, 1, 1);
1184 // logInFileCheck + removeLogOnSuccessCheck
1185 QHBoxLayout* horizontalLayout = new QHBoxLayout();
1187 logInFileCheck = new QCheckBox(logGroupBox);
1188 removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
1190 logInFileCheck->setChecked(true);
1191 removeLogOnSuccessCheck->setChecked(true);
1193 horizontalLayout->addWidget(logInFileCheck);
1194 horizontalLayout->addWidget(removeLogOnSuccessCheck);
1196 logsLayout->addLayout(horizontalLayout, 1, 0, 1, 1);
1198 // Keep Working Files Check
1199 keepWorkingFilesCheck = new QCheckBox(logGroupBox);
1200 keepWorkingFilesCheck->setAutoExclusive(false);
1201 keepWorkingFilesCheck->setChecked(false);
1203 logsLayout->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
1205 //logsLayout->setColumnStretch( 1, 5 );
1206 logsLayout->setRowStretch( 3, 5 );
1209 void SMESHGUI_HomardAdaptAdvanced::onWorkingDirectoryPushButton()
1211 QString aWorkingDir = QFileDialog::getExistingDirectory();
1212 if (!(aWorkingDir.isEmpty())) workingDirectoryLineEdit->setText(aWorkingDir);