INT PAL 0053067: Algorithm disable in "Edit mesh" dialog

This commit is contained in:
imn 2016-01-20 17:33:43 +03:00
parent 3c33b14157
commit 18dade91d0

View File

@ -1504,6 +1504,7 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
QString anCompareType = currentMeshTypeName(myDlg->currentMeshType()); QString anCompareType = currentMeshTypeName(myDlg->currentMeshType());
bool is2dtype = ( anCompareType == "QUAD" ) || ( anCompareType == "TRIA" ); bool is2dtype = ( anCompareType == "QUAD" ) || ( anCompareType == "TRIA" );
int dim = is2dtype ? SMESH::DIM_2D : SMESH::DIM_3D; int dim = is2dtype ? SMESH::DIM_2D : SMESH::DIM_3D;
dim = ( myMaxShapeDim < dim ) ? myMaxShapeDim : dim;
for (int i = dim; i >= SMESH::DIM_0D; i--) { for (int i = dim; i >= SMESH::DIM_0D; i--) {
if ( i != aDim ) { if ( i != aDim ) {
if ( algoData && algoData->InputTypes.isEmpty() ) { if ( algoData && algoData->InputTypes.isEmpty() ) {
@ -2746,18 +2747,14 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
setCurrentHyp( dim, Algo, anCurrentAvailableAlgo ); setCurrentHyp( dim, Algo, anCurrentAvailableAlgo );
} }
if ( aDim == SMESH::DIM_2D) { for ( int i = myMaxShapeDim; i >= SMESH::DIM_0D; i-- ) {
myDlg->disableTab( SMESH::DIM_3D );
setCurrentHyp( SMESH::DIM_3D, Algo, -1);
}
for ( int i = myMaxShapeDim; i > SMESH::DIM_0D; i-- ) {
bool isNoneAlg = currentHyp( i, Algo ) < 0; bool isNoneAlg = currentHyp( i, Algo ) < 0;
if ( !isNoneAlg ) if ( !isNoneAlg )
isReqDisBound = myAvailableHypData[i][Algo].at( currentHyp( i, Algo ) )->InputTypes.isEmpty(); isReqDisBound = myAvailableHypData[i][Algo].at( currentHyp( i, Algo ) )->InputTypes.isEmpty();
else else
isReqDisBound = true; isReqDisBound = true;
if ( isReqDisBound && !isNoneAlg) { if ( isReqDisBound && !isNoneAlg && i <= aDim) {
for (int j = i; j >= SMESH::DIM_0D; j--) { for (int j = myMaxShapeDim; j >= SMESH::DIM_0D; j--) {
if ( currentHyp( j, Algo ) < 0 ) { if ( currentHyp( j, Algo ) < 0 ) {
myDlg->disableTab( j ); myDlg->disableTab( j );
setCurrentHyp( j , Algo, -1 ); setCurrentHyp( j , Algo, -1 );
@ -2765,7 +2762,15 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
} }
break; break;
} }
else {
myDlg->enableTab( i );
}
} }
if ( aDim == SMESH::DIM_2D) {
myDlg->disableTab( SMESH::DIM_3D );
setCurrentHyp( SMESH::DIM_3D, Algo, -1);
}
int currentTab = ( theTabIndex <= aDim ) ? theTabIndex : aDim; int currentTab = ( theTabIndex <= aDim ) ? theTabIndex : aDim;
myDlg->setCurrentTab( currentTab ); myDlg->setCurrentTab( currentTab );
} }