X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MergeDlg.cxx;h=73bb0f78c37a373a62b58dd38ef86af3bf319310;hp=877d6b6d42f7869a2ad1bdfd71fedf115319c790;hb=38a77c4a9810f4715212368ac53315689ba9150f;hpb=1067ffa6e7e5c394e3a1b17219d8b355a57607cd diff --git a/src/SMESHGUI/SMESHGUI_MergeDlg.cxx b/src/SMESHGUI/SMESHGUI_MergeDlg.cxx index 877d6b6d4..73bb0f78c 100644 --- a/src/SMESHGUI/SMESHGUI_MergeDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_MergeDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 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 @@ -6,7 +6,7 @@ // 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. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -74,10 +74,6 @@ #include #include #include -#include -#if !defined(VTK_XVERSION) -#define VTK_XVERSION (VTK_MAJOR_VERSION<<16)+(VTK_MINOR_VERSION<<8)+(VTK_BUILD_VERSION) -#endif // Qt includes #include @@ -124,7 +120,7 @@ namespace SMESH // Create and display actor vtkDataSetMapper* aMapper = vtkDataSetMapper::New(); - aMapper->SetInput( myIdGrid ); + aMapper->SetInputData( myIdGrid ); myIdActor = SALOME_Actor::New(); myIdActor->SetInfinitive(true); @@ -140,19 +136,16 @@ namespace SMESH myPointsNumDataSet = vtkUnstructuredGrid::New(); myPtsMaskPoints = vtkMaskPoints::New(); - myPtsMaskPoints->SetInput(myPointsNumDataSet); + myPtsMaskPoints->SetInputData(myPointsNumDataSet); myPtsMaskPoints->SetOnRatio(1); myPtsSelectVisiblePoints = vtkSelectVisiblePoints::New(); - myPtsSelectVisiblePoints->SetInput(myPtsMaskPoints->GetOutput()); + myPtsSelectVisiblePoints->SetInputConnection(myPtsMaskPoints->GetOutputPort()); myPtsSelectVisiblePoints->SelectInvisibleOff(); myPtsSelectVisiblePoints->SetTolerance(0.1); myPtsLabeledDataMapper = vtkLabeledDataMapper::New(); - myPtsLabeledDataMapper->SetInput(myPtsSelectVisiblePoints->GetOutput()); -#if (VTK_XVERSION < 0x050200) - myPtsLabeledDataMapper->SetLabelFormat("%g"); -#endif + myPtsLabeledDataMapper->SetInputConnection(myPtsSelectVisiblePoints->GetOutputPort()); myPtsLabeledDataMapper->SetLabelModeToLabelScalars(); vtkTextProperty* aPtsTextProp = vtkTextProperty::New(); @@ -250,7 +243,7 @@ namespace SMESH anArray->SetValue( i, myIDs[i] ); aDataSet->GetPointData()->SetScalars( anArray ); anArray->Delete(); - myPtsMaskPoints->SetInput( aDataSet ); + myPtsMaskPoints->SetInputData( aDataSet ); myPointLabels->SetVisibility( theIsActorVisible ); } else { @@ -437,12 +430,14 @@ SMESHGUI_MergeDlg::SMESHGUI_MergeDlg (SMESHGUI* theModule, int theAction) RemoveGroupButton = new QPushButton(tr("SMESH_BUT_REMOVE"), GroupCoincidentWidget); SelectAllCB = new QCheckBox(tr("SELECT_ALL"), GroupCoincidentWidget); + ShowIDs = new QCheckBox(myAction == 1 ? tr("SHOW_ELEMS_IDS") : tr("SHOW_NODES_IDS"), GroupCoincidentWidget); GroupCoincidentLayout->addWidget(ListCoincident, 0, 0, 4, 2); GroupCoincidentLayout->addWidget(DetectButton, 0, 2); GroupCoincidentLayout->addWidget(AddGroupButton, 2, 2); GroupCoincidentLayout->addWidget(RemoveGroupButton, 3, 2); - GroupCoincidentLayout->addWidget(SelectAllCB, 4, 0, 1, 3); + GroupCoincidentLayout->addWidget(SelectAllCB, 4, 0); + GroupCoincidentLayout->addWidget(ShowIDs, 4, 1); GroupCoincidentLayout->setRowMinimumHeight(1, 10); GroupCoincidentLayout->setRowStretch(1, 5); @@ -513,6 +508,8 @@ SMESHGUI_MergeDlg::SMESHGUI_MergeDlg (SMESHGUI* theModule, int theAction) this->resize(10,10); + ShowIDs->setChecked( true ); + Init(); // Initialisations } @@ -552,7 +549,7 @@ void SMESHGUI_MergeDlg::Init() /* signals and slots connections */ connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); + connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject())); connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); connect(buttonHelp, SIGNAL(clicked()), this, SLOT(ClickOnHelp())); @@ -562,6 +559,7 @@ void SMESHGUI_MergeDlg::Init() connect(AddGroupButton, SIGNAL (clicked()), this, SLOT(onAddGroup())); connect(RemoveGroupButton, SIGNAL (clicked()), this, SLOT(onRemoveGroup())); connect(SelectAllCB, SIGNAL(toggled(bool)), this, SLOT(onSelectAll(bool))); + connect(ShowIDs, SIGNAL(toggled(bool)), this, SLOT(onSelectGroup())); connect(ListEdit, SIGNAL (itemSelectionChanged()), this, SLOT(onSelectElementFromGroup())); connect(AddElemButton, SIGNAL (clicked()), this, SLOT(onAddElement())); connect(RemoveElemButton, SIGNAL (clicked()), this, SLOT(onRemoveElement())); @@ -571,7 +569,7 @@ void SMESHGUI_MergeDlg::Init() 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(reject())); // Init Mesh field from selection SelectionIntoArgument(); @@ -670,7 +668,7 @@ bool SMESHGUI_MergeDlg::ClickOnApply() aMeshEditor->MergeElements (aGroupsOfElements.inout()); if ( myTypeId == 0 ) { - if (myAction ==0) + if (myAction == 0 ) SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INFORMATION"), tr("SMESH_MERGED_NODES").arg(QString::number(ListCoincident->count()).toLatin1().data())); else @@ -684,6 +682,8 @@ bool SMESHGUI_MergeDlg::ClickOnApply() ListCoincident->clear(); + myEditCurrentArgument = (QWidget*)LineEditMesh; + SMESH::UpdateView(); SMESHGUI::Modified(); @@ -697,14 +697,14 @@ bool SMESHGUI_MergeDlg::ClickOnApply() void SMESHGUI_MergeDlg::ClickOnOk() { if (ClickOnApply()) - ClickOnCancel(); + reject(); } //================================================================================= -// function : ClickOnCancel() +// function : reject() // purpose : //================================================================================= -void SMESHGUI_MergeDlg::ClickOnCancel() +void SMESHGUI_MergeDlg::reject() { myIdPreview->SetPointsLabeled(false); SMESH::SetPointRepresentation(false); @@ -718,7 +718,7 @@ void SMESHGUI_MergeDlg::ClickOnCancel() if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(ActorSelection); - reject(); + QDialog::reject(); } //================================================================================= @@ -835,6 +835,7 @@ void SMESHGUI_MergeDlg::onDetect() ListCoincident->selectAll(); updateControls(); + SMESH::UpdateView(); } //================================================================================= @@ -845,8 +846,13 @@ void SMESHGUI_MergeDlg::onSelectGroup() { if (myIsBusy || !myActor) return; + + if( ListCoincident->count() != ListCoincident->selectedItems().count() ) + SelectAllCB->setChecked( false ); + myEditCurrentArgument = (QWidget*)ListCoincident; + myIsBusy = true; ListEdit->clear(); TColStd_MapOfInteger anIndices; @@ -872,18 +878,22 @@ void SMESHGUI_MergeDlg::onSelectGroup() aList.Append(myActor->getIO()); mySelectionMgr->setSelectedObjects(aList,false); - if (myAction == 0) { - myIdPreview->SetPointsData(myActor->GetObject()->GetMesh(), anIndices); - myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); - } - else { - std::list< gp_XYZ > aGrCentersXYZ; - FindGravityCenter(anIndices, aGrCentersXYZ); - myIdPreview->SetElemsData( anIndices, aGrCentersXYZ); - myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); - } + if (ShowIDs->isChecked()) + if (myAction == 0) { + myIdPreview->SetPointsData(myActor->GetObject()->GetMesh(), anIndices); + myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); + } + else { + std::list< gp_XYZ > aGrCentersXYZ; + FindGravityCenter(anIndices, aGrCentersXYZ); + myIdPreview->SetElemsData( anIndices, aGrCentersXYZ); + myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); + } + else + myIdPreview->SetPointsLabeled(false); updateControls(); + myIsBusy = false; } //================================================================================= @@ -920,17 +930,20 @@ void SMESHGUI_MergeDlg::onSelectElementFromGroup() SALOME_ListIO aList; aList.Append(myActor->getIO()); mySelectionMgr->setSelectedObjects(aList); - - if (myAction == 0) { - myIdPreview->SetPointsData(myActor->GetObject()->GetMesh(), anIndices); - myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); - } - else { - std::list< gp_XYZ > aGrCentersXYZ; - FindGravityCenter(anIndices, aGrCentersXYZ); - myIdPreview->SetElemsData(anIndices, aGrCentersXYZ); - myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); - } + + if (ShowIDs->isChecked()) + if (myAction == 0) { + myIdPreview->SetPointsData(myActor->GetObject()->GetMesh(), anIndices); + myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); + } + else { + std::list< gp_XYZ > aGrCentersXYZ; + FindGravityCenter(anIndices, aGrCentersXYZ); + myIdPreview->SetElemsData(anIndices, aGrCentersXYZ); + myIdPreview->SetPointsLabeled(!anIndices.IsEmpty(), myActor->GetVisibility()); + } + else + myIdPreview->SetPointsLabeled(false); } //================================================================================= @@ -982,9 +995,15 @@ void SMESHGUI_MergeDlg::onRemoveGroup() delete anItem; ListEdit->clear(); + myIdPreview->SetPointsLabeled(false); updateControls(); - + SMESH::UpdateView(); myIsBusy = false; + + if( ListCoincident->count() == 0 ) { + myEditCurrentArgument = (QWidget*)LineEditMesh; + SelectAllCB->setChecked( false ); + } } //================================================================================= @@ -1041,6 +1060,11 @@ void SMESHGUI_MergeDlg::onRemoveElement() myIsBusy = false; onEditGroup(); + + if( ListCoincident->count() == 0 ) { + myEditCurrentArgument = (QWidget*)LineEditMesh; + SelectAllCB->setChecked( false ); + } } //================================================================================= @@ -1132,7 +1156,7 @@ void SMESHGUI_MergeDlg::SelectionIntoArgument() if (!myActor) myActor = SMESH::FindActorByObject(myMesh); - if ( myActor && myTypeId ==1 ) { + if ( myActor && myTypeId == 1 && mySelector->IsSelectionEnabled() ) { mySubMeshOrGroup = SMESH::SMESH_IDSource::_nil(); mySelectionMgr->installFilter(myMeshOrSubMeshOrGroupFilter); @@ -1226,26 +1250,6 @@ void SMESHGUI_MergeDlg::enterEvent(QEvent*) ActivateThisDialog(); } -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void SMESHGUI_MergeDlg::closeEvent(QCloseEvent*) -{ - /* same than click on cancel button */ - ClickOnCancel(); -} - -//======================================================================= -//function : hideEvent -//purpose : caused by ESC key -//======================================================================= -void SMESHGUI_MergeDlg::hideEvent (QHideEvent *) -{ - if (!isMinimized()) - ClickOnCancel(); -} - //================================================================================= // function : keyPressEvent() // purpose : @@ -1305,12 +1309,14 @@ void SMESHGUI_MergeDlg::onTypeChanged (int id) GroupCoincidentWidget->show(); SMESH::SetPointRepresentation(true); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) - aViewWindow->SetSelectionMode(NodeSelection); + if( mySelector->IsSelectionEnabled() ) + aViewWindow->SetSelectionMode(NodeSelection); } else { GroupCoincident->show(); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) - aViewWindow->SetSelectionMode(CellSelection); + if( mySelector->IsSelectionEnabled() ) + aViewWindow->SetSelectionMode(CellSelection); } GroupEdit->show(); break;