X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MergeDlg.cxx;h=08fca6b6ae197f2e969ad1998e2113ffc5b0eb09;hb=663e6353b914bb63e087a87dc66cd151c2d9b6b3;hp=8a615d35ef8e4684115379e76afa9a0f5cde3482;hpb=ae29d465091933df101dfac6ae99d3becf4efde7;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_MergeDlg.cxx b/src/SMESHGUI/SMESHGUI_MergeDlg.cxx index 8a615d35e..08fca6b6a 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 @@ -150,9 +146,6 @@ namespace SMESH myPtsLabeledDataMapper = vtkLabeledDataMapper::New(); myPtsLabeledDataMapper->SetInputConnection(myPtsSelectVisiblePoints->GetOutputPort()); -#if (VTK_XVERSION < 0x050200) - myPtsLabeledDataMapper->SetLabelFormat("%g"); -#endif myPtsLabeledDataMapper->SetLabelModeToLabelScalars(); vtkTextProperty* aPtsTextProp = vtkTextProperty::New(); @@ -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 } @@ -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())); @@ -684,6 +682,8 @@ bool SMESHGUI_MergeDlg::ClickOnApply() ListCoincident->clear(); + myEditCurrentArgument = (QWidget*)LineEditMesh; + SMESH::UpdateView(); SMESHGUI::Modified(); @@ -778,6 +778,7 @@ void SMESHGUI_MergeDlg::updateControls() bool enable = !(myMesh->_is_nil()) && (ListCoincident->count() || (myTypeId == 0)); buttonOk->setEnabled(enable); buttonApply->setEnabled(enable); + DetectButton->setEnabled( !myMesh->_is_nil() ); } //================================================================================= @@ -835,6 +836,7 @@ void SMESHGUI_MergeDlg::onDetect() ListCoincident->selectAll(); updateControls(); + SMESH::UpdateView(); } //================================================================================= @@ -845,8 +847,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 +879,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 +931,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 +996,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 +1061,11 @@ void SMESHGUI_MergeDlg::onRemoveElement() myIsBusy = false; onEditGroup(); + + if( ListCoincident->count() == 0 ) { + myEditCurrentArgument = (QWidget*)LineEditMesh; + SelectAllCB->setChecked( false ); + } } //================================================================================= @@ -1100,12 +1125,13 @@ void SMESHGUI_MergeDlg::SelectionIntoArgument() if (myEditCurrentArgument == (QWidget*)LineEditMesh) { QString aString = ""; LineEditMesh->setText(aString); - + ListCoincident->clear(); ListEdit->clear(); myActor = 0; + myMesh = SMESH::SMESH_Mesh::_nil(); QString aCurrentEntry = myEntry; - + int nbSel = SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); if (nbSel != 1) { myIdPreview->SetPointsLabeled(false); @@ -1118,21 +1144,21 @@ void SMESHGUI_MergeDlg::SelectionIntoArgument() SALOME_ListIO aList; mySelectionMgr->selectedObjects(aList); - + Handle(SALOME_InteractiveObject) IO = aList.First(); myEntry = IO->getEntry(); myMesh = SMESH::GetMeshByIO(IO); - + if (myMesh->_is_nil()) return; LineEditMesh->setText(aString); - + myActor = SMESH::FindActorByEntry(IO->getEntry()); if (!myActor) myActor = SMESH::FindActorByObject(myMesh); - - if ( myActor && myTypeId ==1 ) { + + if ( myActor && myTypeId == 1 && mySelector->IsSelectionEnabled() ) { mySubMeshOrGroup = SMESH::SMESH_IDSource::_nil(); mySelectionMgr->installFilter(myMeshOrSubMeshOrGroupFilter); @@ -1285,12 +1311,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;