X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FTransformationGUI%2FTransformationGUI_MirrorDlg.cxx;h=5104c44f06e39af56bb45c9bd867afae0a77b9aa;hb=beb544eb696e76520d0ae94aefdd9460ff8d8835;hp=345ce98fe0bfedc91b2b253473f0f5d31634c5ae;hpb=239f8109c64fa0c5a2e1d87a420bad5529b57f48;p=modules%2Fgeom.git diff --git a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx b/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx index 345ce98fe..5104c44f0 100644 --- a/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_MirrorDlg.cxx @@ -1,31 +1,30 @@ -// GEOM GEOMGUI : GUI for Geometry component +// Copyright (C) 2007-2008 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 // -// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// GEOM GEOMGUI : GUI for Geometry component // File : TransformationGUI_MirrorDlg.cxx // Author : Lucien PIGNOLONI // Module : GEOM // $Header$ - +// #include "TransformationGUI_MirrorDlg.h" #include "SUIT_Desktop.h" @@ -51,7 +50,7 @@ using namespace std; //================================================================================= // class : TransformationGUI_MirrorDlg() -// purpose : Constructs a TransformationGUI_MirrorDlg which is a child of 'parent', with the +// purpose : Constructs a TransformationGUI_MirrorDlg which is a child of 'parent', with the // name 'name' and widget flags set to 'f'. // The dialog will by default be modeless, unless you set 'modal' to // TRUE to construct a modal dialog. @@ -73,7 +72,7 @@ TransformationGUI_MirrorDlg::TransformationGUI_MirrorDlg(GeometryGUI* theGeometr RadioButton1->setPixmap(image0); RadioButton2->setPixmap(image1); RadioButton3->setPixmap(image2); - + GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); GroupPoints->SpinBox_DX->hide(); GroupPoints->TextLabel3->hide(); @@ -88,8 +87,8 @@ TransformationGUI_MirrorDlg::TransformationGUI_MirrorDlg(GeometryGUI* theGeometr Layout1->addWidget(GroupPoints, 2, 0); /***************************************************************/ - setHelpFileName("mirror_operation_page.html"); - + setHelpFileName("mirror_operation_page.html"); + Init(); } @@ -99,7 +98,7 @@ TransformationGUI_MirrorDlg::TransformationGUI_MirrorDlg(GeometryGUI* theGeometr // purpose : Destroys the object and frees any allocated resources //================================================================================= TransformationGUI_MirrorDlg::~TransformationGUI_MirrorDlg() -{ +{ /* no need to delete child widgets, Qt does it all for us */ } @@ -109,18 +108,20 @@ TransformationGUI_MirrorDlg::~TransformationGUI_MirrorDlg() // purpose : //================================================================================= void TransformationGUI_MirrorDlg::Init() -{ +{ /* init variables */ myEditCurrentArgument = GroupPoints->LineEdit1; GroupPoints->LineEdit1->setReadOnly(true); GroupPoints->LineEdit2->setReadOnly(true); - + myArgument = GEOM::GEOM_Object::_nil(); - + // Activate Create a Copy mode GroupPoints->CheckButton1->setChecked(true); CreateCopyModeChanged(true); + GroupBoxPublish->show(); + /* signals and slots connections */ connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); @@ -131,10 +132,10 @@ void TransformationGUI_MirrorDlg::Init() connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - + connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); - - connect(myGeomGUI->getApp()->selectionMgr(), + + connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); initName( tr( "GEOM_MIRROR" ) ); @@ -149,16 +150,16 @@ void TransformationGUI_MirrorDlg::Init() void TransformationGUI_MirrorDlg::ConstructorsClicked(int constructorId) { disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 ); - + globalSelection(); myEditCurrentArgument = GroupPoints->LineEdit1; GroupPoints->LineEdit2->clear(); myArgument = GEOM::GEOM_Object::_nil(); - + switch (constructorId) { case 0: /* mirror an object by point */ - { + { GroupPoints->TextLabel2->setText(tr("GEOM_POINT_MIRROR")); break; } @@ -166,14 +167,14 @@ void TransformationGUI_MirrorDlg::ConstructorsClicked(int constructorId) { GroupPoints->TextLabel2->setText(tr("GEOM_AXE_MIRROR")); break; - } + } case 2: /* mirror an object by plane */ { GroupPoints->TextLabel2->setText(tr("GEOM_PLANE_MIRROR")); break; } } - connect(myGeomGUI->getApp()->selectionMgr(), + connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); } @@ -198,7 +199,7 @@ bool TransformationGUI_MirrorDlg::ClickOnApply() { if ( !onAccept(GroupPoints->CheckButton1->isChecked()) ) return false; - + initName(); ConstructorsClicked( getConstructorId() ); return true; @@ -253,7 +254,7 @@ void TransformationGUI_MirrorDlg::SelectionIntoArgument() aNeedType = TopAbs_EDGE; else if (getConstructorId() == 2) aNeedType = TopAbs_FACE; - + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); TColStd_IndexedMapOfInteger aMap; aSelMgr->GetIndexes( firstIObject(), aMap ); @@ -264,10 +265,10 @@ void TransformationGUI_MirrorDlg::SelectionIntoArgument() aName += QString(":vertex_%1").arg(anIndex); else aName += QString(":edge_%1").arg(anIndex); - + //Find SubShape Object in Father GEOM::GEOM_Object_var aFindedObject = findObjectInFather(aSelectedObject, aName); - + if ( aFindedObject == GEOM::GEOM_Object::_nil() ) { // Object not found in study GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); @@ -286,8 +287,8 @@ void TransformationGUI_MirrorDlg::SelectionIntoArgument() } } myEditCurrentArgument->setText( aName ); - - displayPreview(); + + displayPreview(); } @@ -315,7 +316,7 @@ void TransformationGUI_MirrorDlg::SetEditCurrentArgument() { QPushButton* send = (QPushButton*)sender(); globalSelection(); - + if(send == GroupPoints->PushButton1){ myEditCurrentArgument = GroupPoints->LineEdit1; } @@ -353,7 +354,7 @@ void TransformationGUI_MirrorDlg::SetEditCurrentArgument() void TransformationGUI_MirrorDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); - connect(myGeomGUI->getApp()->selectionMgr(), + connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); ConstructorsClicked( getConstructorId() ); } @@ -398,24 +399,26 @@ bool TransformationGUI_MirrorDlg::execute( ObjectList& objects ) { bool res = false; bool toCreateCopy = IsPreview() || GroupPoints->CheckButton1->isChecked(); - + GEOM::GEOM_Object_var anObj; - - switch ( getConstructorId() ) + + switch ( getConstructorId() ) { case 0 : { if (toCreateCopy) for (int i = 0; i < myObjects.length(); i++) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPointCopy( myObjects[i], myArgument ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + MirrorPointCopy( myObjects[i], myArgument ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } else for (int i = 0; i < myObjects.length(); i++) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPoint( myObjects[i], myArgument ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + MirrorPoint( myObjects[i], myArgument ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } @@ -427,14 +430,16 @@ bool TransformationGUI_MirrorDlg::execute( ObjectList& objects ) if (toCreateCopy) for (int i = 0; i < myObjects.length(); i++) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorAxisCopy( myObjects[i], myArgument ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + MirrorAxisCopy( myObjects[i], myArgument ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } else for (int i = 0; i < myObjects.length(); i++) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorAxis( myObjects[i], myArgument ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + MirrorAxis( myObjects[i], myArgument ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } @@ -446,14 +451,16 @@ bool TransformationGUI_MirrorDlg::execute( ObjectList& objects ) if (toCreateCopy) for (int i = 0; i < myObjects.length(); i++) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPlaneCopy( myObjects[i], myArgument ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + MirrorPlaneCopy( myObjects[i], myArgument ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } else for (int i = 0; i < myObjects.length(); i++) { - anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )->MirrorPlane( myObjects[i], myArgument ); + anObj = GEOM::GEOM_ITransformOperations::_narrow( getOperation() )-> + MirrorPlane( myObjects[i], myArgument ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); } @@ -461,20 +468,25 @@ bool TransformationGUI_MirrorDlg::execute( ObjectList& objects ) break; } } - + return res; } //================================================================================= -// function : closeEvent +// function : restoreSubShapes // purpose : //================================================================================= -void TransformationGUI_MirrorDlg::closeEvent( QCloseEvent* e ) +void TransformationGUI_MirrorDlg::restoreSubShapes (SALOMEDS::Study_ptr theStudy, + SALOMEDS::SObject_ptr theSObject) { - GEOMBase_Skeleton::closeEvent( e ); + if (CheckBoxRestoreSS->isChecked()) { + // empty list of arguments means that all arguments should be restored + getGeomEngine()->RestoreSubShapesSO(theStudy, theSObject, GEOM::ListOfGO(), + /*theFindMethod=*/GEOM::FSM_Transformed, + /*theInheritFirstArg=*/true); + } } - //================================================================================= // function : CreateCopyModeChanged() // purpose :