0023198: EDF 8842 - Management of additional hypothesis

This commit is contained in:
imn 2016-01-14 11:14:55 +03:00
parent 59627b07d7
commit 537bc67863

View File

@ -1500,29 +1500,20 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
// check that tab enabled of one less dimension // check that tab enabled of one less dimension
if ( aDim > SMESH::DIM_0D ) if ( aDim > SMESH::DIM_0D )
{ {
if ( isAccessibleDim( aDim - 1 ) ) { if ( myIsOnGeometry ) {
if ( algoData && myIsOnGeometry ) { QString anCompareType = currentMeshTypeName(myDlg->currentMeshType());
for (int i = aDim - 1; i >= SMESH::DIM_0D; i--) { bool is2dtype = ( anCompareType == "QUAD" ) || ( anCompareType == "TRIA" );
if ( isAccessibleDim( i ) && ( currentHyp( i, Algo ) < 0 || int dim = is2dtype ? SMESH::DIM_2D : SMESH::DIM_3D;
algoData->InputTypes.isEmpty() ) ) { for (int i = dim; i >= SMESH::DIM_0D; i--) {
if ( i != aDim ) {
if ( algoData && algoData->InputTypes.isEmpty() ) {
myDlg->disableTab( i ); myDlg->disableTab( i );
setCurrentHyp(i, Algo, -1); setCurrentHyp(i, Algo, -1);
} }
} else {
}
}
if ( algoData && myIsOnGeometry && !algoData->InputTypes.isEmpty() ) {
myDlg->enableTab( aDim - 1 );
}
if ( !algoData ) {
if ( aDim != SMESH::DIM_2D || ( aDim == SMESH::DIM_2D &&
currentHyp( SMESH::DIM_2D, Algo ) < 0) ) {
for (int i = aDim - 1; i >= SMESH::DIM_0D; i--)
myDlg->enableTab( i ); myDlg->enableTab( i );
} }
else { }
for (int i = aDim - 1; i >= SMESH::DIM_0D; i--)
myDlg->disableTab( i );
} }
} }
} }
@ -2263,6 +2254,9 @@ void SMESHGUI_MeshOp::readMesh()
{ {
// get hypotheses // get hypotheses
existingHyps( dim, hypType, pObj, anExisting, myObjHyps[ dim ][ hypType ] ); existingHyps( dim, hypType, pObj, anExisting, myObjHyps[ dim ][ hypType ] );
if ( myObjHyps[ dim ][ hypType ].count() == 0 ) {
setCurrentHyp( dim, hypType, -1 );
}
for ( int i = 0, nb = myObjHyps[ dim ][ hypType ].count(); i < nb; ++i ) for ( int i = 0, nb = myObjHyps[ dim ][ hypType ].count(); i < nb; ++i )
{ {
// find index of required hypothesis among existing ones for this dimension and type // find index of required hypothesis among existing ones for this dimension and type
@ -2702,8 +2696,6 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
setCurrentHyp( dim, Algo, anCurrentAvailableAlgo ); setCurrentHyp( dim, Algo, anCurrentAvailableAlgo );
if ( anCurrentAvailableAlgo > -1 ) if ( anCurrentAvailableAlgo > -1 )
isReqDisBound = algoCur->InputTypes.isEmpty(); isReqDisBound = algoCur->InputTypes.isEmpty();
else if ( dim != SMESH::DIM_3D && currentHyp( SMESH::DIM_3D, Algo ) >= 0 )
isReqDisBound = true;
if ( isReqDisBound ) { if ( isReqDisBound ) {
aReqDim = dim; aReqDim = dim;
break; break;
@ -2716,7 +2708,7 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
} }
else else
for ( int i = SMESH::DIM_0D; i <= SMESH::DIM_3D; i++ ) { for ( int i = SMESH::DIM_0D; i <= SMESH::DIM_3D; i++ ) {
if ( i > myMaxShapeDim || ( isReqDisBound && i < aReqDim ) ) myDlg->disableTab( i ); if ( i > myMaxShapeDim || ( isReqDisBound && i != aReqDim ) ) myDlg->disableTab( i );
else myDlg->enableTab( i ); else myDlg->enableTab( i );
} }
myDlg->setCurrentTab( theTabIndex ); myDlg->setCurrentTab( theTabIndex );
@ -2754,14 +2746,6 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
setCurrentHyp( dim, Algo, anCurrentAvailableAlgo ); setCurrentHyp( dim, Algo, anCurrentAvailableAlgo );
} }
if ( isNone || isReqDisBound ) {
for ( int i = SMESH::DIM_0D; i <= myMaxShapeDim; i++ ) {
if ( aDim != i ) {
myDlg->disableTab( i );
}
}
}
else if ( !isNone ) {
if ( aDim == SMESH::DIM_2D) { if ( aDim == SMESH::DIM_2D) {
myDlg->disableTab( SMESH::DIM_3D ); myDlg->disableTab( SMESH::DIM_3D );
setCurrentHyp( SMESH::DIM_3D, Algo, -1); setCurrentHyp( SMESH::DIM_3D, Algo, -1);
@ -2772,22 +2756,18 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
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) {
for (int j = i - 1; j >= SMESH::DIM_0D; j--) { for (int j = i; j >= SMESH::DIM_0D; j--) {
if ( j < aDim && currentHyp( j+1, Algo ) < 0 ) { if ( currentHyp( j, Algo ) < 0 ) {
myDlg->disableTab( j ); myDlg->disableTab( j );
setCurrentHyp( j , Algo, -1 ); setCurrentHyp( j , Algo, -1 );
} }
} }
break; break;
} }
else if ( isNoneAlg ) {
myDlg->disableTab( i );
} }
} int currentTab = ( theTabIndex <= aDim ) ? theTabIndex : aDim;
} myDlg->setCurrentTab( currentTab );
myDlg->enableTab( aDim );
myDlg->setCurrentTab( aDim );
} }
THypDataList anAvailableAlgsData; THypDataList anAvailableAlgsData;
QStringList aHypothesesSetsList = SMESH::GetHypothesesSets( aDim ); QStringList aHypothesesSetsList = SMESH::GetHypothesesSets( aDim );