Salome HOME
Join modifications from branch OCC_development_for_3_2_0a2
[modules/visu.git] / src / VISUGUI / VisuGUI_ClippingDlg.cxx
index 68f4b0c218557da672fc638da5c46f953fc055ac..d0ff68478199ded89328979237308b6dbe1bb10b 100644 (file)
@@ -1,15 +1,35 @@
+// Copyright (C) 2005  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 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/
+//
 
 #include "VisuGUI_ClippingDlg.h"
 
 #include "VisuGUI.h"
 #include "VisuGUI_Tools.h"
+#include "VisuGUI_ViewTools.h"
 
 #include "VISU_Prs3d_i.hh"
 #include "VISU_Result_i.hh"
 
 #include "VISU_PipeLine.hxx"
 
-#include "SalomeApp_SelectionMgr.h"
+#include "LightApp_SelectionMgr.h"
 
 #include "SVTK_ViewWindow.h"
 
@@ -44,6 +64,7 @@
 #include <vtkPlaneSource.h>
 #include <vtkPolyData.h>
 #include <vtkUnstructuredGrid.h>
+#include <vtkProperty.h>
 
 // OCCT Includes
 #include <gp_Dir.hxx>
@@ -55,7 +76,7 @@ namespace VISU {
   {
     if (theValue.isEmpty()) return theDefault;
     SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
-    QString aValue = aResourceMgr->stringValue(theValue);
+    QString aValue = aResourceMgr->stringValue("VISU",theValue);
     if (aValue.isEmpty()) return theDefault;
     return aValue.toFloat();
   }
@@ -63,10 +84,8 @@ namespace VISU {
   void RenderViewWindow (SVTK_ViewWindow* vw)
   {
     if (vw) {
-//if (vw->getRenderer()->GetActors()->GetNumberOfItems() > 0) {
-        vw->getRenderer()->ResetCameraClippingRange();
-        vw->Repaint();
-//}
+      vw->getRenderer()->ResetCameraClippingRange();
+      vw->Repaint();
     }
   }
 
@@ -163,18 +182,23 @@ protected:
 
     vtkProperty* aProp = vtkProperty::New();
     float anRGB[3];
-    anRGB[0] = VISU::GetFloat("SMESH:SettingsFillColorRed", 0)/255.;
-    anRGB[1] = VISU::GetFloat("SMESH:SettingsFillColorGreen", 170)/255.;
-    anRGB[2] = VISU::GetFloat("SMESH:SettingsFillColorBlue", 255)/255.;
+
+    SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
+
+    QColor aFillColor = aResourceMgr->colorValue("SMESH", "fill_color", QColor(0, 170, 255));
+    anRGB[0] = aFillColor.red()/255.;
+    anRGB[1] = aFillColor.green()/255.;
+    anRGB[2] = aFillColor.blue()/255.;
     aProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
     aProp->SetOpacity(0.75);
     myActor->SetProperty(aProp);
     aProp->Delete();
 
     vtkProperty* aBackProp = vtkProperty::New();
-    anRGB[0] = VISU::GetFloat("SMESH:SettingsBackFaceColorRed", 0)/255.;
-    anRGB[1] = VISU::GetFloat("SMESH:SettingsBackFaceColorGreen", 0)/255.;
-    anRGB[2] = VISU::GetFloat("SMESH:SettingsBackFaceColorBlue", 255)/255.;
+    QColor aBackFaceColor = aResourceMgr->colorValue("SMESH", "backface_color", QColor(0, 0, 255));//@
+    anRGB[0] = aBackFaceColor.red()/255.;
+    anRGB[1] = aBackFaceColor.green()/255.;
+    anRGB[2] = aBackFaceColor.blue()/255.;
     aBackProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
     aBackProp->SetOpacity(0.75);
     myActor->SetBackfaceProperty(aBackProp);
@@ -366,7 +390,7 @@ VisuGUI_ClippingDlg::~VisuGUI_ClippingDlg()
 {
   // no need to delete child widgets, Qt does it all for us
   std::for_each(myPlanes.begin(),myPlanes.end(),TSetVisiblity(false));
-  VISU::RenderViewWindow(VISU::GetViewWindow(myVisuGUI));
+  VISU::RenderViewWindow(VISU::GetActiveViewWindow<SVTK_ViewWindow>(myVisuGUI));
 }
 
 //=================================================================================
@@ -458,9 +482,13 @@ void VisuGUI_ClippingDlg::ClickOnApply()
   if (!myPrs3d)
     return;
 
-  if (SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myVisuGUI)) {
+  if (SVTK_ViewWindow* aViewWindow = VISU::GetActiveViewWindow<SVTK_ViewWindow>(myVisuGUI)) {
     SUIT_OverrideCursor wc;
 
+    QWidget *aCurrWid = this->focusWidget();
+    aCurrWid->clearFocus();
+    aCurrWid->setFocus();
+
     // Save clipping planes, currently applied to the presentation
     // to enable restoring this state in case of failure.
     // Refer to bugs IPAL8849, IPAL8850 for more information.
@@ -512,7 +540,8 @@ void VisuGUI_ClippingDlg::ClickOnApply()
                              tr("BUT_OK") );
     }
 
-    VISU::RenderViewWindow(aViewWindow);
+    //VISU::RenderViewWindow(aViewWindow);
+    VISU::RepaintViewWindows(myVisuGUI, myIO);
   }
 }
 
