Salome HOME
Merge remote branch 'origin/gdd/translations'
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_AddQuadraticElementDlg.cxx
index f469941ca3df56dc793f50e3117847a06d798b2b..6ee198e7bfacdf3623648e9201478dab831a37fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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
@@ -36,7 +36,6 @@
 
 #include <SMESH_Actor.h>
 #include <SMESH_ActorUtils.h>
-#include <SMESH_DeviceActor.h>
 #include <SMESH_FaceOrientationFilter.h>
 #include <SMDS_Mesh.hxx>
 
@@ -53,8 +52,6 @@
 #include <SVTK_ViewWindow.h>
 
 #include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
-#include <VTKViewer_PolyDataMapper.h>
 
 #include <SalomeApp_Application.h>
 
 #include <TColStd_MapOfInteger.hxx>
 
 // VTK includes
-#include <vtkCell.h>
 #include <vtkIdList.h>
 #include <vtkUnstructuredGrid.h>
 #include <vtkDataSetMapper.h>
 #include <vtkPolyDataMapper.h>
 #include <vtkProperty.h>
 #include <vtkCellType.h>
-#include <vtkCellData.h>
 
 // Qt includes
 #include <QComboBox>
@@ -126,14 +121,7 @@ namespace SMESH
     SALOME_Actor* myPreviewActor;
     vtkDataSetMapper* myMapper;
     vtkUnstructuredGrid* myGrid;
-
-    SALOME_Actor* myCornerActor;
-    VTKViewer_PolyDataMapper* myCornerMapper;
-    vtkPolyData* myCornerPolyData;
-
-    SALOME_Actor* mySelectCornerActor;
-    VTKViewer_PolyDataMapper* mySelectCornerMapper;
-    vtkPolyData* mySelectCornerPolyData;
+    //vtkProperty* myBackProp, *myProp;
 
     //double myRGB[3], myBackRGB[3];
 
@@ -198,45 +186,6 @@ namespace SMESH
       anOrientationProp->Delete();
 
       myVTKViewWindow->AddActor(myFaceOrientation);
-
-      // Create and display actor with corner nodes
-      myCornerPolyData = vtkPolyData::New();
-      myCornerPolyData->Allocate();
-      myCornerMapper = VTKViewer_PolyDataMapper::New();
-      myCornerMapper->SetInputData(myCornerPolyData);
-      myCornerMapper->SetMarkerEnabled(true);
-
-      myCornerActor = SALOME_Actor::New();
-      myCornerActor->PickableOff();
-      myCornerActor->VisibilityOff();
-      myCornerActor->SetMapper(myCornerMapper);
-
-      vtkProperty* myCornerProp = vtkProperty::New();
-      myCornerProp->SetColor( 50 / 255. , 100 / 255. , 0 / 255. );
-      myCornerActor->SetProperty( myCornerProp );
-      myCornerProp->Delete();
-
-      myVTKViewWindow->AddActor(myCornerActor);
-
-      // Create and display actor with selected corner nodes
-      mySelectCornerPolyData = vtkPolyData::New();
-      mySelectCornerPolyData->Allocate();
-      mySelectCornerMapper = VTKViewer_PolyDataMapper::New();
-      mySelectCornerMapper->SetInputData(mySelectCornerPolyData);
-      mySelectCornerMapper->SetMarkerEnabled(true);
-
-      mySelectCornerActor = SALOME_Actor::New();
-      mySelectCornerActor->PickableOff();
-      mySelectCornerActor->VisibilityOff();
-      mySelectCornerActor->SetMapper(mySelectCornerMapper);
-
-      vtkProperty* mySelectCornerProp = vtkProperty::New();
-      mySelectCornerProp->SetColor( ffc.red() / 255. , ffc.green() / 255. , ffc.blue() / 255. );
-      mySelectCornerActor->SetProperty( mySelectCornerProp );
-      mySelectCornerProp->Delete();
-
-      myVTKViewWindow->AddActor(mySelectCornerActor);
-
     }
 
     typedef std::vector<vtkIdType> TVTKIds;
@@ -269,76 +218,26 @@ namespace SMESH
 
       myPreviewActor->GetMapper()->Update();
       myPreviewActor->SetRepresentation( theMode );
+      SetVisibility(true, theActor->GetFacesOriented());
     }
