Salome HOME
Issue #3150: Turn On/Off Isos for multi-selection
[modules/shaper.git] / src / XGUI / XGUI_ViewerProxy.cpp
index 175ed87790b880f08b2aa83415bac3c2c7e2c19d..4b82e3ed627b289936b4967ed3dd504302dcf052 100644 (file)
@@ -122,7 +122,7 @@ void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ,
     aView3d->SetProj(theX, theY, theZ);
     aView3d->SetTwist( theTwist );
     aView3d->FitAll(0.01, false);
-    aView3d->SetZSize(0.);
+    //aView3d->SetZSize(0.);
     if (aView3d->Depth() < 0.1)
       aView3d->DepthFitAll();
   }
@@ -299,18 +299,34 @@ void XGUI_ViewerProxy::onMouseMove(AppElements_ViewWindow* theWnd, QMouseEvent*
   if (myIs2dMode) {
     bool aHighlight2d =
       ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-2d", true);
-    if (aHighlight2d || myShowHighlight)
-      updateHighlight();
-    else
-      eraseHighlight();
+    if (aHighlight2d) {
+      if (myShowHighlight)
+        eraseHighlight();
+      else
+        updateHighlight();
+    }
+    else {
+      if (myShowHighlight)
+        updateHighlight();
+      else
+        eraseHighlight();
+    }
   }
   else {
     bool aHighlight3d =
       ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-3d", false);
-    if (aHighlight3d || myShowHighlight)
-      updateHighlight();
-    else
-      eraseHighlight();
+    if (aHighlight3d) {
+      if (myShowHighlight)
+        eraseHighlight();
+      else
+        updateHighlight();
+    }
+    else {
+      if (myShowHighlight)
+        updateHighlight();
+      else
+        eraseHighlight();
+    }
   }
   emit mouseMove(theWnd, theEvent);
 }
@@ -450,6 +466,7 @@ void XGUI_ViewerProxy::displayHighlight(FeaturePtr theFeature, const TopoDS_Shap
           aAis->SetZLayer(Graphic3d_ZLayerId_Top); //Graphic3d_ZLayerId_Topmost
           aDeflection = Config_PropManager::real("Visualization", "construction_deflection");
           aAis->Attributes()->SetDeviationCoefficient(aDeflection);
+          aAis->Attributes()->SetIsoOnPlane(false);
           myHighlights.Append(aAis);
           aContext->Display(aAis, false);
           aContext->Deactivate(aAis);
@@ -464,22 +481,25 @@ void XGUI_ViewerProxy::displayHighlight(FeaturePtr theFeature, const TopoDS_Shap
     aAis->SetZLayer(Graphic3d_ZLayerId_Top); //Graphic3d_ZLayerId_Topmost
     aDeflection = Config_PropManager::real("Visualization", "body_deflection");
     aAis->Attributes()->SetDeviationCoefficient(aDeflection);
+    aAis->Attributes()->SetIsoOnPlane(false);
     myHighlights.Append(aAis);
     aContext->Display(aAis, false);
     aContext->Deactivate(aAis);
   }
 }
 
-void XGUI_ViewerProxy::eraseHighlight()
+bool XGUI_ViewerProxy::eraseHighlight()
 {
   Handle(AIS_InteractiveContext) aContext = AISContext();
   Handle(AIS_InteractiveObject) anAISIO;
   AIS_ListIteratorOfListOfInteractive aLIt;
+  bool isErased = myHighlights.Extent() > 0;
   for (aLIt.Initialize(myHighlights); aLIt.More(); aLIt.Next()) {
     anAISIO = aLIt.Value();
     aContext->Remove(anAISIO, false);
   }
   myHighlights.Clear();
+  return isErased;
 }
 
 void XGUI_ViewerProxy::updateHighlight()
@@ -509,14 +529,15 @@ void XGUI_ViewerProxy::updateHighlight()
           else {
             myResult = ResultPtr();
           }
-          aContext->UpdateCurrentViewer();
+          update();
         }
         isDisplayed = aRes.get();
       }
     }
     if (!isDisplayed) {
-      eraseHighlight();
-      aContext->UpdateCurrentViewer();
+      if (eraseHighlight()) {
+        update();
+      }
       myResult = ResultPtr();
     }
   }
@@ -528,18 +549,34 @@ void XGUI_ViewerProxy::onMouseMove(ModuleBase_IViewWindow* theWnd, QMouseEvent*
   if (myIs2dMode) {
     bool aHighlight2d =
       ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-2d", true);
-    if (aHighlight2d || myShowHighlight)
-      updateHighlight();
-    else
-      eraseHighlight();
+    if (aHighlight2d) {
+      if (myShowHighlight)
+        eraseHighlight();
+      else
+        updateHighlight();
+    }
+    else {
+      if (myShowHighlight)
+        updateHighlight();
+      else
+        eraseHighlight();
+    }
   }
   else {
     bool aHighlight3d =
       ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-3d", false);
-    if (aHighlight3d || myShowHighlight)
-      updateHighlight();
-    else
-      eraseHighlight();
+    if (aHighlight3d) {
+      if (myShowHighlight)
+        eraseHighlight();
+      else
+        updateHighlight();
+    }
+    else {
+      if (myShowHighlight)
+        updateHighlight();
+      else
+        eraseHighlight();
+    }
   }
   emit mouseMove(theWnd, theEvent);
 }
@@ -665,7 +702,7 @@ void XGUI_ViewerProxy::setupColorScale()
   double aH = aResMgr->doubleValue("Viewer", "scalar_bar_height", 0.5);
   setColorScaleSize(aW, aH);
 
-  QColor aColor = aResMgr->integerValue("Viewer", "scalar_bar_text_color", Qt::black);
+  QColor aColor = aResMgr->colorValue("Viewer", "scalar_bar_text_color", Qt::black);
   setColorScaleTextColor(aColor);
 
   int aT = aResMgr->integerValue("Viewer", "scalar_bar_text_height", 14);
@@ -691,4 +728,27 @@ void XGUI_ViewerProxy::setupColorScale()
 //      aView3d->DepthFitAll();
 //  }
 //#endif
-//}
\ No newline at end of file
+//}
+
+
+#ifdef HAVE_SALOME
+void XGUI_ViewerProxy::setFitter(OCCViewer_Fitter* theFitter)
+{
+  myWorkshop->salomeConnector()->viewer()->setFitter(theFitter);
+}
+
+OCCViewer_Fitter* XGUI_ViewerProxy::fitter() const
+{
+  return myWorkshop->salomeConnector()->viewer()->fitter();
+}
+#else
+void XGUI_ViewerProxy::setFitter(AppElements_Fitter* theFitter)
+{
+  myWorkshop->mainWindow()->viewer()->setFitter(theFitter);
+}
+
+AppElements_Fitter* XGUI_ViewerProxy::fitter() const
+{
+  return myWorkshop->mainWindow()->viewer()->fitter();
+}
+#endif