@@ -541,9 +570,10 @@ void VisuGUI_ClippingDlg::ClickOnCancel()
 //=================================================================================
 void VisuGUI_ClippingDlg::onSelectionChanged()
 {
-  if (SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myVisuGUI)) {
+  if (SVTK_ViewWindow* aViewWindow = VISU::GetActiveViewWindow<SVTK_ViewWindow>(myVisuGUI)) {
     Handle(SALOME_InteractiveObject) anIO;
     CORBA::Object_var anObject = VISU::GetSelectedObj(myVisuGUI, &anIO);
+    myIO = anIO;
     if (CORBA::is_nil(anObject)) return;
     PortableServer::ServantBase_var aServant = VISU::GetServant(anObject);
     if (!aServant.in()) return;
@@ -628,7 +658,7 @@ void VisuGUI_ClippingDlg::ClickOnNew()
   if (!myPrs3d)
     return;
 
-  if (SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myVisuGUI)) {
+  if (SVTK_ViewWindow* aViewWindow = VISU::GetActiveViewWindow<SVTK_ViewWindow>(myVisuGUI)) {
     OrientedPlane* aPlane = OrientedPlane::New(aViewWindow);
     VISU::TVTKPlane aTVTKPlane(aPlane);
     myPlanes.push_back(aTVTKPlane);
@@ -664,7 +694,7 @@ void VisuGUI_ClippingDlg::ClickOnDelete()
     ClickOnApply();
 
   Sinchronize();
-  if (SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myVisuGUI))
+  if (SVTK_ViewWindow* aViewWindow = VISU::GetActiveViewWindow<SVTK_ViewWindow>(myVisuGUI))
     VISU::RenderViewWindow(aViewWindow);
 }
 
@@ -861,7 +891,7 @@ void VisuGUI_ClippingDlg::SetCurrentPlaneParam()
   if (AutoApplyCheckBox->isChecked())
     ClickOnApply();
 
-  if (SVTK_ViewWindow* vw = VISU::GetViewWindow(myVisuGUI))
+  if (SVTK_ViewWindow* vw = VISU::GetActiveViewWindow<SVTK_ViewWindow>(myVisuGUI))
     VISU::RenderViewWindow(vw);
 }
 
@@ -1069,6 +1099,6 @@ void VisuGUI_ClippingDlg::onIJKAxisChanged(int axisId)
 void VisuGUI_ClippingDlg::OnPreviewToggle (bool theIsToggled)
 {
   std::for_each(myPlanes.begin(),myPlanes.end(),TSetVisiblity(theIsToggled));
-  if (SVTK_ViewWindow* vw = VISU::GetViewWindow(myVisuGUI))
+  if (SVTK_ViewWindow* vw = VISU::GetActiveViewWindow<SVTK_ViewWindow>(myVisuGUI))
     VISU::RenderViewWindow(vw);
 }