X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FRepairGUI%2FRepairGUI_RemoveExtraEdgesDlg.cxx;h=dec139b8d7756593a7741a0b8504a8641d1a302b;hb=357991964c4929ef01edcf1d55eddd67f8512c29;hp=930fb95c44563af25376becc68a4d25519fb4999;hpb=239f8109c64fa0c5a2e1d87a420bad5529b57f48;p=modules%2Fgeom.git diff --git a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx index 930fb95c4..dec139b8d 100644 --- a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx +++ b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx @@ -1,35 +1,40 @@ -// -// 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 +// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE // +// 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 // -// File : RepairGUI_RemoveExtraEdgesDlg.cxx -// Author : Michael Zorin -// Module : GEOM -// $Header: +// GEOM RepairGUI : GUI for Geometry component +// File : RepairGUI_RemoveExtraEdgesDlg.cxx +// Author : Michael Zorin, Open CASCADE S.A.S. +// #include "RepairGUI_RemoveExtraEdgesDlg.h" -#include "SalomeApp_Application.h" -#include "LightApp_SelectionMgr.h" -#include "SUIT_Session.h" +#include +#include +#include -#include "GEOMImpl_Types.hxx" - -#include +#include +#include +#include +#include -#include +#include -using namespace std; +#include //================================================================================= // class : RepairGUI_RemoveExtraEdgesDlg() @@ -38,32 +43,40 @@ using namespace std; // The dialog will by default be modeless, unless you set 'modal' to // TRUE to construct a modal dialog. //================================================================================= -RepairGUI_RemoveExtraEdgesDlg::RepairGUI_RemoveExtraEdgesDlg(GeometryGUI* theGeometryGUI, QWidget* parent, - const char* name, bool modal, WFlags fl) - :GEOMBase_Skeleton(theGeometryGUI, parent, name, modal, WStyle_Customize | - WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) +RepairGUI_RemoveExtraEdgesDlg::RepairGUI_RemoveExtraEdgesDlg( GeometryGUI* theGeometryGUI, QWidget* parent, + bool modal ) + : GEOMBase_Skeleton( theGeometryGUI, parent, modal ) { - QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_REMOVE_EXTRA_EDGES"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); + QPixmap image0( aResMgr->loadPixmap( "GEOM", tr( "ICON_DLG_REMOVE_EXTRA_EDGES" ) ) ); + QPixmap image1( aResMgr->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); - setCaption(tr("GEOM_REMOVE_EXTRA_EDGES_TITLE")); + setWindowTitle( tr( "GEOM_REMOVE_EXTRA_EDGES_TITLE" ) ); /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_REMOVE_EXTRA_EDGES_TITLE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_REMOVE_EXTRA_EDGES")); - GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); - GroupPoints->PushButton1->setPixmap(image1); + mainFrame()->GroupConstructors->setTitle(tr("GEOM_REMOVE_EXTRA_EDGES_TITLE")); + mainFrame()->RadioButton1->setIcon( image0 ); + mainFrame()->RadioButton2->setAttribute( Qt::WA_DeleteOnClose ); + mainFrame()->RadioButton2->close(); + mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose ); + mainFrame()->RadioButton3->close(); + + GroupPoints = new DlgRef_1Sel1Check( centralWidget() ); + + GroupPoints->GroupBox1->setTitle( tr( "GEOM_REMOVE_EXTRA_EDGES" ) ); + GroupPoints->TextLabel1->setText( tr( "GEOM_SELECTED_SHAPE" ) ); + GroupPoints->PushButton1->setIcon( image1 ); GroupPoints->LineEdit1->setReadOnly( true ); - Layout1->addWidget(GroupPoints, 2, 0); + GroupPoints->CheckButton1->setText( tr( "GEOM_RMEE_UNION_FACES" ) ); + + QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); + layout->setMargin( 0 ); layout->setSpacing( 6 ); + layout->addWidget( GroupPoints ); + /***************************************************************/ - setHelpFileName("remove_extra_edges_operation_page.html"); + setHelpFileName( "remove_extra_edges_operation_page.html" ); Init(); } @@ -89,19 +102,27 @@ void RepairGUI_RemoveExtraEdgesDlg::Init() myOkObject = false; + GroupPoints->CheckButton1->setChecked( false ); + activateSelection(); + mainFrame()->GroupBoxPublish->show(); + //Hide preview checkbox + mainFrame()->CheckBoxPreview->hide(); + /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); + connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); + connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); + connect( GroupPoints->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); + connect( GroupPoints->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), + this, SLOT( SelectionIntoArgument() ) ); initName( tr( "REMOVE_EXTRA_EDGES_NEW_OBJ_NAME" ) ); + resize(100,100); + SelectionIntoArgument(); } @@ -111,6 +132,7 @@ void RepairGUI_RemoveExtraEdgesDlg::Init() //================================================================================= void RepairGUI_RemoveExtraEdgesDlg::ClickOnOk() { + setIsApplyAndClose( true ); if ( ClickOnApply() ) ClickOnCancel(); } @@ -126,9 +148,11 @@ bool RepairGUI_RemoveExtraEdgesDlg::ClickOnApply() initName(); - myEditCurrentArgument->setText(""); + myEditCurrentArgument->setText( "" ); myObject = GEOM::GEOM_Object::_nil(); + myOkObject = false; + activateSelection(); return true; @@ -142,26 +166,29 @@ bool RepairGUI_RemoveExtraEdgesDlg::ClickOnApply() //================================================================================= void RepairGUI_RemoveExtraEdgesDlg::SelectionIntoArgument() { - myEditCurrentArgument->setText(""); + myEditCurrentArgument->setText( "" ); QString aName; - if(myEditCurrentArgument == GroupPoints->LineEdit1) { - if (IObjectCount() != 1) { - if (myEditCurrentArgument == GroupPoints->LineEdit1) + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { + if ( aSelList.Extent() != 1 ) { + if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) myOkObject = false; return; } } // nbSel == 1 - Standard_Boolean testResult = Standard_False; GEOM::GEOM_Object_ptr aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + GEOMBase::ConvertIOinGEOMObject( aSelList.First() ); - if (!testResult) + if ( CORBA::is_nil( aSelectedObject ) ) return; - if (myEditCurrentArgument == GroupPoints->LineEdit1) { + if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) { myObject = aSelectedObject; myOkObject = true; } @@ -175,8 +202,7 @@ void RepairGUI_RemoveExtraEdgesDlg::SelectionIntoArgument() //================================================================================= void RepairGUI_RemoveExtraEdgesDlg::SetEditCurrentArgument() { - if( sender() == GroupPoints->PushButton1 ) - { + if( sender() == GroupPoints->PushButton1 ) { GroupPoints->LineEdit1->setFocus(); myEditCurrentArgument = GroupPoints->LineEdit1; } @@ -190,8 +216,7 @@ void RepairGUI_RemoveExtraEdgesDlg::SetEditCurrentArgument() //================================================================================= void RepairGUI_RemoveExtraEdgesDlg::LineEditReturnPressed() { - if( sender() == GroupPoints->LineEdit1 ) - { + if ( sender() == GroupPoints->LineEdit1 ) { myEditCurrentArgument = GroupPoints->LineEdit1; GEOMBase_Skeleton::LineEditReturnPressed(); } @@ -205,8 +230,8 @@ void RepairGUI_RemoveExtraEdgesDlg::LineEditReturnPressed() void RepairGUI_RemoveExtraEdgesDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), + this, SLOT( SelectionIntoArgument() ) ); activateSelection(); } @@ -218,20 +243,11 @@ void RepairGUI_RemoveExtraEdgesDlg::ActivateThisDialog() //================================================================================= void RepairGUI_RemoveExtraEdgesDlg::enterEvent(QEvent* e) { - if ( !GroupConstructors->isEnabled() ) + if ( !mainFrame()->GroupConstructors->isEnabled() ) ActivateThisDialog(); } -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void RepairGUI_RemoveExtraEdgesDlg::closeEvent(QCloseEvent* e) -{ - GEOMBase_Skeleton::closeEvent( e ); -} - //================================================================================= // function : activateSelection // purpose : activate selection of solids and compounds @@ -239,6 +255,7 @@ void RepairGUI_RemoveExtraEdgesDlg::closeEvent(QCloseEvent* e) void RepairGUI_RemoveExtraEdgesDlg::activateSelection() { TColStd_MapOfInteger aTypes; + aTypes.Add( GEOM_SHELL ); aTypes.Add( GEOM_SOLID ); aTypes.Add( GEOM_COMPOUND ); globalSelection( aTypes ); @@ -269,11 +286,31 @@ bool RepairGUI_RemoveExtraEdgesDlg::isValid( QString& msg ) bool RepairGUI_RemoveExtraEdgesDlg::execute( ObjectList& objects ) { GEOM::GEOM_Object_var anObj; - - anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->RemoveExtraEdges(myObject); - - if ( !anObj->_is_nil() ) - objects.push_back( anObj._retn() ); + + int nbFacesOptimum = -1; // -1 means do not union faces + if (GroupPoints->CheckButton1->isChecked()) + nbFacesOptimum = 0; // 0 means union all faces, that possible + GEOM::GEOM_IBlocksOperations_var anOper = GEOM::GEOM_IBlocksOperations::_narrow(getOperation()); + anObj = anOper->RemoveExtraEdges(myObject, nbFacesOptimum); + + if (!anObj->_is_nil()) + objects.push_back(anObj._retn()); return true; } + +//================================================================================= +// function : restoreSubShapes +// purpose : +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::restoreSubShapes( SALOMEDS::Study_ptr theStudy, + SALOMEDS::SObject_ptr theSObject ) +{ + if ( mainFrame()->CheckBoxRestoreSS->isChecked() ) { + // empty list of arguments means that all arguments should be restored + getGeomEngine()->RestoreSubShapesSO( theStudy, theSObject, GEOM::ListOfGO(), + /*theFindMethod=*/GEOM::FSM_GetInPlace, // ? GetInPlaceByHistory + /*theInheritFirstArg=*/true, + mainFrame()->CheckBoxAddPrefix->isChecked() ); + } +}