]> SALOME platform Git repositories - modules/homard.git/blobdiff - src/HOMARDGUI/MonEditCase.cxx
Salome HOME
Merge branch 'V9_13_BR'
[modules/homard.git] / src / HOMARDGUI / MonEditCase.cxx
index ca060e3fde98675b2070a7dcc08f9c214d4f4316..199ff27da6fefb89703779e4a8c5e4df049c32d0 100644 (file)
@@ -1,29 +1,45 @@
-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();
 }
 // ------------------------------
@@ -31,85 +47,218 @@ MonEditCase::~MonEditCase()
 // ------------------------------
 {
 }
-
-
 // ------------------------------
 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();
 }
 
 // -------------------------------------
@@ -117,5 +266,4 @@ bool MonEditCase::PushOnApply()
 // -------------------------------------
 {
   return true ;
-
 };