PAL13473 (Build repetitive mesh):

1) desable myDlg when edit/create a hyp as now dlg of      			MESHGUI_GenericHypothesisCreator is non modal
	2) fix pb that changing algo MEFISTO+hyp -> Quad(mapping) does not
	unassign hyp of MEFISTO
This commit is contained in:
eap 2006-12-06 15:15:00 +00:00
parent 6bd62e2312
commit b6766b8ebd

View File

@ -401,7 +401,7 @@ _PTR(SObject) SMESHGUI_MeshOp::getSubmeshByGeom() const
//================================================================================ //================================================================================
void SMESHGUI_MeshOp::selectionDone() void SMESHGUI_MeshOp::selectionDone()
{ {
if ( !dlg()->isShown() ) if ( !dlg()->isShown() || !myDlg->isEnabled() )
return; return;
SMESHGUI_SelectionOp::selectionDone(); SMESHGUI_SelectionOp::selectionDone();
@ -904,7 +904,9 @@ void SMESHGUI_MeshOp::createHypothesis (const int theDim,
// with values used to mesh a subshape // with values used to mesh a subshape
SMESH::SMESH_Hypothesis_var initParamHyp = SMESH::SMESH_Hypothesis_var initParamHyp =
getInitParamsHypothesis(theTypeName, aData->ServerLibName); getInitParamsHypothesis(theTypeName, aData->ServerLibName);
myDlg->setEnabled( false );
aCreator->create(initParamHyp, myDlg); aCreator->create(initParamHyp, myDlg);
myDlg->setEnabled( true );
} else { } else {
SMESH::CreateHypothesis(theTypeName, aData->Label, false); SMESH::CreateHypothesis(theTypeName, aData->Label, false);
} }
@ -947,8 +949,11 @@ void SMESHGUI_MeshOp::onEditHyp( const int theHypType, const int theIndex )
char* aTypeName = aHyp->GetName(); char* aTypeName = aHyp->GetName();
SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator( aTypeName ); SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator( aTypeName );
if ( aCreator ) if ( aCreator ) {
myDlg->setEnabled( false );
aCreator->edit( aHyp.in(), dlg() ); aCreator->edit( aHyp.in(), dlg() );
myDlg->setEnabled( true );
}
} }
//================================================================================ //================================================================================
@ -1756,42 +1761,44 @@ bool SMESHGUI_MeshOp::editMeshOrSubMesh( QString& theMess )
{ {
int aNewHypIndex = currentHyp( dim, hypType ); int aNewHypIndex = currentHyp( dim, hypType );
int anOldHypIndex = -1; int anOldHypIndex = -1;
// remove old hypotheses
if ( myObjHyps[ dim ][ hypType ].count() > 0 ) if ( myObjHyps[ dim ][ hypType ].count() > 0 )
{
anOldHypIndex = find( myObjHyps[ dim ][ hypType ].first(), anOldHypIndex = find( myObjHyps[ dim ][ hypType ].first(),
myExistingHyps[ dim ][ hypType ] ); myExistingHyps[ dim ][ hypType ] );
if ( aNewHypIndex != anOldHypIndex ) if ( aNewHypIndex != anOldHypIndex || // different hyps
{ anOldHypIndex == -1 ) // hyps of different algos
// remove old hypotheses {
if ( anOldHypIndex >= 0 ) { SMESH::RemoveHypothesisOrAlgorithmOnMesh
SMESH::RemoveHypothesisOrAlgorithmOnMesh( ( pObj, myObjHyps[ dim ][ hypType ].first() );
pObj, myExistingHyps[ dim ][ hypType ][ anOldHypIndex ] );
myObjHyps[ dim ][ hypType ].clear(); myObjHyps[ dim ][ hypType ].clear();
} }
// assign new hypotheses
if ( aNewHypIndex != -1 )
{
SMESH::SMESH_Mesh_var aMeshVar =
SMESH::SMESH_Mesh::_narrow( _CAST(SObject,pObj)->GetObject() );
bool isMesh = !aMeshVar->_is_nil();
if ( isMesh )
{
SMESH::AddHypothesisOnMesh(
aMeshVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ] );
}
else
{
SMESH::SMESH_subMesh_var aVar =
SMESH::SMESH_subMesh::_narrow( _CAST(SObject,pObj)->GetObject() );
if ( !aVar->_is_nil() )
SMESH::AddHypothesisOnSubMesh(
aVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ] );
}
}
// reread all hypotheses of mesh if necessary
QStringList anExisting;
existingHyps( dim, hypType, pObj, anExisting, myObjHyps[ dim ][ hypType ] );
} }
// assign new hypotheses
if ( aNewHypIndex != anOldHypIndex && aNewHypIndex != -1 )
{
SMESH::SMESH_Mesh_var aMeshVar =
SMESH::SMESH_Mesh::_narrow( _CAST(SObject,pObj)->GetObject() );
bool isMesh = !aMeshVar->_is_nil();
if ( isMesh )
{
SMESH::AddHypothesisOnMesh
(aMeshVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ] );
}
else
{
SMESH::SMESH_subMesh_var aVar =
SMESH::SMESH_subMesh::_narrow( _CAST(SObject,pObj)->GetObject() );
if ( !aVar->_is_nil() )
SMESH::AddHypothesisOnSubMesh
( aVar, myExistingHyps[ dim ][ hypType ][ aNewHypIndex ] );
}
}
// reread all hypotheses of mesh if necessary
QStringList anExisting;
existingHyps( dim, hypType, pObj, anExisting, myObjHyps[ dim ][ hypType ] );
} }
} }