-    void SetCornerNodes (SMESH_Actor*       theActor,
-                         TVTKIds&           theIds)
-    {
-      vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid();
-
-      myCornerMapper->SetMarkerStd(theActor->GetMarkerType(), theActor->GetMarkerScale());
 
-      myCornerPolyData->Reset();
-      myCornerPolyData->DeleteCells();
-      myCornerPolyData->SetPoints(aGrid->GetPoints());
 
-      vtkIdList *anIds = vtkIdList::New();
-      for (int i = 0, iEnd = theIds.size(); i < iEnd; i++) {
-        anIds->InsertId(i,theIds[i]);
-        myCornerPolyData->InsertNextCell(VTK_VERTEX, anIds);
-        anIds->Reset();
-      }
-      anIds->Delete();
-      myCornerPolyData->Modified();
-      myCornerActor->GetMapper()->Update();
-      myCornerActor->SetRepresentation(SMESH_Actor::ePoint);
-    }
-    void SetSelectedNodes (SMESH_Actor*       theActor,
-                           TVTKIds&           theIds)
-    {
-      vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid();
-
-      mySelectCornerMapper->SetMarkerStd(theActor->GetMarkerType(), theActor->GetMarkerScale());
-
-      mySelectCornerPolyData->Reset();
-      mySelectCornerPolyData->DeleteCells();
-      mySelectCornerPolyData->SetPoints(aGrid->GetPoints());
-
-      vtkIdList *anIds = vtkIdList::New();
-      for (int i = 0, iEnd = theIds.size(); i < iEnd; i++) {
-        anIds->InsertId(i,theIds[i]);
-        mySelectCornerPolyData->InsertNextCell(VTK_VERTEX, anIds);
-        anIds->Reset();
-      }
-      anIds->Delete();
-      mySelectCornerPolyData->Modified();
-      mySelectCornerActor->GetMapper()->Update();
-      mySelectCornerActor->SetRepresentation(SMESH_Actor::ePoint);
-    }
-
-    void SetVisibility ( bool theVisibility,
-                         bool theCornerVisibility = false,
-                         bool theSelectCornerVisibility = false,
-                         bool theShowOrientation = false )
+    void SetVisibility (bool theVisibility, bool theShowOrientation = false)
     {
       myPreviewActor->SetVisibility(theVisibility);
       myFaceOrientation->SetVisibility(theShowOrientation);
-      myCornerActor->SetVisibility(theCornerVisibility);
-      mySelectCornerActor->SetVisibility(theSelectCornerVisibility);
       RepaintCurrentView();
     }
 
+
     ~TElementSimulationQuad()
     {
       if (FindVtkViewWindow(myApplication->activeViewManager(), myViewWindow)) {
         myVTKViewWindow->RemoveActor(myPreviewActor);
         myVTKViewWindow->RemoveActor(myFaceOrientation);
-        myVTKViewWindow->RemoveActor(myCornerActor);
-        myVTKViewWindow->RemoveActor(mySelectCornerActor);
       }
       myPreviewActor->Delete();
       myFaceOrientation->Delete();
-      myCornerActor->Delete();
-      mySelectCornerActor->Delete();
 
       myMapper->RemoveAllInputs();
       myMapper->Delete();
@@ -350,14 +249,6 @@ namespace SMESH
 
       myGrid->Delete();
 
-      myCornerMapper->RemoveAllInputs();
-      myCornerMapper->Delete();
-      myCornerPolyData->Delete();
-
-      mySelectCornerMapper->RemoveAllInputs();
-      mySelectCornerMapper->Delete();
-      mySelectCornerPolyData->Delete();
-
 //       myProp->Delete();
 //       myBackProp->Delete();
     }
@@ -1042,36 +933,40 @@ void SMESHGUI_AddQuadraticElementDlg::SelectionIntoArgument()
 
   QString aCurrentEntry = myEntry;
 
-  // clear
-  myActor = 0;
   if ( myCurrentLineEdit )
