X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_BuildCompoundDlg.cxx;h=51e19437060dbbf5f05c1ae0899ba9ae0d94b7a4;hb=b503f03bf359907b880997c14d159895911e9473;hp=4fceb54be677148e21eec882ef2f59ca69cccbf4;hpb=d8f644ca3d4ce62f2ef41d4aacb52f5bb1221df3;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_BuildCompoundDlg.cxx b/src/SMESHGUI/SMESHGUI_BuildCompoundDlg.cxx index 4fceb54be..51e194370 100644 --- a/src/SMESHGUI/SMESHGUI_BuildCompoundDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_BuildCompoundDlg.cxx @@ -1,25 +1,24 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESHGUI : GUI for SMESH component // File : SMESHGUI_BuildCompoundDlg.cxx // Author : Alexander KOVALEV, Open CASCADE S.A.S. // SMESH includes @@ -77,7 +76,8 @@ SMESHGUI_BuildCompoundDlg::SMESHGUI_BuildCompoundDlg( SMESHGUI* theModule ) : QDialog(SMESH::GetDesktop(theModule)), mySMESHGUI(theModule), - mySelectionMgr(SMESH::GetSelectionMgr(theModule)) + mySelectionMgr(SMESH::GetSelectionMgr(theModule)), + myIsApplyAndClose( false ) { setModal(false); setAttribute(Qt::WA_DeleteOnClose, true); @@ -206,7 +206,7 @@ void SMESHGUI_BuildCompoundDlg::Init() myMesh = SMESH::SMESH_Mesh::_nil(); - myMeshFilter = new SMESH_TypeFilter (MESH); + myMeshFilter = new SMESH_TypeFilter (SMESH::MESH); myMeshArray = new SMESH::mesh_array(); @@ -295,12 +295,17 @@ bool SMESHGUI_BuildCompoundDlg::ClickOnApply() SMESH::SMESH_Mesh_var aCompoundMesh; - if (!myMesh->_is_nil()) { + if (!myMesh->_is_nil()) + { QStringList aParameters; aParameters << (CheckBoxMerge->isChecked() ? SpinBoxTol->text() : QString(" ")); + + QStringList anEntryList; try { SUIT_OverrideCursor aWaitCursor; + myMeshArray[0]->SetParameters( aParameters.join(":").toLatin1().constData() ); + SMESH::SMESH_Gen_var aSMESHGen = SMESHGUI::GetSMESHGen(); // concatenate meshes if(CheckBoxCommon->isChecked()) @@ -314,9 +319,11 @@ bool SMESHGUI_BuildCompoundDlg::ClickOnApply() CheckBoxMerge->isChecked(), SpinBoxTol->GetValue()); - aCompoundMesh->SetParameters( aParameters.join(":").toLatin1().constData() ); - - SMESH::SetName( SMESH::FindSObject( aCompoundMesh ), LineEditName->text() ); + _PTR(SObject) aSO = SMESH::FindSObject( aCompoundMesh ); + if( aSO ) { + SMESH::SetName( aSO, LineEditName->text() ); + anEntryList.append( aSO->GetID().c_str() ); + } mySMESHGUI->updateObjBrowser(); } catch(...) { return false; @@ -334,6 +341,10 @@ bool SMESHGUI_BuildCompoundDlg::ClickOnApply() SMESH::DisplayActor(SMESH::GetActiveWindow(), anActor); }// end IPAL21468 + if( LightApp_Application* anApp = + dynamic_cast( SUIT_Session::session()->activeApplication() ) ) + anApp->browseObjects( anEntryList, isApplyAndClose() ); + SMESHGUI::Modified(); #ifdef WITHGENERICOBJ @@ -341,7 +352,7 @@ bool SMESHGUI_BuildCompoundDlg::ClickOnApply() // It is safe to decrement its refcount // so that it will be destroyed when the entry in study will be removed if (!CORBA::is_nil(aCompoundMesh)) - aCompoundMesh->Destroy(); + aCompoundMesh->UnRegister(); #endif return true; @@ -355,6 +366,7 @@ bool SMESHGUI_BuildCompoundDlg::ClickOnApply() //================================================================================= void SMESHGUI_BuildCompoundDlg::ClickOnOk() { + setIsApplyAndClose( true ); if (ClickOnApply()) ClickOnCancel(); } @@ -540,3 +552,23 @@ bool SMESHGUI_BuildCompoundDlg::isValid() } return true; } + +//================================================================ +// function : setIsApplyAndClose +// Purpose : Set value of the flag indicating that the dialog is +// accepted by Apply & Close button +//================================================================ +void SMESHGUI_BuildCompoundDlg::setIsApplyAndClose( const bool theFlag ) +{ + myIsApplyAndClose = theFlag; +} + +//================================================================ +// function : isApplyAndClose +// Purpose : Get value of the flag indicating that the dialog is +// accepted by Apply & Close button +//================================================================ +bool SMESHGUI_BuildCompoundDlg::isApplyAndClose() const +{ + return myIsApplyAndClose; +}