mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-18 11:30:37 +05:00
Additional changes for the Point 2 of the "20948: EDF 1468 SMESH: Histogram of the quality controls" issue.
This commit is contained in:
parent
ddc98ff4c0
commit
1758d524e7
@ -533,6 +533,13 @@ SMESH_ActorDef::~SMESH_ActorDef()
|
||||
{
|
||||
if(MYDEBUG) MESSAGE("~SMESH_ActorDef - "<<this);
|
||||
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
if(my2dHistogram) {
|
||||
SMESH::ProcessIn2DViewers(this,SMESH::RemoveFrom2dViewer);
|
||||
delete my2dHistogram;
|
||||
}
|
||||
#endif
|
||||
|
||||
// caught by SMESHGUI::ProcessEvents() static method
|
||||
this->InvokeEvent( SMESH::DeleteActorEvent, NULL );
|
||||
|
||||
@ -617,10 +624,6 @@ SMESH_ActorDef::~SMESH_ActorDef()
|
||||
myImplicitBoolean->Delete();
|
||||
|
||||
myTimeStamp->Delete();
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
if(my2dHistogram)
|
||||
delete my2dHistogram;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -1344,6 +1347,10 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
||||
if(myIsCellsLabeled)
|
||||
myCellsLabels->VisibilityOn();
|
||||
}
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
else
|
||||
SMESH::ProcessIn2DViewers(this,SMESH::RemoveFrom2dViewer);
|
||||
#endif
|
||||
UpdateHighlight();
|
||||
Modified();
|
||||
}
|
||||
|
@ -21,10 +21,19 @@
|
||||
//
|
||||
|
||||
#include "SMESH_ActorUtils.h"
|
||||
#include "SMESH_Actor.h"
|
||||
|
||||
#include "SUIT_Tools.h"
|
||||
#include "SUIT_Session.h"
|
||||
#include "SUIT_ResourceMgr.h"
|
||||
#include "SalomeApp_Application.h"
|
||||
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
#include <SPlot2d_ViewModel.h>
|
||||
#include <SPlot2d_Histogram.h>
|
||||
#include <Plot2d_ViewManager.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "utilities.h"
|
||||
|
||||
@ -126,4 +135,49 @@ namespace SMESH
|
||||
g = ig / 255.;
|
||||
b = ib / 255.;
|
||||
}
|
||||
|
||||
#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())
|
||||
if(aType == UpdateIn2dViewer)
|
||||
aHistogram = theActor->UpdatePlot2Histogram();
|
||||
else
|
||||
aHistogram = theActor->GetPlot2Histogram();
|
||||
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
|
||||
|
||||
}
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <QColor>
|
||||
|
||||
class vtkUnstructuredGrid;
|
||||
class SMESH_Actor;
|
||||
|
||||
namespace SMESH
|
||||
{
|
||||
@ -71,6 +72,17 @@ SMESHOBJECT_EXPORT
|
||||
WriteUnstructuredGrid(vtkUnstructuredGrid* theGrid,
|
||||
const char* theFileName);
|
||||
|
||||
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
|
||||
typedef enum {UpdateIn2dViewer = 0, RemoveFrom2dViewer } Viewer2dActionType;
|
||||
|
||||
SMESHOBJECT_EXPORT
|
||||
void ProcessIn2DViewers( SMESH_Actor* theActor, Viewer2dActionType = UpdateIn2dViewer );
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -89,6 +89,7 @@
|
||||
#include <SMESH_Client.hxx>
|
||||
#include <SMESH_Actor.h>
|
||||
#include <SMESH_ScalarBarActor.h>
|
||||
#include <SMESH_ActorUtils.h>
|
||||
#include <SMESH_TypeFilter.hxx>
|
||||
#include "SMESH_ControlsDef.hxx"
|
||||
|
||||
@ -1407,7 +1408,12 @@
|
||||
return;
|
||||
|
||||
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
|
||||
SUIT_ViewManager* vm = anApp->activeViewManager();
|
||||
|
||||
ViewManagerList aViewMenegers = anApp->viewManagers();
|
||||
ViewManagerList::const_iterator it = aViewMenegers.begin();
|
||||
for( ; it != aViewMenegers.end(); it++) {
|
||||
|
||||
SUIT_ViewManager* vm = *it;
|
||||
int nbSf = vm ? vm->getViewsCount() : 0;
|
||||
|
||||
SALOME_ListIteratorOfListIO It(selected);
|
||||
@ -1494,6 +1500,8 @@
|
||||
} /* listSO back loop */
|
||||
} /* IObject->hasEntry() */
|
||||
} /* more/next */
|
||||
} /* aViewMenegers list loop */
|
||||
|
||||
aStudyBuilder->CommitCommand();
|
||||
|
||||
/* Clear any previous selection */
|
||||
@ -4132,6 +4140,16 @@ bool SMESHGUI::activateModule( SUIT_Study* study )
|
||||
updateObjBrowser(); // objects can be removed
|
||||
}
|
||||
|
||||
// get all view currently opened in the study and connect their signals to
|
||||
// the corresponding slots of the class.
|
||||
SUIT_Desktop* aDesk = study->application()->desktop();
|
||||
if ( aDesk ) {
|
||||
QList<SUIT_ViewWindow*> wndList = aDesk->windows();
|
||||
SUIT_ViewWindow* wnd;
|
||||
foreach ( wnd, wndList )
|
||||
connectView( wnd );
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -4228,8 +4246,15 @@ void SMESHGUI::viewManagers( QStringList& list ) const
|
||||
|
||||
void SMESHGUI::onViewManagerActivated( SUIT_ViewManager* mgr )
|
||||
{
|
||||
if ( dynamic_cast<SVTK_ViewManager*>( mgr ) )
|
||||
if ( dynamic_cast<SVTK_ViewManager*>( mgr ) ) {
|
||||
SMESH::UpdateSelectionProp( this );
|
||||
|
||||
QVector<SUIT_ViewWindow*> aViews = mgr->getViews();
|
||||
for(int i = 0; i < aViews.count() ; i++){
|
||||
SUIT_ViewWindow *sf = aViews[i];
|
||||
connectView( sf );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SMESHGUI::onViewManagerRemoved( SUIT_ViewManager* theViewManager )
|
||||
@ -5677,3 +5702,34 @@ void SMESHGUI::onHypothesisEdit( int result )
|
||||
SMESHGUI::Modified();
|
||||
updateObjBrowser( true );
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\brief Signal handler closing(SUIT_ViewWindow*) of a view
|
||||
\param pview view being closed
|
||||
*/
|
||||
void SMESHGUI::onViewClosed( SUIT_ViewWindow* pview ) {
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
//Crear all Plot2d Viewers if need.
|
||||
SMESH::ClearPlot2Viewers(pview);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Connects or disconnects signals about activating and cloning view on the module slots
|
||||
\param pview view which is connected/disconnected
|
||||
*/
|
||||
void SMESHGUI::connectView( const SUIT_ViewWindow* pview ) {
|
||||
if(!pview)
|
||||
return;
|
||||
|
||||
SUIT_ViewManager* viewMgr = pview->getViewManager();
|
||||
if ( viewMgr ) {
|
||||
disconnect( viewMgr, SIGNAL( deleteView( SUIT_ViewWindow* ) ),
|
||||
this, SLOT( onViewClosed( SUIT_ViewWindow* ) ) );
|
||||
|
||||
connect( viewMgr, SIGNAL( deleteView( SUIT_ViewWindow* ) ),
|
||||
this, SLOT( onViewClosed( SUIT_ViewWindow* ) ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,6 +152,8 @@ public slots:
|
||||
virtual bool deactivateModule( SUIT_Study* );
|
||||
virtual bool activateModule( SUIT_Study* );
|
||||
virtual void studyClosed( SUIT_Study* );
|
||||
void onViewClosed( SUIT_ViewWindow* );
|
||||
|
||||
|
||||
private slots:
|
||||
void OnGUIEvent();
|
||||
@ -197,6 +199,9 @@ private:
|
||||
const int pId,
|
||||
const QString& param );
|
||||
|
||||
void connectView( const SUIT_ViewWindow* );
|
||||
|
||||
|
||||
private :
|
||||
static SMESH::SMESH_Gen_var myComponentSMESH;
|
||||
QDialog* myActiveDialogBox;
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "SMESHGUI_Utils.h"
|
||||
|
||||
#include <SMESH_Actor.h>
|
||||
#include <SMESH_ActorUtils.h>
|
||||
#include <SMESH_ScalarBarActor.h>
|
||||
#include <SMESH_ControlsDef.hxx>
|
||||
|
||||
|
@ -57,12 +57,6 @@
|
||||
#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>
|
||||
|
||||
@ -659,9 +653,6 @@ namespace SMESH
|
||||
VISUAL_OBJ_CONT.erase(aKey);
|
||||
}
|
||||
}
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
ProcessIn2DViewers(theActor,RemoveFrom2dViewer);
|
||||
#endif
|
||||
theActor->Delete();
|
||||
vtkWnd->Repaint();
|
||||
}
|
||||
@ -1315,42 +1306,29 @@ namespace SMESH
|
||||
}
|
||||
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
//=======================================================================
|
||||
/**
|
||||
Get histogram from the input actor
|
||||
Repaint/Remove the histogram in/from each opened Plot2D Viewer
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Find all SMESH_Actor's in the View Window.
|
||||
* If actor constains Plot2d_Histogram object remove it from each 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);
|
||||
void ClearPlot2Viewers( SUIT_ViewWindow* theWindow ) {
|
||||
if(SVTK_ViewWindow* aViewWindow = GetVtkViewWindow(theWindow)){
|
||||
vtkRenderer *aRenderer = aViewWindow->getRenderer();
|
||||
VTK::ActorCollectionCopy aCopy(aRenderer->GetActors());
|
||||
vtkActorCollection *aCollection = aCopy.GetActors();
|
||||
aCollection->InitTraversal();
|
||||
while(vtkActor *anAct = aCollection->GetNextActor()){
|
||||
if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
|
||||
if(anActor->hasIO() && anActor->GetPlot2Histogram() ){
|
||||
ProcessIn2DViewers(anActor,RemoveFrom2dViewer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif //DISABLE_PLOT2DVIEWER
|
||||
|
||||
#endif
|
||||
|
||||
} // end of namespace SMESH
|
||||
|
@ -40,11 +40,6 @@
|
||||
#include <SALOME_InteractiveObject.hxx>
|
||||
#include <VTKViewer_Filter.h>
|
||||
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
class SPlot2d_Histogram;
|
||||
#endif
|
||||
|
||||
|
||||
class TColStd_IndexedMapOfInteger;
|
||||
|
||||
class SALOMEDSClient_Study;
|
||||
@ -196,6 +191,11 @@ SMESHGUI_EXPORT
|
||||
SMESHGUI_EXPORT
|
||||
void SetControlsPrecision( const long );
|
||||
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
SMESHGUI_EXPORT
|
||||
void ClearPlot2Viewers( SUIT_ViewWindow* theWindow );
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
SMESHGUI_EXPORT
|
||||
bool ComputeClippingPlaneParameters( std::list<vtkActor*> theActorList,
|
||||
@ -203,16 +203,6 @@ SMESHGUI_EXPORT
|
||||
vtkFloatingPointType theDist,
|
||||
vtkFloatingPointType theBounds[6],
|
||||
vtkFloatingPointType theOrigin[3] );
|
||||
|
||||
#ifndef DISABLE_PLOT2DVIEWER
|
||||
|
||||
typedef enum {UpdateIn2dViewer = 0, RemoveFrom2dViewer } Viewer2dActionType;
|
||||
|
||||
SMESHGUI_EXPORT
|
||||
void ProcessIn2DViewers( SMESH_Actor* theActor, Viewer2dActionType = UpdateIn2dViewer );
|
||||
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
#endif // SMESHGUI_VTKUTILS_H
|
||||
|
Loading…
Reference in New Issue
Block a user