+  {
+    // clear
+    myActor = 0;
+
     myCurrentLineEdit->setText("");
 
-  if (!GroupButtons->isEnabled()) // inactive
-    return;
+    if (!GroupButtons->isEnabled()) // inactive
+      return;
 
-  mySimulation->SetVisibility(false);
+    mySimulation->SetVisibility(false);
 
-  // get selected mesh
-  SALOME_ListIO aList;
-  mySelectionMgr->selectedObjects(aList);
+    // get selected mesh
+    SALOME_ListIO aList;
+    mySelectionMgr->selectedObjects(aList);
 
-  if (aList.Extent() != 1)
-  {
-    UpdateTable();
-    updateButtons();
-    return;
-  }
+    if (aList.Extent() != 1)
+    {
+      UpdateTable();
+      updateButtons();
+      return;
+    }
 
-  Handle(SALOME_InteractiveObject) anIO = aList.First();
-  myEntry = anIO->getEntry();
-  myMesh = SMESH::GetMeshByIO(anIO);
-  if (myMesh->_is_nil()) {
-    updateButtons();
-    return;
-  }
+    Handle(SALOME_InteractiveObject) anIO = aList.First();
+    myEntry = anIO->getEntry();
+    myMesh = SMESH::GetMeshByIO(anIO);
+    if (myMesh->_is_nil()) {
+      updateButtons();
+      return;
+    }
 
-  myActor = SMESH::FindActorByEntry(anIO->getEntry());
+    myActor = SMESH::FindActorByEntry(anIO->getEntry());
+
+  }
 
   // process groups
   if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
@@ -1140,10 +1035,9 @@ void SMESHGUI_AddQuadraticElementDlg::SelectionIntoArgument()
 // purpose  :
 //=================================================================================
 
-void SMESHGUI_AddQuadraticElementDlg::displaySimulation(int theRow, int theCol)
+void SMESHGUI_AddQuadraticElementDlg::displaySimulation()
 {
-  bool isValid = IsValid();
-  if ( ( isValid || myTable->isEnabled() ) && myActor )
+  if ( IsValid() )
   {
     SMESH::TElementSimulationQuad::TVTKIds anIds;
 
@@ -1151,6 +1045,7 @@ void SMESHGUI_AddQuadraticElementDlg::displaySimulation(int theRow, int theCol)
     int anID;
     bool ok;
     int aDisplayMode = VTK_SURFACE;
+
     if ( myGeomType == SMDSEntity_Quad_Edge )
     {
       anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->item(0, 0)->text().toInt() ) );
@@ -1174,33 +1069,20 @@ void SMESHGUI_AddQuadraticElementDlg::displaySimulation(int theRow, int theCol)
         }
         anIds.push_back( myActor->GetObject()->GetNodeVTKId(anID) );
       }
-      if ( myNbMidFaceNodes && isValid)
+      if ( myNbMidFaceNodes )
       {
         QStringList aListId = myMidFaceNodes->text().split(" ", QString::SkipEmptyParts);
         for (int i = 0; i < aListId.count(); i++)
           anIds.push_back( myActor->GetObject()->GetNodeVTKId( aListId[ i ].toInt() ));
       }
-      if ( myNbCenterNodes && isValid)
+      if ( myNbCenterNodes )
       {
         QStringList aListId = myCenterNode->text().split(" ", QString::SkipEmptyParts);
         anIds.push_back( myActor->GetObject()->GetNodeVTKId( aListId[ 0 ].toInt() ));
       }
     }
-    if ( isValid )
-      mySimulation->SetPosition(myActor,myGeomType,anIds,aDisplayMode,myReverseCB->isChecked());
-    mySimulation->SetCornerNodes(myActor, anIds);
-    if ( theCol == 1 ) {
-      anIds.clear();
-      anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->item(theRow, 0)->text().toInt() ) );
-      anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->item(theRow, 2)->text().toInt() ) );
-      bool ok;
-      int anID;
-      anID = myTable->item(theRow, 1)->text().toInt(&ok);
-      if (ok)
-        anIds.push_back(myActor->GetObject()->GetNodeVTKId(anID));
-      mySimulation->SetSelectedNodes(myActor, anIds);
-    }
-    mySimulation->SetVisibility(isValid, true, true, myActor->GetFacesOriented());
+
+    mySimulation->SetPosition(myActor,myGeomType,anIds,aDisplayMode,myReverseCB->isChecked());
   }
   else
   {
@@ -1422,7 +1304,7 @@ void SMESHGUI_AddQuadraticElementDlg::UpdateTable( bool theConersValidity )
 void SMESHGUI_AddQuadraticElementDlg::onCellDoubleClicked( int theRow, int theCol )
 {
   myCurrentLineEdit = 0;
-  displaySimulation(theRow, theCol);
+  displaySimulation();
   updateButtons();
 }
 
@@ -1434,7 +1316,7 @@ void SMESHGUI_AddQuadraticElementDlg::onCellDoubleClicked( int theRow, int theCo
 void SMESHGUI_AddQuadraticElementDlg::onCellTextChange(int theRow, int theCol)
 {
   myCurrentLineEdit = 0;
-  displaySimulation(theRow, theCol);
+  displaySimulation();
   updateButtons();
 }