#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>
#endif
//MESSAGE("GetVisualObj");
if (nulData)
- objModified = aVisualObj->NulData();
+ objModified = aVisualObj->NulData();
else
objModified = aVisualObj->Update();
}
void RemoveActor( SUIT_ViewWindow *theWnd, SMESH_Actor* theActor){
if(SVTK_ViewWindow* vtkWnd = GetVtkViewWindow(theWnd)){
- MESSAGE("RemoveActor " << theActor);
+ MESSAGE("RemoveActor " << theActor);
vtkWnd->RemoveActor(theActor);
if(theActor->hasIO()){
Handle(SALOME_InteractiveObject) anIO = theActor->getIO();
VISUAL_OBJ_CONT.erase(aKey);
}
}
+#ifndef DISABLE_PLOT2DVIEWER
+ ProcessIn2DViewers(theActor,RemoveFrom2dViewer);
+#endif
theActor->Delete();
vtkWnd->Repaint();
}
bool UpdateView(SUIT_ViewWindow *theWnd, EDisplaing theAction, const char* theEntry)
{
- //MESSAGE("UpdateView");
+ //MESSAGE("UpdateView");
bool OK = false;
SVTK_ViewWindow* aViewWnd = GetVtkViewWindow(theWnd);
if (!aViewWnd)
case eDisplayAll: {
while (vtkActor *anAct = aCollection->GetNextActor()) {
if (SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)) {
- MESSAGE("--- display " << anActor);
+ MESSAGE("--- display " << anActor);
anActor->SetVisibility(true);
}
}
}
case eDisplayOnly:
case eEraseAll: {
- //MESSAGE("---case eDisplayOnly");
+ //MESSAGE("---case eDisplayOnly");
while (vtkActor *anAct = aCollection->GetNextActor()) {
if (SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)) {
- //MESSAGE("--- erase " << anActor);
+ //MESSAGE("--- erase " << anActor);
anActor->SetVisibility(false);
}
}
switch (theAction) {
case eDisplay:
case eDisplayOnly:
- //MESSAGE("--- display " << anActor);
+ //MESSAGE("--- display " << anActor);
anActor->SetVisibility(true);
if (theAction == eDisplayOnly) aRenderer->ResetCameraClippingRange();
break;
case eErase:
- //MESSAGE("--- erase " << anActor);
+ //MESSAGE("--- erase " << anActor);
anActor->SetVisibility(false);
break;
}
case eDisplay:
case eDisplayOnly:
{
- //MESSAGE("---");
+ //MESSAGE("---");
SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(theWnd->getViewManager()->study());
_PTR(Study) aDocument = aStudy->studyDS();
// Pass non-visual objects (hypotheses, etc.), return true in this case
bool UpdateView(EDisplaing theAction, const char* theEntry){
- //MESSAGE("UpdateView");
+ //MESSAGE("UpdateView");
SalomeApp_Study* aStudy = dynamic_cast< SalomeApp_Study* >( GetActiveStudy() );
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( aStudy->application() );
SUIT_ViewWindow *aWnd = app->activeViewManager()->getActiveView();
bool Update(const Handle(SALOME_InteractiveObject)& theIO, bool theDisplay)
{
- MESSAGE("Update");
+ MESSAGE("Update");
_PTR(Study) aStudy = GetActiveStudyDocument();
CORBA::Long anId = aStudy->StudyId();
if ( TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,theIO->getEntry())) {
bool UpdateNulData(const Handle(SALOME_InteractiveObject)& theIO, bool theDisplay)
{
- MESSAGE("UpdateNulData");
+ MESSAGE("UpdateNulData");
_PTR(Study) aStudy = GetActiveStudyDocument();
CORBA::Long anId = aStudy->StudyId();
if ( TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,theIO->getEntry(), true)) {
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