Salome HOME
Avoid referencing memory of an automatic variable
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_ExtrusionAlongPathDlg.cxx
index be57b55699da50dd1b42cf30ece1ff921a7b347b..f7bd76f7fe8474fe05cde8084087207b46e50f04 100644 (file)
@@ -1,30 +1,30 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  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
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 // SMESH SMESHGUI : GUI for SMESH component
 // File   : SMESHGUI_ExtrusionAlongPathDlg.cxx
 // Author : Vadim SANDLER, Open CASCADE S.A.S.
 // SMESH includes
-//
+
 #include "SMESHGUI_ExtrusionAlongPathDlg.h"
 
 #include "SMESHGUI.h"
@@ -323,16 +323,16 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod
   mySMESHGUI->SetActiveDialogBox(this);
 
   // Costruction of the logical filter for the elements: mesh/sub-mesh/group
-  SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH);
-  SMESH_TypeFilter* aSmeshGroupFilter    = new SMESH_TypeFilter (GROUP);
+  SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter (SMESH::MESHorSUBMESH);
+  SMESH_TypeFilter* aSmeshGroupFilter    = new SMESH_TypeFilter (SMESH::GROUP);
 
   QList<SUIT_SelectionFilter*> aListOfFilters;
   if (aMeshOrSubMeshFilter) aListOfFilters.append(aMeshOrSubMeshFilter);
   if (aSmeshGroupFilter)    aListOfFilters.append(aSmeshGroupFilter);
 
   myElementsFilter = new SMESH_LogicalFilter (aListOfFilters, SMESH_LogicalFilter::LO_OR);
-  //myPathMeshFilter = new SMESH_TypeFilter (MESH);
-  myPathMeshFilter = new SMESH_TypeFilter(MESHorSUBMESH);
+  //myPathMeshFilter = new SMESH_TypeFilter (SMESH::MESH);
+  myPathMeshFilter = new SMESH_TypeFilter(SMESH::MESHorSUBMESH);
 
   myHelpFileName = "extrusion_along_path_page.html";
 
@@ -492,7 +492,7 @@ bool SMESHGUI_ExtrusionAlongPathDlg::ClickOnApply()
 
   //if (myMesh->_is_nil() || MeshCheck->isChecked() && myIDSource->_is_nil() ||
   //    !myMeshActor || myPathMesh->_is_nil() || myPathShape->_is_nil())
-  if ( myMesh->_is_nil() || MeshCheck->isChecked() && myIDSource->_is_nil() ||
+  if ( myMesh->_is_nil() || (MeshCheck->isChecked() && myIDSource->_is_nil()) ||
        /*!myMeshActor ||*/ myPath->_is_nil() )
     return false;
 
@@ -534,55 +534,11 @@ bool SMESHGUI_ExtrusionAlongPathDlg::ClickOnApply()
 
   try {
     SUIT_OverrideCursor wc;
-    SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
-    //if ( LinearAnglesCheck->isChecked() ) {
-    //  anAngles = aMeshEditor->LinearAnglesVariation( myPathMesh, myPathShape, anAngles );
-    //}
 
+    SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
     SMESH::SMESH_MeshEditor::Extrusion_Error retVal;
-    /*
-    if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) {
-      if( MeshCheck->isChecked() ) {
-        if( GetConstructorId() == 0 )
-          SMESH::ListOfGroups_var groups = 
-            aMeshEditor->ExtrusionAlongPathObject1DMakeGroups(myIDSource, myPathMesh,
-                                                              myPathShape, aNodeStart,
-                                                              AnglesGrp->isChecked(), anAngles,
-                                                              BasePointGrp->isChecked(), aBasePoint, retVal);
-        else
-          SMESH::ListOfGroups_var groups = 
-            aMeshEditor->ExtrusionAlongPathObject2DMakeGroups(myIDSource, myPathMesh,
-                                                              myPathShape, aNodeStart,
-                                                              AnglesGrp->isChecked(), anAngles,
-                                                              BasePointGrp->isChecked(), aBasePoint, retVal);
-      }
-      else
-        SMESH::ListOfGroups_var groups = 
-          aMeshEditor->ExtrusionAlongPathMakeGroups(anElementsId, myPathMesh,
-                                                    myPathShape, aNodeStart,
-                                                    AnglesGrp->isChecked(), anAngles,
-                                                    BasePointGrp->isChecked(), aBasePoint, retVal);
-    }
-    else {
-      if( MeshCheck->isChecked() ) {
-        if( GetConstructorId() == 0 )
-          retVal = aMeshEditor->ExtrusionAlongPathObject1D(myIDSource, myPathMesh,
-                                                           myPathShape, aNodeStart,
-                                                           AnglesGrp->isChecked(), anAngles,
-                                                           BasePointGrp->isChecked(), aBasePoint);
-        else
-          retVal = aMeshEditor->ExtrusionAlongPathObject2D(myIDSource, myPathMesh,
-                                                           myPathShape, aNodeStart,
-                                                           AnglesGrp->isChecked(), anAngles,
-                                                           BasePointGrp->isChecked(), aBasePoint);
-      }
-      else
-        retVal = aMeshEditor->ExtrusionAlongPath(anElementsId, myPathMesh,
-                                                 myPathShape, aNodeStart,
-                                                 AnglesGrp->isChecked(), anAngles,
-                                                 BasePointGrp->isChecked(), aBasePoint);
-    }
-    */
+
+    myMesh->SetParameters( aParameters.join(":").toLatin1().constData() );
 
     bool NeedGroups = ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() );
     SMESH::ElementType ElemType = SMESH::FACE;
@@ -604,10 +560,6 @@ bool SMESHGUI_ExtrusionAlongPathDlg::ClickOnApply()
     }
 
 
