mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-19 00:40:32 +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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setConstructorId( id )
|
||||||
|
// purpose :
|
||||||
|
//=================================================================================
|
||||||
void GEOMBase_Skeleton::setConstructorId( const int id )
|
void GEOMBase_Skeleton::setConstructorId( const int id )
|
||||||
{
|
{
|
||||||
if ( myRBGroup && myRBGroup->button( id ) )
|
if ( myRBGroup && myRBGroup->button( id ) )
|
||||||
myRBGroup->button( id )->setChecked( true );
|
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()
|
// function : ClickOnHelp()
|
||||||
// purpose :
|
// purpose :
|
||||||
|
@ -81,6 +81,9 @@ protected:
|
|||||||
/*! set selected "constructor" radio button id
|
/*! set selected "constructor" radio button id
|
||||||
*/
|
*/
|
||||||
void setConstructorId( const int );
|
void setConstructorId( const int );
|
||||||
|
/*! unset selection on all "constructor" radio buttons
|
||||||
|
*/
|
||||||
|
void unsetConstructorId();
|
||||||
|
|
||||||
void setHelpFileName( const QString& );
|
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 )
|
GroupGUI_GroupDlg::GroupGUI_GroupDlg( Mode mode, GeometryGUI* theGeometryGUI, QWidget* parent )
|
||||||
: GEOMBase_Skeleton( theGeometryGUI, parent, false ),
|
: GEOMBase_Skeleton( theGeometryGUI, parent, false ),
|
||||||
myMode( mode ),
|
myMode( mode ),
|
||||||
myBusy( false )
|
myBusy( false ),
|
||||||
|
myIsShapeType( false )
|
||||||
{
|
{
|
||||||
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
||||||
|
|
||||||
@ -164,6 +165,11 @@ void GroupGUI_GroupDlg::Init()
|
|||||||
//mySelSubBtn->setChecked( true );
|
//mySelSubBtn->setChecked( true );
|
||||||
LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
|
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 ) {
|
if ( myMode == CreateGroup ) {
|
||||||
initName( tr( "GROUP_PREFIX" ) );
|
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 )
|
if ( subSelectionWay() == ALL_SUBSHAPES )
|
||||||
localSelection( myMainObj, getShapeType() );
|
localSelection( myMainObj, getShapeType() );
|
||||||
else if ( !myInPlaceObj->_is_nil() )
|
else if ( !myInPlaceObj->_is_nil() )
|
||||||
@ -589,6 +595,7 @@ void GroupGUI_GroupDlg::SelectionIntoArgument()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void GroupGUI_GroupDlg::ConstructorsClicked( int constructorId )
|
void GroupGUI_GroupDlg::ConstructorsClicked( int constructorId )
|
||||||
{
|
{
|
||||||
|
myIsShapeType = true;
|
||||||
myIdList->clear();
|
myIdList->clear();
|
||||||
activateSelection();
|
activateSelection();
|
||||||
updateState();
|
updateState();
|
||||||
@ -608,6 +615,8 @@ void GroupGUI_GroupDlg::selectAllSubShapes()
|
|||||||
// if ( !myPlaceCheckBox->isChecked() )
|
// if ( !myPlaceCheckBox->isChecked() )
|
||||||
if ( subSelectionWay() == ALL_SUBSHAPES )
|
if ( subSelectionWay() == ALL_SUBSHAPES )
|
||||||
{
|
{
|
||||||
|
if ( !myIsShapeType )
|
||||||
|
return;
|
||||||
myIdList->clear();
|
myIdList->clear();
|
||||||
GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
|
GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() );
|
||||||
aSubShapes = aShOp->SubShapeAllIDs(myMainObj, getShapeType(), false);
|
aSubShapes = aShOp->SubShapeAllIDs(myMainObj, getShapeType(), false);
|
||||||
@ -798,6 +807,7 @@ void GroupGUI_GroupDlg::setShapeType( const TopAbs_ShapeEnum theType )
|
|||||||
case TopAbs_SOLID: anId = 3; break;
|
case TopAbs_SOLID: anId = 3; break;
|
||||||
}
|
}
|
||||||
setConstructorId( anId );
|
setConstructorId( anId );
|
||||||
|
myIsShapeType = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -810,7 +820,9 @@ void GroupGUI_GroupDlg::activateSelection()
|
|||||||
globalSelection( GEOM_ALLSHAPES );
|
globalSelection( GEOM_ALLSHAPES );
|
||||||
|
|
||||||
// local selection
|
// 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 ( !myPlaceCheckBox->isChecked() )
|
||||||
if ( subSelectionWay() == ALL_SUBSHAPES )
|
if ( subSelectionWay() == ALL_SUBSHAPES )
|
||||||
localSelection( myMainObj, getShapeType() );
|
localSelection( myMainObj, getShapeType() );
|
||||||
|
@ -91,6 +91,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
Mode myMode;
|
Mode myMode;
|
||||||
bool myBusy;
|
bool myBusy;
|
||||||
|
bool myIsShapeType;
|
||||||
GEOM::GEOM_Object_var myMainObj;
|
GEOM::GEOM_Object_var myMainObj;
|
||||||
GEOM::GEOM_Object_var myGroup;
|
GEOM::GEOM_Object_var myGroup;
|
||||||
GEOM::GEOM_Object_var myInPlaceObj;
|
GEOM::GEOM_Object_var myInPlaceObj;
|
||||||
|
Loading…
Reference in New Issue
Block a user