X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_CreatePatternDlg.cxx;h=6b1f20e1287f6a4d3fcc29085ff6ff2aab22c77c;hb=9efbaa6f5e4947bdcfdd04e5412ae1ece49b02fd;hp=3e63d654f9b34945a32fc5fa50cd97a4defff4dd;hpb=e4737e85f0da6d3f90fd08f6be1c2825195fe16f;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx b/src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx index 3e63d654f..6b1f20e12 100755 --- a/src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx @@ -1,23 +1,23 @@ // SMESH SMESHGUI : GUI for SMESH component // // Copyright (C) 2003 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 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 -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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 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 +// +// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org // // // @@ -27,22 +27,37 @@ #include "SMESHGUI_CreatePatternDlg.h" -#include "QAD_Desktop.h" -#include "QAD_FileDlg.h" - -#include "SMESHGUI_PatternWidget.h" -#include "SMESHGUI_SpinBox.h" #include "SMESHGUI.h" -#include "SALOME_Selection.h" -#include "SALOME_ListIteratorOfListOfFilter.hxx" -#include "SALOMEGUI_QtCatchCorbaException.hxx" -#include "SMESH_NumberFilter.hxx" +#include "SMESHGUI_SpinBox.h" +#include "SMESHGUI_PatternWidget.h" #include "SMESHGUI_Utils.h" #include "SMESHGUI_VTKUtils.h" #include "SMESHGUI_PatternUtils.h" +#include "SMESHGUI_GEOMGenUtils.h" + +#include "SMESH_NumberFilter.hxx" + +#include "SUIT_ResourceMgr.h" +#include "SUIT_Desktop.h" +#include "SUIT_FileDlg.h" + +#include "SalomeApp_Study.h" +#include "SalomeApp_DataOwner.h" +#include "SalomeApp_SelectionMgr.h" +#include "SalomeApp_Tools.h" + +#include "SALOMEDS_SObject.hxx" +#include "SALOME_ListIO.hxx" +#include "SVTK_ViewModel.h" +#include "SVTK_ViewWindow.h" +#include "SVTK_Selector.h" +#include "SVTK_Selection.h" + +// OCCT Includes #include +// QT Includes #include #include #include @@ -58,355 +73,337 @@ #define SPACING 5 #define MARGIN 10 -/* - Class : SMESHGUI_CreatePatternDlg - Description : Dialog to specify filters for VTK viewer -*/ +/*! + * Class : SMESHGUI_CreatePatternDlg + * Description : Dialog to specify filters for VTK viewer + */ //======================================================================= -// name : SMESHGUI_CreatePatternDlg::SMESHGUI_CreatePatternDlg -// Purpose : Constructor +// function : SMESHGUI_CreatePatternDlg() +// purpose : Constructor //======================================================================= -SMESHGUI_CreatePatternDlg::SMESHGUI_CreatePatternDlg( QWidget* theParent, - SALOME_Selection* theSelection, - const int theType, - const char* theName ) -: QDialog( theParent, theName, false, - WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ) +SMESHGUI_CreatePatternDlg::SMESHGUI_CreatePatternDlg( SMESHGUI* theModule, + const int theType, + const char* theName) + : QDialog( SMESH::GetDesktop( theModule ), theName, false, + WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu), + mySMESHGUI( theModule ), + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ) { - setCaption( tr( "CAPTION" ) ); + setCaption(tr("CAPTION")); + + QVBoxLayout* aDlgLay = new QVBoxLayout (this, MARGIN, SPACING); - QVBoxLayout* aDlgLay = new QVBoxLayout( this, MARGIN, SPACING ); + QFrame* aMainFrame = createMainFrame (this); + QFrame* aBtnFrame = createButtonFrame(this); - QFrame* aMainFrame = createMainFrame ( this ); - QFrame* aBtnFrame = createButtonFrame( this ); + aDlgLay->addWidget(aMainFrame); + aDlgLay->addWidget(aBtnFrame); - aDlgLay->addWidget( aMainFrame ); - aDlgLay->addWidget( aBtnFrame ); + aDlgLay->setStretchFactor(aMainFrame, 1); - aDlgLay->setStretchFactor( aMainFrame, 1 ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + mySelector = aViewWindow->GetSelector(); - Init( theSelection, theType ); + Init(theType); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::createMainFrame -// Purpose : Create frame containing dialog's input fields +// function : createMainFrame() +// purpose : Create frame containing dialog's input fields //======================================================================= -QFrame* SMESHGUI_CreatePatternDlg::createMainFrame( QWidget* theParent ) +QFrame* SMESHGUI_CreatePatternDlg::createMainFrame (QWidget* theParent) { - QPixmap iconSlct( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_SELECT" ) ) ); - QPixmap icon2d ( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_PATTERN_2d" ) ) ); - QPixmap icon3d ( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_PATTERN_3d" ) ) ); + QPixmap iconSlct (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT"))); + QPixmap icon2d (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_PATTERN_2d"))); + QPixmap icon3d (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_PATTERN_3d"))); + QPixmap iconSample2d (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_PATTERN_SAMPLE_2D"))); - QPixmap iconSample2d( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_PATTERN_SAMPLE_2D" ) ) ); - - QGroupBox* aMainGrp = new QGroupBox( 1, Qt::Horizontal, theParent ); - aMainGrp->setFrameStyle( QFrame::NoFrame ); - aMainGrp->setInsideMargin( 0 ); + QGroupBox* aMainGrp = new QGroupBox(1, Qt::Horizontal, theParent); + aMainGrp->setFrameStyle(QFrame::NoFrame); + aMainGrp->setInsideMargin(0); // Pattern type group - myTypeGrp = new QButtonGroup( 1, Qt::Vertical, tr( "PATTERN_TYPE" ), aMainGrp ); - mySwitch2d = new QRadioButton( myTypeGrp ); - mySwitch3d = new QRadioButton( myTypeGrp ); - mySwitch2d->setPixmap( icon2d ); - mySwitch3d->setPixmap( icon3d ); - myTypeGrp->insert( mySwitch2d, Type_2d ); - myTypeGrp->insert( mySwitch3d, Type_3d ); + myTypeGrp = new QButtonGroup (1, Qt::Vertical, tr("PATTERN_TYPE"), aMainGrp); + mySwitch2d = new QRadioButton (myTypeGrp); + mySwitch3d = new QRadioButton (myTypeGrp); + mySwitch2d->setPixmap(icon2d); + mySwitch3d->setPixmap(icon3d); + myTypeGrp->insert(mySwitch2d, Type_2d); + myTypeGrp->insert(mySwitch3d, Type_3d); - QGroupBox* aPatternGrp = new QGroupBox( 1, Qt::Horizontal, tr( "PATTERN" ), aMainGrp ); + QGroupBox* aPatternGrp = new QGroupBox(1, Qt::Horizontal, tr("PATTERN"), aMainGrp); // Mesh and pattern name group - - QGroupBox* aMeshGrp = new QGroupBox( 1, Qt::Vertical, aPatternGrp ); - aMeshGrp->setFrameStyle( QFrame::NoFrame ); - aMeshGrp->setInsideMargin( 0 ); - - new QLabel( tr( "MESH_OR_SUBMESH" ), aMeshGrp ); - - QPushButton* aSelBtn = new QPushButton( aMeshGrp ); - aSelBtn->setPixmap( iconSlct ); - myMeshEdit = new QLineEdit( aMeshGrp ); - myMeshEdit->setReadOnly( true ); - - QGroupBox* aPattGrp = new QGroupBox( 1, Qt::Vertical, aPatternGrp ); - aPattGrp->setFrameStyle( QFrame::NoFrame ); - aPattGrp->setInsideMargin( 0 ); - - new QLabel( tr( "PATTERN_NAME" ), aPattGrp ); - myName = new QLineEdit( aPattGrp ); + + QGroupBox* aMeshGrp = new QGroupBox(1, Qt::Vertical, aPatternGrp); + aMeshGrp->setFrameStyle(QFrame::NoFrame); + aMeshGrp->setInsideMargin(0); + + new QLabel(tr("MESH_OR_SUBMESH"), aMeshGrp); + + QPushButton* aSelBtn = new QPushButton(aMeshGrp); + aSelBtn->setPixmap(iconSlct); + myMeshEdit = new QLineEdit(aMeshGrp); + myMeshEdit->setReadOnly(true); + + QGroupBox* aPattGrp = new QGroupBox(1, Qt::Vertical, aPatternGrp); + aPattGrp->setFrameStyle(QFrame::NoFrame); + aPattGrp->setInsideMargin(0); + + new QLabel(tr("PATTERN_NAME"), aPattGrp); + myName = new QLineEdit(aPattGrp); // Picture 2d - - myPicture2d = new SMESHGUI_PatternWidget( aPatternGrp ), - myPicture2d->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); + + myPicture2d = new SMESHGUI_PatternWidget(aPatternGrp), + myPicture2d->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); // Project check box - - myProjectChk = new QCheckBox( tr( "PROJECT" ), aPatternGrp ); - + + myProjectChk = new QCheckBox(tr("PROJECT"), aPatternGrp); + // Connect signals and slots - connect( myTypeGrp, SIGNAL( clicked( int ) ), SLOT( onTypeChanged( int ) ) ); - connect( myProjectChk, SIGNAL( toggled( bool ) ), SLOT( onProject( bool ) ) ); - connect( aSelBtn, SIGNAL( clicked() ), SLOT( onSelBtnClicked() ) ); + connect(myTypeGrp, SIGNAL(clicked(int) ), SLOT(onTypeChanged(int))); + connect(myProjectChk, SIGNAL(toggled(bool)), SLOT(onProject(bool) )); + connect(aSelBtn, SIGNAL(clicked() ), SLOT(onSelBtnClicked())); return aMainGrp; } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::createButtonFrame -// Purpose : Create frame containing buttons +// function : createButtonFrame() +// purpose : Create frame containing buttons //======================================================================= -QFrame* SMESHGUI_CreatePatternDlg::createButtonFrame( QWidget* theParent ) +QFrame* SMESHGUI_CreatePatternDlg::createButtonFrame (QWidget* theParent) { - QFrame* aFrame = new QFrame( theParent ); - aFrame->setFrameStyle( QFrame::Box | QFrame::Sunken ); + QFrame* aFrame = new QFrame(theParent); + aFrame->setFrameStyle(QFrame::Box | QFrame::Sunken); - myOkBtn = new QPushButton( tr( "SMESH_BUT_OK" ), aFrame ); - mySaveBtn = new QPushButton( tr( "SAVE" ), aFrame ); - myCloseBtn = new QPushButton( tr( "SMESH_BUT_CANCEL" ), aFrame ); + myOkBtn = new QPushButton(tr("SMESH_BUT_OK" ), aFrame); + mySaveBtn = new QPushButton(tr("SAVE" ), aFrame); + myCloseBtn = new QPushButton(tr("SMESH_BUT_CANCEL"), aFrame); - QSpacerItem* aSpacer = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum ); + QSpacerItem* aSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); - QHBoxLayout* aLay = new QHBoxLayout( aFrame, MARGIN, SPACING ); + QHBoxLayout* aLay = new QHBoxLayout(aFrame, MARGIN, SPACING); - aLay->addWidget( myOkBtn ); - aLay->addWidget( mySaveBtn ); - aLay->addItem( aSpacer); - aLay->addWidget( myCloseBtn ); + aLay->addWidget(myOkBtn); + aLay->addWidget(mySaveBtn); + aLay->addItem(aSpacer); + aLay->addWidget(myCloseBtn); - connect( myOkBtn, SIGNAL( clicked() ), SLOT( onOk() ) ); - connect( myCloseBtn, SIGNAL( clicked() ), SLOT( onClose() ) ) ; - connect( mySaveBtn, SIGNAL( clicked() ), SLOT( onSave() ) ); + connect(myOkBtn, SIGNAL(clicked()), SLOT(onOk())); + connect(myCloseBtn, SIGNAL(clicked()), SLOT(onClose())); + connect(mySaveBtn, SIGNAL(clicked()), SLOT(onSave())); return aFrame; } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::~SMESHGUI_CreatePatternDlg -// Purpose : Destructor +// function : ~SMESHGUI_CreatePatternDlg() +// purpose : Destructor //======================================================================= SMESHGUI_CreatePatternDlg::~SMESHGUI_CreatePatternDlg() { + // no need to delete child widgets, Qt does it all for us } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onProject -// Purpose : SLOT. Called when state of "Project nodes on ther face" -// checkbox is changed +// function : onProject() +// purpose : SLOT. Called when state of "Project nodes on ther face" +// checkbox is changed //======================================================================= -void SMESHGUI_CreatePatternDlg::onProject( bool ) +void SMESHGUI_CreatePatternDlg::onProject (bool) { - loadFromObject( false ); + loadFromObject(false); displayPreview(); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::Init -// Purpose : Init dialog fields, connect signals and slots, show dialog +// function : Init() +// purpose : Init dialog fields, connect signals and slots, show dialog //======================================================================= -void SMESHGUI_CreatePatternDlg::Init( SALOME_Selection* theSelection, const int theType ) +void SMESHGUI_CreatePatternDlg::Init( const int theType ) { - myIsLoaded = false; - myType = -1; - myNbPoints = -1; - mySelection = theSelection; - mySubMesh = SMESH::SMESH_subMesh::_nil(); - myMesh = SMESH::SMESH_Mesh::_nil(); - myGeomObj = GEOM::GEOM_Object::_nil(); - myPattern = SMESH::SMESH_Pattern::_nil(); - + myIsLoaded = false; + myType = -1; + myNbPoints = -1; + mySubMesh = SMESH::SMESH_subMesh::_nil(); + myMesh = SMESH::SMESH_Mesh::_nil(); + myGeomObj = GEOM::GEOM_Object::_nil(); + myPattern = SMESH::SMESH_Pattern::_nil(); + erasePreview(); - SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI(); - aSMESHGUI->SetActiveDialogBox( ( QDialog* )this ); + mySMESHGUI->SetActiveDialogBox((QDialog*)this); // selection and SMESHGUI - connect( mySelection, SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) ); - connect( aSMESHGUI, SIGNAL( SignalDeactivateActiveDialog() ), SLOT( onDeactivate() ) ); - connect( aSMESHGUI, SIGNAL( SignalCloseAllDialogs() ), SLOT( onClose() ) ); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone())); + connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate())); + connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(onClose())); - mySwitch2d->setEnabled( theType == Type_2d ); - mySwitch3d->setEnabled( theType == Type_3d ); + mySwitch2d->setEnabled(theType == Type_2d); + mySwitch3d->setEnabled(theType == Type_3d); - if ( theType == Type_2d ) + if (theType == Type_2d) myProjectChk->show(); else myProjectChk->hide(); - - myTypeGrp->setButton( theType ); - onTypeChanged( theType ); - - myName->setText( getDefaultName() ); - myMeshEdit->setText( "" ); - - setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); + + myTypeGrp->setButton(theType); + onTypeChanged(theType); + + myName->setText(getDefaultName()); + myMeshEdit->setText(""); + + setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding)); qApp->processEvents(); updateGeometry(); myPicture2d->updateGeometry(); adjustSize(); - resize( minimumSize() ); + resize(minimumSize()); activateSelection(); onSelectionDone(); - int x, y ; - aSMESHGUI->DefineDlgPosition( this, x, y ); - this->move( x, y ); + int x, y; + mySMESHGUI->DefineDlgPosition(this, x, y); + this->move(x, y); this->show(); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::SetMesh -// Purpose : Set mesh to dialog +// function : SetMesh() +// purpose : Set mesh to dialog //======================================================================= -void SMESHGUI_CreatePatternDlg::SetMesh( SMESH::SMESH_Mesh_ptr thePtr ) +void SMESHGUI_CreatePatternDlg::SetMesh (SMESH::SMESH_Mesh_ptr thePtr) { - myMesh = SMESH::SMESH_Mesh::_duplicate( thePtr ); + myMesh = SMESH::SMESH_Mesh::_duplicate(thePtr); mySubMesh = SMESH::SMESH_subMesh::_nil(); bool isValidMesh = false; - if ( !myMesh->_is_nil() ) + if (!myMesh->_is_nil()) { - SALOMEDS::SObject_var aSobj = SMESH::FindSObject( thePtr ); - CORBA::String_var anEntry = aSobj->GetID(); - Handle(SALOME_InteractiveObject) anIObj = - new SALOME_InteractiveObject( anEntry.in(), "SMESH" ); - - const SALOME_ListOfFilter& aList = mySelection->StoredFilters(); - SALOME_ListIteratorOfListOfFilter anIter( aList ); - for ( ; anIter.More(); anIter.Next() ) - if ( !anIter.Value()->IsOk( anIObj ) ) - break; - - if ( !anIter.More() ) - isValidMesh = true; - } + _PTR(SObject) aSobj = SMESH::FindSObject(myMesh.in()); + //Handle(SALOME_InteractiveObject) anIObj = + // new SALOME_InteractiveObject(aSobj->GetID().c_str(), "SMESH"); + SUIT_DataOwnerPtr anIObj (new SalomeApp_DataOwner(aSobj->GetID().c_str())); - - if ( isValidMesh ) - { - SALOMEDS::SObject_var aSO = SMESH::FindSObject( myMesh.in() ); - myMeshEdit->setText( aSO->GetName() ); - myGeomObj = getGeom( aSO ); + isValidMesh = mySelectionMgr->isOk(anIObj); } - else - { - myMeshEdit->setText( "" ); + + if (isValidMesh) { + _PTR(SObject) aSO = SMESH::FindSObject(myMesh.in()); + myMeshEdit->setText(aSO->GetName().c_str()); + myGeomObj = SMESH::GetGeom(aSO); + } else { + myMeshEdit->setText(""); myGeomObj = GEOM::GEOM_Object::_nil(); } - if ( myType == Type_2d ) - { - loadFromObject( false ); + if (myType == Type_2d) { + loadFromObject(false); displayPreview(); } } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::isValid -// Purpose : Verify validity of entry data +// function : isValid() +// purpose : Verify validity of entry data //======================================================================= bool SMESHGUI_CreatePatternDlg::isValid() { - if ( myGeomObj->_is_nil() ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_INSUFFICIENT_DATA" ), tr( "SMESHGUI_INVALID_PARAMETERS" ), QMessageBox::Ok ); + if (myGeomObj->_is_nil()) { + QMessageBox::information(SMESH::GetDesktop( mySMESHGUI ), + tr("SMESH_INSUFFICIENT_DATA"), + tr("SMESHGUI_INVALID_PARAMETERS"), + QMessageBox::Ok); return false; } else return true; } - - //======================================================================= -// name : SMESHGUI_CreatePatternDlg::getDefaultName -// Purpose : Get default pattern name +// function : getDefaultName() +// purpose : Get default pattern name //======================================================================= QString SMESHGUI_CreatePatternDlg::getDefaultName() const { - return myType == Type_2d ? tr( "DEFAULT_2D" ) : tr( "DEFAULT_3D" ); + return myType == Type_2d ? tr("DEFAULT_2D") : tr("DEFAULT_3D"); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onSave -// Purpose : SLOT called when "Save" button pressed. Build pattern and - +// function : onSave() +// purpose : SLOT called when "Save" button pressed. Build pattern and // save it to disk //======================================================================= void SMESHGUI_CreatePatternDlg::onSave() { - try - { - if ( !isValid() ) + try { + if (!isValid()) return; - if ( !myIsLoaded ) - loadFromObject( true ); + if (!myIsLoaded) + loadFromObject(true); // Load pattern from object - if ( !myIsLoaded ) + if (!myIsLoaded) return; /////////////////////////////////////////////////////// - QAD_FileDlg* aDlg = new QAD_FileDlg( this, false ); - aDlg->setCaption( tr( "SAVE_PATTERN" ) ); - aDlg->setMode( QFileDialogP::AnyFile ); - aDlg->setFilters( tr( "PATTERN_FILT" ) ); - if ( myName->text() != "" ) - aDlg->setSelection( myName->text() ); - - if ( aDlg->exec() != Accepted ) + SUIT_FileDlg* aDlg = new SUIT_FileDlg (this, false); + aDlg->setCaption(tr("SAVE_PATTERN")); + aDlg->setMode(QFileDialog::AnyFile); + aDlg->setFilters(tr("PATTERN_FILT")); + if (myName->text() != "") + aDlg->setSelection(myName->text()); + + if (aDlg->exec() != Accepted) return; QString fName = aDlg->selectedFile(); - if ( fName.isEmpty() ) + if (fName.isEmpty()) return; - if ( QFileInfo( fName ).extension().isEmpty() ) - fName = autoExtension( fName ); + if (QFileInfo(fName).extension().isEmpty()) + fName = autoExtension(fName); - fName = QDir::convertSeparators( fName ); + fName = QDir::convertSeparators(fName); - QString aData( myPattern->GetString() ); + QString aData (myPattern->GetString()); long aLen = aData.length(); - QFile aFile( fName ); - aFile.open( IO_WriteOnly ); - long aWritten = aFile.writeBlock( aData, aLen ); + QFile aFile (fName); + aFile.open(IO_WriteOnly); + long aWritten = aFile.writeBlock(aData, aLen); aFile.close(); - if ( aWritten != aLen ) - { - QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(), - tr( "SMESH_ERROR" ), tr( "ERROR_OF_SAVING" ), QMessageBox::Ok ); - } - else - { - QAD_Application::getDesktop()->SetSelectionMode( ActorSelection ); - disconnect( mySelection, 0, this, 0 ); - disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 ); - SMESHGUI::GetSMESHGUI()->ResetState(); + if (aWritten != aLen) { + QMessageBox::information(SMESH::GetDesktop( mySMESHGUI ), tr("SMESH_ERROR"), + tr("ERROR_OF_SAVING"), QMessageBox::Ok); + } else { + //SUIT_Application::getDesktop()->setSelectionModes(ActorSelection); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + disconnect(mySelectionMgr, 0, this, 0); + disconnect(mySMESHGUI, 0, this, 0); + mySMESHGUI->ResetState(); accept(); emit NewPattern(); } - } - catch( const SALOME::SALOME_Exception& S_ex ) - { - QtCatchCorbaException( S_ex ); - } - catch( ... ) - { + } catch (const SALOME::SALOME_Exception& S_ex) { + SalomeApp_Tools::QtCatchCorbaException(S_ex); + } catch (...) { } } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::GetPatternName -// Purpose : Get name of pattern +// function : GetPatternName() +// purpose : Get name of pattern //======================================================================= QString SMESHGUI_CreatePatternDlg::GetPatternName() const { @@ -414,8 +411,8 @@ QString SMESHGUI_CreatePatternDlg::GetPatternName() const } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::GetPattern -// Purpose : Get result pattern +// function : GetPattern() +// purpose : Get result pattern //======================================================================= SMESH::SMESH_Pattern_ptr SMESHGUI_CreatePatternDlg::GetPattern() { @@ -423,185 +420,144 @@ SMESH::SMESH_Pattern_ptr SMESHGUI_CreatePatternDlg::GetPattern() } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onOk -// Purpose : SLOT called when "Ok" button pressed. +// function : onOk() +// purpose : SLOT called when "Ok" button pressed. //======================================================================= void SMESHGUI_CreatePatternDlg::onOk() { - try - { - if ( !isValid() ) + try { + if (!isValid()) return; - if ( !myIsLoaded ) - loadFromObject( true ); + if (!myIsLoaded) + loadFromObject(true); // Load pattern from object - if ( !myIsLoaded ) + if (!myIsLoaded) { return; - else - { - QAD_Application::getDesktop()->SetSelectionMode( ActorSelection ); - disconnect( mySelection, 0, this, 0 ); - disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 ); - SMESHGUI::GetSMESHGUI()->ResetState(); + } else { + //SUIT_Application::getDesktop()->setSelectionModes(ActorSelection); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + disconnect(mySelectionMgr, 0, this, 0); + disconnect(mySMESHGUI, 0, this, 0); + mySMESHGUI->ResetState(); accept(); emit NewPattern(); } - } - catch( const SALOME::SALOME_Exception& S_ex ) - { - QtCatchCorbaException( S_ex ); - } - catch( ... ) - { + } catch (const SALOME::SALOME_Exception& S_ex) { + SalomeApp_Tools::QtCatchCorbaException(S_ex); + } catch (...) { } } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onClose -// Purpose : SLOT called when "Close" button pressed. Close dialog +// function : onClose() +// purpose : SLOT called when "Close" button pressed. Close dialog //======================================================================= void SMESHGUI_CreatePatternDlg::onClose() { - QAD_Application::getDesktop()->SetSelectionMode( ActorSelection ); - disconnect( mySelection, 0, this, 0 ); - disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 ); - SMESHGUI::GetSMESHGUI()->ResetState(); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + disconnect(mySelectionMgr, 0, this, 0); + disconnect(mySMESHGUI, 0, this, 0); + mySMESHGUI->ResetState(); reject(); emit Close(); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::loadFromObject -// Purpose : Load pattern from geom object corresponding to the mesh/submesh +// function : loadFromObject() +// purpose : Load pattern from geom object corresponding to the mesh/submesh //======================================================================= -bool SMESHGUI_CreatePatternDlg::loadFromObject( const bool theMess ) +bool SMESHGUI_CreatePatternDlg::loadFromObject (const bool theMess) { - try - { + try { myIsLoaded = false; - - if ( myPattern->_is_nil() ) + + if (myPattern->_is_nil()) myPattern = SMESH::GetPattern(); - if ( myMesh->_is_nil() && mySubMesh->_is_nil() || myGeomObj->_is_nil() ) + if (myMesh->_is_nil() && mySubMesh->_is_nil() || myGeomObj->_is_nil()) return false; SMESH::SMESH_Mesh_ptr aMesh = mySubMesh->_is_nil() ? myMesh.in() : mySubMesh->GetFather(); myIsLoaded = myType == Type_2d - ? myPattern->LoadFromFace( aMesh, myGeomObj, myProjectChk->isChecked() ) - : myPattern->LoadFrom3DBlock( aMesh, myGeomObj ); + ? myPattern->LoadFromFace(aMesh, myGeomObj, myProjectChk->isChecked()) + : myPattern->LoadFrom3DBlock(aMesh, myGeomObj); - if ( !myIsLoaded && theMess ) - { + if (!myIsLoaded && theMess) { QString aMess; SMESH::SMESH_Pattern::ErrorCode aCode = myPattern->GetErrorCode(); - - if ( aCode == SMESH::SMESH_Pattern::ERR_LOAD_EMPTY_SUBMESH ) aMess = tr( "ERR_LOAD_EMPTY_SUBMESH" ); - else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADF_NARROW_FACE ) aMess = tr( "ERR_LOADF_NARROW_FACE" ); - else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADF_CLOSED_FACE ) aMess = tr( "ERR_LOADF_CLOSED_FACE" ); - else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADV_BAD_SHAPE ) aMess = tr( "ERR_LOADV_BAD_SHAPE" ); - else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADV_COMPUTE_PARAMS ) aMess = tr( "ERR_LOADV_COMPUTE_PARAMS" ); - else aMess = tr( "ERROR_OF_CREATION" ); - - QMessageBox::information( - SMESHGUI::GetSMESHGUI()->GetDesktop(), tr( "SMESH_ERROR" ), aMess, QMessageBox::Ok ); - } - } - catch( const SALOME::SALOME_Exception& S_ex ) - { - QtCatchCorbaException( S_ex ); - } - - return myIsLoaded; -} - -//======================================================================= -// name : SMESHGUI_CreatePatternDlg::getGeom -// Purpose : Retrieve geom object from SObject -//======================================================================= -GEOM::GEOM_Object_ptr SMESHGUI_CreatePatternDlg::getGeom( SALOMEDS::SObject_ptr theSO ) -{ - if ( theSO->_is_nil() ) - return GEOM::GEOM_Object::_nil(); + if (aCode == SMESH::SMESH_Pattern::ERR_LOAD_EMPTY_SUBMESH ) aMess = tr("ERR_LOAD_EMPTY_SUBMESH"); + else if (aCode == SMESH::SMESH_Pattern::ERR_LOADF_NARROW_FACE ) aMess = tr("ERR_LOADF_NARROW_FACE"); + else if (aCode == SMESH::SMESH_Pattern::ERR_LOADF_CLOSED_FACE ) aMess = tr("ERR_LOADF_CLOSED_FACE"); + else if (aCode == SMESH::SMESH_Pattern::ERR_LOADV_BAD_SHAPE ) aMess = tr("ERR_LOADV_BAD_SHAPE"); + else if (aCode == SMESH::SMESH_Pattern::ERR_LOADV_COMPUTE_PARAMS) aMess = tr("ERR_LOADV_COMPUTE_PARAMS"); + else aMess = tr("ERROR_OF_CREATION"); - SALOMEDS::Study_var aStudy = - SMESHGUI::GetSMESHGUI()->GetActiveStudy()->getStudyDocument(); - - SALOMEDS::ChildIterator_var anIter = aStudy->NewChildIterator( theSO ); - for( ; anIter->More(); anIter->Next() ) - { - SALOMEDS::SObject_var aSO = anIter->Value(); - SALOMEDS::SObject_var aRefSO; - - GEOM::GEOM_Object_var aMeshShape = GEOM::GEOM_Object::_narrow( - aSO->ReferencedObject( aRefSO )? aRefSO->GetObject() : aSO->GetObject() ); - - if ( !aMeshShape->_is_nil() ) - return aMeshShape._retn(); + QMessageBox::information(SMESH::GetDesktop( mySMESHGUI ), + tr("SMESH_ERROR"), aMess, QMessageBox::Ok); + } + } catch (const SALOME::SALOME_Exception& S_ex) { + SalomeApp_Tools::QtCatchCorbaException(S_ex); } - return GEOM::GEOM_Object::_nil(); + + return myIsLoaded; } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onSelectionDone -// Purpose : SLOT called when selection changed +// function : onSelectionDone() +// purpose : SLOT called when selection changed //======================================================================= void SMESHGUI_CreatePatternDlg::onSelectionDone() { - try - { - if ( mySelection->IObjectCount() != 1 ) + try { + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList, SVTK_Viewer::Type()); + if (aList.Extent() != 1) return; // Get mesh or sub-mesh from selection - Handle(SALOME_InteractiveObject) anIO = mySelection->firstIObject(); - SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface( anIO ); - SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface( anIO ); - if ( aMesh->_is_nil() && aSubMesh->_is_nil() ) + Handle(SALOME_InteractiveObject) anIO = aList.First(); + SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface(anIO); + SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface(anIO); + if (aMesh->_is_nil() && aSubMesh->_is_nil()) return; // Get geom object corresponding to the mesh - SALOMEDS::SObject_var aSO; - if ( !aMesh->_is_nil() ) - aSO = SMESH::FindSObject( aMesh.in() ); + _PTR(SObject) aSO; + if (!aMesh->_is_nil()) + aSO = SMESH::FindSObject(aMesh.in()); else - aSO = SMESH::FindSObject( aSubMesh.in() ); - + aSO = SMESH::FindSObject(aSubMesh.in()); - GEOM::GEOM_Object_var aGeomObj = getGeom( aSO ); - if ( aGeomObj->_is_nil() ) + GEOM::GEOM_Object_var aGeomObj = SMESH::GetGeom(aSO); + if (aGeomObj->_is_nil()) return; myGeomObj = aGeomObj; // init class fields - if ( !aMesh->_is_nil() ) - { + if (!aMesh->_is_nil()) { myMesh = aMesh; mySubMesh = SMESH::SMESH_subMesh::_nil(); - } - else - { + } else { mySubMesh = aSubMesh; myMesh = SMESH::SMESH_Mesh::_nil(); } QString aName; - SMESH::GetNameOfSelectedIObjects( mySelection, aName ); - myMeshEdit->setText( aName ); + SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName); + myMeshEdit->setText(aName); - if ( myType == Type_2d ) - { - loadFromObject( true ); + if (myType == Type_2d) { + loadFromObject(true); displayPreview(); } - } - catch( ... ) - { + } catch (...) { myMesh = SMESH::SMESH_Mesh::_nil(); mySubMesh = SMESH::SMESH_subMesh::_nil(); myGeomObj = GEOM::GEOM_Object::_nil(); @@ -610,40 +566,39 @@ void SMESHGUI_CreatePatternDlg::onSelectionDone() } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onDeactivate -// Purpose : SLOT called when dialog must be deativated +// function : onDeactivate() +// purpose : SLOT called when dialog must be deativated //======================================================================= void SMESHGUI_CreatePatternDlg::onDeactivate() { - disconnect( mySelection, 0, this, 0 ); - setEnabled( false ); + disconnect(mySelectionMgr, 0, this, 0); + setEnabled(false); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::enterEvent -// Purpose : Event filter +// function : enterEvent() +// purpose : Event filter //======================================================================= -void SMESHGUI_CreatePatternDlg::enterEvent( QEvent* ) +void SMESHGUI_CreatePatternDlg::enterEvent (QEvent*) { - SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog(); - setEnabled( true ); + mySMESHGUI->EmitSignalDeactivateDialog(); + setEnabled(true); activateSelection(); - connect( mySelection, SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) ); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone())); } - //================================================================================= // function : closeEvent() // purpose : Close dialog box //================================================================================= -void SMESHGUI_CreatePatternDlg::closeEvent( QCloseEvent* e ) +void SMESHGUI_CreatePatternDlg::closeEvent (QCloseEvent*) { - onClose() ; + onClose(); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onSelBtnClicked -// Purpose : SLOT. Called when -> button clicked. +// function : onSelBtnClicked() +// purpose : SLOT. Called when -> button clicked. //======================================================================= void SMESHGUI_CreatePatternDlg::onSelBtnClicked() { @@ -651,147 +606,115 @@ void SMESHGUI_CreatePatternDlg::onSelBtnClicked() } //================================================================ -// Function : SMESHGUI_CreatePatternDlg::autoExtension -// Purpose : Append extension to the file name +// function : autoExtension() +// purpose : Append extension to the file name //================================================================ -QString SMESHGUI_CreatePatternDlg::autoExtension( const QString& theFileName ) const +QString SMESHGUI_CreatePatternDlg::autoExtension (const QString& theFileName) const { - QString anExt = theFileName.section( '.', -1 ); + QString anExt = theFileName.section('.', -1); return anExt != "smp" && anExt != "SMP" ? theFileName + ".smp" : theFileName; } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::displayPreview -// Purpose : Display preview +// function : displayPreview() +// purpose : Display preview //======================================================================= void SMESHGUI_CreatePatternDlg::displayPreview() { - // Redisplay preview in dialog - - try - { - if ( !myIsLoaded ) + try { + if (!myIsLoaded) { erasePreview(); - else - { + } else { SMESH::point_array_var pnts = myPattern->GetPoints(); SMESH::long_array_var keyPoints = myPattern->GetKeyPoints(); - SMESH::array_of_long_array_var elemPoints = myPattern->GetElementPoints(); + SMESH::array_of_long_array_var elemPoints = myPattern->GetElementPoints(false); - if ( pnts->length() == 0 || - keyPoints->length() == 0 || - elemPoints->length() == 0 ) - { + if (pnts->length() == 0 || + keyPoints->length() == 0 || + elemPoints->length() == 0) { myIsLoaded = false; erasePreview(); return; } - PointVector aPoints( pnts->length() ); - QValueVector aKeyPoints( keyPoints->length() ); - ConnectivityVector anElemPoints( elemPoints->length() ); + PointVector aPoints (pnts->length()); + QValueVector aKeyPoints (keyPoints->length()); + ConnectivityVector anElemPoints (elemPoints->length()); - for ( int i = 0, n = pnts->length(); i < n; i++ ) + for (int i = 0, n = pnts->length(); i < n; i++) aPoints[ i ] = pnts[ i ]; - for ( int i2 = 0, n2 = keyPoints->length(); i2 < n2; i2++ ) + for (int i2 = 0, n2 = keyPoints->length(); i2 < n2; i2++) aKeyPoints[ i2 ] = keyPoints[ i2 ]; - for ( int i3 = 0, n3 = elemPoints->length(); i3 < n3; i3++ ) - { - QValueVector aVec( elemPoints[ i3 ].length() ); - for ( int i4 = 0, n4 = elemPoints[ i3 ].length(); i4 < n4; i4++ ) + for (int i3 = 0, n3 = elemPoints->length(); i3 < n3; i3++) { + QValueVector aVec (elemPoints[ i3 ].length()); + for (int i4 = 0, n4 = elemPoints[ i3 ].length(); i4 < n4; i4++) aVec[ i4 ] = elemPoints[ i3 ][ i4 ]; anElemPoints[ i3 ] = aVec; } - myPicture2d->SetPoints( aPoints, aKeyPoints, anElemPoints ); + myPicture2d->SetPoints(aPoints, aKeyPoints, anElemPoints); } return; - } - catch( const SALOME::SALOME_Exception& S_ex ) - { - QtCatchCorbaException( S_ex ); - } - catch( ... ) - { + + } catch (const SALOME::SALOME_Exception& S_ex) { + SalomeApp_Tools::QtCatchCorbaException(S_ex); + } catch (...) { } erasePreview(); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::erasePreview -// Purpose : Erase preview +// function : erasePreview() +// purpose : Erase preview //======================================================================= void SMESHGUI_CreatePatternDlg::erasePreview() - { // Erase preview in 2D viewer - myPicture2d->SetPoints( PointVector(), QValueVector(), ConnectivityVector() ); + myPicture2d->SetPoints(PointVector(), QValueVector(), ConnectivityVector()); } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::activateSelection -// Purpose : Activate selection in accordance with current pattern type +// function : activateSelection() +// purpose : Activate selection in accordance with current pattern type //======================================================================= void SMESHGUI_CreatePatternDlg::activateSelection() { - mySelection->ClearFilters(); - QAD_Application::getDesktop()->SetSelectionMode( ActorSelection ); - - if ( myType == Type_2d ) - { - mySelection->AddFilter( - new SMESH_NumberFilter( "SMESH", TopAbs_SHAPE, -1, TopAbs_FACE ) ); - } - else - { + mySelectionMgr->clearFilters(); + //SUIT_Application::getDesktop()->setSelectionModes(ActorSelection); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + + if (myType == Type_2d) { + mySelectionMgr->installFilter(new SMESH_NumberFilter + ("SMESH", TopAbs_SHAPE, -1, TopAbs_FACE)); + } else { TColStd_MapOfInteger aTypes; - aTypes.Add( TopAbs_SHELL ); - aTypes.Add( TopAbs_SOLID ); - mySelection->AddFilter( new SMESH_NumberFilter( - "SMESH", TopAbs_FACE, 6, aTypes, GEOM::GEOM_Object::_nil(), true ) ); + aTypes.Add(TopAbs_SHELL); + aTypes.Add(TopAbs_SOLID); + mySelectionMgr->installFilter(new SMESH_NumberFilter + ("SMESH", TopAbs_FACE, 6, aTypes, GEOM::GEOM_Object::_nil(), true)); } } //======================================================================= -// name : SMESHGUI_CreatePatternDlg::onTypeChanged -// Purpose : SLOT. Called when pattern type changed. -// Change dialog's look and feel +// function : onTypeChanged() +// purpose : SLOT. Called when pattern type changed. +// Change dialog's look and feel //======================================================================= -void SMESHGUI_CreatePatternDlg::onTypeChanged( int theType ) +void SMESHGUI_CreatePatternDlg::onTypeChanged (int theType) { - if ( myType == theType ) + if (myType == theType) return; myType = theType; - if ( theType == Type_2d ) + if (theType == Type_2d) myPicture2d->show(); else myPicture2d->hide(); } - - - - - - - - - - - - - - - - - - - - -