X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FBuildGUI%2FBuildGUI_CompoundDlg.cxx;h=eecd87a8b0efb28b73871af24e4992ca81d003a1;hb=81fdd49b0f83ca23e04698697bf191a97467ca38;hp=29d3b26a88a0baeae752e46c9594014e7f7cbc5b;hpb=c577ca78d7a6e286526662cf54df6de1f4f2f449;p=modules%2Fgeom.git diff --git a/src/BuildGUI/BuildGUI_CompoundDlg.cxx b/src/BuildGUI/BuildGUI_CompoundDlg.cxx index 29d3b26a8..eecd87a8b 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) 2003 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 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. +// 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 +// 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// File : BuildGUI_CompoundDlg.cxx +// Author : Lucien PIGNOLONI, Open CASCADE S.A.S. // -// -// File : BuildGUI_CompoundDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ -using namespace std; #include "BuildGUI_CompoundDlg.h" +#include +#include +#include + +#include + +#include +#include +#include +#include + //================================================================================= // class : BuildGUI_CompoundDlg() // purpose : Constructs a BuildGUI_CompoundDlg which is a child of 'parent', with the @@ -36,30 +43,37 @@ using namespace std; // 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, BuildGUI* theBuildGUI, 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); - - GroupPoints = new DlgRef_1Sel_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_OBJECTS")); - GroupPoints->PushButton1->setPixmap(image1); - - Layout1->addWidget(GroupPoints, 1, 0); + 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 ); + + QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); + layout->setMargin( 0 ); layout->setSpacing( 6 ); + layout->addWidget( GroupShapes ); /***************************************************************/ + setHelpFileName("create_compound_page.html"); + /* Initialisations */ - myBuildGUI = theBuildGUI; Init(); } @@ -81,20 +95,23 @@ BuildGUI_CompoundDlg::~BuildGUI_CompoundDlg() void BuildGUI_CompoundDlg::Init() { /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - myOkListShapes = false; + myEditCurrentArgument = GroupShapes->LineEdit1; + GroupShapes->LineEdit1->setReadOnly( true ); + + myOkShapes = false; + + mainFrame()->GroupBoxPublish->show(); /* signals and slots connections */ - connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); - connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupPoints->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() ) ); - /* displays Dialog */ - GroupPoints->show(); - this->show(); + globalSelection( GEOM_ALLSHAPES ); - return; + initName( tr( "GEOM_COMPOUND" ) ); } @@ -104,9 +121,8 @@ void BuildGUI_CompoundDlg::Init() //================================================================================= void BuildGUI_CompoundDlg::ClickOnOk() { - this->ClickOnApply(); - ClickOnCancel(); - return; + if ( ClickOnApply() ) + ClickOnCancel(); } @@ -114,12 +130,13 @@ void BuildGUI_CompoundDlg::ClickOnOk() // function : ClickOnApply() // purpose : //================================================================================= -void BuildGUI_CompoundDlg::ClickOnApply() +bool BuildGUI_CompoundDlg::ClickOnApply() { - QAD_Application::getDesktop()->putInfo(tr("")); - if(myOkListShapes) - myBuildGUI->MakeCompoundAndDisplay(myListShapes); - return; + if ( !onAccept() ) + return false; + + initName(); + return true; } @@ -129,26 +146,19 @@ void BuildGUI_CompoundDlg::ClickOnApply() //================================================================================= void BuildGUI_CompoundDlg::SelectionIntoArgument() { - myEditCurrentArgument->setText(""); + myEditCurrentArgument->setText( "" ); QString aString = ""; /* name of selection */ - myOkListShapes = false; - int nbSel = mySelection->IObjectCount(); - if(nbSel == 0) + myOkShapes = false; + int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); + if ( nbSel == 0 ) return; - aString = tr("%1_objects").arg(nbSel); - -// int nbSel = myGeomBase->GetNameOfSelectedIObjects(mySelection, aString); -// if(nbSel <= 1) { -// myOkListShapes = false; -// return; -// } + if ( nbSel != 1 ) + aString = QString( "%1_objects").arg( nbSel ); - myGeomBase->ConvertListOfIOInListOfIOR(mySelection->StoredIObjects(), myListShapes); - myEditCurrentArgument->setText(aString); - myOkListShapes = true; - /* no simulation */ - return; + GEOMBase::ConvertListOfIOInListOfGO( selectedIO(), myShapes, true ); + myEditCurrentArgument->setText( aString ); + myOkShapes = true; } @@ -158,9 +168,14 @@ void BuildGUI_CompoundDlg::SelectionIntoArgument() //================================================================================= void BuildGUI_CompoundDlg::SetEditCurrentArgument() { - GroupPoints->LineEdit1->setFocus(); - this->SelectionIntoArgument(); - return; + QPushButton* send = (QPushButton*)sender(); + if ( send != GroupShapes->PushButton1 ) + return; + + myEditCurrentArgument = GroupShapes->LineEdit1; + + myEditCurrentArgument->setFocus(); + SelectionIntoArgument(); } @@ -171,8 +186,9 @@ void BuildGUI_CompoundDlg::SetEditCurrentArgument() void BuildGUI_CompoundDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); - connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - return; + globalSelection( GEOM_ALLSHAPES ); + connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), + SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); } @@ -182,8 +198,55 @@ void BuildGUI_CompoundDlg::ActivateThisDialog() //================================================================================= void BuildGUI_CompoundDlg::enterEvent(QEvent* e) { - if (GroupConstructors->isEnabled()) - return; - this->ActivateThisDialog(); - return; + if ( !mainFrame()->GroupConstructors->isEnabled() ) + ActivateThisDialog(); +} + +//================================================================================= +// function : createOperation +// purpose : +//================================================================================= +GEOM::GEOM_IOperations_ptr BuildGUI_CompoundDlg::createOperation() +{ + return getGeomEngine()->GetIShapesOperations( getStudyId() ); +} + +//================================================================================= +// function : isValid +// purpose : +//================================================================================= +bool BuildGUI_CompoundDlg::isValid( QString& ) +{ + return myOkShapes; +} + +//================================================================================= +// function : execute +// purpose : +//================================================================================= +bool BuildGUI_CompoundDlg::execute( ObjectList& objects ) +{ + GEOM::GEOM_Object_var anObj; + + anObj = GEOM::GEOM_IShapesOperations::_narrow( getOperation() )->MakeCompound( myShapes ); + + if ( !anObj->_is_nil() ) + objects.push_back( anObj._retn() ); + + return true; +} + +//================================================================================= +// function : restoreSubShapes +// purpose : +//================================================================================= +void BuildGUI_CompoundDlg::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_GetSame, // ? GEOM::FSM_GetInPlace + /*theInheritFirstArg=*/false ); + } }