-using namespace std;
+// Copyright (C) 2011-2024 CEA, EDF
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
#include "MonEditCase.h"
-#include <QMessageBox>
-
#include "SalomeApp_Tools.h"
#include "HOMARDGUI_Utils.h"
#include "HomardQtCommun.h"
#include <utilities.h>
+using namespace std;
-// -------------------------------------------------------------
-MonEditCase::MonEditCase ( QWidget* parent, bool modal,
- HOMARD::HOMARD_Gen_var myHomardGen,
- QString CaseName ):
// -------------------------------------------------------------
/* Constructs a MonEditCase
herite de MonCreateCase
*/
- MonCreateCase(parent, modal, myHomardGen)
+// -------------------------------------------------------------
+MonEditCase::MonEditCase ( bool modal,
+ HOMARD::HOMARD_Gen_var myHomardGen,
+ QString CaseName ):
+ MonCreateCase(modal, myHomardGen)
{
MESSAGE("Debut de MonEditCase" << CaseName.toStdString().c_str());
- setWindowTitle("Edit case");
+ setWindowTitle(QObject::tr("HOM_CASE_EDIT_WINDOW_TITLE"));
_aCaseName = CaseName;
- aCase = _myHomardGen->GetCas(_aCaseName.toStdString().c_str());
+ aCase = myHomardGen->GetCase(_aCaseName.toStdString().c_str());
InitValEdit();
}
// ------------------------------
// ------------------------------
{
}
-
-
// ------------------------------
void MonEditCase::InitValEdit()
// ------------------------------
{
- MESSAGE("Debut de InitValEdit");
- LECaseName->setText(_aCaseName);
- LECaseName->setReadOnly(true);
+ MESSAGE("InitValEdit");
+ LEName->setText(_aCaseName);
+ LEName->setReadOnly(true);
+
+ QString aDirName = aCase->GetDirName();
+ LEDirName->setText(aDirName);
+ LEDirName->setReadOnly(true);
+ PushDir->setVisible(0);
+
+ QString _aitername=aCase->GetIter0Name();
+ HOMARD::HOMARD_Iteration_var aIter = myHomardGen->GetIteration(_aitername.toStdString().c_str());
+ QString aFileName = aIter->GetMeshFile();
+ LEFileName->setText(aFileName);
+ LEFileName->setReadOnly(true);
+ PushFichier->setVisible(0);
- QString aDirName = aCase->GetDirName();
- LEDirName->setText(aDirName);
- LEDirName->setReadOnly(true);
- PushDir->setVisible(0);
+ int ConfType=aCase->GetConfType();
+ if ( ( ConfType == 0 ) || ( ConfType == -1 ) ) { RBConforme->setChecked(true); }
+ else { RBNonConforme->setChecked(true); };
+ RBConforme->setEnabled(false);
+ RBNonConforme->setEnabled(false);
+ int ExtType=aCase->GetExtType();
- QString _aitername=aCase->GetIter0Name();
- HOMARD::HOMARD_Iteration_var aIter = _myHomardGen->GetIteration(_aitername.toStdString().c_str());
- QString aFileName = aIter->GetMeshFile();
- LEFileName->setText(aFileName);
- LEFileName->setReadOnly(true);
- PushFichier->setVisible(0);
- int ConfType=aCase->GetConfType();
- if(ConfType==1)
+// Suivi de frontiere
+// A priori, aucun affichage
+ GBTypeBoun->setVisible(0);
+ CBBoundaryD->setVisible(0);
+ CBBoundaryA->setVisible(0);
+ GBBoundaryC->setVisible(0);
+ GBBoundaryD->setVisible(0);
+ GBBoundaryA->setVisible(0);
+// On passe en revue tous les couples (frontiere,groupe) du cas
+ HOMARD::ListBoundaryGroupType_var mesBoundarys = aCase->GetBoundaryGroup();
+ if (mesBoundarys->length()>0)
+ {
+ QStringList ListeFron ;
+ QString NomFron ;
+ bool BounCAO = false ;
+ bool BounDi = false ;
+ bool BounAn = false ;
+ for (int i=0; i<mesBoundarys->length(); i++)
+ {
+// Nom de la frontiere
+ NomFron = mesBoundarys[i++];
+ MESSAGE("NomFron "<<NomFron.toStdString().c_str());
+// L'objet associe pour en deduire le type
+ HOMARD::HOMARD_Boundary_var myBoundary = myHomardGen->GetBoundary(NomFron.toStdString().c_str());
+ int type_obj = myBoundary->GetType() ;
+ MESSAGE("type_obj "<<type_obj);
+// C'est une frontiere CAO
+// Remarque : on ne gere pas les groupes
+ if ( type_obj==-1 )
{
- GBTypeNoConf->setVisible(0);
- RBConforme->setChecked(true);
+ BounCAO = true ;
+ CBBoundaryCAO->addItem(NomFron);
}
- else
+// C'est une frontiere discrete
+// Rermarque : on ne gere pas les groupes
+ else if ( type_obj==0 )
{
- RBNonConforme->setChecked(true);
- GBTypeNoConf->setVisible(1);
- RB1NpM->setEnabled(false);
- RB1NpA->setEnabled(false);
- RBQuelconque->setEnabled(false);
- };
-
- if (_ConfType==2) { RB1NpM->setChecked(true);};
- if (_ConfType==3) { RB1NpA->setChecked(true);};
- if (_ConfType==4) { RBQuelconque->setChecked(true);};
-
- RBNonConforme->setEnabled(false);
- RBConforme->setEnabled(false);
-
-// Affichage du mode de suivi de frontiere
- CBBoundaryA->setVisible(0);
- GBBoundaryA->setVisible(0);
- CBBoundaryD->setVisible(0);
- GBBoundaryD->setVisible(0);
-
- HOMARD::ListBoundaryGroupType_var mesBoundarys = aCase->GetBoundaryGroup();
- if (mesBoundarys->length()>0)
+ BounDi = true ;
+ CBBoundaryDi->addItem(NomFron);
+ }
+// C'est une frontiere analytique
+ else
{
- bool BounDi = false ;
- bool BounAn = false ;
- for (int i=0; i<mesBoundarys->length(); i++)
+ BounAn = true ;
+ int nbcol = TWBoundary->columnCount();
+// On ajoute une ligne pour le groupe
+ TWBoundary->insertRow(0);
+// La colonne 0 comporte le nom du groupe
+ TWBoundary->setItem( 0, 0, new QTableWidgetItem(QString(mesBoundarys[i]).trimmed()));
+// TWBoundary->item( 0, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
+// Chacune des colonnes suivantes est associé a une frontiere deja presente : on y met une
+// case non cochee
+ for ( int j = 1; j < nbcol; j++ )
{
- HOMARD::HOMARD_Boundary_var myBoundary = _myHomardGen->GetBoundary((mesBoundarys)[i]);
- int type_obj = myBoundary->GetBoundaryType() ;
-
- if ( type_obj==0 )
- { CBBoundaryDi->addItem(QString((mesBoundarys)[i++]));
- BounDi = true ;
- }
- else
- {
- i++ ;
- BounAn = true ;
- };
+ TWBoundary->setItem( 0, j, new QTableWidgetItem( QString ("") ) );
+ TWBoundary->item( 0, j )->setFlags( 0 );
+ TWBoundary->item( 0, j )->setFlags( Qt::ItemIsUserCheckable );
+ TWBoundary->item( 0, j )->setCheckState( Qt::Unchecked );
+ }
+// On cherche si la frontiere en cours d'examen a deja ete rencontree :
+// si oui, on stocke son numero de colonne
+ int ok = -1 ;
+ for ( int nufr = 0 ; nufr<ListeFron.size(); nufr++)
+ { if ( ListeFron[nufr] == NomFron ) ok = nufr+1 ; }
+// si non, on ajoute une colonne
+ if ( ok < 0 )
+ {
+ ListeFron.append(NomFron);
+ ok = ListeFron.size() ;
+ AddBoundaryAn(NomFron);
}
- MESSAGE("BounDi "<<BounDi<<", BounAn "<<BounAn);
- if ( BounAn )
- { GBBoundaryA->setVisible(1);
- GBBoundaryA->setDisabled(true);}
- if ( BounDi )
- { GBBoundaryD->setVisible(1);
- CBBoundaryDi->setDisabled(true);
- PBBoundaryDiNew->setVisible(0);}
+// on coche la case correspondant au couple (frontiere,groupe) en cours d'examen
+ TWBoundary->item( 0, ok )->setCheckState( Qt::Checked );
}
+ }
+ MESSAGE("BounCAO "<<BounCAO<<",BounDi "<<BounDi<<", BounAn "<<BounAn);
+ GBTypeBoun->setVisible(1);
+ if ( BounCAO )
+ { RBBoundaryCAO->setChecked(true);
+ GBBoundaryC->setVisible(1);
+ CBBoundaryCAO->setDisabled(true);
+ PBBoundaryCAONew->setVisible(0);
+ PBBoundaryCAOHelp->setVisible(0); }
+ if ( BounDi )
+ { RBBoundaryNonCAO->setChecked(true);
+ GBBoundaryD->setVisible(1);
+ CBBoundaryDi->setDisabled(true);
+ PBBoundaryDiNew->setVisible(0);
+ PBBoundaryDiHelp->setVisible(0); }
+ if ( BounAn )
+ { RBBoundaryNonCAO->setChecked(true);
+ GBBoundaryA->setVisible(1);
+// On rend les cases non modifiables.
+// On ne peut pas le faire pour tout le tableau sinon on perd l'ascenseur !
+ int nbcol = TWBoundary->columnCount();
+ int nbrow = TWBoundary->rowCount();
+ for ( int i = 0; i < nbrow; i++ )
+ { for ( int j = 0; j < nbcol; j++ ) TWBoundary->item( i, j )->setFlags( Qt::ItemIsSelectable ); }
+// on met un nom blanc au coin
+ QTableWidgetItem *__colItem = new QTableWidgetItem();
+ __colItem->setText(QApplication::translate("CreateCase", "", 0));
+ TWBoundary->setHorizontalHeaderItem(0, __colItem);
+// on cache les boutons inutiles
+ PBBoundaryAnNew->setVisible(0);
+ PBBoundaryAnHelp->setVisible(0);
+ }
+ RBBoundaryNo->setEnabled(false);
+ RBBoundaryCAO->setEnabled(false);
+ RBBoundaryNonCAO->setEnabled(false);
+ }
+//
+// Les options avancees (non modifiables)
+ CBAdvanced->setVisible(0) ;
+ CBAdvanced->setEnabled(false) ;
+ int Pyram = aCase->GetPyram();
+ MESSAGE("Pyram "<<Pyram);
+ if ( ( Pyram > 0 ) || ( ConfType < 0 ) || ( ConfType > 1 ) || ( ExtType > 0 ) )
+ { GBAdvancedOptions->setVisible(1);
+//
+ if ( Pyram > 0 )
+ { CBPyramid->setChecked(true);
+ CBPyramid->setVisible(1);
+ }
+ else
+ { CBPyramid->setChecked(false);
+ CBPyramid->setVisible(0);
+ }
+ CBPyramid->setEnabled(false);
+//
+ if ( ( ConfType == 0 ) || ( ConfType == -1 ) )
+ { if ( ConfType == 0 ) { RBStandard->setChecked(true); }
+ else { RBBox->setChecked(true); }
+ RBStandard->setVisible(1);
+ RBBox->setVisible(1);
+ RBNC1NpA->setVisible(0);
+ RBNCQuelconque->setVisible(0);
+ }
+ else
+ { if (ConfType==-2) { RBBox->setChecked(true);};
+ if (ConfType==1) { RBStandard->setChecked(true);};
+ if (ConfType==2) { RBNC1NpA->setChecked(true);};
+ if (ConfType==3) { RBNCQuelconque->setChecked(true);};
+ RBStandard->setVisible(1);
+ RBBox->setVisible(1);
+ RBNC1NpA->setVisible(1);
+ RBNCQuelconque->setVisible(1);
+ }
+ RBStandard->setEnabled(false);
+ RBBox->setEnabled(false);
+ RBNC1NpA->setEnabled(false);
+ RBNCQuelconque->setEnabled(false);
+//
+ if ( ExtType == 0 )
+ { GBFormat->setVisible(0);
+ RBMED->setChecked(true);
+ }
+ else
+ { GBFormat->setVisible(1);
+ RBMED->setVisible(1);
+ RBSaturne->setVisible(1);
+ RBSaturne2D->setVisible(1);
+ if ( ExtType == 1 ) { RBSaturne->setChecked(true); }
+ else { RBSaturne2D->setChecked(true); }
+ }
+ RBMED->setEnabled(false);
+ RBSaturne->setEnabled(false);
+ RBSaturne2D->setEnabled(false);
+ }
+ else
+ { GBAdvancedOptions->setVisible(0);
+ CBPyramid->setChecked(false);
+ RBStandard->setChecked(true);
+ RBMED->setChecked(true);
+ }
+//
+// L'etat
+ int etat = aCase->GetState();
+ MESSAGE("etat "<<etat);
+ if ( etat == 0 ) { Comment->setText(QApplication::translate("CreateCase", "HOM_CASE_EDIT_STATE_0", 0)); }
+ else { Comment->setText(QApplication::translate("CreateCase", "HOM_CASE_EDIT_STATE", 0)); }
+
+ Comment->setVisible(1);
+//
+ adjustSize();
}
// -------------------------------------
// -------------------------------------
{
return true ;
-
};