-    if( retVal == SMESH::SMESH_MeshEditor::EXTR_OK )
-      myMesh->SetParameters( aParameters.join(":").toLatin1().constData() );
-
-    //wc.stop();
     wc.suspend();
     switch (retVal) {
     case SMESH::SMESH_MeshEditor::EXTR_NO_ELEMENTS:
@@ -755,8 +707,8 @@ void SMESHGUI_ExtrusionAlongPathDlg::onTextChange (const QString& theNewText)
           const SMDS_MeshElement* e = aMesh->FindElement(ind);
           if (e) {
             // check also type of element
-            bool typeMatch = Elements1dRB->isChecked() && e->GetType() == SMDSAbs_Edge ||
-                             Elements2dRB->isChecked() && e->GetType() == SMDSAbs_Face;
+            bool typeMatch = (Elements1dRB->isChecked() && e->GetType() == SMDSAbs_Edge) ||
+                             (Elements2dRB->isChecked() && e->GetType() == SMDSAbs_Face);
             if (typeMatch)
               newIndices.Add(e->GetID());
           }
@@ -1026,8 +978,8 @@ void SMESHGUI_ExtrusionAlongPathDlg::SetEditCurrentArgument (QToolButton* button
     if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
       aViewWindow->SetSelectionMode(NodeSelection);
 
-    SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter(MESHorSUBMESH);
-    SMESH_TypeFilter* aSmeshGroupFilter    = new SMESH_TypeFilter(GROUP);
+    SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter(SMESH::MESHorSUBMESH);
+    SMESH_TypeFilter* aSmeshGroupFilter    = new SMESH_TypeFilter(SMESH::GROUP);
     SMESH_NumberFilter* aVertexFilter      = new SMESH_NumberFilter ("GEOM", TopAbs_SHAPE,
                                                                      -1, TopAbs_VERTEX);
     QList<SUIT_SelectionFilter*> aListOfFilters;
@@ -1273,7 +1225,7 @@ void SMESHGUI_ExtrusionAlongPathDlg::updateLinearAngles()
 //=================================================================================
 bool SMESHGUI_ExtrusionAlongPathDlg::isValuesValid() {
   
-  if ( MeshCheck->isChecked() && myIDSource->_is_nil() ||
+  if ( (MeshCheck->isChecked() && myIDSource->_is_nil()) ||
        myMesh->_is_nil() ||
        myPath->_is_nil() )
     return false;
@@ -1392,8 +1344,8 @@ SMESH::long_array_var SMESHGUI_ExtrusionAlongPathDlg::getSelectedElements() {
         if  (bOk) {
           const SMDS_MeshElement* e = aMesh->FindElement(ind);
           if (e) {
-            bool typeMatch = Elements1dRB->isChecked() && e->GetType() == SMDSAbs_Edge ||
-              Elements2dRB->isChecked() && e->GetType() == SMDSAbs_Face;
+            bool typeMatch = (Elements1dRB->isChecked() && e->GetType() == SMDSAbs_Edge) ||
+                             (Elements2dRB->isChecked() && e->GetType() == SMDSAbs_Face);
             if (typeMatch)
                   anElementsId[ j++ ] = ind;
           }
@@ -1412,7 +1364,7 @@ SMESH::double_array_var SMESHGUI_ExtrusionAlongPathDlg::getAngles() {
     int j = 0;
     for (int i = 0; i < myAnglesList.count(); i++) {
       double angle = myAnglesList[i];
-      anAngles[ j++ ] = angle*PI/180;
+      anAngles[ j++ ] = angle*M_PI/180.;
     }
     anAngles->length(j);
   }