From e7636315f578b81bb4cdb3ee0a6b16b4e31b6848 Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 12 Nov 2007 10:00:22 +0000 Subject: [PATCH] PAL16842 (Genertion of groups when a mesh is transformed) + QCheckBox* MakeGroupsCheck; --- .../SMESHGUI_ExtrusionAlongPathDlg.cxx | 31 ++++++++++++++-- src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h | 1 + src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx | 24 +++++++++++- src/SMESHGUI/SMESHGUI_ExtrusionDlg.h | 1 + src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx | 25 ++++++++++++- src/SMESHGUI/SMESHGUI_RevolutionDlg.h | 1 + src/SMESHGUI/SMESHGUI_RotationDlg.cxx | 36 +++++++++++++++++- src/SMESHGUI/SMESHGUI_RotationDlg.h | 2 + src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx | 36 +++++++++++++++++- src/SMESHGUI/SMESHGUI_SymmetryDlg.h | 4 +- src/SMESHGUI/SMESHGUI_TranslationDlg.cxx | 37 ++++++++++++++++++- src/SMESHGUI/SMESHGUI_TranslationDlg.h | 2 + 12 files changed, 190 insertions(+), 10 deletions(-) diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx b/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx index da79f4aca..94fb23ad4 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx @@ -270,6 +270,10 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod AnglesGrpLayout->addWidget( AngleSpin, 0, 2 ); AnglesGrpLayout->setRowStretch(1, 10); + // CheckBox for groups generation + MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments); + MakeGroupsCheck->setChecked(true); + // layouting GroupArgumentsLayout->addWidget( ElementsLab, 0, 0 ); GroupArgumentsLayout->addWidget( SelectElementsButton, 0, 1 ); @@ -280,6 +284,7 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod GroupArgumentsLayout->addMultiCellWidget(BasePointGrp, 3, 4, 1, 2); GroupArgumentsLayout->addWidget( AnglesCheck, 5, 0 ); GroupArgumentsLayout->addMultiCellWidget(AnglesGrp, 5, 6, 1, 2); + GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 7, 7, 0, 2); GroupArgumentsLayout->setRowStretch(6, 10); /***************************************************************/ @@ -599,10 +604,18 @@ bool SMESHGUI_ExtrusionAlongPathDlg::ClickOnApply() try { SUIT_OverrideCursor wc; SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); - SMESH::SMESH_MeshEditor::Extrusion_Error retVal = - aMeshEditor->ExtrusionAlongPath(anElementsId.inout(), myPathMesh, myPathShape, aNodeStart, - AnglesCheck->isChecked(), anAngles.inout(), - BasePointCheck->isChecked(), aBasePoint); + SMESH::SMESH_MeshEditor::Extrusion_Error retVal; + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + SMESH::ListOfGroups_var groups = + aMeshEditor->ExtrusionAlongPathMakeGroups(anElementsId.inout(), myPathMesh, + myPathShape, aNodeStart, + AnglesCheck->isChecked(), anAngles.inout(), + BasePointCheck->isChecked(), aBasePoint, retVal); + else + retVal = aMeshEditor->ExtrusionAlongPath(anElementsId.inout(), myPathMesh, + myPathShape, aNodeStart, + AnglesCheck->isChecked(), anAngles.inout(), + BasePointCheck->isChecked(), aBasePoint); //wc.stop(); wc.suspend(); @@ -652,6 +665,8 @@ bool SMESHGUI_ExtrusionAlongPathDlg::ClickOnApply() //mySelectionMgr->clearSelected(); SMESH::Update( myMeshActor->getIO(), myMeshActor->GetVisibility() ); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + mySMESHGUI->updateObjBrowser(true); // new groups may appear //SMESH::UpdateView(); Init(false); ConstructorsClicked(GetConstructorId()); @@ -825,6 +840,14 @@ void SMESHGUI_ExtrusionAlongPathDlg::SelectionIntoArgument() myMesh = SMESH::GetMeshByIO(IO); if (myMesh->_is_nil()) return; + + // MakeGroups is available if there are groups + if ( myMesh->NbGroups() == 0 ) { + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); + } else { + MakeGroupsCheck->setEnabled(true); + } // find actor myMeshActor = SMESH::FindActorByObject(myMesh); if (!myMeshActor) diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h b/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h index 6f0ca271b..c0b5b898f 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h +++ b/src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h @@ -141,6 +141,7 @@ private: SMESHGUI_SpinBox* YSpin; QLabel* ZLab; SMESHGUI_SpinBox* ZSpin; + QCheckBox* MakeGroupsCheck; QGroupBox* GroupButtons; QPushButton* OkButton; diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx index 2fa4c0fdb..dc118b1d6 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx @@ -225,6 +225,12 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule, SpinBox_NbSteps = new QSpinBox(GroupArguments, "SpinBox_NbSteps"); GroupArgumentsLayout->addMultiCellWidget(SpinBox_NbSteps, 3, 3, 2, 7); + // CheckBox for groups generation + MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments); + MakeGroupsCheck->setChecked(true); + GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 4, 4, 0, 7); + + SMESHGUI_ExtrusionDlgLayout->addWidget(GroupArguments, 1, 0); /* Initialisations */ @@ -401,12 +407,20 @@ bool SMESHGUI_ExtrusionDlg::ClickOnApply() try { SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); QApplication::setOverrideCursor(Qt::waitCursor); - aMeshEditor->ExtrusionSweep(myElementsId.inout(), aVector, aNbSteps); + + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + SMESH::ListOfGroups_var groups = + aMeshEditor->ExtrusionSweepMakeGroups(myElementsId.inout(), aVector, aNbSteps); + else + aMeshEditor->ExtrusionSweep(myElementsId.inout(), aVector, aNbSteps); + QApplication::restoreOverrideCursor(); } catch (...) { } SMESH::UpdateView(); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + mySMESHGUI->updateObjBrowser(true); // new groups may appear Init(false); ConstructorsClicked(GetConstructorId()); SelectionIntoArgument(); @@ -562,6 +576,14 @@ void SMESHGUI_ExtrusionDlg::SelectionIntoArgument() if (myEditCurrentArgument == LineEditElements) { int aNbElements = 0; + // MakeGroups is available if there are groups + if ( myMesh->NbGroups() == 0 ) { + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); + } else { + MakeGroupsCheck->setEnabled(true); + } + if (CheckBoxMesh->isChecked()) { SMESH::ElementType neededType = GetConstructorId() ? SMESH::FACE : SMESH::EDGE; diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h index 51530ef47..9a9c21e7a 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h @@ -112,6 +112,7 @@ private: SMESHGUI_SpinBox* SpinBox_Dz; QLabel* TextLabelNbSteps; QSpinBox* SpinBox_NbSteps; + QCheckBox* MakeGroupsCheck; QGroupBox* GroupButtons; QPushButton* buttonOk; diff --git a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx index 90b699a7f..978fbbbfc 100644 --- a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx @@ -290,6 +290,12 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule, const char* SpinBox_Tolerance = new SMESHGUI_SpinBox(GroupArguments, "SpinBox_Tolerance"); GroupArgumentsLayout->addWidget(SpinBox_Tolerance, 5, 2); + // CheckBox for groups generation + MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments); + MakeGroupsCheck->setChecked(true); + GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 6, 6, 0, 3); + + SMESHGUI_RevolutionDlgLayout->addWidget(GroupArguments, 1, 0); /* Initialisations */ @@ -479,12 +485,21 @@ void SMESHGUI_RevolutionDlg::ClickOnApply() try { SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); QApplication::setOverrideCursor(Qt::waitCursor); - aMeshEditor->RotationSweep(anElementsId.inout(), anAxis, anAngle, aNbSteps, aTolerance); + + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + SMESH::ListOfGroups_var groups = + aMeshEditor->RotationSweepMakeGroups(anElementsId.inout(), anAxis, + anAngle, aNbSteps, aTolerance); + else + aMeshEditor->RotationSweep(anElementsId.inout(), anAxis, anAngle, aNbSteps, aTolerance); + QApplication::restoreOverrideCursor(); } catch (...) { } SMESH::UpdateView(); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + mySMESHGUI->updateObjBrowser(true); // new groups may appear Init(false); ConstructorsClicked(GetConstructorId()); SelectionIntoArgument(); @@ -640,6 +655,14 @@ void SMESHGUI_RevolutionDlg::SelectionIntoArgument() if (myEditCurrentArgument == (QWidget*)LineEditElements) { myElementsId = ""; + // MakeGroups is available if there are groups + if ( myMesh->NbGroups() == 0 ) { + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); + } else { + MakeGroupsCheck->setEnabled(true); + } + if (CheckBoxMesh->isChecked()) { int aConstructorId = GetConstructorId(); diff --git a/src/SMESHGUI/SMESHGUI_RevolutionDlg.h b/src/SMESHGUI/SMESHGUI_RevolutionDlg.h index 9db7f4859..389c380a1 100644 --- a/src/SMESHGUI/SMESHGUI_RevolutionDlg.h +++ b/src/SMESHGUI/SMESHGUI_RevolutionDlg.h @@ -110,6 +110,7 @@ private: QPushButton* SelectElementsButton; QLineEdit* LineEditElements; QCheckBox* CheckBoxMesh; + QCheckBox* MakeGroupsCheck; QLabel* TextLabelPoint; QPushButton* SelectPointButton; diff --git a/src/SMESHGUI/SMESHGUI_RotationDlg.cxx b/src/SMESHGUI/SMESHGUI_RotationDlg.cxx index e4f4a1d5b..ab344729d 100644 --- a/src/SMESHGUI/SMESHGUI_RotationDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_RotationDlg.cxx @@ -283,6 +283,10 @@ SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule, const char* nam CheckBoxCopy->setText(tr("SMESH_CREATE_COPY")); GroupArgumentsLayout->addMultiCellWidget(CheckBoxCopy, 4, 4, 0, 2); + // CheckBox for groups generation + MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments); + GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 5, 5, 0, 2); + SMESHGUI_RotationDlgLayout->addWidget(GroupArguments, 1, 0); /* Initialisations */ @@ -339,6 +343,7 @@ SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule, const char* nam connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&))); connect(CheckBoxMesh, SIGNAL(toggled(bool)), SLOT(onSelectMesh(bool))); + connect(CheckBoxCopy, SIGNAL(toggled(bool)), SLOT(onCopyChecked(bool))); this->show(); /* displays Dialog */ @@ -386,6 +391,8 @@ void SMESHGUI_RotationDlg::Init (bool ResetControls) CheckBoxCopy->setChecked(false); CheckBoxMesh->setChecked(false); + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); } onSelectMesh(CheckBoxMesh->isChecked()); @@ -432,12 +439,18 @@ void SMESHGUI_RotationDlg::ClickOnApply() try { SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); QApplication::setOverrideCursor(Qt::waitCursor); - aMeshEditor->Rotate(anElementsId.inout(), anAxis, anAngle, toCreateCopy); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + SMESH::ListOfGroups_var groups = + aMeshEditor->RotateMakeGroups(anElementsId.inout(), anAxis, anAngle); + else + aMeshEditor->Rotate(anElementsId.inout(), anAxis, anAngle, toCreateCopy); QApplication::restoreOverrideCursor(); } catch (...) { } SMESH::UpdateView(); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + mySMESHGUI->updateObjBrowser(true); // new groups may appear Init(false); SelectionIntoArgument(); } @@ -592,6 +605,14 @@ void SMESHGUI_RotationDlg::SelectionIntoArgument() if (myEditCurrentArgument == (QWidget*)LineEditElements) { myElementsId = ""; + // MakeGroups is available if there are groups and "Copy" + if ( myMesh->NbGroups() == 0 ) { + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); + } + else if (CheckBoxCopy->isChecked() ) { + MakeGroupsCheck->setEnabled(true); + } if (CheckBoxMesh->isChecked()) { SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); @@ -854,6 +875,19 @@ void SMESHGUI_RotationDlg::onVectorChanged() } } +//======================================================================= +//function : onCopyChecked +//purpose : slot called when Copy checkBox is checked +//======================================================================= + +void SMESHGUI_RotationDlg::onCopyChecked(bool isOn) +{ + // enable "MakeGroupsCheck" + if ( !myMesh->_is_nil() && myMesh->NbGroups() == 0) + isOn = false; + MakeGroupsCheck->setEnabled(isOn); +} + //================================================================================= // function : keyPressEvent() // purpose : diff --git a/src/SMESHGUI/SMESHGUI_RotationDlg.h b/src/SMESHGUI/SMESHGUI_RotationDlg.h index 86075d763..05f1000c2 100644 --- a/src/SMESHGUI/SMESHGUI_RotationDlg.h +++ b/src/SMESHGUI/SMESHGUI_RotationDlg.h @@ -129,6 +129,7 @@ private: QLabel* TextLabelAngle; SMESHGUI_SpinBox* SpinBox_Angle; QCheckBox* CheckBoxCopy; + QCheckBox* MakeGroupsCheck; QString myHelpFileName; @@ -146,6 +147,7 @@ private slots: void onTextChange (const QString&); void onSelectMesh (bool toSelectMesh); void onVectorChanged(); + void onCopyChecked(bool isOn); protected: QGridLayout* SMESHGUI_RotationDlgLayout; diff --git a/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx b/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx index 357eb8f41..e9a5c71c1 100644 --- a/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx @@ -277,6 +277,10 @@ SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule, const char* nam CheckBoxCopy->setText(tr("SMESH_CREATE_COPY")); GroupArgumentsLayout->addMultiCellWidget(CheckBoxCopy, 3, 3, 0, 2); + // CheckBox for groups generation + MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments); + MakeGroupsCheck->setChecked(false); + GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 4, 4, 0, 2); SMESHGUI_SymmetryDlgLayout->addWidget(GroupArguments, 1, 0); @@ -331,6 +335,7 @@ SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule, const char* nam connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&))); connect(CheckBoxMesh, SIGNAL(toggled(bool)), SLOT(onSelectMesh(bool))); + connect(CheckBoxCopy, SIGNAL(toggled(bool)), SLOT(onCopyChecked(bool))); this->show(); /* displays Dialog */ @@ -377,6 +382,8 @@ void SMESHGUI_SymmetryDlg::Init (bool ResetControls) CheckBoxCopy->setChecked(false); CheckBoxMesh->setChecked(false); + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); onSelectMesh(false); } } @@ -492,12 +499,18 @@ void SMESHGUI_SymmetryDlg::ClickOnApply() try { SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); QApplication::setOverrideCursor(Qt::waitCursor); - aMeshEditor->Mirror(anElementsId, aMirror, aMirrorType, toCreateCopy); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + SMESH::ListOfGroups_var groups = + aMeshEditor->MirrorMakeGroups(anElementsId, aMirror, aMirrorType); + else + aMeshEditor->Mirror(anElementsId, aMirror, aMirrorType, toCreateCopy); QApplication::restoreOverrideCursor(); } catch (...) { } SMESH::UpdateView(); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + mySMESHGUI->updateObjBrowser(true); // new groups may appear Init(false); ConstructorsClicked(GetConstructorId()); SelectionIntoArgument(); @@ -654,6 +667,14 @@ void SMESHGUI_SymmetryDlg::SelectionIntoArgument() if (myEditCurrentArgument == (QWidget*)LineEditElements) { myElementsId = ""; + // MakeGroups is available if there are groups and "Copy" + if ( myMesh->NbGroups() == 0 ) { + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); + } + else if (CheckBoxCopy->isChecked() ) { + MakeGroupsCheck->setEnabled(true); + } if (CheckBoxMesh->isChecked()) { SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aString); @@ -927,6 +948,19 @@ void SMESHGUI_SymmetryDlg::onVectorChanged() } } +//======================================================================= +//function : onCopyChecked +//purpose : slot called when Copy checkBox is checked +//======================================================================= + +void SMESHGUI_SymmetryDlg::onCopyChecked(bool isOn) +{ + // enable "MakeGroupsCheck" + if ( !myMesh->_is_nil() && myMesh->NbGroups() == 0) + isOn = false; + MakeGroupsCheck->setEnabled(isOn); +} + //================================================================================= // function : keyPressEvent() // purpose : diff --git a/src/SMESHGUI/SMESHGUI_SymmetryDlg.h b/src/SMESHGUI/SMESHGUI_SymmetryDlg.h index a4c00e3b6..686e8a329 100644 --- a/src/SMESHGUI/SMESHGUI_SymmetryDlg.h +++ b/src/SMESHGUI/SMESHGUI_SymmetryDlg.h @@ -129,6 +129,7 @@ private: SMESHGUI_SpinBox* SpinBox_DZ; QCheckBox* CheckBoxCopy; + QCheckBox* MakeGroupsCheck; QString myHelpFileName; @@ -146,7 +147,8 @@ private: void onTextChange(const QString&); void onSelectMesh(bool toSelectMesh); void onVectorChanged(); - + void onCopyChecked(bool isOn); + protected: QGridLayout* SMESHGUI_SymmetryDlgLayout; QGridLayout* GroupConstructorsLayout; diff --git a/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx b/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx index c00e097d7..5d5ef0b9a 100644 --- a/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_TranslationDlg.cxx @@ -260,6 +260,10 @@ SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule, const cha CheckBoxCopy->setText(tr("SMESH_CREATE_COPY")); GroupArgumentsLayout->addMultiCellWidget(CheckBoxCopy, 4, 4, 0, 2); + // CheckBox for groups generation + MakeGroupsCheck = new QCheckBox(tr("SMESH_MAKE_GROUPS"), GroupArguments); + MakeGroupsCheck->setChecked(false); + GroupArgumentsLayout->addMultiCellWidget(MakeGroupsCheck, 5, 5, 0, 2); SMESHGUI_TranslationDlgLayout->addWidget(GroupArguments, 1, 0); @@ -310,6 +314,7 @@ SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule, const cha connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&))); connect(CheckBoxMesh, SIGNAL(toggled(bool)), SLOT(onSelectMesh(bool))); + connect(CheckBoxCopy, SIGNAL(toggled(bool)), SLOT(onCopyChecked(bool))); this->show(); /* displays Dialog */ @@ -356,6 +361,8 @@ void SMESHGUI_TranslationDlg::Init (bool ResetControls) CheckBoxCopy->setChecked(false); CheckBoxMesh->setChecked(false); + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); onSelectMesh(false); } } @@ -457,12 +464,18 @@ void SMESHGUI_TranslationDlg::ClickOnApply() try { SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); QApplication::setOverrideCursor(Qt::waitCursor); - aMeshEditor->Translate(anElementsId.inout(), aVector, toCreateCopy); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + SMESH::ListOfGroups_var groups = + aMeshEditor->TranslateMakeGroups(anElementsId.inout(), aVector); + else + aMeshEditor->Translate(anElementsId.inout(), aVector, toCreateCopy); QApplication::restoreOverrideCursor(); } catch (...) { } SMESH::UpdateView(); + if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) + mySMESHGUI->updateObjBrowser(true); // new groups may appear Init(false); ConstructorsClicked(GetConstructorId()); SelectionIntoArgument(); @@ -619,6 +632,15 @@ void SMESHGUI_TranslationDlg::SelectionIntoArgument() if (myEditCurrentArgument == (QWidget*)LineEditElements) { myElementsId = ""; + // MakeGroups is available if there are groups and "Copy" + if ( myMesh->NbGroups() == 0 ) { + MakeGroupsCheck->setChecked(false); + MakeGroupsCheck->setEnabled(false); + } + else if (CheckBoxCopy->isChecked() ) { + MakeGroupsCheck->setEnabled(true); + } + if (CheckBoxMesh->isChecked()) { SMESH::GetNameOfSelectedIObjects( mySelectionMgr, aString ); @@ -852,6 +874,19 @@ void SMESHGUI_TranslationDlg::onSelectMesh (bool toSelectMesh) SelectionIntoArgument(); } +//======================================================================= +//function : onCopyChecked +//purpose : slot called when Copy checkBox is checked +//======================================================================= + +void SMESHGUI_TranslationDlg::onCopyChecked(bool isOn) +{ + // enable "MakeGroupsCheck" + if ( !myMesh->_is_nil() && myMesh->NbGroups() == 0) + isOn = false; + MakeGroupsCheck->setEnabled(isOn); +} + //================================================================================= // function : GetConstructorId() // purpose : diff --git a/src/SMESHGUI/SMESHGUI_TranslationDlg.h b/src/SMESHGUI/SMESHGUI_TranslationDlg.h index a70f780ae..d0d627dbe 100644 --- a/src/SMESHGUI/SMESHGUI_TranslationDlg.h +++ b/src/SMESHGUI/SMESHGUI_TranslationDlg.h @@ -124,6 +124,7 @@ private: QLabel* TextLabel2_3; SMESHGUI_SpinBox* SpinBox2_3; QCheckBox* CheckBoxCopy; + QCheckBox* MakeGroupsCheck; QString myHelpFileName; @@ -140,6 +141,7 @@ private: void ActivateThisDialog() ; void onTextChange(const QString&); void onSelectMesh(bool toSelectMesh); + void onCopyChecked(bool isOn); protected: QGridLayout* SMESHGUI_TranslationDlgLayout; -- 2.39.2