Salome HOME
Update copyrights 2014.
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshDlg.cxx
index 4b030bbc0025a2e8904db42b24f56794fc2273f6..30b8dfe333df5da9449d488aa4ef17e070043f0f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // 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
@@ -149,16 +149,20 @@ void SMESHGUI_MeshTab::setAvailableHyps( const int theId, const QStringList& the
   myAvailableHyps[ theId ] = theHyps;
 
   bool enable = ! theHyps.isEmpty();
-  if ( theId == Algo )
+  if ( theId == Algo ) // fill list of algos
   {
     myHyp[ Algo ]->clear();
-    myHyp[ Algo ]->addItem( tr( "NONE" ) );
-    myHyp[ Algo ]->addItems( theHyps );
-    myHyp[ Algo ]->setCurrentIndex( 0 );
+    if ( enable )
+    {
+      myHyp[ Algo ]->addItem( tr( "NONE" ) );
+      myHyp[ Algo ]->addItems( theHyps );
+      myHyp[ Algo ]->setCurrentIndex( 0 );
+    }
   }
-  else {
+  else // enable buttons
+  {
     myCreateHyp[ theId ]->setEnabled( enable );
-    myEditHyp[ theId ]->setEnabled( false );
+    myEditHyp  [ theId ]->setEnabled( false );
   }
   myHyp[ theId ]->setEnabled( enable );
 }
@@ -166,21 +170,30 @@ void SMESHGUI_MeshTab::setAvailableHyps( const int theId, const QStringList& the
 //================================================================================
 /*!
  * \brief Sets existing hypothesis
-  * \param theId - identifier of hypothesis (main or additional, see HypType enumeration)
-  * \param theHyps - list of available hypothesis names
- * 
+ * \param theId - identifier of hypothesis (main or additional, see HypType enumeration)
+ * \param theHyps - list of available hypothesis names
+ * \param theDefaultAvlbl - \c true means that the algorithm can with w/o hypothesis
+ *                          with some default parameters
+ *
  * Sets existing main or additional hypothesis for this tab
  */
 //================================================================================
-void SMESHGUI_MeshTab::setExistingHyps( const int theId, const QStringList& theHyps )
+void SMESHGUI_MeshTab::setExistingHyps( const int          theId,
+                                        const QStringList& theHyps,
+                                        bool               theDefaultAvlbl)
 {
   if ( theId != Algo )
   {
+    bool enable = ! myAvailableHyps[ theId ].isEmpty();
     myHyp[ theId ]->clear();
-    myHyp[ theId ]->addItem( tr( "NONE" ) );
-    myHyp[ theId ]->addItems( theHyps );
-    myHyp[ theId ]->setCurrentIndex( 0 );
-    myHyp[ theId ]->setEnabled( !theHyps.isEmpty() );
+    if ( enable )
+    {
+      QString none = tr( theDefaultAvlbl ? "DEFAULT" : ( theId == AddHyp ) ? "NONE" : "NONE" );
+      myHyp[ theId ]->addItem( none );
+      myHyp[ theId ]->addItems( theHyps );
+      myHyp[ theId ]->setCurrentIndex( 0 );
+    }
+    myHyp    [ theId ]->setEnabled( enable );
     myEditHyp[ theId ]->setEnabled( false );
   }
 }
@@ -188,9 +201,9 @@ void SMESHGUI_MeshTab::setExistingHyps( const int theId, const QStringList& theH
 //================================================================================
 /*!
  * \brief Adds hypothesis in combo box of available ones
 * \param theId - identifier of hypothesis (main or additional, see HypType enumeration)
 * \param theHyp - name of hypothesis to be added
- * 
+ * \param theId - identifier of hypothesis (main or additional, see HypType enumeration)
+ * \param theHyp - name of hypothesis to be added
+ *
  * Adds hypothesis in combo box of available ones. This method is called by operation
  * after creation of new hypothesis.
  */
@@ -364,6 +377,9 @@ SMESHGUI_MeshDlg::SMESHGUI_MeshDlg( const bool theToCreate, const bool theIsMesh
   // geometry
   createObject( tr( "GEOMETRY" ), mainFrame(), Geom );
   myGeomPopup = 0;
+  // mesh type
+  QLabel* anMeshTypeLbl = new QLabel( tr( "MESH_TYPE" ), this );
+  myMeshType = new QComboBox( this );
   
   // Create tab widget
   
@@ -398,10 +414,16 @@ SMESHGUI_MeshDlg::SMESHGUI_MeshDlg( const bool theToCreate, const bool theIsMesh
   aLay->addWidget( objectWg( Geom, Label ),   2, 0 );
   aLay->addWidget( objectWg( Geom, Btn ),     2, 1 );
   aLay->addWidget( objectWg( Geom, Control ), 2, 2 );
-  aLay->addWidget( myTabWg,                   4, 0, 1, 3 );
-  aLay->addWidget( myHypoSetButton,           5, 0, 1, 3 );
+  aLay->addWidget( anMeshTypeLbl,             3, 0 );
+  aLay->addWidget( myMeshType,                3, 2 );
+  aLay->addWidget( myTabWg,                   5, 0, 1, 3 );
+  aLay->addWidget( myHypoSetButton,           6, 0, 1, 3 );
   aLay->setRowMinimumHeight( 3, 20 );
 
+  myMeshType->clear();
+
+  // Connect signals and slots
+  connect( myMeshType, SIGNAL( activated( int ) ), SLOT( onChangedMeshType( int ) ) );
   // Disable controls if necessary
   setObjectShown( Mesh, false );
   if ( theToCreate )
@@ -615,3 +637,36 @@ int SMESHGUI_MeshDlg::getActiveObject()
       return i;
   return -1;
 }
+//================================================================================
+/*!
+ * \brief Sets available types of mesh
+ * \param theTypeMesh - list of available types of mesh
+ */
+//================================================================================
+void SMESHGUI_MeshDlg::setAvailableMeshType( const QStringList& theTypeMesh )
+{
+  myMeshType->clear();
+  myMeshType->addItems(theTypeMesh);
+}
+//================================================================================
+/*!
+ * \brief Emits selectMeshType( const int, const int ) signal
+ *
+ * SLOT is called when a combo box "mesh type" is selected.
+ */
+//================================================================================
+void SMESHGUI_MeshDlg::onChangedMeshType( const int isIndex )
+{
+  emit selectMeshType( Dim3D - myTabWg->currentIndex(), isIndex );
+}
+//================================================================================
+/*!
+ * \brief Get current index types of mesh
+ */
+//================================================================================
+int SMESHGUI_MeshDlg::currentMeshType( )
+{
+  return myMeshType->currentIndex( );
+}
+
+