X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MergeNodesDlg.cxx;h=e297b635c86841ff6f4d027038bd00db56066004;hp=d4816fea76d7121799efa9bd7bf17a7b502641ae;hb=9ed19e02e901a0d6dc2d44b2251051ac1eaf000e;hpb=c92bd47d8407f4148d4aa7016791a4d34ee09c43 diff --git a/src/SMESHGUI/SMESHGUI_MergeNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_MergeNodesDlg.cxx index d4816fea7..e297b635c 100644 --- a/src/SMESHGUI/SMESHGUI_MergeNodesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_MergeNodesDlg.cxx @@ -1,30 +1,30 @@ // 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 // // // // File : SMESHGUI_MergeNodesDlg.cxx // Author : Michael ZORIN // Module : SMESH -// $Header: +// $Header: #include "SMESHGUI_MergeNodesDlg.h" @@ -33,16 +33,26 @@ #include "SMESHGUI_VTKUtils.h" #include "SMESHGUI_IdValidator.h" #include "SMESHGUI_SpinBox.h" + #include "SMESH_Actor.h" +#include "SMESH_TypeFilter.hxx" #include "SMDS_Mesh.hxx" #include "GEOMBase.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_MessageBox.h" +#include "SUIT_ResourceMgr.h" + +#include "SVTK_ViewModel.h" +#include "SVTK_ViewWindow.h" +#include "SVTK_Selector.h" +#include "SVTK_Selection.h" +#include "SALOME_ListIO.hxx" + #include "utilities.h" +// OCCT Includes +#include + // QT Includes #include #include @@ -62,206 +72,211 @@ using namespace std; //================================================================================= // class : SMESHGUI_MergeNodesDlg() -// purpose : +// purpose : //================================================================================= -SMESHGUI_MergeNodesDlg::SMESHGUI_MergeNodesDlg( QWidget* parent, const char* name, SALOME_Selection* Sel, - bool modal, WFlags fl ) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | - Qt::WDestructiveClose) +SMESHGUI_MergeNodesDlg::SMESHGUI_MergeNodesDlg( SMESHGUI* theModule, const char* name, + bool modal, WFlags fl) + : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder | + WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose), + mySMESHGUI( theModule ), + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ) { - QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap( "SMESH",tr("ICON_SMESH_MERGE_NODES"))); - QPixmap image1(QAD_Desktop::getResourceManager()->loadPixmap( "SMESH",tr("ICON_SELECT"))); - - if ( !name ) - setName( "SMESHGUI_MergeNodesDlg" ); - resize( 303, 185 ); - setCaption( tr( "SMESH_MERGE_NODES" ) ); - setSizeGripEnabled( TRUE ); - SMESHGUI_MergeNodesDlgLayout = new QGridLayout( this ); - SMESHGUI_MergeNodesDlgLayout->setSpacing( 6 ); - SMESHGUI_MergeNodesDlgLayout->setMargin( 11 ); - + QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_MERGE_NODES"))); + QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT"))); + + if (!name) + setName("SMESHGUI_MergeNodesDlg"); + resize(303, 185); + setCaption(tr("SMESH_MERGE_NODES")); + setSizeGripEnabled(TRUE); + SMESHGUI_MergeNodesDlgLayout = new QGridLayout(this); + SMESHGUI_MergeNodesDlgLayout->setSpacing(6); + SMESHGUI_MergeNodesDlgLayout->setMargin(11); + /***************************************************************/ - GroupConstructors = new QButtonGroup( this, "GroupConstructors" ); - GroupConstructors->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupConstructors->sizePolicy().hasHeightForWidth() ) ); - GroupConstructors->setTitle( tr( "SMESH_MERGE_NODES" ) ); - GroupConstructors->setExclusive( TRUE ); - GroupConstructors->setColumnLayout(0, Qt::Vertical ); - GroupConstructors->layout()->setSpacing( 0 ); - GroupConstructors->layout()->setMargin( 0 ); - GroupConstructorsLayout = new QGridLayout( GroupConstructors->layout() ); - GroupConstructorsLayout->setAlignment( Qt::AlignTop ); - GroupConstructorsLayout->setSpacing( 6 ); - GroupConstructorsLayout->setMargin( 11 ); - QHBoxLayout* RBLayout = new QHBoxLayout( 0, 0, 6, "Layout2"); - RadioButton1= new QRadioButton( GroupConstructors, "RadioButton1" ); - RadioButton1->setText( tr( "" ) ); - RadioButton1->setPixmap( image0 ); - RBLayout->addWidget( RadioButton1); - GroupConstructorsLayout->addLayout( RBLayout, 0, 0 ); - SMESHGUI_MergeNodesDlgLayout->addWidget( GroupConstructors, 0, 0 ); - + GroupConstructors = new QButtonGroup(this, "GroupConstructors"); + GroupConstructors->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5, + (QSizePolicy::SizeType)0, 0, 0, + GroupConstructors->sizePolicy().hasHeightForWidth())); + GroupConstructors->setTitle(tr("SMESH_MERGE_NODES" )); + GroupConstructors->setExclusive(TRUE); + GroupConstructors->setColumnLayout(0, Qt::Vertical); + GroupConstructors->layout()->setSpacing(0); + GroupConstructors->layout()->setMargin(0); + GroupConstructorsLayout = new QGridLayout(GroupConstructors->layout()); + GroupConstructorsLayout->setAlignment(Qt::AlignTop); + GroupConstructorsLayout->setSpacing(6); + GroupConstructorsLayout->setMargin(11); + QHBoxLayout* RBLayout = new QHBoxLayout(0, 0, 6, "Layout2"); + RadioButton1= new QRadioButton(GroupConstructors, "RadioButton1"); + RadioButton1->setText(tr("" )); + RadioButton1->setPixmap(image0); + RBLayout->addWidget(RadioButton1); + GroupConstructorsLayout->addLayout(RBLayout, 0, 0); + SMESHGUI_MergeNodesDlgLayout->addWidget(GroupConstructors, 0, 0); + /***************************************************************/ - GroupButtons = new QGroupBox( this, "GroupButtons" ); - GroupButtons->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupButtons->sizePolicy().hasHeightForWidth() ) ); - GroupButtons->setGeometry( QRect( 10, 10, 281, 48 ) ); - GroupButtons->setTitle( tr( "" ) ); - GroupButtons->setColumnLayout(0, Qt::Vertical ); - GroupButtons->layout()->setSpacing( 0 ); - GroupButtons->layout()->setMargin( 0 ); - GroupButtonsLayout = new QGridLayout( GroupButtons->layout() ); - GroupButtonsLayout->setAlignment( Qt::AlignTop ); - GroupButtonsLayout->setSpacing( 6 ); - GroupButtonsLayout->setMargin( 11 ); - buttonCancel = new QPushButton( GroupButtons, "buttonCancel" ); - buttonCancel->setText( tr( "SMESH_BUT_CLOSE" ) ); - buttonCancel->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonCancel, 0, 3 ); - buttonApply = new QPushButton( GroupButtons, "buttonApply" ); - buttonApply->setText( tr( "SMESH_BUT_APPLY" ) ); - buttonApply->setAutoDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonApply, 0, 1 ); - QSpacerItem* spacer_9 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); - GroupButtonsLayout->addItem( spacer_9, 0, 2 ); - buttonOk = new QPushButton( GroupButtons, "buttonOk" ); - buttonOk->setText( tr( "SMESH_BUT_OK" ) ); - buttonOk->setAutoDefault( TRUE ); - buttonOk->setDefault( TRUE ); - GroupButtonsLayout->addWidget( buttonOk, 0, 0 ); - SMESHGUI_MergeNodesDlgLayout->addWidget( GroupButtons, 4, 0 ); + GroupButtons = new QGroupBox(this, "GroupButtons"); + GroupButtons->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)7, + (QSizePolicy::SizeType)0, 0, 0, + GroupButtons->sizePolicy().hasHeightForWidth())); + GroupButtons->setGeometry(QRect(10, 10, 281, 48)); + GroupButtons->setTitle(tr("" )); + GroupButtons->setColumnLayout(0, Qt::Vertical); + GroupButtons->layout()->setSpacing(0); + GroupButtons->layout()->setMargin(0); + GroupButtonsLayout = new QGridLayout(GroupButtons->layout()); + GroupButtonsLayout->setAlignment(Qt::AlignTop); + GroupButtonsLayout->setSpacing(6); + GroupButtonsLayout->setMargin(11); + buttonCancel = new QPushButton(GroupButtons, "buttonCancel"); + buttonCancel->setText(tr("SMESH_BUT_CLOSE" )); + buttonCancel->setAutoDefault(TRUE); + GroupButtonsLayout->addWidget(buttonCancel, 0, 3); + buttonApply = new QPushButton(GroupButtons, "buttonApply"); + buttonApply->setText(tr("SMESH_BUT_APPLY" )); + buttonApply->setAutoDefault(TRUE); + GroupButtonsLayout->addWidget(buttonApply, 0, 1); + QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + GroupButtonsLayout->addItem(spacer_9, 0, 2); + buttonOk = new QPushButton(GroupButtons, "buttonOk"); + buttonOk->setText(tr("SMESH_BUT_OK" )); + buttonOk->setAutoDefault(TRUE); + buttonOk->setDefault(TRUE); + GroupButtonsLayout->addWidget(buttonOk, 0, 0); + SMESHGUI_MergeNodesDlgLayout->addWidget(GroupButtons, 4, 0); /***************************************************************/ - + // Controls for mesh defining - GroupMesh = new QGroupBox( this, "GroupMesh" ); - GroupMesh->setTitle( tr( "SMESH_MESH" ) ); - GroupMesh->setColumnLayout(0, Qt::Vertical ); - GroupMesh->layout()->setSpacing( 0 ); - GroupMesh->layout()->setMargin( 0 ); - GroupMeshLayout = new QGridLayout( GroupMesh->layout() ); - GroupMeshLayout->setAlignment( Qt::AlignTop ); - GroupMeshLayout->setSpacing( 6 ); - GroupMeshLayout->setMargin( 11 ); - - TextLabelName = new QLabel( GroupMesh, "TextLabelName" ); - TextLabelName->setText( tr( "SMESH_NAME" ) ); - GroupMeshLayout->addWidget( TextLabelName, 0, 0 ); - - SelectMeshButton = new QPushButton( GroupMesh, "SelectMeshButton" ); - SelectMeshButton->setPixmap( image1 ); - GroupMeshLayout->addWidget( SelectMeshButton, 0, 1 ); + GroupMesh = new QGroupBox(this, "GroupMesh"); + GroupMesh->setTitle(tr("SMESH_MESH")); + GroupMesh->setColumnLayout(0, Qt::Vertical); + GroupMesh->layout()->setSpacing(0); + GroupMesh->layout()->setMargin(0); + GroupMeshLayout = new QGridLayout(GroupMesh->layout()); + GroupMeshLayout->setAlignment(Qt::AlignTop); + GroupMeshLayout->setSpacing(6); + GroupMeshLayout->setMargin(11); + + TextLabelName = new QLabel(GroupMesh, "TextLabelName"); + TextLabelName->setText(tr("SMESH_NAME")); + GroupMeshLayout->addWidget(TextLabelName, 0, 0); + + SelectMeshButton = new QPushButton(GroupMesh, "SelectMeshButton"); + SelectMeshButton->setPixmap(image1); + GroupMeshLayout->addWidget(SelectMeshButton, 0, 1); LineEditMesh = new QLineEdit(GroupMesh, "LineEditMesh"); LineEditMesh->setReadOnly(true); - GroupMeshLayout->addWidget( LineEditMesh, 0, 2 ); - - SMESHGUI_MergeNodesDlgLayout->addWidget( GroupMesh, 1, 0 ); - + GroupMeshLayout->addWidget(LineEditMesh, 0, 2); + + SMESHGUI_MergeNodesDlgLayout->addWidget(GroupMesh, 1, 0); + // Controls for coincident nodes detecting - GroupCoincident = new QGroupBox( this, "GroupCoincident" ); - GroupCoincident->setTitle( tr( "COINCIDENT_NODES" ) ); - GroupCoincident->setColumnLayout(0, Qt::Vertical ); - GroupCoincident->layout()->setSpacing( 0 ); - GroupCoincident->layout()->setMargin( 0 ); - QGridLayout* GroupCoincidentLayout = new QGridLayout( GroupCoincident->layout() ); - GroupCoincidentLayout->setAlignment( Qt::AlignTop ); - GroupCoincidentLayout->setSpacing( 6 ); - GroupCoincidentLayout->setMargin( 11 ); - - TextLabelTolerance = new QLabel( GroupCoincident, "TextLabelTolerance" ); - TextLabelTolerance->setText( tr( "SMESH_TOLERANCE" ) ); - GroupCoincidentLayout->addWidget( TextLabelTolerance, 0, 0 ); - - SpinBoxTolerance = new SMESHGUI_SpinBox( GroupCoincident, "SpinBoxTolerance" ); - GroupCoincidentLayout->addWidget( SpinBoxTolerance, 0, 1 ); - - QPushButton* DetectButton = new QPushButton( GroupCoincident, "DetectButton" ); - DetectButton->setText( tr("DETECT") ); - GroupCoincidentLayout->addWidget( DetectButton, 0, 2 ); - - ListCoincident = new QListView( GroupCoincident ); - ListCoincident->setSorting( -1 ); - ListCoincident->addColumn( "Nodes" ); + GroupCoincident = new QGroupBox(this, "GroupCoincident"); + GroupCoincident->setTitle(tr("COINCIDENT_NODES")); + GroupCoincident->setColumnLayout(0, Qt::Vertical); + GroupCoincident->layout()->setSpacing(0); + GroupCoincident->layout()->setMargin(0); + QGridLayout* GroupCoincidentLayout = new QGridLayout(GroupCoincident->layout()); + GroupCoincidentLayout->setAlignment(Qt::AlignTop); + GroupCoincidentLayout->setSpacing(6); + GroupCoincidentLayout->setMargin(11); + + TextLabelTolerance = new QLabel(GroupCoincident, "TextLabelTolerance"); + TextLabelTolerance->setText(tr("SMESH_TOLERANCE")); + GroupCoincidentLayout->addWidget(TextLabelTolerance, 0, 0); + + SpinBoxTolerance = new SMESHGUI_SpinBox(GroupCoincident, "SpinBoxTolerance"); + GroupCoincidentLayout->addWidget(SpinBoxTolerance, 0, 1); + + QPushButton* DetectButton = new QPushButton(GroupCoincident, "DetectButton"); + DetectButton->setText(tr("DETECT")); + GroupCoincidentLayout->addWidget(DetectButton, 0, 2); + + ListCoincident = new QListView(GroupCoincident); + ListCoincident->setSorting(-1); + ListCoincident->addColumn("Nodes"); ListCoincident->header()->hide(); - - GroupCoincidentLayout->addMultiCellWidget( ListCoincident, 1, 1, 0, 1 ); + + GroupCoincidentLayout->addMultiCellWidget(ListCoincident, 1, 1, 0, 1); SelectAllCB = new QCheckBox(GroupCoincident, "SelectAllCB"); SelectAllCB->setText(tr("SELECT_ALL")); - GroupCoincidentLayout->addWidget( SelectAllCB, 2, 0 ); - - SMESHGUI_MergeNodesDlgLayout->addWidget( GroupCoincident, 2, 0 ); + GroupCoincidentLayout->addWidget(SelectAllCB, 2, 0); + + SMESHGUI_MergeNodesDlgLayout->addWidget(GroupCoincident, 2, 0); // Controls for editing group of nodes - GroupEdit = new QGroupBox( this, "GroupEdit" ); - GroupEdit->setTitle( tr( "EDIT_GROUP_OF_NODES" ) ); - GroupEdit->setColumnLayout(0, Qt::Vertical ); - GroupEdit->layout()->setSpacing( 0 ); - GroupEdit->layout()->setMargin( 0 ); - QGridLayout* GroupEditLayout = new QGridLayout( GroupEdit->layout() ); - GroupEditLayout->setAlignment( Qt::AlignTop ); - GroupEditLayout->setSpacing( 6 ); - GroupEditLayout->setMargin( 11 ); - - ListEdit = new QListBox( GroupEdit, "ListEdit" ); + GroupEdit = new QGroupBox(this, "GroupEdit"); + GroupEdit->setTitle(tr("EDIT_GROUP_OF_NODES")); + GroupEdit->setColumnLayout(0, Qt::Vertical); + GroupEdit->layout()->setSpacing(0); + GroupEdit->layout()->setMargin(0); + QGridLayout* GroupEditLayout = new QGridLayout(GroupEdit->layout()); + GroupEditLayout->setAlignment(Qt::AlignTop); + GroupEditLayout->setSpacing(6); + GroupEditLayout->setMargin(11); + + ListEdit = new QListBox(GroupEdit, "ListEdit"); ListEdit->setColumnMode(QListBox::FitToHeight); - ListEdit->setSelectionMode( QListBox::Extended ); - GroupEditLayout->addMultiCellWidget( ListEdit, 0, 2, 0, 0 ); - - QPushButton* AddButton = new QPushButton( GroupEdit, "AddButton" ); - AddButton->setText( tr("SMESH_BUT_ADD") ); - GroupEditLayout->addWidget( AddButton, 0, 1 ); - - QPushButton* RemoveButton = new QPushButton( GroupEdit, "RemoveButton" ); - RemoveButton->setText( tr("SMESH_BUT_REMOVE") ); - GroupEditLayout->addWidget( RemoveButton, 1, 1 ); - - QSpacerItem* spacer = new QSpacerItem( 20, 200, QSizePolicy::Minimum, QSizePolicy::Expanding ); - GroupEditLayout->addItem( spacer, 2, 1 ); - - SMESHGUI_MergeNodesDlgLayout->addWidget( GroupEdit, 3, 0 ); - + ListEdit->setSelectionMode(QListBox::Extended); + GroupEditLayout->addMultiCellWidget(ListEdit, 0, 2, 0, 0); + + QPushButton* AddButton = new QPushButton(GroupEdit, "AddButton"); + AddButton->setText(tr("SMESH_BUT_ADD")); + GroupEditLayout->addWidget(AddButton, 0, 1); + + QPushButton* RemoveButton = new QPushButton(GroupEdit, "RemoveButton"); + RemoveButton->setText(tr("SMESH_BUT_REMOVE")); + GroupEditLayout->addWidget(RemoveButton, 1, 1); + + QSpacerItem* spacer = new QSpacerItem(20, 200, QSizePolicy::Minimum, QSizePolicy::Expanding); + GroupEditLayout->addItem(spacer, 2, 1); + + SMESHGUI_MergeNodesDlgLayout->addWidget(GroupEdit, 3, 0); + /* Initialisations */ - SpinBoxTolerance->RangeStepAndValidator( 0.0, 999999.999, 0.1, 3 ); + SpinBoxTolerance->RangeStepAndValidator(0.0, 999999.999, 0.1, 3); SpinBoxTolerance->SetValue(1e-05); - - RadioButton1->setChecked( TRUE ); - + + RadioButton1->setChecked(TRUE); + myActor = 0; - mySelection = Sel; - - mySMESHGUI = SMESHGUI::GetSMESHGUI() ; - mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ; - - myMeshOrSubMeshFilter = new SMESH_TypeFilter( MESHorSUBMESH ); + mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector(); + + mySMESHGUI->SetActiveDialogBox((QDialog*)this); + + myMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH); /* signals and slots connections */ - connect( buttonOk, SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); - connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( ClickOnCancel() ) ); - connect( buttonApply, SIGNAL( clicked() ), this, SLOT(ClickOnApply() ) ); - - connect( SelectMeshButton, SIGNAL (clicked() ), this, SLOT( SetEditCurrentArgument() ) ); - connect( DetectButton, SIGNAL ( clicked() ), this, SLOT( onDetect() ) ); - connect( ListCoincident, SIGNAL ( selectionChanged() ), this, SLOT( onSelectNodesGroup() ) ); - connect( ListCoincident, SIGNAL ( pressed( QListViewItem* ) ), this, SLOT( updateControls() ) ); - connect( ListCoincident, SIGNAL ( currentChanged( QListViewItem* ) ), this, SLOT( updateControls() ) ); - connect( SelectAllCB, SIGNAL( toggled(bool) ), this, SLOT(onSelectAll(bool) ) ); - connect( ListEdit, SIGNAL ( selectionChanged() ), this, SLOT( onSelectNodesFromGroup() ) ); - connect( AddButton, SIGNAL ( clicked() ), this, SLOT( onAdd() ) ); - connect( RemoveButton, SIGNAL ( clicked() ), this, SLOT( onRemove() ) ); - - connect( mySMESHGUI, SIGNAL ( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) ); - connect( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); + connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); + connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); + connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); + + connect(SelectMeshButton, SIGNAL (clicked()), this, SLOT(SetEditCurrentArgument())); + connect(DetectButton, SIGNAL (clicked()), this, SLOT(onDetect())); + connect(ListCoincident, SIGNAL (selectionChanged()), this, SLOT(onSelectNodesGroup())); + connect(ListCoincident, SIGNAL (pressed(QListViewItem*)), this, SLOT(updateControls())); + connect(ListCoincident, SIGNAL (currentChanged(QListViewItem*)), this, SLOT(updateControls())); + connect(SelectAllCB, SIGNAL(toggled(bool)), this, SLOT(onSelectAll(bool))); + connect(ListEdit, SIGNAL (selectionChanged()), this, SLOT(onSelectNodesFromGroup())); + connect(AddButton, SIGNAL (clicked()), this, SLOT(onAdd())); + connect(RemoveButton, SIGNAL (clicked()), this, SLOT(onRemove())); + + connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); /* to close dialog if study change */ - connect( mySMESHGUI, SIGNAL ( SignalCloseAllDialogs() ), this, SLOT( ClickOnCancel() ) ); - + connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); + /* Move widget on the botton right corner of main widget */ - int x, y ; - mySMESHGUI->DefineDlgPosition( this, x, y ) ; - this->move( x, y ) ; - this->show() ; /* displays Dialog */ - + int x, y; + mySMESHGUI->DefineDlgPosition(this, x, y); + this->move(x, y); + this->show(); /* displays Dialog */ + resize(0,0); buttonOk->setEnabled(false); buttonApply->setEnabled(false); @@ -276,51 +291,46 @@ SMESHGUI_MergeNodesDlg::~SMESHGUI_MergeNodesDlg() // no need to delete child widgets, Qt does it all for us } - //================================================================================= // function : ClickOnApply() // purpose : //================================================================================= bool SMESHGUI_MergeNodesDlg::ClickOnApply() { - if (mySMESHGUI->ActiveStudyLocked() || myMesh->_is_nil()) + if (mySMESHGUI->isActiveStudyLocked() || myMesh->_is_nil()) return false; - try - { - SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); - - QApplication::setOverrideCursor(Qt::waitCursor); - SMESH::array_of_long_array_var aGroupsOfNodes = new SMESH::array_of_long_array; - aGroupsOfNodes->length(ListCoincident->childCount()); - QListViewItem* item = ListCoincident->firstChild(); - - int anArrayNum = 0; - while (item) - { - QStringList aListIds = QStringList(""); - if (((QCheckListItem*) item)->isOn()) - aListIds = QStringList::split( " ", item->text(0), false); - - SMESH::long_array_var anIds = new SMESH::long_array; - anIds->length(aListIds.count()); - - for ( int i = 0; i < aListIds.count(); i++ ) - anIds[i] = aListIds[i].toInt(); - - aGroupsOfNodes[anArrayNum++] = anIds.inout(); - - item = item->itemBelow(); - } - - aMeshEditor->MergeNodes (aGroupsOfNodes.inout()); - QApplication::restoreOverrideCursor(); - } - catch( ... ) - { + try { + SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); + + QApplication::setOverrideCursor(Qt::waitCursor); + SMESH::array_of_long_array_var aGroupsOfNodes = new SMESH::array_of_long_array; + aGroupsOfNodes->length(ListCoincident->childCount()); + QListViewItem* item = ListCoincident->firstChild(); + + int anArrayNum = 0; + while (item) { + QStringList aListIds = QStringList(""); + if (((QCheckListItem*) item)->isOn()) + aListIds = QStringList::split(" ", item->text(0), false); + + SMESH::long_array_var anIds = new SMESH::long_array; + anIds->length(aListIds.count()); + + for (int i = 0; i < aListIds.count(); i++) + anIds[i] = aListIds[i].toInt(); + + aGroupsOfNodes[anArrayNum++] = anIds.inout(); + + item = item->itemBelow(); } - mySelection->ClearIObjects(); + aMeshEditor->MergeNodes (aGroupsOfNodes.inout()); + QApplication::restoreOverrideCursor(); + } catch(...) { + } + + mySelectionMgr->clearSelected(); SMESH::UpdateView(); onDetect(); @@ -333,191 +343,179 @@ bool SMESHGUI_MergeNodesDlg::ClickOnApply() //================================================================================= void SMESHGUI_MergeNodesDlg::ClickOnOk() { - if( ClickOnApply()) - ClickOnCancel() ; + if (ClickOnApply()) + ClickOnCancel(); } - //================================================================================= // function : ClickOnCancel() // purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::ClickOnCancel() { - mySelection->ClearFilters(); - mySelection->ClearIObjects(); + mySelectionMgr->clearFilters(); + mySelectionMgr->clearSelected(); SMESH::SetPointRepresentation(false); - QAD_Application::getDesktop()->SetSelectionMode( ActorSelection ); - disconnect( mySelection, 0, this, 0 ); - mySMESHGUI->ResetState() ; - reject() ; + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + disconnect(mySelectionMgr, 0, this, 0); + mySMESHGUI->ResetState(); + reject(); } - //================================================================================= // function : onEditNodesGroup() // purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::onEditNodesGroup() { - if ( ListCoincident->childCount() < 1 ) + if (ListCoincident->childCount() < 1) return; QString aNewIds = ""; - + QListBoxItem* anItem; for (anItem = ListEdit->firstItem(); anItem != 0; anItem = anItem->next()) aNewIds+=QString(" %1").arg(anItem->text()); - + ListCoincident->currentItem()->setText(0, aNewIds); } - //================================================================================= // function : updateControls() -// purpose : +// purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::updateControls() { - if ( ListCoincident->childCount() < 1 ) - { - SMESH::SetPointRepresentation(false); - QAD_Application::getDesktop()->SetSelectionMode( ActorSelection ); - return; - } - + if (ListCoincident->childCount() < 1) { + SMESH::SetPointRepresentation(false); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + return; + } + bool hasChecked = false, hasUnchecked = false; - + QListViewItem* item = ListCoincident->firstChild(); - - while (item && (!hasChecked || !hasUnchecked)) - { - if (((QCheckListItem*) item)->isOn()) - hasChecked = true; - else - hasUnchecked = true; - - item = item->itemBelow(); - } - + + while (item && (!hasChecked || !hasUnchecked)) { + if (((QCheckListItem*) item)->isOn()) + hasChecked = true; + else + hasUnchecked = true; + + item = item->itemBelow(); + } + if (hasUnchecked) SelectAllCB->setChecked(false); - + bool enable = !(myMesh->_is_nil()) && hasChecked; - + buttonOk->setEnabled(enable); buttonApply->setEnabled(enable); } - //================================================================================= // function : onDetect() -// purpose : +// purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::onDetect() { - if(myMesh->_is_nil()) + if (myMesh->_is_nil()) return; - try - { - SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); - - QApplication::setOverrideCursor(Qt::waitCursor); - ListCoincident->clear(); - ListEdit->clear(); - - SMESH::array_of_long_array_var aNodeGroups; - aMeshEditor->FindCoincidentNodes(SpinBoxTolerance->GetValue(), aNodeGroups); - - for ( int i = 0; i < aNodeGroups->length(); i++ ) - { - SMESH::long_array& aGroup = aNodeGroups[i]; - - QString aNodeIds; - for ( int j = 0; j < aGroup.length(); j++ ) - aNodeIds+=QString(" %1").arg(aGroup[j]); - - new QCheckListItem ( ListCoincident, aNodeIds, QCheckListItem::CheckBox ); - } - QApplication::restoreOverrideCursor(); - } - catch( ... ) - { + try { + SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); + + QApplication::setOverrideCursor(Qt::waitCursor); + ListCoincident->clear(); + ListEdit->clear(); + + SMESH::array_of_long_array_var aNodeGroups; + aMeshEditor->FindCoincidentNodes(SpinBoxTolerance->GetValue(), aNodeGroups); + + for (int i = 0; i < aNodeGroups->length(); i++) { + SMESH::long_array& aGroup = aNodeGroups[i]; + + QString aNodeIds; + for (int j = 0; j < aGroup.length(); j++) + aNodeIds+=QString(" %1").arg(aGroup[j]); + + new QCheckListItem (ListCoincident, aNodeIds, QCheckListItem::CheckBox); } - + QApplication::restoreOverrideCursor(); + } catch(...) { + } + updateControls(); } - //================================================================================= // function : onSelectNodesGroup() -// purpose : +// purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::onSelectNodesGroup() { - if(!myActor) + if (!myActor) return; - + myEditCurrentArgument = (QWidget*)ListCoincident; - + QListViewItem* aSelectedItem = ListCoincident->selectedItem(); if (!aSelectedItem) return; - - QStringList aListId = QStringList::split( " ", aSelectedItem->text(0), false); - + + QStringList aListId = QStringList::split(" ", aSelectedItem->text(0), false); + ListEdit->clear(); ListEdit->insertStringList(aListId); - - mySelection->ClearIObjects(); - mySelection->AddIObject( myActor->getIO() ); - + + //mySelectionMgr->clearSelected(); + //mySelectionMgr->AddIObject(myActor->getIO()); + SALOME_ListIO aList; + aList.Append(myActor->getIO()); + mySelectionMgr->setSelectedObjects(aList, false); + SMESH::SetPointRepresentation(true); - QAD_Application::getDesktop()->SetSelectionMode( NodeSelection, true ); - + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(NodeSelection); + ListEdit->selectAll(true); } - //================================================================================= // function : onSelectAll() -// purpose : +// purpose : //================================================================================= -void SMESHGUI_MergeNodesDlg::onSelectAll(bool isToggled) +void SMESHGUI_MergeNodesDlg::onSelectAll (bool isToggled) { - if (isToggled) - { - int aNbItems = 0; - QListViewItem* item = ListCoincident->firstChild(); - while (item) - { - aNbItems++; - if (!((QCheckListItem*) item)->isOn()) - ((QCheckListItem*) item)->setOn(true); - item = item->itemBelow(); - } - - if (aNbItems) - { - buttonOk->setEnabled(true); - buttonApply->setEnabled(true); - } + if (isToggled) { + int aNbItems = 0; + QListViewItem* item = ListCoincident->firstChild(); + while (item) { + aNbItems++; + if (!((QCheckListItem*) item)->isOn()) + ((QCheckListItem*) item)->setOn(true); + item = item->itemBelow(); } -} + if (aNbItems) { + buttonOk->setEnabled(true); + buttonApply->setEnabled(true); + } + } +} //================================================================================= // function : onSelectNodesFromGroup() -// purpose : +// purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::onSelectNodesFromGroup() { - if (!myActor) + if (!myActor) return; - - mySelection->ClearIObjects(); - + TColStd_MapOfInteger aIndexes; QListBoxItem* anItem; for (anItem = ListEdit->firstItem(); anItem != 0; anItem = anItem->next()) { @@ -526,14 +524,16 @@ void SMESHGUI_MergeNodesDlg::onSelectNodesFromGroup() aIndexes.Add(anId); } } - mySelection->AddOrRemoveIndex(myActor->getIO(), aIndexes, false, false); - mySelection->AddIObject(myActor->getIO()); -} + mySelector->AddOrRemoveIndex(myActor->getIO(), aIndexes, false); + SALOME_ListIO aList; + aList.Append(myActor->getIO()); + mySelectionMgr->setSelectedObjects(aList); +} //================================================================================= // function : onAdd() -// purpose : +// purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::onAdd() { @@ -542,14 +542,14 @@ void SMESHGUI_MergeNodesDlg::onAdd() QString aListStr = ""; int aNbNnodes = 0; - - aNbNnodes = SMESH::GetNameOfSelectedNodes(mySelection, myActor->getIO(), aListStr); + + aNbNnodes = SMESH::GetNameOfSelectedNodes(mySelector, myActor->getIO(), aListStr); if (aNbNnodes < 1) return; - + QStringList aNodes = QStringList::split(" ", aListStr); QListBoxItem* anItem = 0; - + for (QStringList::iterator it = aNodes.begin(); it != aNodes.end(); ++it) { anItem = ListEdit->findItem(*it, Qt::ExactMatch); if (!anItem) { @@ -558,83 +558,80 @@ void SMESHGUI_MergeNodesDlg::onAdd() } ListEdit->setSelected(anItem, true); } - + onEditNodesGroup(); } - //================================================================================= // function : onRemove() -// purpose : +// purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::onRemove() { if (myEditCurrentArgument != (QWidget*)ListCoincident) return; - - for (int i = ListEdit->count(); i > 0; i--) - { - if (ListEdit->isSelected(i-1)) - ListEdit->removeItem(i-1); - } + + for (int i = ListEdit->count(); i > 0; i--) { + if (ListEdit->isSelected(i-1)) + ListEdit->removeItem(i-1); + } onEditNodesGroup(); } - //================================================================================= // function : SetEditCurrentArgument() -// purpose : +// purpose : //================================================================================= void SMESHGUI_MergeNodesDlg::SetEditCurrentArgument() { QPushButton* send = (QPushButton*)sender(); - - disconnect( mySelection, 0, this, 0 ); - mySelection->ClearIObjects(); - mySelection->ClearFilters(); - - if(send == SelectMeshButton) - { - myEditCurrentArgument = (QWidget*)LineEditMesh; - SMESH::SetPointRepresentation(false); - QAD_Application::getDesktop()->SetSelectionMode( ActorSelection ); - mySelection->AddFilter(myMeshOrSubMeshFilter) ; - } - + + disconnect(mySelectionMgr, 0, this, 0); + mySelectionMgr->clearSelected(); + mySelectionMgr->clearFilters(); + + if (send == SelectMeshButton) { + myEditCurrentArgument = (QWidget*)LineEditMesh; + SMESH::SetPointRepresentation(false); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + mySelectionMgr->installFilter(myMeshOrSubMeshFilter); + } + myEditCurrentArgument->setFocus(); - connect( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - SelectionIntoArgument() ; + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + SelectionIntoArgument(); } - //================================================================================= // function : SelectionIntoArgument() // purpose : Called when selection as changed or other case //================================================================================= void SMESHGUI_MergeNodesDlg::SelectionIntoArgument() { - if (myEditCurrentArgument == (QWidget*)LineEditMesh) - { - QString aString = ""; - LineEditMesh->setText( aString ); - - ListCoincident->clear(); - ListEdit->clear(); - - int nbSel = SMESH::GetNameOfSelectedIObjects(mySelection, aString); - if(nbSel != 1) - return; - - Handle(SALOME_InteractiveObject) IO = mySelection->firstIObject(); - myMesh = SMESH::IObjectToInterface(IO) ; - myActor = SMESH::FindActorByEntry( mySelection->firstIObject()->getEntry() ); - if(myMesh->_is_nil() || !myActor) - return; - - LineEditMesh->setText( aString ); - } -} + if (myEditCurrentArgument == (QWidget*)LineEditMesh) { + QString aString = ""; + LineEditMesh->setText(aString); + + ListCoincident->clear(); + ListEdit->clear(); + + int nbSel = SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); + if (nbSel != 1) + return; + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type()); + + Handle(SALOME_InteractiveObject) IO = aList.First(); + myMesh = SMESH::IObjectToInterface(IO); + myActor = SMESH::FindActorByEntry(aList.First()->getEntry()); + if (myMesh->_is_nil() || !myActor) + return; + + LineEditMesh->setText(aString); + } +} //================================================================================= // function : DeactivateActiveDialog() @@ -642,18 +639,17 @@ void SMESHGUI_MergeNodesDlg::SelectionIntoArgument() //================================================================================= void SMESHGUI_MergeNodesDlg::DeactivateActiveDialog() { - if ( GroupConstructors->isEnabled() ) { - GroupConstructors->setEnabled(false) ; + if (GroupConstructors->isEnabled()) { + GroupConstructors->setEnabled(false); GroupMesh->setEnabled(false); GroupCoincident->setEnabled(false); GroupEdit->setEnabled(false); - GroupButtons->setEnabled(false) ; - mySMESHGUI->ResetState() ; - mySMESHGUI->SetActiveDialogBox(0) ; + GroupButtons->setEnabled(false); + mySMESHGUI->ResetState(); + mySMESHGUI->SetActiveDialogBox(0); } } - //================================================================================= // function : ActivateThisDialog() // purpose : @@ -661,49 +657,44 @@ void SMESHGUI_MergeNodesDlg::DeactivateActiveDialog() void SMESHGUI_MergeNodesDlg::ActivateThisDialog() { /* Emit a signal to deactivate the active dialog */ - mySMESHGUI->EmitSignalDeactivateDialog() ; - GroupConstructors->setEnabled(true) ; + mySMESHGUI->EmitSignalDeactivateDialog(); + GroupConstructors->setEnabled(true); GroupMesh->setEnabled(true); GroupCoincident->setEnabled(true); GroupEdit->setEnabled(true); - GroupButtons->setEnabled(true) ; - - mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ; - + GroupButtons->setEnabled(true); + + mySMESHGUI->SetActiveDialogBox((QDialog*)this); + SelectionIntoArgument(); } - //================================================================================= // function : enterEvent() // purpose : //================================================================================= -void SMESHGUI_MergeNodesDlg::enterEvent(QEvent* e) +void SMESHGUI_MergeNodesDlg::enterEvent (QEvent*) { - if ( GroupConstructors->isEnabled() ) - return ; - ActivateThisDialog() ; + if (!GroupConstructors->isEnabled()) + ActivateThisDialog(); } - //================================================================================= // function : closeEvent() // purpose : //================================================================================= -void SMESHGUI_MergeNodesDlg::closeEvent( QCloseEvent* e ) +void SMESHGUI_MergeNodesDlg::closeEvent (QCloseEvent*) { /* same than click on cancel button */ - ClickOnCancel() ; + ClickOnCancel(); } - //======================================================================= -//function : hideEvent +//function : hideEvent() //purpose : caused by ESC key //======================================================================= - -void SMESHGUI_MergeNodesDlg::hideEvent ( QHideEvent * e ) +void SMESHGUI_MergeNodesDlg::hideEvent (QHideEvent*) { - if ( !isMinimized() ) + if (!isMinimized()) ClickOnCancel(); }