mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-18 18:00:37 +05:00
0020428: EDF 906 GEOM : Performance for Group creation in GEOM
This commit is contained in:
parent
b62eb94767
commit
dd69f2ef27
@ -289,12 +289,37 @@ int GEOMBase_Skeleton::getConstructorId() const
|
||||
return -1;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : setConstructorId( id )
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
void GEOMBase_Skeleton::setConstructorId( const int id )
|
||||
{
|
||||
if ( myRBGroup && myRBGroup->button( id ) )
|
||||
myRBGroup->button( id )->setChecked( true );
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : unsetConstructorId
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
void GEOMBase_Skeleton::unsetConstructorId()
|
||||
{
|
||||
// 0020428: EDF 906 GEOM : Performance for Group creation in GEOM
|
||||
// uncheck all buttons
|
||||
// workaround, because setChecked( false ) does not result in Qt4
|
||||
bool isExclusive = myRBGroup->exclusive();
|
||||
myRBGroup->setExclusive( false );
|
||||
QList<QAbstractButton*> btnList = myRBGroup->buttons();
|
||||
for ( int j = 0; j < 2; j++ )
|
||||
{
|
||||
QList<QAbstractButton*>::const_iterator it = btnList.constBegin();
|
||||
for ( ; it != btnList.constEnd(); ++it )
|
||||
(*it)->setCheckable( j == 1 );
|
||||
}
|
||||
myRBGroup->setExclusive( isExclusive );
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : ClickOnHelp()
|
||||
// purpose :
|
||||
|
@ -81,6 +81,9 @@ protected:
|
||||
/*! set selected "constructor" radio button id
|
||||
*/
|
||||
void setConstructorId( const int );
|
||||
/*! unset selection on all "constructor" radio buttons
|
||||
*/
|
||||
void unsetConstructorId();
|
||||
|
||||
void setHelpFileName( const QString& );
|
||||
|
||||
|
@ -53,7 +53,8 @@ enum { ALL_SUBSHAPES = 0, GET_IN_PLACE, SUBSHAPES_OF_SHAPE2, SUBSHAPES_OF_INVISI
|
||||
GroupGUI_GroupDlg::GroupGUI_GroupDlg( Mode mode, GeometryGUI* theGeometryGUI, QWidget* parent )
|
||||
: GEOMBase_Skeleton( theGeometryGUI, parent, false ),
|
||||
myMode( mode ),
|
||||
myBusy( false )
|
||||
myBusy( false ),
|
||||
myIsShapeType( false )
|
||||
{
|
||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||
|
||||
@ -164,6 +165,11 @@ void GroupGUI_GroupDlg::Init()
|
||||
//mySelSubBtn->setChecked( true );
|
||||
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
|
||||
|
||||
//unset shape type to avoid preparation of selection before exact user shape type selection
|
||||
//setConstructorId( -1 ); //non valid shape type
|
||||
unsetConstructorId();
|
||||
myIsShapeType = false;
|
||||
|
||||
if ( myMode == CreateGroup ) {
|
||||
initName( tr( "GROUP_PREFIX" ) );
|
||||
|
||||
@ -560,7 +566,7 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( !myMainObj->_is_nil() /*&& mySelSubBtn->isChecked()*/)
|
||||
if ( !myMainObj->_is_nil() && myIsShapeType/*&& mySelSubBtn->isChecked()*/)
|
||||
if ( subSelectionWay() == ALL_SUBSHAPES )
|
||||
localSelection( myMainObj, getShapeType() );
|
||||
else if ( !myInPlaceObj->_is_nil() )
|
||||
@ -589,6 +595,7 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
||||
//=================================================================================
|
||||
void GroupGUI_GroupDlg::ConstructorsClicked( int constructorId )
|
||||
{
|
||||
myIsShapeType = true;
|
||||
myIdList->clear();
|
||||
activateSelection();
|
||||
updateState();
|
||||
@ -608,6 +615,8 @@ void GroupGUI_GroupDlg::selectAllSubShapes()
|
||||
// if ( !myPlaceCheckBox->isChecked() )
|
||||
if ( subSelectionWay() == ALL_SUBSHAPES )
|
||||
{
|
||||
if ( !myIsShapeType )
|
||||
return;
|
||||
myIdList->clear();
|
||||
GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
|
||||
aSubShapes = aShOp->SubShapeAllIDs(myMainObj, getShapeType(), false);
|
||||
@ -798,6 +807,7 @@ void GroupGUI_GroupDlg::setShapeType( const TopAbs_ShapeEnum theType )
|
||||
case TopAbs_SOLID: anId = 3; break;
|
||||
}
|
||||
setConstructorId( anId );
|
||||
myIsShapeType = true;
|
||||
}
|
||||
|
||||
|
||||
@ -810,7 +820,9 @@ void GroupGUI_GroupDlg::activateSelection()
|
||||
globalSelection( GEOM_ALLSHAPES );
|
||||
|
||||
// local selection
|
||||
if ( !myMainObj->_is_nil() && !myEditCurrentArgument/* && mySelSubBtn->isChecked()*/) {
|
||||
if ( !myMainObj->_is_nil() && !myEditCurrentArgument/* && mySelSubBtn->isChecked()*/
|
||||
&& myIsShapeType) { // check if shape type is already choosen by user
|
||||
|
||||
// if ( !myPlaceCheckBox->isChecked() )
|
||||
if ( subSelectionWay() == ALL_SUBSHAPES )
|
||||
localSelection( myMainObj, getShapeType() );
|
||||
|
@ -91,6 +91,7 @@ private:
|
||||
private:
|
||||
Mode myMode;
|
||||
bool myBusy;
|
||||
bool myIsShapeType;
|
||||
GEOM::GEOM_Object_var myMainObj;
|
||||
GEOM::GEOM_Object_var myGroup;
|
||||
GEOM::GEOM_Object_var myInPlaceObj;
|
||||
|
Loading…
Reference in New Issue
Block a user