X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FEntityGUI%2FEntityGUI_SubShapeDlg.cxx;h=4f466c7452961b49c7be2e4925c9073f064cc2d1;hb=7de585b1b905ca14c6465967ce9874ca44df0b88;hp=ff6304c63a84399dbd0d83d30173c58c8ea31701;hpb=d3dd282390888d7dc091ba2c2ffe7923bd7458e6;p=modules%2Fgeom.git diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx index ff6304c63..4f466c745 100644 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx +++ b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx @@ -1,44 +1,49 @@ -// GEOM GEOMGUI : GUI for Geometry component +// 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 : EntityGUI_SubShapeDlg.cxx +// Author : Lucien PIGNOLONI, Open CASCADE S.A.S. // -// -// File : EntityGUI_SubShapeDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM -// $Header$ #include "EntityGUI_SubShapeDlg.h" -#include "GEOM_Displayer.h" -#include "QAD_RightFrame.h" -#include "QAD_Desktop.h" -#include "SALOME_ListIteratorOfListIO.hxx" +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include #include -#include +#include //================================================================================= // class : EntityGUI_SubShapeDlg @@ -47,31 +52,41 @@ // The dialog will by default be modeless, unless you set 'modal' to // TRUE to construct a modal dialog. //================================================================================= -EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(QWidget* parent, const char* name, SALOME_Selection* Sel, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, Sel, modal, fl) +EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg( GeometryGUI* theGeometryGUI, QWidget* parent, + bool modal, Qt::WindowFlags fl ) + : GEOMBase_Skeleton( theGeometryGUI, parent, modal, fl ) { - QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_DLG_SUBSHAPE"))); - QPixmap image1(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_SELECT"))); + QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_DLG_SUBSHAPE" ) ) ); + QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); - setCaption(tr("GEOM_SUBSHAPE_TITLE")); + setWindowTitle( tr( "GEOM_SUBSHAPE_TITLE" ) ); /***************************************************************/ - GroupConstructors->setTitle(tr("GEOM_SUB_SHAPE")); - RadioButton1->setPixmap(image0); - RadioButton2->close(TRUE); - RadioButton3->close(TRUE); - - GroupPoints = new DlgRef_1Sel1Check1List_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); - GroupPoints->TextLabel1->setText(tr("GEOM_MAIN_OBJECT")); - GroupPoints->TextLabel2->setText(tr("GEOM_SUBSHAPE_TYPE")); - GroupPoints->CheckButton1->setText(tr("GEOM_SUBSHAPE_SELECT")); - GroupPoints->PushButton1->setPixmap(image1); + mainFrame()->GroupConstructors->setTitle( tr( "GEOM_SUB_SHAPE" ) ); + 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_1Sel1Check1List( centralWidget() ); + + GroupPoints->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) ); + GroupPoints->TextLabel1->setText( tr( "GEOM_MAIN_OBJECT" ) ); + GroupPoints->TextLabel2->setText( tr( "GEOM_SUBSHAPE_TYPE" ) ); + GroupPoints->CheckButton1->setText( tr( "GEOM_SUBSHAPE_SELECT" ) ); + GroupPoints->PushButton1->setIcon( image1 ); GroupPoints->LineEdit1->setReadOnly( true ); - Layout1->addWidget(GroupPoints, 1, 0); + QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); + layout->setMargin( 0 ); layout->setSpacing( 6 ); + layout->addWidget( GroupPoints ); /***************************************************************/ + setHelpFileName( "create_explode_page.html" ); + + mainFrame()->GroupBoxName->hide(); + Init(); } @@ -98,34 +113,34 @@ void EntityGUI_SubShapeDlg::Init() myWithShape = true; /* type for sub shape selection */ - GroupPoints->ComboBox1->insertItem("Compound"); - GroupPoints->ComboBox1->insertItem("Compsolid"); - GroupPoints->ComboBox1->insertItem("Solid"); - GroupPoints->ComboBox1->insertItem("Shell"); - GroupPoints->ComboBox1->insertItem("Face"); - GroupPoints->ComboBox1->insertItem("Wire"); - GroupPoints->ComboBox1->insertItem("Edge"); - GroupPoints->ComboBox1->insertItem("Vertex"); - GroupPoints->ComboBox1->insertItem("Shape"); - - if(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() != VIEW_OCC) - GroupPoints->CheckButton1->setEnabled(false); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Compound" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Compsolid" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Solid" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Shell" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Face" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Wire" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Edge" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Vertex" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Shape" ); + + if ( SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() + != OCCViewer_Viewer::Type() ) + GroupPoints->CheckButton1->setEnabled( false ); /* signals and slots connections */ - connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); - connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); - connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); + connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) ); - 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(GroupPoints->ComboBox1, SIGNAL(activated(int)), this, SLOT(ComboTextChanged())); - connect(GroupPoints->CheckButton1, SIGNAL(stateChanged(int)), this, SLOT(SubShapeToggled())); - - connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + connect( GroupPoints->ComboBox1, SIGNAL( activated( int ) ), this, SLOT( ComboTextChanged() ) ); + connect( GroupPoints->CheckButton1, SIGNAL( stateChanged( int ) ), this, SLOT( SubShapeToggled() ) ); + + connect( myGeomGUI->getApp()->selectionMgr(), + SIGNAL( currentSelectionChanged( )), this, SLOT( SelectionIntoArgument() ) ); updateButtonState(); @@ -150,24 +165,29 @@ void EntityGUI_SubShapeDlg::ClickOnOk() //================================================================================= bool EntityGUI_SubShapeDlg::ClickOnApply() { - QAD_Application::getDesktop()->putInfo(tr("")); + SUIT_Session::session()->activeApplication()->putInfo( "" ); /* Explode all sub shapes */ - if( isAllSubShapes() ) { + if ( isAllSubShapes() ) { /* More than 30 subshapes : ask confirmation */ - unsigned int nb = NumberOfSubShapes(myShape, shapeType()); - if(nb > 30) { - const QString caption = tr("GEOM_CONFIRM"); - const QString text = tr("GEOM_CONFIRM_INFO").arg(nb); - const QString button0 = tr("GEOM_BUT_EXPLODE"); - const QString button1 = tr("GEOM_BUT_CANCEL"); - - if(QMessageBox::warning(this, caption, text, button0, button1) != 0) + unsigned int nb = NumberOfSubShapes( myShape, shapeType() ); + if ( nb > 30 ) { + const QString caption = tr( "GEOM_CONFIRM" ); + const QString text = tr( "GEOM_CONFIRM_INFO" ).arg( nb ); + const QString button0 = tr( "GEOM_BUT_EXPLODE" ); + const QString button1 = tr( "GEOM_BUT_CANCEL" ); + + if ( QMessageBox::warning( this, caption, text, button0, button1 ) != 0 ) return false; /* aborted */ } } - return onAccept(); + bool isOk = onAccept(); + + // restore selection, corresponding to current selection mode + SubShapeToggled(); + + return isOk; } @@ -185,23 +205,21 @@ void EntityGUI_SubShapeDlg::SelectionIntoArgument() QString aString = ""; /* name of selection */ - int nbSel = GEOMBase::GetNameOfSelectedIObjects( mySelection, aString, true ); - if( nbSel != 1 ) + int nbSel = GEOMBase::GetNameOfSelectedIObjects( selectedIO(), aString, true ); + if ( nbSel != 1 ) return; TopoDS_Shape S; - Handle(SALOME_InteractiveObject) IO = mySelection->firstIObject(); - if ( !IO->hasEntry() ) - { - QAD_Application::getDesktop()->putInfo( tr( "GEOM_PRP_SHAPE_IN_STUDY" ) ); + Handle(SALOME_InteractiveObject) IO = firstIObject(); + if ( !IO->hasEntry() ) { + SUIT_Session::session()->activeApplication()->putInfo( tr( "GEOM_PRP_SHAPE_IN_STUDY" ) ); updateButtonState(); return; } - if ( !myGeomBase->GetTopoFromSelection( mySelection, S ) || + if ( !GEOMBase::GetTopoFromSelection( selectedIO(), S ) || S.IsNull() || - S.ShapeType() == TopAbs_VERTEX ) - { + S.ShapeType() == TopAbs_VERTEX ) { updateButtonState(); return; } @@ -209,8 +227,7 @@ void EntityGUI_SubShapeDlg::SelectionIntoArgument() Standard_Boolean testResult; myObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); - if ( !testResult || myObject->_is_nil() ) - { + if ( !testResult || myObject->_is_nil() ) { updateButtonState(); return; } @@ -219,7 +236,7 @@ void EntityGUI_SubShapeDlg::SelectionIntoArgument() GroupPoints->LineEdit1->setText( aString ); - int SelectedShapeType = GroupPoints->ComboBox1->currentItem(); + int SelectedShapeType = GroupPoints->ComboBox1->currentIndex(); int count = GroupPoints->ComboBox1->count(); if ( myWithShape ) @@ -229,27 +246,22 @@ void EntityGUI_SubShapeDlg::SelectionIntoArgument() // Solving PAL5590 if ( myShape.ShapeType() == TopAbs_COMPOUND ) { unsigned int nb = NumberOfSubShapes(myShape, TopAbs_COMPOUND); - if (nb > 0) + if ( nb > 0 ) i++; } - while ( i <= myShape.ShapeType()) - { + while ( i <= myShape.ShapeType() ) { GroupPoints->ComboBox1->removeItem( 0 ); i++; } - if ( myShape.ShapeType() == TopAbs_COMPOUND ) - { - if ( myWithShape == false ) - { - GroupPoints->ComboBox1->insertItem( "Shape" ); + if ( myShape.ShapeType() == TopAbs_COMPOUND ) { + if ( myWithShape == false ) { + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Shape" ); myWithShape = true; } } - else - { - if ( myWithShape == true ) - { + else { + if ( myWithShape == true ) { GroupPoints->ComboBox1->removeItem( GroupPoints->ComboBox1->count() - 1 ); myWithShape = false; } @@ -259,22 +271,18 @@ void EntityGUI_SubShapeDlg::SelectionIntoArgument() if ( myWithShape ) count1 = count1 - 1; - if ( SelectedShapeType > myShape.ShapeType() ) - { - if ( SelectedShapeType == 8 ) - { - if ( myShape.ShapeType() != TopAbs_COMPOUND ) - { - GroupPoints->ComboBox1->setCurrentItem( 0 ); + if ( SelectedShapeType > myShape.ShapeType() ) { + if ( SelectedShapeType == 8 ) { + if ( myShape.ShapeType() != TopAbs_COMPOUND ) { + GroupPoints->ComboBox1->setCurrentIndex( 0 ); ComboTextChanged(); } } else - GroupPoints->ComboBox1->setCurrentItem(count1 - count + SelectedShapeType); + GroupPoints->ComboBox1->setCurrentIndex( count1 - count + SelectedShapeType ); } - else - { - GroupPoints->ComboBox1->setCurrentItem( 0 ); + else { + GroupPoints->ComboBox1->setCurrentIndex( 0 ); ComboTextChanged(); } @@ -291,7 +299,7 @@ void EntityGUI_SubShapeDlg::SetEditCurrentArgument() GroupPoints->LineEdit1->setFocus(); myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->CheckButton1->setChecked( FALSE ); + GroupPoints->CheckButton1->setChecked( false ); SubShapeToggled(); SelectionIntoArgument(); } @@ -304,7 +312,7 @@ void EntityGUI_SubShapeDlg::SetEditCurrentArgument() void EntityGUI_SubShapeDlg::LineEditReturnPressed() { QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1) + if ( send == GroupPoints->LineEdit1 ) SetEditCurrentArgument(); else return; @@ -319,7 +327,7 @@ void EntityGUI_SubShapeDlg::LineEditReturnPressed() //================================================================================= void EntityGUI_SubShapeDlg::DeactivateActiveDialog() { - if(GroupConstructors->isEnabled()) { + if ( mainFrame()->GroupConstructors->isEnabled() ) { GEOMBase_Skeleton::DeactivateActiveDialog(); } } @@ -332,7 +340,8 @@ void EntityGUI_SubShapeDlg::DeactivateActiveDialog() void EntityGUI_SubShapeDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); - connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + connect( myGeomGUI->getApp()->selectionMgr(), + SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); SubShapeToggled(); updateButtonState(); } @@ -342,11 +351,10 @@ void EntityGUI_SubShapeDlg::ActivateThisDialog() // function : enterEvent() // purpose : //================================================================================= -void EntityGUI_SubShapeDlg::enterEvent(QEvent* e) +void EntityGUI_SubShapeDlg::enterEvent( QEvent* ) { - if(GroupConstructors->isEnabled()) - return; - ActivateThisDialog(); + if ( !mainFrame()->GroupConstructors->isEnabled() ) + ActivateThisDialog(); } //================================================================================= @@ -357,28 +365,28 @@ void EntityGUI_SubShapeDlg::ResetStateOfDialog() { myObject = GEOM::GEOM_Object::_nil(); myShape.Nullify(); - myEditCurrentArgument->setText(""); + myEditCurrentArgument->setText( "" ); - int SelectedShapeType = GroupPoints->ComboBox1->currentItem(); + int SelectedShapeType = GroupPoints->ComboBox1->currentIndex(); int count = GroupPoints->ComboBox1->count(); if ( myWithShape ) count = count - 1; /* type for sub shape selection */ GroupPoints->ComboBox1->clear(); - GroupPoints->ComboBox1->insertItem("Compound"); - GroupPoints->ComboBox1->insertItem("Compsolid"); - GroupPoints->ComboBox1->insertItem("Solid"); - GroupPoints->ComboBox1->insertItem("Shell"); - GroupPoints->ComboBox1->insertItem("Face"); - GroupPoints->ComboBox1->insertItem("Wire"); - GroupPoints->ComboBox1->insertItem("Edge"); - GroupPoints->ComboBox1->insertItem("Vertex"); - GroupPoints->ComboBox1->insertItem("Shape"); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Compound" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Compsolid" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Solid" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Shell" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Face" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Wire" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Edge" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Vertex" ); + GroupPoints->ComboBox1->insertItem( GroupPoints->ComboBox1->count(), "Shape" ); myWithShape = true; - GroupPoints->ComboBox1->setCurrentItem( 8 - count + SelectedShapeType ); + GroupPoints->ComboBox1->setCurrentIndex( 8 - count + SelectedShapeType ); ComboTextChanged(); updateButtonState(); @@ -392,9 +400,9 @@ void EntityGUI_SubShapeDlg::ResetStateOfDialog() //================================================================================= void EntityGUI_SubShapeDlg::SubShapeToggled() { - if ( isAllSubShapes() ) - globalSelection( GEOM_ALLSHAPES ); - else + globalSelection( GEOM_ALLSHAPES ); + + if ( !isAllSubShapes() ) localSelection( myObject, shapeType() ); } @@ -415,32 +423,33 @@ void EntityGUI_SubShapeDlg::ComboTextChanged() // function : NumberOfSubShapes() // purpose : //================================================================================= -unsigned int EntityGUI_SubShapeDlg::NumberOfSubShapes (const TopoDS_Shape& S, - const int shapeType) const +unsigned int EntityGUI_SubShapeDlg::NumberOfSubShapes( const TopoDS_Shape& S, + const int shapeType ) const { - if (S.IsNull()) + if ( S.IsNull() ) return 0; unsigned int index = 0; TopTools_MapOfShape M; - if (S.ShapeType() == TopAbs_COMPOUND && - (TopAbs_ShapeEnum(shapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(shapeType) == TopAbs_COMPSOLID || - TopAbs_ShapeEnum(shapeType) == TopAbs_COMPOUND)) { - TopoDS_Iterator It (S, Standard_True, Standard_True); - for (; It.More(); It.Next()) { - if (M.Add(It.Value())) { - if (TopAbs_ShapeEnum(shapeType) == TopAbs_SHAPE || - TopAbs_ShapeEnum(shapeType) == It.Value().ShapeType()) { + if ( S.ShapeType() == TopAbs_COMPOUND && + ( TopAbs_ShapeEnum(shapeType) == TopAbs_SHAPE || + TopAbs_ShapeEnum(shapeType) == TopAbs_COMPSOLID || + TopAbs_ShapeEnum(shapeType) == TopAbs_COMPOUND ) ) { + TopoDS_Iterator It( S, Standard_True, Standard_True ); + for ( ; It.More(); It.Next() ) { + if ( M.Add( It.Value() ) ) { + if ( TopAbs_ShapeEnum( shapeType ) == TopAbs_SHAPE || + TopAbs_ShapeEnum( shapeType ) == It.Value().ShapeType() ) { index++; } } } - } else { - TopExp_Explorer Exp (S, TopAbs_ShapeEnum(shapeType)); - for (; Exp.More(); Exp.Next()) { - if (M.Add(Exp.Current())) { + } + else { + TopExp_Explorer Exp ( S, TopAbs_ShapeEnum( shapeType ) ); + for ( ; Exp.More(); Exp.Next() ) { + if ( M.Add( Exp.Current() ) ) { index++; } } @@ -456,13 +465,13 @@ unsigned int EntityGUI_SubShapeDlg::NumberOfSubShapes (const TopoDS_Shape& S, //================================================================================= void EntityGUI_SubShapeDlg::updateButtonState() { - if ( QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() != VIEW_OCC || + if ( SUIT_Session::session()->activeApplication()->desktop()->activeWindow()->getViewManager()->getType() != OCCViewer_Viewer::Type() || myObject->_is_nil() || shapeType() == TopAbs_SHAPE || shapeType() == TopAbs_COMPOUND ) { - GroupPoints->CheckButton1->setChecked( FALSE ); - GroupPoints->CheckButton1->setEnabled( FALSE ); + GroupPoints->CheckButton1->setChecked( false ); + GroupPoints->CheckButton1->setEnabled( false ); } else - GroupPoints->CheckButton1->setEnabled( TRUE ); + GroupPoints->CheckButton1->setEnabled( true ); } //================================================================================= @@ -480,15 +489,15 @@ bool EntityGUI_SubShapeDlg::isAllSubShapes() const //================================================================================= int EntityGUI_SubShapeDlg::shapeType() const { - int type = GroupPoints->ComboBox1->currentItem(); + int type = GroupPoints->ComboBox1->currentIndex(); - if (myObject->_is_nil()) + if ( myObject->_is_nil() ) return type; // Solving PAL5590 type += myShape.ShapeType() + 1; - if (myShape.ShapeType() == TopAbs_COMPOUND && - NumberOfSubShapes(myShape, TopAbs_COMPOUND) > 0) { + if ( myShape.ShapeType() == TopAbs_COMPOUND && + NumberOfSubShapes( myShape, TopAbs_COMPOUND ) > 0 ) { type--; } @@ -511,17 +520,24 @@ GEOM::GEOM_IOperations_ptr EntityGUI_SubShapeDlg::createOperation() bool EntityGUI_SubShapeDlg::isValid( QString& msg ) { bool isOk = false; + Handle(SALOME_InteractiveObject) IO = firstIObject(); + Standard_Boolean testResult; + myObject = GEOMBase::ConvertIOinGEOMObject( IO, testResult ); + if ( !testResult || myObject->_is_nil() ) { + updateButtonState(); + return isOk; + } if ( !myObject->_is_nil() ) { if ( isAllSubShapes() ) isOk = true; - else if ( mySelection->IObjectCount() == 1 ) { + else if ( IObjectCount() == 1 ) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( mySelection->firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); if ( aResult && !anObj->_is_nil() ) { TColStd_IndexedMapOfInteger aMapIndex; - mySelection->GetIndex( mySelection->firstIObject(), aMapIndex ); + myGeomGUI->getApp()->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); isOk = aMapIndex.Extent() > 0; if ( !isOk ) msg += tr( "NO_SUBSHAPES_SELECTED" ); @@ -538,23 +554,22 @@ bool EntityGUI_SubShapeDlg::isValid( QString& msg ) bool EntityGUI_SubShapeDlg::execute( ObjectList& objects ) { GEOM::ListOfGO_var aList = GEOM::GEOM_IShapesOperations::_narrow( - getOperation() )->MakeExplode( myObject, shapeType(), false ); + getOperation() )->MakeExplode( myObject, shapeType(), true ); if ( !aList->length() ) return false; // Throw away sub-shapes not selected by user if not in preview mode // and manual selection is active - if ( !isAllSubShapes() ) - { - if ( mySelection->IObjectCount() == 1 ) { + if ( !isAllSubShapes() ) { + if ( IObjectCount() == 1 ) { Standard_Boolean aResult = Standard_False; GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( mySelection->firstIObject(), aResult ); + GEOMBase::ConvertIOinGEOMObject( firstIObject(), aResult ); if ( aResult && !anObj->_is_nil() ) { TColStd_IndexedMapOfInteger aMapIndex; - mySelection->GetIndex( mySelection->firstIObject(), aMapIndex ); + myGeomGUI->getApp()->selectionMgr()->GetIndexes( firstIObject(), aMapIndex ); GEOM::GEOM_ILocalOperations_var aLocOp = getGeomEngine()->GetILocalOperations( getStudyId() ); @@ -582,3 +597,7 @@ GEOM::GEOM_Object_ptr EntityGUI_SubShapeDlg::getFather( GEOM::GEOM_Object_ptr ) return myObject; } +QString EntityGUI_SubShapeDlg::getNewObjectName() const +{ + return QString::null; +}