X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_PreviewDlg.cxx;h=fb975be5ca21f684e5d8bdaadfe16132ae934533;hp=7710d161bcc0193ac82e0fa2b4ac782e2bf8ac31;hb=6d32f944a0a115b6419184c50b57bf7c4eef5786;hpb=251f8c052dd12dd29922210dc901b295fe999a0e diff --git a/src/SMESHGUI/SMESHGUI_PreviewDlg.cxx b/src/SMESHGUI/SMESHGUI_PreviewDlg.cxx index 7710d161b..fb975be5c 100644 --- a/src/SMESHGUI/SMESHGUI_PreviewDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_PreviewDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -45,11 +45,13 @@ // purpose : //================================================================================= SMESHGUI_PreviewDlg::SMESHGUI_PreviewDlg(SMESHGUI* theModule) : - mySMESHGUI(theModule), QDialog(SMESH::GetDesktop( theModule )), + mySMESHGUI(theModule), myIsApplyAndClose( false ) { mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI )); + connect(mySMESHGUI, SIGNAL(SignalCloseView()), this, SLOT(onCloseView())); + connect(mySMESHGUI, SIGNAL(SignalActivatedViewManager()), this, SLOT(onOpenView())); } //================================================================================= @@ -66,7 +68,7 @@ SMESHGUI_PreviewDlg::~SMESHGUI_PreviewDlg() // purpose : Show preview in the viewer //================================================================================= void SMESHGUI_PreviewDlg::showPreview(){ - if(mySimulation) + if(mySimulation && mySimulation->GetActor()) mySimulation->SetVisibility(true); } @@ -75,7 +77,7 @@ void SMESHGUI_PreviewDlg::showPreview(){ // purpose : Hide preview in the viewer //================================================================================= void SMESHGUI_PreviewDlg::hidePreview(){ - if(mySimulation) + if(mySimulation && mySimulation->GetActor()) mySimulation->SetVisibility(false); } @@ -87,7 +89,6 @@ void SMESHGUI_PreviewDlg::connectPreviewControl(){ connect(myPreviewCheckBox, SIGNAL(toggled(bool)), this, SLOT(onDisplaySimulation(bool))); } - //================================================================================= // function : toDisplaySimulation // purpose : @@ -124,16 +125,38 @@ bool SMESHGUI_PreviewDlg::isApplyAndClose() const return myIsApplyAndClose; } +//================================================================================= +// function : onCloseView() +// purpose : SLOT called when close view +//================================================================================= +void SMESHGUI_PreviewDlg::onCloseView() +{ + if ( mySimulation && mySimulation->GetActor()) + mySimulation->SetVisibility(false); + delete mySimulation; + mySimulation=0; +} +//================================================================================= +// function : onOpenView() +// purpose : SLOT called when open view +//================================================================================= +void SMESHGUI_PreviewDlg::onOpenView() +{ + if ( !mySimulation) + mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI )); +} //================================================================================= // class : SMESHGUI_SMESHGUI_MultiPreviewDlg() // purpose : //================================================================================= SMESHGUI_MultiPreviewDlg::SMESHGUI_MultiPreviewDlg( SMESHGUI* theModule ) : - mySMESHGUI( theModule ), QDialog( SMESH::GetDesktop( theModule ) ), + mySMESHGUI( theModule ), myIsApplyAndClose( false ) { + mySimulationList.clear(); + connect(mySMESHGUI, SIGNAL(SignalCloseView()), this, SLOT(onCloseView())); } //================================================================================= @@ -152,7 +175,8 @@ SMESHGUI_MultiPreviewDlg::~SMESHGUI_MultiPreviewDlg() void SMESHGUI_MultiPreviewDlg::showPreview() { for ( int i = 0; i < mySimulationList.count(); i++ ) - mySimulationList[i]->SetVisibility( true ); + if(mySimulationList[i] && mySimulationList[i]->GetActor()) + mySimulationList[i]->SetVisibility( true ); } //================================================================================= @@ -162,7 +186,8 @@ void SMESHGUI_MultiPreviewDlg::showPreview() void SMESHGUI_MultiPreviewDlg::hidePreview() { for ( int i = 0; i < mySimulationList.count(); i++ ) - mySimulationList[i]->SetVisibility( false ); + if(mySimulationList[i] && mySimulationList[i]->GetActor()) + mySimulationList[i]->SetVisibility( false ); } //================================================================================= @@ -174,7 +199,6 @@ void SMESHGUI_MultiPreviewDlg::connectPreviewControl() connect( myPreviewCheckBox, SIGNAL( toggled( bool ) ), this, SLOT( onDisplaySimulation( bool ) ) ); } - //================================================================================= // function : toDisplaySimulation // purpose : @@ -224,6 +248,16 @@ void SMESHGUI_MultiPreviewDlg::setSimulationPreview( QListSetData( theMeshPreviewStruct[i].operator->() ); + mySimulationList[i]->SetData( theMeshPreviewStruct[i].in() ); } } + +//================================================================================= +// function : onCloseView() +// purpose : SLOT called when close view +//================================================================================= +void SMESHGUI_MultiPreviewDlg::onCloseView() +{ + qDeleteAll( mySimulationList ); + mySimulationList.clear(); +}