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(600, 320));
160 setMinimumSize(QSize(500, 320));
161 setSizeIncrement(QSize(1, 1));
162 setBaseSize(QSize(600, 600));
163 setAutoFillBackground(true);
168 myArgs->GBBoundaryC->setVisible(0);
169 myArgs->GBBoundaryN->setVisible(0);
170 myArgs->GBBoundaryA->setVisible(0);
171 myArgs->GBBoundaryD->setVisible(0);
175 //MESSAGE("Fin du constructeur de SMESHGUI_HomardAdaptDlg");
178 //=================================================================================
179 // function : ~SMESHGUI_HomardAdaptDlg()
180 // purpose : Destroys the object and frees any allocated resources
181 //=================================================================================
182 SMESHGUI_HomardAdaptDlg::~SMESHGUI_HomardAdaptDlg()
184 // no need to delete child widgets, Qt does it all for us
185 myHomardGen->DeleteCase();
188 //=================================================================================
189 // function : InitConnect
191 //=================================================================================
192 void SMESHGUI_HomardAdaptDlg::InitConnect()
194 connect( myArgs->mySelectInMedFileButton, SIGNAL(pressed()), this, SLOT(SetFileName()));
196 connect( myArgs->RBBoundaryNo, SIGNAL(clicked()), this, SLOT(SetBoundaryNo()));
197 connect( myArgs->RBBoundaryCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryCAO()));
198 connect( myArgs->RBBoundaryNonCAO, SIGNAL(clicked()), this, SLOT(SetBoundaryNonCAO()));
200 connect( myArgs->PBBoundaryCAONew, SIGNAL(pressed()), this, SLOT(PushBoundaryCAONew()));
201 connect( myArgs->PBBoundaryCAOEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOEdit()) );
202 connect( myArgs->PBBoundaryCAOHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOHelp()) );
203 connect( myArgs->CBBoundaryD, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
204 connect( myArgs->PBBoundaryDiNew, SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
205 connect( myArgs->PBBoundaryDiEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
206 connect( myArgs->PBBoundaryDiHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryDiHelp()) );
207 connect( myArgs->CBBoundaryA, SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
208 connect( myArgs->PBBoundaryAnNew, SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
209 connect( myArgs->PBBoundaryAnEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) );
210 connect( myArgs->PBBoundaryAnHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
212 connect( buttonOk, SIGNAL(pressed()), this, SLOT(PushOnOK()));
213 connect( buttonApply, SIGNAL(pressed()), this, SLOT(PushOnApply()));
214 connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
215 connect( buttonHelp, SIGNAL(pressed()), this, SLOT(PushOnHelp()));
217 connect(myArgs, SIGNAL(updateSelection()), this, SLOT(updateSelection()));
220 //=================================================================================
221 // function : InitBoundarys
222 // purpose : Initialisation des menus avec les frontieres deja enregistrees
223 //=================================================================================
224 void SMESHGUI_HomardAdaptDlg::InitBoundarys()
226 MESSAGE("InitBoundarys");
227 //myArgs->TWBoundary->clearContents();
228 //myArgs->TWBoundary->clear();
229 // Pour les frontieres analytiques : la colonne des groupes
230 SMESHHOMARD::ListGroupType_var _listeGroupesCas = myCase->GetGroups();
231 QTableWidgetItem *__colItem = new QTableWidgetItem();
232 __colItem->setText(tr(""));
233 myArgs->TWBoundary->setHorizontalHeaderItem(0, __colItem);
234 for ( int i = 0; i < (int)_listeGroupesCas->length(); i++ ) {
235 myArgs->TWBoundary->insertRow(i);
236 myArgs->TWBoundary->setItem( i, 0, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
237 myArgs->TWBoundary->item( i, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
239 // Pour les frontieres CAO : la liste a saisir
240 // Pour les frontieres discretes : la liste a saisir
241 // Pour les frontieres analytiques : les colonnes de chaque frontiere
242 SMESHHOMARD::HOMARD_Boundary_var myBoundary ;
243 SMESHHOMARD::listeBoundarys_var mesBoundarys = myHomardGen->GetAllBoundarysName();
244 //MESSAGE("Nombre de frontieres enregistrees : "<<mesBoundarys->length());
245 for (int i=0; i < (int)mesBoundarys->length(); i++) {
246 myBoundary = myHomardGen->GetBoundary(mesBoundarys[i]);
247 int type_obj = myBoundary->GetType() ;
248 if ( type_obj==-1 ) { myArgs->CBBoundaryCAO->addItem(QString(mesBoundarys[i])); }
249 else if ( type_obj==0 ) { myArgs->CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
250 else { AddBoundaryAn(QString(mesBoundarys[i])); }
253 myArgs->TWBoundary->resizeColumnsToContents();
254 myArgs->TWBoundary->resizeRowsToContents();
255 myArgs->TWBoundary->clearSelection();
258 //=================================================================================
259 // function : CheckCase
261 //=================================================================================
262 bool SMESHGUI_HomardAdaptDlg::CheckCase(bool fixCase)
264 MESSAGE("CheckCase");
266 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
267 if (aWorkingDir == QString("")) {
268 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
269 QObject::tr("HOM_CASE_DIRECTORY_1") );
273 if (CHDIR(aWorkingDir.toStdString().c_str()) != 0) {
274 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
275 QObject::tr("HOM_CASE_DIRECTORY_3") );
279 QString aMeshName, aFileName;
280 if (myArgs->myInMedFileRadio->isChecked()) {
281 aFileName = myArgs->mySelectInMedFileLineEdit->text().trimmed();
282 if (aFileName == QString("")) {
283 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_CASE_MESH"));
288 aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(aFileName);
289 if (aMeshName == "") {
290 QMessageBox::critical(0, QObject::tr("HOM_ERROR"), QObject::tr("HOM_MED_FILE_2"));
295 aMeshName = myArgs->myInBrowserObject->text();
296 if (aMeshName == "" || myMesh->_is_nil()) {
297 QMessageBox::critical(0, QObject::tr("HOM_ERROR"),
298 QObject::tr("Mesh object is not selected"));
303 // On verifie qu'un groupe n'est pas associe a deux frontieres differentes
304 if (myArgs->CBBoundaryA->isChecked()) {
305 QStringList ListeGroup;
307 int nbcol = myArgs->TWBoundary->columnCount();
308 int nbrow = myArgs->TWBoundary->rowCount();
309 for ( int col=1; col< nbcol; col++) {
310 for ( int row=0; row< nbrow; row++) {
311 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
313 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
314 for ( int nugr = 0 ; nugr < ListeGroup.size(); nugr++) {
315 if ( NomGroup == ListeGroup[nugr] ) {
316 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
317 QObject::tr("HOM_CASE_GROUP").arg(NomGroup) );
321 ListeGroup.insert(0, NomGroup );
327 if (!fixCase) return true;
330 if (myCase->_is_nil()) {
332 if (myArgs->myInMedFileRadio->isChecked()) {
333 // create case from MED file
334 myCase = myHomardGen->CreateCase
335 (CORBA::string_dup(aMeshName.toStdString().c_str()),
336 CORBA::string_dup(aFileName.toStdString().c_str()),
337 aWorkingDir.toStdString().c_str());
340 // create case from SMESH_Mesh
341 myCase = myHomardGen->CreateCaseOnMesh
342 (CORBA::string_dup(aMeshName.toStdString().c_str()),
344 aWorkingDir.toStdString().c_str());
347 catch( SALOME::SALOME_Exception& S_ex ) {
348 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
349 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
352 // Prevent changing case data
353 myArgs->myInMedFileRadio->setEnabled(false);
354 myArgs->myInBrowserRadio->setEnabled(false);
355 myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
356 myArgs->mySelectInMedFileButton->setEnabled(false);
357 myArgs->myInBrowserObject->setReadOnly(true);
358 myAdvOpt->workingDirectoryLineEdit->setReadOnly(true);
359 myAdvOpt->workingDirectoryPushButton->setEnabled(false);
363 // Menage des eventuelles frontieres deja enregistrees
364 myCase->SupprBoundaryGroup();
369 //=================================================================================
370 // function : PushOnApply
372 //=================================================================================
373 bool SMESHGUI_HomardAdaptDlg::PushOnApply()
375 MESSAGE("PushOnApply");
377 // Check data, create Case if not yet
378 if (!CheckCase(true))
382 if (myArgs->RBBoundaryCAO->isChecked()) {
383 QString monBoundaryCAOName = myArgs->CBBoundaryCAO->currentText();
384 if (monBoundaryCAOName != "" ) {
385 myCase->AddBoundary(monBoundaryCAOName.toStdString().c_str());
388 if (myArgs->CBBoundaryD->isChecked()) {
389 QString monBoundaryDiName = myArgs->CBBoundaryDi->currentText();
390 if (monBoundaryDiName != "" ) {
391 myCase->AddBoundary(monBoundaryDiName.toStdString().c_str());
394 if (myArgs->CBBoundaryA->isChecked()) {
396 int nbcol = myArgs->TWBoundary->columnCount();
397 int nbrow = myArgs->TWBoundary->rowCount();
398 for ( int col = 1; col < nbcol; col++) {
399 for ( int row = 0; row < nbrow; row++) {
400 if ( myArgs->TWBoundary->item( row, col )->checkState() == Qt::Checked ) {
402 NomGroup = QString(myArgs->TWBoundary->item(row, 0)->text()) ;
403 // Nom de la frontiere
404 QTableWidgetItem *__colItem = myArgs->TWBoundary->horizontalHeaderItem(col);
405 myCase->AddBoundaryGroup(QString(__colItem->text()).toStdString().c_str(),
406 NomGroup.toStdString().c_str());
412 // Output MED and MESH parameters
413 myHomardGen->SetKeepMedOUT(myArgs->myOutMedFileChk->isChecked());
414 myHomardGen->SetPublishMeshOUT(myArgs->myOutPublishChk->isChecked());
415 QString anOutMeshName = myArgs->myOutMeshNameLineEdit->text();
416 if (anOutMeshName.isEmpty()) anOutMeshName = "DEFAULT_MESH_NAME";
417 myHomardGen->SetMeshNameOUT(anOutMeshName.toStdString().c_str());
419 std::string aMeshFileOUT;
420 if (myArgs->myOutMedFileChk->isChecked()) {
421 QString anOutMed = myArgs->mySelectOutMedFileLineEdit->text();
422 if (anOutMed.isEmpty()) {
423 // store in working directory and with default name
424 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
425 QFileInfo aFileInfo (QDir(aWorkingDir), "Uniform_R.med");
426 anOutMed = aFileInfo.absoluteFilePath();
428 myArgs->mySelectOutMedFileLineEdit->setText(anOutMed);
431 QFileInfo aFileInfo (anOutMed);
432 anOutMed = aFileInfo.absoluteFilePath();
434 aMeshFileOUT = anOutMed.toStdString();
437 // Set file name without path for it to be created in current directory
438 // (it will be iteration's dir, and it will be destroyed after)
439 aMeshFileOUT = "Uniform_R.med";
441 myHomardGen->SetMeshFileOUT(aMeshFileOUT.c_str());
444 myHomardGen->SetConfType(myArgs->RBConforme->isChecked() ? 0 : 1);
447 myHomardGen->SetVerboseLevel(myAdvOpt->verboseLevelSpin->value());
448 myHomardGen->SetKeepWorkingFiles(myAdvOpt->keepWorkingFilesCheck->isChecked());
449 myHomardGen->SetLogInFile(myAdvOpt->logInFileCheck->isChecked());
450 myHomardGen->SetRemoveLogOnSuccess(myAdvOpt->removeLogOnSuccessCheck->isChecked());
453 if (myAdvOpt->logInFileCheck->isChecked()) {
454 // Write log file in the working dir
455 QString aLogBaseName;
456 if (myArgs->myInMedFileRadio->isChecked()) {
457 // Name of log file will be "<name_of_input_med_file>_Uniform_R.log"
458 QString aMedFileIn = myArgs->mySelectInMedFileLineEdit->text().trimmed();
459 QFileInfo aFileInfoIn (aMedFileIn);
460 aLogBaseName = aFileInfoIn.fileName();
463 // Name of log file will be "SMESH_Mesh_<name_of_input_mesh>_Uniform_R.log"
464 aLogBaseName = "SMESH_Mesh_";
465 aLogBaseName += myArgs->myInBrowserObject->text();
467 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
468 QFileInfo aFileInfo (QDir(aWorkingDir), aLogBaseName + "_Uniform_R.log");
469 QString anOutLog = aFileInfo.absoluteFilePath();
470 MESSAGE("myHomardGen->SetLogFile(" << anOutLog.toStdString().c_str() << ")");
471 myHomardGen->SetLogFile(anOutLog.toStdString().c_str());
474 // Compute and publish
475 bool isSuccess = true;
477 SUIT_OverrideCursor aWaitCursor;
478 isSuccess = myHomardGen->Compute() == 0;
480 catch( SALOME::SALOME_Exception& S_ex ) {
481 QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
482 QObject::tr(CORBA::string_dup(S_ex.details.text)) );
486 // Update Object Browser
488 SMESHGUI::GetSMESHGUI()->updateObjBrowser();
490 // Clean case, as it is deleted after successful Compute
491 myCase = SMESHHOMARD::HOMARD_Cas::_nil();
494 // Enable new case data selection
495 myArgs->myInMedFileRadio->setEnabled(true);
496 myArgs->myInBrowserRadio->setEnabled(true);
497 myArgs->mySelectInMedFileLineEdit->setReadOnly(false);
498 myArgs->mySelectInMedFileButton->setEnabled(true);
499 myArgs->myInBrowserObject->setReadOnly(false);
500 myAdvOpt->workingDirectoryLineEdit->setReadOnly(false);
501 myAdvOpt->workingDirectoryPushButton->setEnabled(true);
506 //=================================================================================
507 // function : PushOnOK
509 //=================================================================================
510 void SMESHGUI_HomardAdaptDlg::PushOnOK()
512 bool bOK = PushOnApply();
513 if ( bOK ) this->close();
516 void SMESHGUI_HomardAdaptDlg::PushOnHelp()
518 SMESH::ShowHelpFile("adaptation.html#_homard_adapt_anchor");
521 void SMESHGUI_HomardAdaptDlg::updateSelection()
523 LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
524 disconnect(selMgr, 0, this, 0);
525 selMgr->clearFilters();
527 if (!myArgs->myInBrowserRadio->isChecked())
530 SMESH::SetPointRepresentation(false);
531 if (SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow())
532 aViewWindow->SetSelectionMode(ActorSelection);
533 if (myArgs->myInBrowserRadio->isChecked()) {
534 connect(selMgr, SIGNAL(currentSelectionChanged()), this, SLOT(selectionChanged()));
539 void SMESHGUI_HomardAdaptDlg::selectionChanged()
541 if (!myArgs->myInBrowserRadio->isChecked())
544 //SUIT_OverrideCursor aWaitCursor;
545 LightApp_SelectionMgr *selMgr = SMESHGUI::selectionMgr();
549 selMgr->selectedObjects(aList);
550 QString aMeshName = "";
552 if (aList.Extent() == 1) {
553 Handle(SALOME_InteractiveObject) IO = aList.First();
554 myMesh = SMESH::GetMeshByIO(IO);
555 SMESH::GetNameOfSelectedIObjects(selMgr, aMeshName);
556 if (aMeshName.isEmpty()) aMeshName = " ";
557 else aMeshName = aMeshName.trimmed();
560 myMesh = SMESH::SMESH_Mesh::_nil();
563 myArgs->myInBrowserObject->setText(aMeshName);
565 // Out mesh name default value
566 myArgs->myOutMeshNameLineEdit->setText(aMeshName + "_Uniform_R");
568 // Output med file default value
569 // Construct it from Input mesh name and working directory
570 //if (myArgs->myOutMedFileChk->isChecked()) {
571 if (aMeshName.isEmpty()) {
572 myArgs->mySelectOutMedFileLineEdit->setText("");
575 QString aWorkingDir = myAdvOpt->workingDirectoryLineEdit->text().trimmed();
576 QFileInfo aFileInfo (QDir(aWorkingDir), aMeshName + QString("_Uniform_R.med"));
577 for (int ii = 1; aFileInfo.exists(); ii++) {
578 QString anUniqueName = QString("%1_Uniform_R_%2.med").arg(aMeshName).arg(ii);
579 aFileInfo.setFile(QDir(aWorkingDir), anUniqueName);
581 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
586 if (!aMeshName.isEmpty())
590 void SMESHGUI_HomardAdaptDlg::SetFileName()
593 QString fileName0 = myArgs->mySelectInMedFileLineEdit->text().trimmed();
594 QString fileName = SMESH_HOMARD_QT_COMMUN::PushNomFichier(false, QString("med"));
595 //SUIT_OverrideCursor aWaitCursor;
596 if (fileName.isEmpty()) {
597 fileName = fileName0;
598 if (fileName.isEmpty()) return;
600 QFileInfo aFileInInfo (fileName);
601 fileName = aFileInInfo.absoluteFilePath();
602 myArgs->mySelectInMedFileLineEdit->setText(fileName);
604 // Out mesh name default value
605 QString aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(fileName);
606 myArgs->myOutMeshNameLineEdit->setText(aMeshName + "_Uniform_R");
608 // Output med file default value
609 // Construct it from Input med file name and path
610 //if (myArgs->myOutMedFileChk->isChecked()) {
611 std::string fname = fileName.toStdString();
612 size_t lastdot = fname.find_last_of(".");
613 if (lastdot != std::string::npos)
614 fname = fname.substr(0, lastdot);
615 QString fileNameOut = fname.c_str();
616 QFileInfo aFileInfo (fileNameOut + QString("_Uniform_R.med"));
617 for (int ii = 1; aFileInfo.exists(); ii++) {
618 QString anUniqueName = QString("%1_Uniform_R_%2.med").arg(fileNameOut).arg(ii);
619 aFileInfo.setFile(anUniqueName);
621 myArgs->mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
628 // ------------------------------------------------------------------------
629 void SMESHGUI_HomardAdaptDlg::SetBoundaryNo()
631 myArgs->GBBoundaryC->setVisible(0);
632 myArgs->GBBoundaryN->setVisible(0);
636 // ------------------------------------------------------------------------
637 void SMESHGUI_HomardAdaptDlg::SetBoundaryCAO()
639 if (CheckCase(true)) {
640 myArgs->GBBoundaryC->setVisible(1);
641 myArgs->GBBoundaryN->setVisible(0);
645 // ------------------------------------------------------------------------
646 void SMESHGUI_HomardAdaptDlg::SetBoundaryNonCAO()
648 myArgs->GBBoundaryC->setVisible(0);
649 myArgs->GBBoundaryN->setVisible(1);
652 // ------------------------------------------------------------------------
653 void SMESHGUI_HomardAdaptDlg::AddBoundaryCAO(QString newBoundary)
654 // ------------------------------------------------------------------------
656 myArgs->CBBoundaryCAO->insertItem(0,newBoundary);
657 myArgs->CBBoundaryCAO->setCurrentIndex(0);
659 // ------------------------------------------------------------------------
660 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAONew()
661 // ------------------------------------------------------------------------
663 SMESH_CreateBoundaryCAO *BoundaryDlg = new SMESH_CreateBoundaryCAO
664 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
667 // ------------------------------------------------------------------------
668 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOEdit()
669 // ------------------------------------------------------------------------
671 if (myArgs->CBBoundaryCAO->currentText() == QString("")) return;
672 SMESH_EditBoundaryCAO *BoundaryDlg = new SMESH_EditBoundaryCAO
673 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
674 "Case_1", myArgs->CBBoundaryCAO->currentText());
678 // ------------------------------------------------------------------------
679 void SMESHGUI_HomardAdaptDlg::PushBoundaryCAOHelp()
681 SMESH::ShowHelpFile(QString("homard_create_boundary.html#cao-boundary"));
684 // ------------------------------------------------------------------------
685 void SMESHGUI_HomardAdaptDlg::SetBoundaryD()
687 MESSAGE("Debut de SetBoundaryD ");
688 if (myArgs->CBBoundaryD->isChecked()) {
689 bool bOK = CheckCase(true);
691 myArgs->GBBoundaryD->setVisible(1);
694 myArgs->GBBoundaryD->setVisible(0);
695 myArgs->CBBoundaryD->setChecked(0);
696 myArgs->CBBoundaryD->setCheckState(Qt::Unchecked);
700 myArgs->GBBoundaryD->setVisible(0);
703 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
704 //myArgs->mySelectInMedFileButton->hide();
708 // ------------------------------------------------------------------------
709 void SMESHGUI_HomardAdaptDlg::AddBoundaryDi(QString newBoundary)
710 // ------------------------------------------------------------------------
712 myArgs->CBBoundaryDi->insertItem(0,newBoundary);
713 myArgs->CBBoundaryDi->setCurrentIndex(0);
715 // ------------------------------------------------------------------------
716 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiNew()
717 // ------------------------------------------------------------------------
719 SMESH_CreateBoundaryDi *BoundaryDlg = new SMESH_CreateBoundaryDi(this, true,
720 SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", "");
723 // ------------------------------------------------------------------------
724 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiEdit()
725 // ------------------------------------------------------------------------
727 if (myArgs->CBBoundaryDi->currentText() == QString("")) return;
728 SMESH_EditBoundaryDi *BoundaryDlg = new SMESH_EditBoundaryDi
729 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
730 "Case_1", myArgs->CBBoundaryDi->currentText());
734 // ------------------------------------------------------------------------
735 void SMESHGUI_HomardAdaptDlg::PushBoundaryDiHelp()
737 SMESH::ShowHelpFile(QString("homard_create_boundary.html#discrete-boundary"));
740 // ------------------------------------------------------------------------
741 void SMESHGUI_HomardAdaptDlg::SetBoundaryA()
743 MESSAGE("Debut de SetBoundaryA ");
744 if (myArgs->CBBoundaryA->isChecked()) {
745 bool bOK = CheckCase(true);
747 myArgs->GBBoundaryA->setVisible(1);
750 myArgs->GBBoundaryA->setVisible(0);
751 myArgs->CBBoundaryA->setChecked(0);
752 myArgs->CBBoundaryA->setCheckState(Qt::Unchecked);
756 myArgs->GBBoundaryA->setVisible(0);
759 //myArgs->mySelectInMedFileLineEdit->setReadOnly(true);
760 //myArgs->mySelectInMedFileButton->hide();
764 // ------------------------------------------------------------------------
765 void SMESHGUI_HomardAdaptDlg::AddBoundaryAn(QString newBoundary)
766 // ------------------------------------------------------------------------
768 MESSAGE("Debut de AddBoundaryAn ");
769 // Ajout d'une nouvelle colonne
770 int nbcol = myArgs->TWBoundary->columnCount();
771 // MESSAGE("nbcol " << nbcol);
773 myArgs->TWBoundary->setColumnCount ( nbcol ) ;
774 QTableWidgetItem *__colItem = new QTableWidgetItem();
775 __colItem->setText(tr(newBoundary.toStdString().c_str()));
776 myArgs->TWBoundary->setHorizontalHeaderItem(nbcol-1, __colItem);
777 /* TWBoundary->horizontalHeaderItem(nbcol-1)->setFlags( Qt::ItemIsSelectable|Qt::ItemIsEnabled );*/
778 // Chaque case est a cocher
779 int nbrow = myArgs->TWBoundary->rowCount();
780 // MESSAGE("nbrow " << nbrow);
781 for ( int i = 0; i < nbrow; i++ )
783 myArgs->TWBoundary->setItem( i, nbcol-1, new QTableWidgetItem( QString ("") ) );
784 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( 0 );
785 myArgs->TWBoundary->item( i, nbcol-1 )->setFlags( Qt::ItemIsUserCheckable|Qt::ItemIsEnabled );
786 myArgs->TWBoundary->item( i, nbcol-1 )->setCheckState( Qt::Unchecked );
788 myArgs->TWBoundary->resizeColumnToContents(nbcol-1);
789 // TWBoundary->resizeRowsToContents();
790 // MESSAGE("Fin de AddBoundaryAn ");
792 // ------------------------------------------------------------------------
793 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnNew()
794 // ------------------------------------------------------------------------
796 SMESH_CreateBoundaryAn *BoundaryDlg = new SMESH_CreateBoundaryAn
797 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1");
800 // ------------------------------------------------------------------------
801 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnEdit()
802 // ------------------------------------------------------------------------
805 int nbcol = myArgs->TWBoundary->columnCount();
806 for ( int i = 1; i < nbcol; i++ ) {
807 QTableWidgetItem *__colItem = new QTableWidgetItem();
808 __colItem = myArgs->TWBoundary->horizontalHeaderItem(i);
809 nom = QString(__colItem->text()) ;
810 MESSAGE("nom "<<nom.toStdString().c_str());
811 if (nom != QString("")) {
812 SMESH_EditBoundaryAn *BoundaryDlg = new SMESH_EditBoundaryAn
813 (this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen), "Case_1", nom);
818 // ------------------------------------------------------------------------
819 void SMESHGUI_HomardAdaptDlg::PushBoundaryAnHelp()
820 // ------------------------------------------------------------------------
822 SMESH::ShowHelpFile(QString("homard_create_boundary.html#analytical-boundary"));
825 //=================================================================================
826 // function : SMESHGUI_HomardAdaptArguments()
828 //=================================================================================
829 SMESHGUI_HomardAdaptArguments::SMESHGUI_HomardAdaptArguments(QWidget* parent)
835 SMESHGUI_HomardAdaptArguments::~SMESHGUI_HomardAdaptArguments()
839 void SMESHGUI_HomardAdaptArguments::setupUi()
842 QGroupBox* aMeshIn = new QGroupBox( tr( "MeshIn" ), this );
843 myInMedFileRadio = new QRadioButton( tr( "MEDFile" ), aMeshIn );
844 myInBrowserRadio = new QRadioButton( tr( "Browser" ), aMeshIn );
845 myInBrowserObject = new QLineEdit( aMeshIn );
846 mySelectInMedFileButton = new QPushButton("...", aMeshIn);
847 mySelectInMedFileLineEdit = new QLineEdit( aMeshIn );
849 QGridLayout* meshIn = new QGridLayout( aMeshIn );
851 meshIn->setMargin( 9 );
852 meshIn->setSpacing( 6 );
853 meshIn->addWidget( myInMedFileRadio, 0, 0, 1, 1 );
854 meshIn->addWidget( myInBrowserRadio, 0, 1, 1, 1 );
855 meshIn->addWidget( mySelectInMedFileButton, 1, 0, 1, 1 );
856 meshIn->addWidget( mySelectInMedFileLineEdit, 1, 1, 1, 2 );
857 meshIn->addWidget( myInBrowserObject, 0, 2, 1, 1 );
859 myInMeshGroup = new QButtonGroup( this );
860 myInMeshGroup->addButton( myInMedFileRadio, 0 );
861 myInMeshGroup->addButton( myInBrowserRadio, 1 );
864 QGroupBox* aMeshOut = new QGroupBox( tr( "MeshOut" ), this );
865 QLabel* meshName = new QLabel(tr("MeshName"), aMeshOut);
866 QSpacerItem* secondHspacer = new QSpacerItem(100, 30);
867 myOutMeshNameLineEdit = new QLineEdit(aMeshOut);
868 myOutMedFileChk = new QCheckBox(tr("MEDFile"), aMeshOut);
869 mySelectOutMedFileButton = new QPushButton("...", aMeshOut);
870 mySelectOutMedFileLineEdit = new QLineEdit(aMeshOut);
871 myOutPublishChk = new QCheckBox(tr("Publish_MG_ADAPT"), aMeshOut);
873 QGridLayout* meshOut = new QGridLayout( aMeshOut );
875 meshOut->setMargin( 9 );
876 meshOut->setSpacing( 6 );
877 meshOut->addWidget( meshName, 0, 0, 1,1 );
878 meshOut->addItem( secondHspacer, 0, 1, 1, 1 );
879 meshOut->addWidget( myOutMeshNameLineEdit, 0, 2,1,1);
880 meshOut->addWidget( myOutMedFileChk, 1, 0,1,1 );
881 meshOut->addWidget( mySelectOutMedFileButton, 1, 1,1,1 );
882 meshOut->addWidget( mySelectOutMedFileLineEdit, 1, 2,1,1);
883 meshOut->addWidget( myOutPublishChk, 2, 0,1,1 );
886 QGroupBox *GBTypeConf = new QGroupBox(tr("Conformity type"), this);
887 RBConforme = new QRadioButton(tr("Conformal"), GBTypeConf);
888 RBNonConforme = new QRadioButton(tr("Non conformal"), GBTypeConf);
889 RBConforme->setChecked(true);
891 QHBoxLayout *hboxLayout2 = new QHBoxLayout(GBTypeConf);
892 hboxLayout2->setSpacing(6);
893 hboxLayout2->setContentsMargins(9, 9, 9, 9);
894 hboxLayout2->addWidget(RBConforme);
895 hboxLayout2->addWidget(RBNonConforme);
898 GBTypeBoun = new QGroupBox(tr("Boundary type"), this);
900 RBBoundaryNo = new QRadioButton(tr("No boundary"), GBTypeBoun);
901 RBBoundaryCAO = new QRadioButton(tr("CAO"), GBTypeBoun);
902 RBBoundaryNonCAO = new QRadioButton(tr("Non CAO"), GBTypeBoun);
903 RBBoundaryNo->setChecked(true);
906 GBBoundaryC = new QGroupBox(tr("CAO"), GBTypeBoun);
907 QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed);
908 sizePolicy1.setHorizontalStretch(0);
909 sizePolicy1.setVerticalStretch(0);
910 sizePolicy1.setHeightForWidth(GBBoundaryC->sizePolicy().hasHeightForWidth());
911 GBBoundaryC->setSizePolicy(sizePolicy1);
913 CBBoundaryCAO = new QComboBox(GBBoundaryC);
914 CBBoundaryCAO->setSizeAdjustPolicy(QComboBox::AdjustToContents);
916 PBBoundaryCAONew = new QPushButton(tr("New"), GBBoundaryC);
917 PBBoundaryCAOEdit = new QPushButton(tr("Edit"), GBBoundaryC);
918 PBBoundaryCAOHelp = new QPushButton(tr("Help"), GBBoundaryC);
920 PBBoundaryCAONew->setAutoDefault(false);
921 PBBoundaryCAOEdit->setAutoDefault(false);
922 PBBoundaryCAOHelp->setAutoDefault(false);
924 _2 = new QGridLayout(GBBoundaryC);
926 _2->setContentsMargins(9, 9, 9, 9);
927 _2->addWidget(CBBoundaryCAO, 0, 0, 1, 1);
928 QSpacerItem* spacerItem3 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
929 _2->addItem(spacerItem3, 0, 1, 1, 1);
930 _2->addWidget(PBBoundaryCAONew, 0, 2, 1, 1);
931 _2->addWidget(PBBoundaryCAOEdit, 0, 3, 1, 1);
932 _2->addWidget(PBBoundaryCAOHelp, 0, 4, 1, 1);
934 // Non CAO (discrete / analytical)
935 GBBoundaryN = new QGroupBox(GBTypeBoun);
936 CBBoundaryD = new QCheckBox(tr("Discrete boundary"), GBBoundaryN);
937 CBBoundaryA = new QCheckBox(tr("Analytical boundary"), GBBoundaryN);
939 //hboxLayout3 = new QHBoxLayout(GBBoundaryN);
940 //hboxLayout3->setSpacing(6);
941 //hboxLayout3->setContentsMargins(0, 0, 0, 0);
942 //hboxLayout3->addWidget(CBBoundaryD);
943 //hboxLayout3->addWidget(CBBoundaryA);
946 GBBoundaryD = new QGroupBox(tr("Discrete boundary"), GBBoundaryN);
947 sizePolicy1.setHeightForWidth(GBBoundaryD->sizePolicy().hasHeightForWidth());
948 GBBoundaryD->setSizePolicy(sizePolicy1);
949 gridLayout = new QGridLayout(GBBoundaryD);
950 gridLayout->setSpacing(6);
951 gridLayout->setContentsMargins(9, 9, 9, 9);
952 CBBoundaryDi = new QComboBox(GBBoundaryD);
953 CBBoundaryDi->setSizeAdjustPolicy(QComboBox::AdjustToContents);
955 gridLayout->addWidget(CBBoundaryDi, 0, 0, 1, 1);
957 QSpacerItem* spacerItem5 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum);
958 gridLayout->addItem(spacerItem5, 0, 1, 1, 1);
960 PBBoundaryDiNew = new QPushButton(tr("New"), GBBoundaryD);
961 PBBoundaryDiEdit = new QPushButton(tr("Edit"), GBBoundaryD);
962 PBBoundaryDiHelp = new QPushButton(tr("Help"), GBBoundaryD);
964 PBBoundaryDiNew->setAutoDefault(false);
965 PBBoundaryDiEdit->setAutoDefault(false);
966 PBBoundaryDiHelp->setAutoDefault(false);
968 gridLayout->addWidget(PBBoundaryDiNew, 0, 2, 1, 1);
969 gridLayout->addWidget(PBBoundaryDiEdit, 0, 3, 1, 1);
970 gridLayout->addWidget(PBBoundaryDiHelp, 0, 4, 1, 1);
973 GBBoundaryA = new QGroupBox(tr("Analytical boundary"), GBBoundaryN);
974 GBBoundaryA->setMinimumSize(QSize(548, 200));
975 formLayout = new QFormLayout(GBBoundaryA);
976 TWBoundary = new QTableWidget(GBBoundaryA);
977 if (TWBoundary->columnCount() < 1)
978 TWBoundary->setColumnCount(1);
979 QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
980 TWBoundary->setHorizontalHeaderItem(0, __qtablewidgetitem);
981 TWBoundary->setEditTriggers(QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked);
982 TWBoundary->setShowGrid(true);
983 TWBoundary->setRowCount(0);
984 TWBoundary->setColumnCount(1);
986 formLayout->setWidget(0, QFormLayout::LabelRole, TWBoundary);
988 gridLayout1 = new QGridLayout();
989 gridLayout1->setSpacing(6);
990 gridLayout1->setContentsMargins(0, 0, 0, 0);
992 PBBoundaryAnNew = new QPushButton(tr("New"), GBBoundaryA);
993 PBBoundaryAnEdit = new QPushButton(tr("Edit"), GBBoundaryA);
994 PBBoundaryAnHelp = new QPushButton(tr("Help"), GBBoundaryA);
996 PBBoundaryAnNew->setAutoDefault(false);
997 PBBoundaryAnEdit->setAutoDefault(false);
998 PBBoundaryAnHelp->setAutoDefault(false);
1000 gridLayout1->addWidget(PBBoundaryAnNew, 0, 0, 1, 1);
1001 gridLayout1->addWidget(PBBoundaryAnEdit, 1, 0, 1, 1);
1002 gridLayout1->addWidget(PBBoundaryAnHelp, 2, 0, 1, 1);
1004 formLayout->setLayout(0, QFormLayout::FieldRole, gridLayout1);
1006 // Boundary No Layout
1007 QGridLayout* aBoundaryNoLayout = new QGridLayout(GBBoundaryN);
1008 //aBoundaryNoLayout->addLayout(hboxLayout3, 0, 0);
1009 aBoundaryNoLayout->addWidget(CBBoundaryD, 0, 0);
1010 aBoundaryNoLayout->addWidget(CBBoundaryA, 0, 1);
1011 aBoundaryNoLayout->addWidget(GBBoundaryD, 1, 0, 1, 2);
1012 aBoundaryNoLayout->addWidget(GBBoundaryA, 2, 0, 1, 2);
1014 // Boundary type Layout
1015 QGridLayout* aBoundTypeLayout = new QGridLayout(GBTypeBoun);
1016 aBoundTypeLayout->addWidget(RBBoundaryNo, 0, 0);
1017 aBoundTypeLayout->addWidget(RBBoundaryCAO, 0, 1);
1018 aBoundTypeLayout->addWidget(RBBoundaryNonCAO, 0, 2);
1020 aBoundTypeLayout->addWidget(GBBoundaryC, 1, 0, 1, 3);
1021 aBoundTypeLayout->addWidget(GBBoundaryN, 2, 0, 1, 3);
1024 QGridLayout *argumentsLayout = new QGridLayout(this);
1025 argumentsLayout->addWidget(aMeshIn, 0, 0, 1, 3);
1026 argumentsLayout->addWidget(aMeshOut, 1, 0, 1, 3);
1027 argumentsLayout->addWidget(GBTypeConf, 2, 0, 1, 3);
1028 argumentsLayout->addWidget(GBTypeBoun, 3, 0, 1, 3);
1029 argumentsLayout->setColumnStretch( 1, 5 );
1030 argumentsLayout->setRowStretch( 4, 5 );
1032 QTableWidgetItem *___qtablewidgetitem = TWBoundary->horizontalHeaderItem(0);
1033 ___qtablewidgetitem->setText(tr("a_virer"));
1036 myInMedFileRadio->setChecked( true );
1037 modeInChanged( MedFile );
1038 RBBoundaryNo->setChecked( true );
1041 myOutMedFileChk->setChecked(true);
1042 CBBoundaryCAO->setCurrentIndex(-1);
1043 CBBoundaryDi->setCurrentIndex(-1);
1046 connect(myInMeshGroup, SIGNAL(buttonClicked(int)), this, SLOT(modeInChanged(int)));
1047 connect(myOutMedFileChk, SIGNAL(stateChanged(int)), this, SLOT(onOutMedFileChk(int)));
1048 connect(myOutPublishChk, SIGNAL(stateChanged(int)), this, SLOT(onOutPublishChk(int)));
1049 connect(mySelectOutMedFileButton, SIGNAL(pressed()), this, SLOT(onSelectOutMedFileButton()));
1050 emit updateSelection();
1053 void SMESHGUI_HomardAdaptArguments::modeInChanged( int theMode )
1056 if (theMode == MedFile) {
1057 mySelectInMedFileLineEdit->show();
1058 mySelectInMedFileButton->show();
1059 myInBrowserObject->hide();
1062 mySelectInMedFileLineEdit->hide();
1063 mySelectInMedFileButton->hide();
1064 myInBrowserObject->show();
1065 emit updateSelection();
1069 void SMESHGUI_HomardAdaptArguments::onSelectOutMedFileButton()
1072 QString fileName0 = mySelectOutMedFileLineEdit->text().trimmed();
1074 // Ask user for the new value
1075 QString filtre = QString("Med");
1076 filtre += QString(" files (*.") + QString("med") + QString(");;");
1077 QString fileName = QFileDialog::getSaveFileName(this, tr("SAVE_MED"), QString(""), filtre);
1079 // Check the new value
1080 if (fileName.isEmpty()) fileName = fileName0;
1082 QFileInfo aFileInfo (fileName);
1083 mySelectOutMedFileLineEdit->setText(aFileInfo.absoluteFilePath());
1086 void SMESHGUI_HomardAdaptArguments::clear()
1088 mySelectInMedFileLineEdit->clear();
1089 myInBrowserObject->clear();
1091 myOutMeshNameLineEdit->clear();
1092 mySelectOutMedFileLineEdit->clear();
1095 void SMESHGUI_HomardAdaptArguments::onOutMedFileChk(int state)
1097 if (state == Qt::Checked) {
1098 mySelectOutMedFileButton->show();
1099 mySelectOutMedFileLineEdit->show();
1100 mySelectOutMedFileButton->setEnabled(true);
1101 mySelectOutMedFileLineEdit->setEnabled(true);
1104 mySelectOutMedFileButton->setEnabled(false);
1105 mySelectOutMedFileLineEdit->setEnabled(false);
1106 myOutPublishChk->setChecked(true);
1110 void SMESHGUI_HomardAdaptArguments::onOutPublishChk(int state)
1112 if (state == Qt::Unchecked) {
1113 myOutMedFileChk->setChecked(true);
1117 //////////////////////////////////////////
1118 // SMESHGUI_HomardAdaptAdvanced
1119 //////////////////////////////////////////
1121 SMESHGUI_HomardAdaptAdvanced::SMESHGUI_HomardAdaptAdvanced(QWidget* parent)
1125 connect(workingDirectoryPushButton, SIGNAL(pressed()),
1126 this, SLOT(onWorkingDirectoryPushButton()));
1129 SMESHGUI_HomardAdaptAdvanced::~SMESHGUI_HomardAdaptAdvanced()
1133 void SMESHGUI_HomardAdaptAdvanced::setupWidget()
1135 //this->resize(337, 369);
1138 logGroupBox = new QGroupBox(this);
1139 QGridLayout* logGroupBoxLayout = new QGridLayout(this);
1140 logGroupBoxLayout->setMargin( 9 );
1141 logGroupBoxLayout->setSpacing( 6 );
1142 logGroupBoxLayout->addWidget(logGroupBox, 0, 0, 1, 1);
1144 QGridLayout* logsLayout = new QGridLayout(logGroupBox);
1145 logsLayout->setMargin( 9 );
1146 logsLayout->setSpacing( 6 );
1148 // Working directory + Verbose level layout
1149 QGridLayout* gridLayout = new QGridLayout();
1151 // Working directory
1152 workingDirectoryLabel = new QLabel(logGroupBox);
1153 workingDirectoryLineEdit = new QLineEdit(logGroupBox);
1154 workingDirectoryPushButton = new QPushButton(logGroupBox);
1156 gridLayout->addWidget(workingDirectoryLabel, 0, 0, 1, 1);
1157 gridLayout->addWidget(workingDirectoryLineEdit, 0, 1, 1, 1);
1158 gridLayout->addWidget(workingDirectoryPushButton, 0, 2, 1, 1);
1161 verboseLevelLabel = new QLabel(logGroupBox);
1162 verboseLevelSpin = new QSpinBox(logGroupBox);
1164 gridLayout->addWidget(verboseLevelLabel, 1, 0, 1, 1);
1165 gridLayout->addWidget(verboseLevelSpin, 1, 1, 1, 1);
1167 logsLayout->addLayout(gridLayout, 0, 0, 1, 1);
1169 // logInFileCheck + removeLogOnSuccessCheck
1170 QHBoxLayout* horizontalLayout = new QHBoxLayout();
1172 logInFileCheck = new QCheckBox(logGroupBox);
1173 removeLogOnSuccessCheck = new QCheckBox(logGroupBox);
1175 logInFileCheck->setChecked(true);
1176 removeLogOnSuccessCheck->setChecked(true);
1178 horizontalLayout->addWidget(logInFileCheck);
1179 horizontalLayout->addWidget(removeLogOnSuccessCheck);
1181 logsLayout->addLayout(horizontalLayout, 1, 0, 1, 1);
1183 // Keep Working Files Check
1184 keepWorkingFilesCheck = new QCheckBox(logGroupBox);
1185 keepWorkingFilesCheck->setAutoExclusive(false);
1186 keepWorkingFilesCheck->setChecked(false);
1188 logsLayout->addWidget(keepWorkingFilesCheck, 2, 0, 1, 1);
1190 //logsLayout->setColumnStretch( 1, 5 );
1191 //logsLayout->setRowStretch( 3, 5 );
1194 void SMESHGUI_HomardAdaptAdvanced::onWorkingDirectoryPushButton()
1196 QString aWorkingDir = QFileDialog::getExistingDirectory();
1197 if (!(aWorkingDir.isEmpty())) workingDirectoryLineEdit->setText(aWorkingDir);