Salome HOME
Implementation of the Point 2 of the 20948: EDF 1468 SMESH: Histogram of the quality...
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_VTKUtils.cxx
index 450aca68d574750dd2338a4f3ecfee207965a26b..184eb903cb05f34e53a23b96a6d746761d2155fb 100644 (file)
@@ -30,6 +30,7 @@
 #include "SMESHGUI.h"
 #include "SMESHGUI_Utils.h"
 #include "SMESHGUI_Filter.h"
+#include "SMESH_ControlsDef.hxx"
 
 #include <SMESH_Actor.h>
 #include <SMESH_ActorUtils.h>
 #include <SalomeApp_Application.h>
 #include <SalomeApp_Study.h>
 
+#ifndef DISABLE_PLOT2DVIEWER
+#include <SPlot2d_ViewModel.h>
+#include <SPlot2d_Histogram.h>
+#include <Plot2d_ViewManager.h>
+#endif
+
 // SALOME KERNEL includes
 #include <utilities.h>
 
@@ -652,6 +659,9 @@ namespace SMESH
           VISUAL_OBJ_CONT.erase(aKey);
         }
       }
+#ifndef DISABLE_PLOT2DVIEWER
+       ProcessIn2DViewers(theActor,RemoveFrom2dViewer);
+#endif
       theActor->Delete();
       vtkWnd->Repaint();
     }
@@ -1303,4 +1313,44 @@ namespace SMESH
     DistanceToPosition( theBounds, theNormal, theDist, theOrigin );
     return true;
   }
+
+#ifndef DISABLE_PLOT2DVIEWER
+  //=======================================================================
+  /**
+     Get histogram from the input actor
+     Repaint/Remove the histogram in/from each opened Plot2D Viewer 
+  */
+  //=======================================================================
+  void ProcessIn2DViewers( SMESH_Actor *theActor, Viewer2dActionType aType ) {
+    SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
+    
+    if(!anApp || !theActor)
+      return;
+
+    SPlot2d_Histogram* aHistogram = 0;
+    if(theActor->GetPlot2Histogram())
+      aHistogram = theActor->UpdatePlot2Histogram();
+    else 
+      return;
+      
+     ViewManagerList aViewManagerList;
+     anApp->viewManagers(SPlot2d_Viewer::Type(), aViewManagerList);
+     
+     aType = aHistogram->getPointList().empty() ? RemoveFrom2dViewer : aType;
+     
+     SUIT_ViewManager* aViewManager;
+     foreach( aViewManager, aViewManagerList ) {
+       if (Plot2d_ViewManager* aManager = dynamic_cast<Plot2d_ViewManager*>(aViewManager)) {
+        if (SPlot2d_Viewer* aViewer = dynamic_cast<SPlot2d_Viewer*>(aManager->getViewModel())) {
+          if (Plot2d_ViewFrame* aViewFrame = aViewer->getActiveViewFrame()) {
+            if(aType == UpdateIn2dViewer )
+              aViewFrame->displayObject(aHistogram, true);
+            else if (aType == RemoveFrom2dViewer)
+              aViewFrame->eraseObject(aHistogram, true);
+          }
+        }
+       }
+     }
+  }
+#endif //DISABLE_PLOT2DVIEWER
 } // end of namespace SMESH