Salome HOME
PROJECT: POST-PROCESSOR 2005 TASK: T 1.5
[modules/kernel.git] / src / VTKViewer / VTKViewer_InteractorStyleSALOME.cxx
index 0fd4d7c52d16fafdd40ca2e66fc4506077661f39..6258e573f788e8d347c1b54755a0926315510224 100644 (file)
@@ -45,6 +45,7 @@
 #include "VTKViewer_Actor.h"
 #include "SALOME_Selection.h"
 #include "SALOME_ListIteratorOfListIO.hxx"
+#include "SALOME_CubeAxesActor2D.h"
 
 #include <vtkObjectFactory.h>
 #include <vtkMath.h>
@@ -146,6 +147,7 @@ vtkStandardNewMacro(VTKViewer_InteractorStyleSALOME);
 VTKViewer_InteractorStyleSALOME::VTKViewer_InteractorStyleSALOME() 
 {
   m_Trihedron = 0;
+  m_CubeAxes = 0;
   this->MotionFactor = 10.0;
   this->State = VTK_INTERACTOR_STYLE_CAMERA_NONE;
   this->RadianToDegree = 180.0 / vtkMath::Pi();
@@ -201,6 +203,10 @@ void VTKViewer_InteractorStyleSALOME::setTriedron(VTKViewer_Trihedron* theTrihed
   m_Trihedron = theTrihedron;
 }
 
+void VTKViewer_InteractorStyleSALOME::setCubeAxes(SALOME_CubeAxesActor2D* theCubeAxes){
+  m_CubeAxes = theCubeAxes;
+}
+
 //----------------------------------------------------------------------------
 void VTKViewer_InteractorStyleSALOME::RotateXY(int dx, int dy)
 {
@@ -624,20 +630,29 @@ void VTKViewer_InteractorStyleSALOME::startFitArea()
 //----------------------------------------------------------------------------
 void  VTKViewer_InteractorStyleSALOME::ViewFitAll() {
   int aTriedronWasVisible = false;
+  int aCubeAxesWasVisible = false;
   if(m_Trihedron){
     aTriedronWasVisible = m_Trihedron->GetVisibility() == VTKViewer_Trihedron::eOn;
     if(aTriedronWasVisible) m_Trihedron->VisibilityOff();
   }
+  if(m_CubeAxes){
+    aCubeAxesWasVisible = m_CubeAxes->GetVisibility();
+    if(aCubeAxesWasVisible) m_CubeAxes->VisibilityOff();
+  }
 
   if(m_Trihedron->GetVisibleActorCount(CurrentRenderer)){
     m_Trihedron->VisibilityOff();
+    m_CubeAxes->VisibilityOff();
     ::ResetCamera(CurrentRenderer);
   }else{
     m_Trihedron->SetVisibility(VTKViewer_Trihedron::eOnlyLineOn);
+    m_CubeAxes->SetVisibility(2);
     ::ResetCamera(CurrentRenderer,true);
   }
   if(aTriedronWasVisible) m_Trihedron->VisibilityOn();
   else m_Trihedron->VisibilityOff();
+  if(aCubeAxesWasVisible) m_CubeAxes->VisibilityOn();
+  else m_CubeAxes->VisibilityOff();
   ::ResetCameraClippingRange(CurrentRenderer);
 }
 
@@ -1217,6 +1232,12 @@ void VTKViewer_InteractorStyleSALOME::onCursorMove(QPoint mousePos) {
 
   SALOME_Actor* SActor = SALOME_Actor::SafeDownCast(aPicker->GetActor());
 
+  if (SActor && myPreSelectionActor){
+    float aPos[3];
+    SActor->GetPosition(aPos);
+    myPreSelectionActor->SetPosition(aPos);
+  }
+
   if (vtkCellPicker* picker = vtkCellPicker::SafeDownCast(aPicker)) {
     int aVtkId = picker->GetCellId();
     if ( aVtkId >= 0 ) {