X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FBuildGUI%2FBuildGUI_CompoundDlg.cxx;h=f64a92bf7f70802cc3d636389fd063525a922e50;hb=33989517de8433bf2424a75aeba0b0d906eda520;hp=b6f9f06b67d918e91d3643727a5464e3b2dd19a6;hpb=d3dd282390888d7dc091ba2c2ffe7923bd7458e6;p=modules%2Fgeom.git diff --git a/src/BuildGUI/BuildGUI_CompoundDlg.cxx b/src/BuildGUI/BuildGUI_CompoundDlg.cxx index b6f9f06b6..f64a92bf7 100644 --- a/src/BuildGUI/BuildGUI_CompoundDlg.cxx +++ b/src/BuildGUI/BuildGUI_CompoundDlg.cxx @@ -1,34 +1,41 @@ -// GEOM GEOMGUI : GUI for Geometry component +// Copyright (C) 2007-2016 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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, 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 +// 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 : BuildGUI_CompoundDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ +// GEOM GEOMGUI : GUI for Geometry component +// File : BuildGUI_CompoundDlg.cxx +// Author : Lucien PIGNOLONI, Open CASCADE S.A.S. +// #include "BuildGUI_CompoundDlg.h" -#include "QAD_Desktop.h" -#include "GEOMImpl_Types.hxx" + +#include +#include +#include + +#include + +#include +#include +#include +#include //================================================================================= // class : BuildGUI_CompoundDlg() @@ -37,29 +44,36 @@ // The dialog will by default be modeless, unless you set 'modal' to // TRUE to construct a modal dialog. //================================================================================= -BuildGUI_CompoundDlg::BuildGUI_CompoundDlg(QWidget* parent, const char* name, SALOME_Selection* Sel, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, Sel, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) +BuildGUI_CompoundDlg::BuildGUI_CompoundDlg( GeometryGUI* theGeometryGUI, QWidget* parent ) + : GEOMBase_Skeleton( theGeometryGUI, parent ) { - QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_DLG_BUILD_COMPOUND"))); - QPixmap image1(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_SELECT"))); + QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_BUILD_COMPOUND" ) ) ); + QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); - setCaption(tr("GEOM_COMPOUND_TITLE")); + setWindowTitle( tr( "GEOM_COMPOUND_TITLE" ) ); /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_COMPOUND")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupShapes = new DlgRef_1Sel_QTD(this, "GroupShapes"); - GroupShapes->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupShapes->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupShapes->PushButton1->setPixmap(image1); + mainFrame()->GroupConstructors->setTitle( tr( "GEOM_COMPOUND" ) ); + mainFrame()->RadioButton1->setIcon( image0 ); + mainFrame()->RadioButton2->setAttribute( Qt::WA_DeleteOnClose ); + mainFrame()->RadioButton2->close(); + mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose ); + mainFrame()->RadioButton3->close(); + + GroupShapes = new DlgRef_1Sel( centralWidget() ); + + GroupShapes->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) ); + GroupShapes->TextLabel1->setText( tr( "GEOM_OBJECTS" ) ); + GroupShapes->PushButton1->setIcon( image1 ); GroupShapes->LineEdit1->setReadOnly( true ); - Layout1->addWidget(GroupShapes, 2, 0); + QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); + layout->setMargin( 0 ); layout->setSpacing( 6 ); + layout->addWidget( GroupShapes ); /***************************************************************/ + setHelpFileName("create_compound_page.html"); + /* Initialisations */ Init(); } @@ -85,17 +99,22 @@ void BuildGUI_CompoundDlg::Init() myEditCurrentArgument = GroupShapes->LineEdit1; GroupShapes->LineEdit1->setReadOnly( true ); - myOkShapes = false; + myShapes.clear(); + + mainFrame()->GroupBoxPublish->show(); + mainFrame()->CheckBoxPreview->hide(); /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupShapes->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; + connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); + connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); + connect( GroupShapes->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); + connect( ( (SalomeApp_Application*)(SUIT_Session::session()->activeApplication() ) )->selectionMgr(), + SIGNAL(currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); globalSelection( GEOM_ALLSHAPES ); initName( tr( "GEOM_COMPOUND" ) ); + SelectionIntoArgument(); } @@ -105,6 +124,7 @@ void BuildGUI_CompoundDlg::Init() //================================================================================= void BuildGUI_CompoundDlg::ClickOnOk() { + setIsApplyAndClose( true ); if ( ClickOnApply() ) ClickOnCancel(); } @@ -131,18 +151,13 @@ bool BuildGUI_CompoundDlg::ClickOnApply() void BuildGUI_CompoundDlg::SelectionIntoArgument() { myEditCurrentArgument->setText( "" ); - QString aString = ""; /* name of selection */ - myOkShapes = false; - int nbSel = GEOMBase::GetNameOfSelectedIObjects( mySelection, aString, true ); - if ( nbSel == 0 ) - return; - if ( nbSel != 1 ) - aString = QString( "%1_objects").arg( nbSel ); - - GEOMBase::ConvertListOfIOInListOfGO( mySelection->StoredIObjects(), myShapes, true ); - myEditCurrentArgument->setText( aString ); - myOkShapes = true; + myShapes = getSelected( TopAbs_SHAPE, -1 ); + + if ( !myShapes.isEmpty() ) { + QString aName = myShapes.count() > 1 ? QString( "%1_objects").arg( myShapes.count() ) : GEOMBase::GetName( myShapes[0].get() ); + myEditCurrentArgument->setText( aName ); + } } @@ -153,7 +168,7 @@ void BuildGUI_CompoundDlg::SelectionIntoArgument() void BuildGUI_CompoundDlg::SetEditCurrentArgument() { QPushButton* send = (QPushButton*)sender(); - if (send != GroupShapes->PushButton1) + if ( send != GroupShapes->PushButton1 ) return; myEditCurrentArgument = GroupShapes->LineEdit1; @@ -171,7 +186,8 @@ void BuildGUI_CompoundDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); globalSelection( GEOM_ALLSHAPES ); - connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), + SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); } @@ -181,7 +197,7 @@ void BuildGUI_CompoundDlg::ActivateThisDialog() //================================================================================= void BuildGUI_CompoundDlg::enterEvent(QEvent* e) { - if ( !GroupConstructors->isEnabled() ) + if ( !mainFrame()->GroupConstructors->isEnabled() ) ActivateThisDialog(); } @@ -191,7 +207,7 @@ void BuildGUI_CompoundDlg::enterEvent(QEvent* e) //================================================================================= GEOM::GEOM_IOperations_ptr BuildGUI_CompoundDlg::createOperation() { - return getGeomEngine()->GetIShapesOperations( getStudyId() ); + return getGeomEngine()->GetIShapesOperations(); } //================================================================================= @@ -200,7 +216,7 @@ GEOM::GEOM_IOperations_ptr BuildGUI_CompoundDlg::createOperation() //================================================================================= bool BuildGUI_CompoundDlg::isValid( QString& ) { - return myOkShapes; + return !myShapes.isEmpty(); } //================================================================================= @@ -209,12 +225,41 @@ bool BuildGUI_CompoundDlg::isValid( QString& ) //================================================================================= bool BuildGUI_CompoundDlg::execute( ObjectList& objects ) { - GEOM::GEOM_Object_var anObj; + GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow( getOperation() ); + + GEOM::ListOfGO_var objlist = new GEOM::ListOfGO(); + objlist->length( myShapes.count() ); + for ( int i = 0; i < myShapes.count(); i++ ) + objlist[i] = myShapes[i].copy(); - anObj = GEOM::GEOM_IShapesOperations::_narrow( getOperation() )->MakeCompound( myShapes ); + GEOM::GEOM_Object_var anObj = anOper->MakeCompound( objlist ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); return true; } + +//================================================================================= +// function : restoreSubShapes +// purpose : +//================================================================================= +void BuildGUI_CompoundDlg::restoreSubShapes( SALOMEDS::SObject_ptr theSObject ) +{ + if ( mainFrame()->CheckBoxRestoreSS->isChecked() ) { + // empty list of arguments means that all arguments should be restored + getGeomEngine()->RestoreSubShapesSO( theSObject, GEOM::ListOfGO(), + /*theFindMethod=*/GEOM::FSM_GetInPlace, // ? GEOM::FSM_GetSame + /*theInheritFirstArg=*/false, + mainFrame()->CheckBoxAddPrefix->isChecked() ); + } +} + +//================================================================================= +// function : getSourceObjects +// purpose : virtual method to get source objects +//================================================================================= +QList BuildGUI_CompoundDlg::getSourceObjects() +{ + return myShapes; +}