Salome HOME
updated copyright message
[modules/homard.git] / src / HOMARDGUI / MonCreateCase.cxx
index 417bae8f92d4e44e0ddd4fa283d4f411d3a5420e..df20821345aa1f1070b28ff07a5e82c9d9183fc0 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2011-2013  CEA/DEN, EDF R&D
+// Copyright (C) 2011-2023  CEA/DEN, EDF R&D
 //
 // 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.
+// 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
 //
 
 #include "MonCreateCase.h"
+#include "MonCreateBoundaryCAO.h"
+#include "MonEditBoundaryCAO.h"
 #include "MonCreateBoundaryAn.h"
 #include "MonEditBoundaryAn.h"
 #include "MonCreateBoundaryDi.h"
 #include "MonEditBoundaryDi.h"
+#include "HOMARD.hxx"
 
 #include <QFileDialog>
 #include <QMessageBox>
@@ -47,7 +50,8 @@ MonCreateCase::MonCreateCase( bool modal, HOMARD::HOMARD_Gen_var myHomardGen0 )
     :
     Ui_CreateCase(),
     _aCaseName(""),_aDirName(""),
-    _ConfType(1),
+    _ConfType(0),
+    _ExtType(0),
     _Pyram(0)
 {
   MESSAGE("Debut du constructeur de MonCreateCase");
@@ -57,9 +61,14 @@ MonCreateCase::MonCreateCase( bool modal, HOMARD::HOMARD_Gen_var myHomardGen0 )
   InitConnect();
 
   SetNewName() ;
+
+  GBBoundaryC->setVisible(0);
   GBBoundaryA->setVisible(0);
   GBBoundaryD->setVisible(0);
-  GBTypeNoConf->setVisible(0);
+
+  CBBoundaryA->setVisible(0);
+  CBBoundaryD->setVisible(0);
+
   GBAdvancedOptions->setVisible(0);
   Comment->setVisible(0);
   CBPyramid->setChecked(false);
@@ -78,26 +87,38 @@ MonCreateCase::~MonCreateCase()
 void MonCreateCase::InitConnect()
 // ------------------------------------------------------------------------
 {
-    connect( LEName,     SIGNAL(textChanged(QString)), this, SLOT(CaseNameChanged()));
-    connect( PushDir,        SIGNAL(pressed()), this, SLOT(SetDirName()));
-    connect( PushFichier,    SIGNAL(pressed()), this, SLOT(SetFileName()));
+    connect( LEName,      SIGNAL(textChanged(QString)), this, SLOT(CaseNameChanged()));
+    connect( PushDir,     SIGNAL(pressed()), this, SLOT(SetDirName()));
+    connect( PushFichier, SIGNAL(pressed()), this, SLOT(SetFileName()));
 
     connect( RBConforme,     SIGNAL(clicked()), this, SLOT(SetConforme()));
     connect( RBNonConforme,  SIGNAL(clicked()), this, SLOT(SetNonConforme()));
-    connect( RB1NpM,         SIGNAL(clicked()), this, SLOT(Set1NpM()));
-    connect( RB1NpA,         SIGNAL(clicked()), this, SLOT(Set1NpA()));
-    connect( RBQuelconque,   SIGNAL(clicked()), this, SLOT(SetQuelconque()));
 
-    connect( CBBoundaryD,      SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
-    connect( PBBoundaryDiNew,  SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
-    connect( PBBoundaryDiEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
-    connect( PBBoundaryDiHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryDiHelp()) );
-    connect( CBBoundaryA,      SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
-    connect( PBBoundaryAnNew,  SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
-    connect( PBBoundaryAnEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) );
-    connect( PBBoundaryAnHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
+    connect( RBBoundaryNo,      SIGNAL(clicked()), this, SLOT(SetBoundaryNo()));
+    connect( RBBoundaryCAO,     SIGNAL(clicked()), this, SLOT(SetBoundaryCAO()));
+    connect( RBBoundaryNonCAO,  SIGNAL(clicked()), this, SLOT(SetBoundaryNonCAO()));
+
+    connect( PBBoundaryCAONew,  SIGNAL(pressed()), this, SLOT(PushBoundaryCAONew()));
+    connect( PBBoundaryCAOEdit, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOEdit()) );
+    connect( PBBoundaryCAOHelp, SIGNAL(pressed()), this, SLOT(PushBoundaryCAOHelp()) );
+    connect( CBBoundaryD,       SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryD()));
+    connect( PBBoundaryDiNew,   SIGNAL(pressed()), this, SLOT(PushBoundaryDiNew()));
+    connect( PBBoundaryDiEdit,  SIGNAL(pressed()), this, SLOT(PushBoundaryDiEdit()) );
+    connect( PBBoundaryDiHelp,  SIGNAL(pressed()), this, SLOT(PushBoundaryDiHelp()) );
+    connect( CBBoundaryA,       SIGNAL(stateChanged(int)), this, SLOT(SetBoundaryA()));
+    connect( PBBoundaryAnNew,   SIGNAL(pressed()), this, SLOT(PushBoundaryAnNew()));
+    connect( PBBoundaryAnEdit,  SIGNAL(pressed()), this, SLOT(PushBoundaryAnEdit()) );
+    connect( PBBoundaryAnHelp,  SIGNAL(pressed()), this, SLOT(PushBoundaryAnHelp()) );
 
     connect( CBAdvanced,     SIGNAL(stateChanged(int)), this, SLOT(SetAdvanced()));
+    connect( RBStandard,     SIGNAL(clicked()), this, SLOT(SetStandard()));
+    connect( RBBox,          SIGNAL(clicked()), this, SLOT(SetBox()));
+    connect( RBNC1NpA,       SIGNAL(clicked()), this, SLOT(SetNC1NpA()));
+    connect( RBNCQuelconque, SIGNAL(clicked()), this, SLOT(SetNCQuelconque()));
+
+    connect( RBMED,          SIGNAL(clicked()), this, SLOT(SetMED()));
+    connect( RBSaturne,      SIGNAL(clicked()), this, SLOT(SetSaturne()));
+    connect( RBSaturne2D,    SIGNAL(clicked()), this, SLOT(SetSaturne2D()));
 
     connect( buttonOk,       SIGNAL(pressed()), this, SLOT(PushOnOK()));
     connect( buttonApply,    SIGNAL(pressed()), this, SLOT(PushOnApply(0)));
@@ -113,7 +134,7 @@ void MonCreateCase::InitBoundarys()
 // Pour les frontieres analytiques : la colonne des groupes
   HOMARD::ListGroupType_var _listeGroupesCas = aCase->GetGroups();
   QTableWidgetItem *__colItem = new QTableWidgetItem();
-  __colItem->setText(QApplication::translate("CreateCase", "", 0, QApplication::UnicodeUTF8));
+  __colItem->setText(QApplication::translate("CreateCase", "", 0));
   TWBoundary->setHorizontalHeaderItem(0, __colItem);
   for ( int i = 0; i < _listeGroupesCas->length(); i++ )
   {
@@ -121,6 +142,7 @@ void MonCreateCase::InitBoundarys()
     TWBoundary->setItem( i, 0, new QTableWidgetItem(QString((_listeGroupesCas)[i]).trimmed()));
     TWBoundary->item( i, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
   }
+// Pour les frontieres CAO : la liste a saisir
 // Pour les frontieres discretes : la liste a saisir
 // Pour les frontieres analytiques : les colonnes de chaque frontiere
   HOMARD::HOMARD_Boundary_var myBoundary ;
@@ -130,8 +152,9 @@ void MonCreateCase::InitBoundarys()
   {
     myBoundary = myHomardGen->GetBoundary(mesBoundarys[i]);
     int type_obj = myBoundary->GetType() ;
-    if ( type_obj==0 ) { CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
-    else               { AddBoundaryAn(QString(mesBoundarys[i])); }
+    if ( type_obj==-1 )     { CBBoundaryCAO->addItem(QString(mesBoundarys[i])); }
+    else if ( type_obj==0 ) { CBBoundaryDi->addItem(QString(mesBoundarys[i])); }
+    else                    { AddBoundaryAn(QString(mesBoundarys[i])); }
   }
 // Ajustement
   TWBoundary->resizeColumnsToContents();
@@ -170,11 +193,7 @@ bool MonCreateCase::PushOnApply(int option)
       return false;
     }
   }
-#ifndef WIN32
-  if (chdir(aDirName.toStdString().c_str()) != 0)
-#else
-  if (_chdir(aDirName.toStdString().c_str()) != 0)
-#endif
+  if (CHDIR(aDirName.toStdString().c_str()) != 0)
   {
     QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
                               QObject::tr("HOM_CASE_DIRECTORY_3") );
@@ -255,6 +274,7 @@ bool MonCreateCase::PushOnApply(int option)
   aCase->SetDirName(aDirName.toStdString().c_str());
   _aDirName=aDirName;
   aCase->SetConfType(_ConfType);
+  aCase->SetExtType(_ExtType);
 
 //   Menage des eventuelles frontieres deja enregistrees
   aCase->SupprBoundaryGroup() ;
@@ -262,12 +282,20 @@ bool MonCreateCase::PushOnApply(int option)
   // Enregistrement et publication dans l'arbre d'etudes a la sortie definitive
   if ( option > 0 )
   {
+    if (RBBoundaryCAO->isChecked())
+    {
+      QString monBoundaryCAOName=CBBoundaryCAO->currentText();
+      if (monBoundaryCAOName != "" )
+      {
+        aCase->AddBoundary(monBoundaryCAOName.toStdString().c_str());
+      }
+    }
     if (CBBoundaryD->isChecked())
     {
       QString monBoundaryDiName=CBBoundaryDi->currentText();
       if (monBoundaryDiName != "" )
       {
-        aCase->AddBoundaryGroup(monBoundaryDiName.toStdString().c_str(), "");
+        aCase->AddBoundary(monBoundaryDiName.toStdString().c_str());
       }
     }
     if (CBBoundaryA->isChecked())
@@ -300,6 +328,7 @@ bool MonCreateCase::PushOnApply(int option)
 // Autorisation des pyramides
     if (CBPyramid->isChecked()) { _Pyram = 1 ; }
   }
+  aCase->SetPyram(_Pyram);
 
   HOMARD_UTILS::updateObjBrowser();
 
@@ -316,8 +345,8 @@ void MonCreateCase::PushOnOK()
 void MonCreateCase::PushOnHelp()
 //-------------------------------
 {
-  char* LanguageShort = myHomardGen->GetLanguageShort();
-  HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString(""), QString(LanguageShort));
+  std::string LanguageShort = myHomardGen->GetLanguageShort();
+  HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString(""), QString(LanguageShort.c_str()));
 }
 // ---------------------------------
 void MonCreateCase::SetNewName()
@@ -363,9 +392,10 @@ void MonCreateCase::SetFileName()
 void MonCreateCase::SetConforme()
 // ------------------------------------------------------------------------
 {
-  GBTypeNoConf->setVisible(0);
 //
-  _ConfType=1;
+  _ConfType=0;
+  RBNC1NpA->setVisible(0);
+  RBNCQuelconque->setVisible(0);
 //
   adjustSize();
 }
@@ -373,30 +403,128 @@ void MonCreateCase::SetConforme()
 void MonCreateCase::SetNonConforme()
 // ------------------------------------------------------------------------
 {
-  GBTypeNoConf->setVisible(1);
-  RB1NpM->setChecked(true);
 //
-  _ConfType=2;
+  _ConfType=1;
+  RBNC1NpA->setVisible(1);
+  RBNCQuelconque->setVisible(1);
 //
   adjustSize();
 }
 // ------------------------------------------------------------------------
-void MonCreateCase::Set1NpM()
+void MonCreateCase::SetStandard()
+// ------------------------------------------------------------------------
+{
+  if ( ( _ConfType == 0 ) || ( _ConfType == -1 ) ) { _ConfType = 0 ; }
+  else { _ConfType = 1 ; }
+  RBStandard->setChecked(true);
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::SetBox()
+// ------------------------------------------------------------------------
+{
+  if ( ( _ConfType == 0 ) || ( _ConfType == -1 ) ) { _ConfType = -1 ; }
+  else { _ConfType = -2 ; }
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::SetNC1NpA()
+// ------------------------------------------------------------------------
+{
+  _ConfType = 2;
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::SetNCQuelconque()
 // ------------------------------------------------------------------------
 {
-  _ConfType=2;
+  _ConfType = 3;
 }
 // ------------------------------------------------------------------------
-void MonCreateCase::Set1NpA()
+void MonCreateCase::SetMED()
 // ------------------------------------------------------------------------
 {
-  _ConfType=3;
+  _ExtType = 0 ;
+  RBMED->setChecked(true);
 }
 // ------------------------------------------------------------------------
-void MonCreateCase::SetQuelconque()
+void MonCreateCase::SetSaturne()
 // ------------------------------------------------------------------------
 {
-  _ConfType=4;
+  _ExtType = 1 ;
+  RBSaturne->setChecked(true);
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::SetSaturne2D()
+// ------------------------------------------------------------------------
+{
+  _ExtType = 2 ;
+  RBSaturne2D->setChecked(true);
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::SetBoundaryNo()
+// ------------------------------------------------------------------------
+{
+//
+  GBBoundaryC->setVisible(0);
+  GBBoundaryA->setVisible(0);
+  GBBoundaryD->setVisible(0);
+  CBBoundaryD->setVisible(0);
+  CBBoundaryA->setVisible(0);
+//
+  adjustSize();
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::SetBoundaryCAO()
+// ------------------------------------------------------------------------
+{
+//
+  GBBoundaryC->setVisible(1);
+  GBBoundaryA->setVisible(0);
+  GBBoundaryD->setVisible(0);
+  CBBoundaryD->setVisible(0);
+  CBBoundaryA->setVisible(0);
+//
+  adjustSize();
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::SetBoundaryNonCAO()
+// ------------------------------------------------------------------------
+{
+//
+  GBBoundaryC->setVisible(0);
+  CBBoundaryD->setVisible(1);
+  CBBoundaryA->setVisible(1);
+//
+  adjustSize();
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::AddBoundaryCAO(QString newBoundary)
+// ------------------------------------------------------------------------
+{
+  CBBoundaryCAO->insertItem(0,newBoundary);
+  CBBoundaryCAO->setCurrentIndex(0);
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::PushBoundaryCAONew()
+// ------------------------------------------------------------------------
+{
+   MonCreateBoundaryCAO *BoundaryDlg = new MonCreateBoundaryCAO(this, true,
+                HOMARD::HOMARD_Gen::_duplicate(myHomardGen), _aCaseName, "") ;
+   BoundaryDlg->show();
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::PushBoundaryCAOEdit()
+// ------------------------------------------------------------------------
+{
+  if (CBBoundaryCAO->currentText() == QString(""))  return;
+  MonEditBoundaryCAO *BoundaryDlg = new MonEditBoundaryCAO(this, true,
+       HOMARD::HOMARD_Gen::_duplicate(myHomardGen), _aCaseName, CBBoundaryCAO->currentText() ) ;
+  BoundaryDlg->show();
+}
+// ------------------------------------------------------------------------
+void MonCreateCase::PushBoundaryCAOHelp()
+// ------------------------------------------------------------------------
+{
+  std::string LanguageShort = myHomardGen->GetLanguageShort();
+  HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("CAO"), QString(LanguageShort.c_str()));
 }
 // ------------------------------------------------------------------------
 void MonCreateCase::SetBoundaryD()
@@ -443,8 +571,8 @@ void MonCreateCase::PushBoundaryDiEdit()
 void MonCreateCase::PushBoundaryDiHelp()
 // ------------------------------------------------------------------------
 {
-  char* LanguageShort = myHomardGen->GetLanguageShort();
-  HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-discrete"), QString(LanguageShort));
+  std::string LanguageShort = myHomardGen->GetLanguageShort();
+  HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-discrete"), QString(LanguageShort.c_str()));
 }
 // ------------------------------------------------------------------------
 void MonCreateCase::SetBoundaryA()
@@ -462,8 +590,6 @@ void MonCreateCase::SetBoundaryA()
   else { GBBoundaryA->setVisible(0); }
 //
   adjustSize();
-//
-//   MESSAGE("Fin de SetBoundaryA ");
 }
 // ------------------------------------------------------------------------
 void MonCreateCase::AddBoundaryAn(QString newBoundary)
@@ -476,7 +602,7 @@ void MonCreateCase::AddBoundaryAn(QString newBoundary)
   nbcol += 1 ;
   TWBoundary->setColumnCount ( nbcol ) ;
   QTableWidgetItem *__colItem = new QTableWidgetItem();
-  __colItem->setText(QApplication::translate("CreateCase", newBoundary.toStdString().c_str(), 0, QApplication::UnicodeUTF8));
+  __colItem->setText(QApplication::translate("CreateCase", newBoundary.toStdString().c_str(), 0));
   TWBoundary->setHorizontalHeaderItem(nbcol-1, __colItem);
 /*  TWBoundary->horizontalHeaderItem(nbcol-1)->setFlags( Qt::ItemIsSelectable|Qt::ItemIsEnabled );*/
 // Chaque case est a cocher
@@ -523,8 +649,8 @@ void MonCreateCase::PushBoundaryAnEdit()
 void MonCreateCase::PushBoundaryAnHelp()
 // ------------------------------------------------------------------------
 {
-  char* LanguageShort = myHomardGen->GetLanguageShort();
-  HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-analytique"), QString(LanguageShort));
+  std::string LanguageShort = myHomardGen->GetLanguageShort();
+  HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-analytique"), QString(LanguageShort.c_str()));
 }
 // ------------------------------------------------------------------------
 void MonCreateCase::CaseNameChanged()
@@ -541,11 +667,27 @@ void MonCreateCase::SetAdvanced()
 // ------------------------------------------------------------------------
 {
   MESSAGE("Debut de SetAdvanced ");
-  if (CBAdvanced->isChecked()) { GBAdvancedOptions->setVisible(1); }
+  if (CBAdvanced->isChecked())
+  { GBAdvancedOptions->setVisible(1);
+    GBConforme->setVisible(1);
+    RBStandard->setVisible(1);
+    RBBox->setVisible(1);
+    if ( ( _ConfType == 0 ) || ( _ConfType == -1 ) )
+    { RBNC1NpA->setVisible(0);
+      RBNCQuelconque->setVisible(0);}
+    else
+    { RBNC1NpA->setVisible(1);
+      RBNCQuelconque->setVisible(1);}
+    GBFormat->setVisible(1);
+    RBMED->setVisible(1);
+    RBSaturne2D->setVisible(1);
+  }
   else
   { GBAdvancedOptions->setVisible(0);
     CBPyramid->setChecked(false);
     _Pyram = 0 ;
+    SetStandard() ;
+    SetMED() ;
  }
 //
   adjustSize();