X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.cxx;h=a4714beb732c231a73a095cd69da944bef372e12;hp=511e230d0b7695e2ccef2cad75ac6cc2c89ae0d1;hb=88ff35ddd4a4442397bc5f6ba893aaf9c51b1856;hpb=005a0c7d7e82a73977e8b678910ce932b6672abc diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 511e230d0..a4714beb7 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -30,7 +30,6 @@ // SMESH includes #include "SMESHGUI.h" -#include "SMESHGUI_AdaptDlg.h" #include "SMESHGUI_Add0DElemsOnAllNodesDlg.h" #include "SMESHGUI_AddMeshElementDlg.h" #include "SMESHGUI_AddQuadraticElementDlg.h" @@ -61,6 +60,7 @@ #include "SMESHGUI_GroupUtils.h" #include "SMESHGUI_Hypotheses.h" #include "SMESHGUI_HypothesesUtils.h" +#include "SMESHGUI_MG_ADAPTDRIVER.h" #include "SMESHGUI_Make2DFrom3DOp.h" #include "SMESHGUI_MakeNodeAtPointDlg.h" #include "SMESHGUI_Measurements.h" @@ -105,6 +105,7 @@ #include "SMESH_ControlsDef.hxx" #include "SMESH_ScalarBarActor.h" #include "SMESH_TypeFilter.hxx" +#include "SMESH_Component_Generator.hxx" // SALOME GUI includes #include @@ -114,6 +115,7 @@ #include #include #include +#include #include #include #include @@ -166,22 +168,22 @@ #include // SALOME KERNEL includes +#include #include #include #include #include -#include #include -#include "utilities.h" +#include +#include #include +#include // OCCT includes #include #include #include -#include - // Below macro, when uncommented, switches on simplified (more performant) algorithm // of auto-color picking up #define SIMPLE_AUTOCOLOR @@ -458,6 +460,7 @@ namespace bool aCheckWarn = true; if ( resMgr ) aCheckWarn = resMgr->booleanValue( "SMESH", "show_warning", false ); + // get mesh object from selection and check duplication of their names bool hasDuplicatedMeshNames = false; QList< QPair< SMESH::SMESH_IDSource_var, QString > > aMeshList; @@ -606,7 +609,7 @@ namespace } if ( ! notSupportedElemTypes.empty() ) { - SMESH::long_array_var nbElems = aMeshOrGroup->GetMeshInfo(); + SMESH::smIdType_array_var nbElems = aMeshOrGroup->GetMeshInfo(); for ( size_t iType = 0; iType < notSupportedElemTypes.size(); ++iType ) if ( nbElems[ notSupportedElemTypes[ iType ]] > 0 ) presentNotSupported.push_back( notSupportedElemTypes[ iType ]); @@ -626,8 +629,8 @@ namespace "SMESH_OCTAHEDRA","SMESH_POLYEDRONS","SMESH_QUADRATIC_POLYEDRONS","SMESH_BALLS" }; // is typeMsg complete? (compilation failure mains that enum SMDSAbs_EntityType changed) - const int nbTypes = sizeof( typeMsg ) / sizeof( const char* ); - int _assert[( nbTypes == SMESH::Entity_Last ) ? 2 : -1 ]; _assert[0]=_assert[1]=0; + static_assert( sizeof(typeMsg) / sizeof(const char*) == SMESH::Entity_Last, + "Update names of EntityType's!!!" ); QString andStr = " " + QObject::tr("SMESH_AND") + " ", comma(", "); for ( size_t iType = 0; iType < presentNotSupported.size(); ++iType ) { @@ -653,12 +656,11 @@ namespace // Init the parameters with the default values bool aIsASCII_STL = true; - bool toCreateGroups = false; - if ( resMgr ) - toCreateGroups = resMgr->booleanValue( "SMESH", "auto_groups", false ); - bool toOverwrite = true; - bool toFindOutDim = true; - double zTol = resMgr ? resMgr->doubleValue( "SMESH", "med_ztolerance", 0. ) : 0.; + bool toCreateGroups = resMgr->booleanValue( "SMESH", "auto_groups", false ); + bool toOverwrite = true; + bool toFindOutDim = true; + bool toRenumber = true; + double zTol = resMgr->doubleValue( "SMESH", "med_ztolerance", 0. ); QString aFilter, aTitle = QObject::tr("SMESH_EXPORT_MESH"); QString anInitialPath = ""; @@ -668,44 +670,46 @@ namespace QList< QPair< GEOM::ListOfFields_var, QString > > aFieldList; // Get a file name to write in and additional options - if ( isUNV || isDAT || isGMF ) // Export w/o options + if ( isGMF ) // Export w/o options { - if ( isUNV ) - aFilter = QObject::tr( "IDEAS_FILES_FILTER" ) + " (*.unv)"; - else if ( isDAT ) - aFilter = QObject::tr( "DAT_FILES_FILTER" ) + " (*.dat)"; - else if ( isGMF ) - aFilter = QObject::tr( "GMF_ASCII_FILES_FILTER" ) + " (*.mesh)" + - ";;" + QObject::tr( "GMF_BINARY_FILES_FILTER" ) + " (*.meshb)"; - if ( anInitialPath.isEmpty() ) anInitialPath = SUIT_FileDlg::getLastVisitedPath(); + aFilter = QObject::tr( "GMF_ASCII_FILES_FILTER" ) + " (*.mesh)" + + ";;" + QObject::tr( "GMF_BINARY_FILES_FILTER" ) + " (*.meshb)"; + if ( anInitialPath.isEmpty() ) anInitialPath = SUIT_FileDlg::getLastVisitedPath(); + aFilename = SUIT_FileDlg::getFileName(SMESHGUI::desktop(), anInitialPath + QString("/") + aMeshName, aFilter, aTitle, false); } - else if ( isCGNS )// Export to CGNS + else if ( isCGNS || isUNV || isDAT ) // Export to [ CGNS | UNV | DAT ] - one option { - const char* theByTypeResource = "cgns_group_elems_by_type"; - toCreateGroups = SMESHGUI::resourceMgr()->booleanValue( "SMESH", theByTypeResource, false ); + const char* theOptionResource = isCGNS ? "cgns_group_elems_by_type" : "export_renumber"; + bool option = resMgr->booleanValue( "SMESH", theOptionResource, false ); QStringList checkBoxes; - checkBoxes << QObject::tr("CGNS_EXPORT_ELEMS_BY_TYPE"); + checkBoxes << QObject::tr( isCGNS ? "CGNS_EXPORT_ELEMS_BY_TYPE" : "SMESH_RENUMBER" ); SalomeApp_CheckFileDlg* fd = new SalomeApp_CheckFileDlg ( SMESHGUI::desktop(), false, checkBoxes, true, true ); fd->setWindowTitle( aTitle ); - fd->setNameFilter( QObject::tr( "CGNS_FILES_FILTER" ) + " (*.cgns)" ); + if ( isCGNS ) + fd->setNameFilter( QObject::tr( "CGNS_FILES_FILTER" ) + " (*.cgns)" ); + else if ( isUNV ) + fd->setNameFilter( QObject::tr( "IDEAS_FILES_FILTER" ) + " (*.unv)" ); + else if ( isDAT ) + fd->setNameFilter( QObject::tr( "DAT_FILES_FILTER" ) + " (*.dat)" ); if ( !anInitialPath.isEmpty() ) fd->setDirectory( anInitialPath ); - fd->selectFile(aMeshName); + fd->selectFile( aMeshName ); SMESHGUI_FileValidator* fv = new SMESHGUI_FileValidator( fd ); fd->setValidator( fv ); - fd->SetChecked( toCreateGroups, 0 ); + fd->SetChecked( option, 0 ); if ( fd->exec() ) aFilename = fd->selectedFile(); - toOverwrite = fv->isOverwrite(aFilename); - toCreateGroups = fd->IsChecked(0); - SMESHGUI::resourceMgr()->setValue("SMESH", theByTypeResource, toCreateGroups ); + toOverwrite = fv->isOverwrite( aFilename ); + option = fd->IsChecked( 0 ); + SMESHGUI::resourceMgr()->setValue("SMESH", theOptionResource, option ); + ( isCGNS ? toCreateGroups : toRenumber ) = option; delete fd; } @@ -749,7 +753,6 @@ namespace for ( CORBA::ULong i = 0; i < mvok->length(); ++i ) { QString vs = (char*)( SMESH_Comment( mvok[i]/10 ) << "." << mvok[i]%10 ); - MESSAGE("MED version: " << vs.toStdString()); aFilterMap.insert( QObject::tr( "MED_VX_FILES_FILTER" ).arg( vs ) + " (*.med)", mvok[i]); } } @@ -922,9 +925,9 @@ namespace // if ( SMESHGUI::automaticUpdate() ) // SMESH::UpdateView(); // } - if ( isMED && isOkToWrite) + if ( isMED && isOkToWrite ) { - MESSAGE("OK to write MED file "<< aFilename.toUtf8().constData()); + const bool saveNumbers = resMgr->booleanValue( "SMESH", "med_save_numbers", true ); aMeshIter = aMeshList.begin(); for( int aMeshIndex = 0; aMeshIter != aMeshList.end(); aMeshIter++, aMeshIndex++ ) { @@ -932,15 +935,11 @@ namespace SMESH::SMESH_Mesh_var aMeshItem = aMeshOrGroup->GetMesh(); const GEOM::ListOfFields& fields = aFieldList[ aMeshIndex ].first.in(); const QString& geoAssFields = aFieldList[ aMeshIndex ].second; - const bool hasFields = ( fields.length() || !geoAssFields.isEmpty() ); - if ( !hasFields && aMeshOrGroup->_is_equivalent( aMeshItem ) && zTol < 0 ) - aMeshItem->ExportMED( aFilename.toUtf8().data(), toCreateGroups, aFormat, - toOverwrite && aMeshIndex == 0, toFindOutDim ); - else - aMeshItem->ExportPartToMED( aMeshOrGroup, aFilename.toUtf8().data(), - toCreateGroups, aFormat, - toOverwrite && aMeshIndex == 0, toFindOutDim, - fields, geoAssFields.toLatin1().data(), zTol ); + + aMeshItem->ExportPartToMED( aMeshOrGroup, aFilename.toUtf8().data(), + toCreateGroups, aFormat, + toOverwrite && aMeshIndex == 0, toFindOutDim, + fields, geoAssFields.toLatin1().data(), zTol, saveNumbers ); } } else if ( isSAUV ) @@ -955,16 +954,16 @@ namespace else if ( isDAT ) { if ( aMeshOrGroup->_is_equivalent( aMesh )) - aMesh->ExportDAT( aFilename.toUtf8().data() ); + aMesh->ExportDAT( aFilename.toUtf8().data(), toRenumber ); else - aMesh->ExportPartToDAT( aMeshOrGroup, aFilename.toUtf8().data() ); + aMesh->ExportPartToDAT( aMeshOrGroup, aFilename.toUtf8().data(), toRenumber ); } else if ( isUNV ) { if ( aMeshOrGroup->_is_equivalent( aMesh )) - aMesh->ExportUNV( aFilename.toUtf8().data() ); + aMesh->ExportUNV( aFilename.toUtf8().data(), toRenumber ); else - aMesh->ExportPartToUNV( aMeshOrGroup, aFilename.toUtf8().data() ); + aMesh->ExportPartToUNV( aMeshOrGroup, aFilename.toUtf8().data(), toRenumber ); } else if ( isSTL ) { @@ -992,11 +991,19 @@ namespace aMesh->ExportGMF( aMeshOrGroup, aFilename.toUtf8().data(), toCreateGroups ); } } - catch (const SALOME::SALOME_Exception& S_ex){ + catch (const SALOME::SALOME_Exception& S_ex) + { wc.suspend(); - SUIT_MessageBox::warning(SMESHGUI::desktop(), - QObject::tr("SMESH_WRN_WARNING"), - QObject::tr("SMESH_EXPORT_FAILED") + SalomeApp_Tools::ExceptionToString(S_ex)); + if ( S_ex.details.type == SALOME::COMM && // communicate about too large mesh + strncmp( "format=", S_ex.details.sourceFile.in(), 7 ) == 0 ) + + SUIT_MessageBox::critical(SMESHGUI::desktop(), + QObject::tr("SMESH_WRN_WARNING"), + QObject::tr(S_ex.details.text.in() )); + else + SUIT_MessageBox::warning(SMESHGUI::desktop(), + QObject::tr("SMESH_WRN_WARNING"), + QObject::tr("SMESH_EXPORT_FAILED") + SalomeApp_Tools::ExceptionToString(S_ex)); wc.resume(); } } @@ -1216,14 +1223,14 @@ namespace SMESH::Controls::NumericalFunctor* aNumFun = dynamic_cast( aFunctor.get() ); if ( aNumFun ) { - std::vector elements; + std::vector elements; SMESH::SMESH_Mesh_var mesh = SMESH::IObjectToInterface(anIO); if ( mesh->_is_nil() ) { SMESH::SMESH_IDSource_var idSource = SMESH::IObjectToInterface(anIO); if ( !idSource->_is_nil() ) { - SMESH::long_array_var ids = idSource->GetIDs(); + SMESH::smIdType_array_var ids = idSource->GetIDs(); elements.resize( ids->length() ); for ( unsigned i = 0; i < elements.size(); ++i ) elements[i] = ids[i]; @@ -1851,7 +1858,7 @@ namespace if ( anActor->GetControlMode() != aControl ) anActor->SetControlMode( aControl ); QString functorName = functorToString( anActor->GetFunctor() ); - int anEntitiesCount = anActor->GetNumberControlEntities(); + smIdType anEntitiesCount = anActor->GetNumberControlEntities(); if (anEntitiesCount >= 0) functorName = functorName + ": " + QString::number(anEntitiesCount); anActor->GetScalarBarActor()->SetTitle( functorName.toUtf8().constData() ); @@ -2155,13 +2162,20 @@ SMESH::SMESH_Gen_var SMESHGUI::myComponentSMESH = SMESH::SMESH_Gen::_nil(); * */ //============================================================================= -SMESHGUI::SMESHGUI() : -SalomeApp_Module( "SMESH" ) +SMESHGUI::SMESHGUI() : SalomeApp_Module( "SMESH" ) { if ( CORBA::is_nil( myComponentSMESH ) ) { CORBA::Boolean anIsEmbeddedMode; - myComponentSMESH = SMESH_Client::GetSMESHGen(getApp()->orb(),anIsEmbeddedMode); + SALOME_NamingService_Abstract *ns = SalomeApp_Application::namingService(); + if( dynamic_cast(ns) ) + myComponentSMESH = SMESH_Client::GetSMESHGen(getApp()->orb(),anIsEmbeddedMode); + else + { + Engines::EngineComponent_var comp = RetrieveSMESHInstance(); + myComponentSMESH = SMESH::SMESH_Gen::_narrow(comp); + } + //MESSAGE("-------------------------------> anIsEmbeddedMode=" << anIsEmbeddedMode); // 0019923: EDF 765 SMESH : default values of hypothesis @@ -2252,7 +2266,7 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_IDSource_ptr theMesh, long updateLimit = resMgr->integerValue( "SMESH", "update_limit", 500000 ); bool incrementalLimit = resMgr->booleanValue( "SMESH", "incremental_limit", false ); - SMESH::long_array_var info = theMesh->GetMeshInfo(); + SMESH::smIdType_array_var info = theMesh->GetMeshInfo(); long nbOdElems = info[SMDSEntity_0D]; long nbEdges = info[SMDSEntity_Edge] + info[SMDSEntity_Quad_Edge]; long nbFaces = info[SMDSEntity_Triangle] + info[SMDSEntity_Quad_Triangle] + info[SMDSEntity_BiQuad_Triangle] + @@ -2760,7 +2774,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) OCC_CATCH_SIGNALS; SMESH::UpdateView(); } - catch (std::bad_alloc) { // PAL16774 (Crash after display of many groups) + catch (std::bad_alloc&) { // PAL16774 (Crash after display of many groups) SMESH::OnVisuException(); } catch (...) { // PAL16774 (Crash after display of many groups) @@ -2864,8 +2878,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case SMESHOp::OpMeshOrder: case SMESHOp::OpCreateSubMesh: if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified - + break; // action forbidden as geometry modified + // fall through case SMESHOp::OpCreateMesh: case SMESHOp::OpCompute: case SMESHOp::OpComputeSubMesh: @@ -2916,7 +2930,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if ( isStudyLocked() ) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified /*Standard_Boolean aRes; SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface(IObject); @@ -2948,7 +2962,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if ( isStudyLocked() ) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified EmitSignalDeactivateDialog(); SMESHGUI_MultiEditDlg* aDlg = NULL; @@ -2968,7 +2982,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_SmoothingDlg( this ) )->show(); @@ -2982,7 +2996,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if (isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if (vtkwnd) { EmitSignalDeactivateDialog(); ( new SMESHGUI_ExtrusionDlg ( this ) )->show(); @@ -2995,7 +3009,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if (isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if (vtkwnd) { EmitSignalDeactivateDialog(); ( new SMESHGUI_ExtrusionAlongPathDlg( this ) )->show(); @@ -3008,7 +3022,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_RevolutionDlg( this ) )->show(); @@ -3023,7 +3037,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if ( isStudyLocked() ) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); @@ -3035,19 +3049,19 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) break; } // Adaptation - begin - case SMESHOp::OpUniformRefinement: - case SMESHOp::OpHONewCase: - case SMESHOp::OpHOCaseFollow: - case SMESHOp::OpHONewIter: - case SMESHOp::OpHOIterCompute: - case SMESHOp::OpHOIterComputePublish: - case SMESHOp::OpHOEdit: - case SMESHOp::OpHODelete: +#ifndef DISABLE_MG_ADAPT case SMESHOp::OpMGAdapt: { - SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_nil(); - SMESHGUI_AdaptDlg *aDlg = new SMESHGUI_AdaptDlg( this, theCommandID, aMesh); + if ( isStudyLocked() ) + break; + EmitSignalDeactivateDialog(); + + SALOME::GenericObj_wrap< SMESH::MG_ADAPT > model = GetSMESHGen()->CreateMG_ADAPT(); + bool isCreation = false; + ( new SMESHGUI_MG_ADAPTDRIVER( this, model, isCreation ))->show(); + break; } +#endif // Adaptation - end case SMESHOp::OpSplitBiQuadratic: case SMESHOp::OpConvertMeshToQuadratic: @@ -3056,7 +3070,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case SMESHOp::OpCreateGeometryGroup: { if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified startOperation( theCommandID ); break; } @@ -3070,7 +3084,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified EmitSignalDeactivateDialog(); SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_nil(); @@ -3099,7 +3113,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified EmitSignalDeactivateDialog(); LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr(); @@ -3119,10 +3133,10 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) try { SMESH::SMESH_Mesh_var aMesh = aSubMesh->GetFather(); // get submesh elements list by types - SMESH::long_array_var aNodes = aSubMesh->GetElementsByType(SMESH::NODE); - SMESH::long_array_var aEdges = aSubMesh->GetElementsByType(SMESH::EDGE); - SMESH::long_array_var aFaces = aSubMesh->GetElementsByType(SMESH::FACE); - SMESH::long_array_var aVolumes = aSubMesh->GetElementsByType(SMESH::VOLUME); + SMESH::smIdType_array_var aNodes = aSubMesh->GetElementsByType(SMESH::NODE); + SMESH::smIdType_array_var aEdges = aSubMesh->GetElementsByType(SMESH::EDGE); + SMESH::smIdType_array_var aFaces = aSubMesh->GetElementsByType(SMESH::FACE); + SMESH::smIdType_array_var aVolumes = aSubMesh->GetElementsByType(SMESH::VOLUME); // create group for each type o elements QString aName = IObject->getName(); QStringList anEntryList; @@ -3178,7 +3192,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified EmitSignalDeactivateDialog(); LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr(); @@ -3277,7 +3291,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if ( isStudyLocked() ) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified EmitSignalDeactivateDialog(); @@ -3299,7 +3313,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if ( isStudyLocked() ) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified EmitSignalDeactivateDialog(); SMESHGUI_GroupOpDlg* aDlg = new SMESHGUI_DimGroupDlg( this ); @@ -3313,7 +3327,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if ( isStudyLocked() ) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified EmitSignalDeactivateDialog(); SMESHGUI_FaceGroupsSeparatedByEdgesDlg* aDlg = new SMESHGUI_FaceGroupsSeparatedByEdgesDlg( this ); @@ -3374,7 +3388,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr(); SALOME_ListIO selected; @@ -3421,7 +3435,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified SUIT_OverrideCursor wc; LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr(); @@ -3454,7 +3468,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); SMDSAbs_EntityType type = SMDSEntity_Edge; @@ -3482,7 +3496,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_CreatePolyhedralVolumeDlg( this ) )->show(); @@ -3507,7 +3521,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); SMDSAbs_EntityType type = SMDSEntity_Last; @@ -3540,7 +3554,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_RemoveNodesDlg( this ) )->show(); @@ -3555,7 +3569,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_RemoveElementsDlg( this ) )->show(); @@ -3571,7 +3585,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified SALOME_ListIO selected; if( LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr() ) @@ -3612,7 +3626,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified SALOME_ListIO selected; if( LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr() ) aSel->selectedObjects( selected ); @@ -3630,7 +3644,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) try { SUIT_OverrideCursor wc; SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor(); - int removed = aMeshEditor->RemoveOrphanNodes(); + smIdType removed = aMeshEditor->RemoveOrphanNodes(); SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INFORMATION"), tr("NB_NODES_REMOVED").arg(removed)); @@ -3653,7 +3667,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_RenumberingDlg( this, 0 ) )->show(); @@ -3669,7 +3683,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_RenumberingDlg( this, 1 ) )->show(); @@ -3685,7 +3699,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_TranslationDlg( this ) )->show(); @@ -3700,7 +3714,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_RotationDlg( this ) )->show(); @@ -3715,7 +3729,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if(vtkwnd) { EmitSignalDeactivateDialog(); ( new SMESHGUI_SymmetryDlg( this ) )->show(); @@ -3730,7 +3744,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_ScaleDlg( this ) )->show(); @@ -3746,7 +3760,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_OffsetDlg( this ) )->show(); @@ -3762,7 +3776,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if(vtkwnd) { EmitSignalDeactivateDialog(); ( new SMESHGUI_SewingDlg( this ) )->show(); @@ -3777,7 +3791,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if(vtkwnd) { EmitSignalDeactivateDialog(); ( new SMESHGUI_MergeDlg( this, 0 ) )->show(); @@ -3792,7 +3806,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if (isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if (vtkwnd) { EmitSignalDeactivateDialog(); ( new SMESHGUI_MergeDlg( this, 1 ) )->show(); @@ -3805,7 +3819,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case SMESHOp::OpMoveNode: // MAKE MESH PASS THROUGH POINT if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified startOperation( SMESHOp::OpMoveNode ); break; @@ -3813,7 +3827,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) { if(isStudyLocked()) break; if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified if ( vtkwnd ) { EmitSignalDeactivateDialog(); ( new SMESHGUI_DuplicateNodesDlg( this ) )->show(); @@ -3827,7 +3841,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case SMESHOp::OpElem0DOnElemNodes: // 0D_ON_ALL_NODES if ( warnOnGeomModif() ) - break; // action forbiden as geometry modified + break; // action forbidden as geometry modified startOperation( SMESHOp::OpElem0DOnElemNodes ); break; @@ -3977,7 +3991,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) * */ //============================================================================= -bool SMESHGUI::OnMousePress( QMouseEvent * pe, SUIT_ViewWindow * wnd ) +bool SMESHGUI::OnMousePress( QMouseEvent * /*pe*/, SUIT_ViewWindow * /*wnd*/ ) { return false; } @@ -3987,7 +4001,7 @@ bool SMESHGUI::OnMousePress( QMouseEvent * pe, SUIT_ViewWindow * wnd ) * */ //============================================================================= -bool SMESHGUI::OnMouseMove( QMouseEvent * pe, SUIT_ViewWindow * wnd ) +bool SMESHGUI::OnMouseMove( QMouseEvent * /*pe*/, SUIT_ViewWindow * /*wnd*/ ) { return true; } @@ -3997,7 +4011,7 @@ bool SMESHGUI::OnMouseMove( QMouseEvent * pe, SUIT_ViewWindow * wnd ) * */ //============================================================================= -bool SMESHGUI::OnKeyPress( QKeyEvent * pe, SUIT_ViewWindow * wnd ) +bool SMESHGUI::OnKeyPress( QKeyEvent * /*pe*/, SUIT_ViewWindow * /*wnd*/ ) { return true; } @@ -4287,15 +4301,9 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( SMESHOp::OpDisableAutoColor, "DISABLE_AUTO_COLOR" ); // Adaptation - begin - createSMESHAction( SMESHOp::OpUniformRefinement, "REF_ALL", "ICON_REF_ALL" ); - createSMESHAction( SMESHOp::OpHONewCase, "HOMARD_CREATE_CASE", "ICON_HOMARD_CREATE_CASE" ); - createSMESHAction( SMESHOp::OpHOCaseFollow, "HOMARD_FOLLOW_ITERATION", "ICON_HOMARD_FOLLOW_ITERATION" ); - createSMESHAction( SMESHOp::OpHONewIter, "HOMARD_NEW_ITERATION", "ICON_HOMARD_NEW_ITERATION" ); - createSMESHAction( SMESHOp::OpHOIterCompute, "HOMARD_COMPUTE", "ICON_HOMARD_COMPUTE" ); - createSMESHAction( SMESHOp::OpHOIterComputePublish, "HOMARD_COMPUTE_PUBLISH", "ICON_HOMARD_COMPUTE_PUBLISH" ); - createSMESHAction( SMESHOp::OpHOEdit, "EDIT", "ICON_DLG_EDIT_MESH" ); - createSMESHAction( SMESHOp::OpHODelete, "DELETE", "ICON_DELETE" ); - createSMESHAction( SMESHOp::OpMGAdapt, "MG_ADAPT", "ICON_MG_ADAPT" ); +#ifndef DISABLE_MG_ADAPT + createSMESHAction( SMESHOp::OpMGAdapt, "MG_ADAPT", "ICON_MG_ADAPT" ); +#endif // Adaptation - end createSMESHAction( SMESHOp::OpMinimumDistance, "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" ); @@ -4339,7 +4347,9 @@ void SMESHGUI::initialize( CAM_Application* app ) meshId = createMenu( tr( "MEN_MESH" ), -1, 70, 10 ), ctrlId = createMenu( tr( "MEN_CTRL" ), -1, 60, 10 ), modifyId = createMenu( tr( "MEN_MODIFY" ), -1, 40, 10 ), +#ifndef DISABLE_MG_ADAPT adaptId = createMenu( tr( "MEN_ADAPT" ), -1, 80, 10 ), +#endif measureId = createMenu( tr( "MEN_MEASURE" ), -1, 50, 10 ), viewId = createMenu( tr( "MEN_VIEW" ), -1, 2 ); @@ -4357,7 +4367,6 @@ void SMESHGUI::initialize( CAM_Application* app ) removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ), //renumId = createMenu( tr( "MEN_RENUM" ), modifyId, 404 ), transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ), - refHomardId = createMenu( tr( "MEN_REF_HOMARD" ), adaptId, -1, 10 ), basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 ); //createMenu( SMESHOp::OpImportDAT, importId, -1 ); @@ -4514,17 +4523,9 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( SMESHOp::OpPatternMapping, modifyId, -1 ); // Adaptation - begin - createMenu( SMESHOp::OpUniformRefinement, adaptId, -1 ); - createMenu( SMESHOp::OpHONewCase, refHomardId, -1 ); - createMenu( SMESHOp::OpHOCaseFollow, refHomardId, -1 ); - createMenu( separator(), refHomardId, -1 ); - createMenu( SMESHOp::OpHONewIter, refHomardId, -1 ); - createMenu( SMESHOp::OpHOIterCompute, refHomardId, -1 ); - createMenu( SMESHOp::OpHOIterComputePublish, refHomardId, -1 ); - createMenu( separator(), refHomardId, -1 ); - createMenu( SMESHOp::OpHOEdit, refHomardId, -1 ); - createMenu( SMESHOp::OpHODelete, refHomardId, -1 ); - createMenu( SMESHOp::OpMGAdapt, adaptId, -1 ); +#ifndef DISABLE_MG_ADAPT + createMenu( SMESHOp::OpMGAdapt, adaptId, -1 ); +#endif // Adaptation - end createMenu( SMESHOp::OpMinimumDistance, measureId, -1 ); @@ -4541,7 +4542,7 @@ void SMESHGUI::initialize( CAM_Application* app ) connect( volumeMenu, SIGNAL( aboutToShow() ), this, SLOT( onUpdateControlActions() ) ); // ----- create toolbars -------------- - int meshTb = createTool( tr( "TB_MESH" ), QString( "SMESHMeshToolbar" ) ) ; + int meshTb = createTool( tr( "TB_MESH" ), QString( "SMESHMeshToolbar" ) ) ; createTool( SMESHOp::OpCreateMesh, meshTb ); createTool( SMESHOp::OpCreateSubMesh, meshTb ); createTool( SMESHOp::OpEditMeshOrSubMesh, meshTb ); @@ -4553,30 +4554,30 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpEvaluate, meshTb ); createTool( SMESHOp::OpMeshOrder, meshTb ); - int infoTb = createTool( tr( "TB_INFO" ), QString( "SMESHInformationToolbar" ) ) ; + int infoTb = createTool( tr( "TB_INFO" ), QString( "SMESHInformationToolbar" ) ) ; createTool( SMESHOp::OpMeshInformation, infoTb ); //createTool( SMESHOp::OpStdInfo, meshTb ); //createTool( SMESHOp::OpWhatIs, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command) createTool( SMESHOp::OpFindElementByPoint, infoTb ); - int groupTb = createTool( tr( "TB_GROUP" ), QString( "SMESHGroupToolbar" ) ) ; + int groupTb = createTool( tr( "TB_GROUP" ), QString( "SMESHGroupToolbar" ) ) ; createTool( SMESHOp::OpCreateGroup, groupTb ); createTool( SMESHOp::OpCreateGeometryGroup, groupTb ); createTool( SMESHOp::OpConstructGroup, groupTb ); createTool( SMESHOp::OpEditGroup, groupTb ); - int ctrl0dTb = createTool( tr( "TB_CTRL0D" ), QString( "SMESHNodeControlsToolbar" ) ) ; + int ctrl0dTb = createTool( tr( "TB_CTRL0D" ), QString( "SMESHNodeControlsToolbar" ) ) ; createTool( SMESHOp::OpFreeNode, ctrl0dTb ); createTool( SMESHOp::OpEqualNode, ctrl0dTb ); //createTool( SMESHOp::OpNodeConnectivityNb, ctrl0dTb ); - int ctrl1dTb = createTool( tr( "TB_CTRL1D" ), QString( "SMESHEdgeControlsToolbar" ) ) ; + int ctrl1dTb = createTool( tr( "TB_CTRL1D" ), QString( "SMESHEdgeControlsToolbar" ) ) ; createTool( SMESHOp::OpFreeBorder, ctrl1dTb ); createTool( SMESHOp::OpLength, ctrl1dTb ); createTool( SMESHOp::OpConnection, ctrl1dTb ); createTool( SMESHOp::OpEqualEdge, ctrl1dTb ); - int ctrl2dTb = createTool( tr( "TB_CTRL2D" ), QString( "SMESHFaceControlsToolbar" ) ) ; + int ctrl2dTb = createTool( tr( "TB_CTRL2D" ), QString( "SMESHFaceControlsToolbar" ) ) ; createTool( SMESHOp::OpFreeEdge, ctrl2dTb ); createTool( SMESHOp::OpFreeFace, ctrl2dTb ); createTool( SMESHOp::OpBareBorderFace, ctrl2dTb ); @@ -4593,7 +4594,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpEqualFace, ctrl2dTb ); createTool( SMESHOp::OpDeflection2D, ctrl2dTb ); - int ctrl3dTb = createTool( tr( "TB_CTRL3D" ), QString( "SMESHVolumeControlsToolbar" ) ) ; + int ctrl3dTb = createTool( tr( "TB_CTRL3D" ), QString( "SMESHVolumeControlsToolbar" ) ) ; createTool( SMESHOp::OpAspectRatio3D, ctrl3dTb ); createTool( SMESHOp::OpVolume, ctrl3dTb ); createTool( SMESHOp::OpMaxElementLength3D, ctrl3dTb ); @@ -4601,7 +4602,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpOverConstrainedVolume, ctrl3dTb ); createTool( SMESHOp::OpEqualVolume, ctrl3dTb ); - int addElemTb = createTool( tr( "TB_ADD" ), QString( "SMESHAddElementToolbar" ) ) ; + int addElemTb = createTool( tr( "TB_ADD" ), QString( "SMESHAddElementToolbar" ) ) ; createTool( SMESHOp::OpNode, addElemTb ); createTool( SMESHOp::OpElem0D, addElemTb ); createTool( SMESHOp::OpElem0DOnElemNodes, addElemTb ); @@ -4617,7 +4618,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpHexagonalPrism, addElemTb ); createTool( SMESHOp::OpPolyhedron, addElemTb ); - int addNonElemTb = createTool( tr( "TB_ADDNON" ), QString( "SMESHAddElementToolbar" ) ) ; + int addNonElemTb = createTool( tr( "TB_ADDNON" ), QString( "SMESHAddElementToolbar" ) ) ; createTool( SMESHOp::OpQuadraticEdge, addNonElemTb ); createTool( SMESHOp::OpQuadraticTriangle, addNonElemTb ); createTool( SMESHOp::OpBiQuadraticTriangle, addNonElemTb ); @@ -4631,7 +4632,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpQuadraticHexahedron, addNonElemTb ); createTool( SMESHOp::OpTriQuadraticHexahedron, addNonElemTb ); - int remTb = createTool( tr( "TB_REM" ), QString( "SMESHRemoveToolbar" ) ) ; + int remTb = createTool( tr( "TB_REM" ), QString( "SMESHRemoveToolbar" ) ) ; createTool( SMESHOp::OpRemoveNodes, remTb ); createTool( SMESHOp::OpRemoveElements, remTb ); createTool( SMESHOp::OpRemoveOrphanNodes, remTb ); @@ -4641,7 +4642,7 @@ void SMESHGUI::initialize( CAM_Application* app ) //createTool( SMESHOp::OpRenumberingNodes, renumbTb ); //createTool( SMESHOp::OpRenumberingElements, renumbTb ); - int transformTb = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ) ; + int transformTb = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ) ; createTool( SMESHOp::OpMergeNodes, transformTb ); createTool( SMESHOp::OpMergeElements, transformTb ); createTool( SMESHOp::OpTranslation, transformTb ); @@ -4652,7 +4653,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpSewing, transformTb ); createTool( SMESHOp::OpDuplicateNodes, transformTb ); - int modifyTb = createTool( tr( "TB_MODIFY" ), QString( "SMESHModificationToolbar" ) ) ; + int modifyTb = createTool( tr( "TB_MODIFY" ), QString( "SMESHModificationToolbar" ) ) ; createTool( SMESHOp::OpConvertMeshToQuadratic, modifyTb ); createTool( SMESHOp::OpCreateBoundaryElements, modifyTb ); createTool( SMESHOp::OpExtrusion, modifyTb ); @@ -4671,20 +4672,16 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpPatternMapping, modifyTb ); // Adaptation - begin - int adaptTb = createTool( tr( "TB_ADAPTATION" ),QString( "SMESHAdaptationToolbar" ) ) ; - createTool( SMESHOp::OpUniformRefinement, adaptTb ); - createTool( SMESHOp::OpHONewCase, adaptTb ); - createTool( SMESHOp::OpHOCaseFollow, adaptTb ); - createTool( SMESHOp::OpHONewIter, adaptTb ); - createTool( SMESHOp::OpHOIterCompute, adaptTb ); - createTool( SMESHOp::OpHOIterComputePublish, adaptTb ); - createTool( SMESHOp::OpMGAdapt, adaptTb ); +#ifndef DISABLE_MG_ADAPT + int adaptTb = createTool( tr( "TB_ADAPTATION" ), QString( "SMESHAdaptationToolbar" ) ) ; + createTool( SMESHOp::OpMGAdapt, adaptTb ); +#endif // Adaptation - end - int measuremTb = createTool( tr( "TB_MEASUREM" ), QString( "SMESHMeasurementsToolbar" ) ) ; + int measuremTb = createTool( tr( "TB_MEASUREM" ), QString( "SMESHMeasurementsToolbar" ) ) ; createTool( SMESHOp::OpMinimumDistance, measuremTb ); - int dispModeTb = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) ); + int dispModeTb = createTool( tr( "TB_DISP_MODE" ), QString( "SMESHDisplayModeToolbar" ) ); createTool( SMESHOp::OpUpdate, dispModeTb ); QString lc = "$"; // VSR : instead of QtxPopupSelection::defEquality(); @@ -4740,7 +4737,7 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), -1, 0 ); createPopupItem( SMESHOp::OpCompute, OB, mesh, "&& selcount=1 && hasAlgo && isComputable" ); - createPopupItem( SMESHOp::OpRecompute, OB, mesh, "&& selcount=1 && hasAlgo && " + isNotEmpty ); + createPopupItem( SMESHOp::OpRecompute, OB, mesh, "&& selcount=1 && hasAlgo && (" + isNotEmpty + " || hasErrors )"); createPopupItem( SMESHOp::OpShowErrors, OB, mesh, "&& selcount=1 && hasErrors" ); createPopupItem( SMESHOp::OpComputeSubMesh, OB, subMesh, "&& selcount=1 && hasAlgo && isComputable" ); createPopupItem( SMESHOp::OpPreCompute, OB, mesh, "&& selcount=1 && hasAlgo && isPreComputable" ); @@ -4748,7 +4745,7 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), -1, 0 ); createPopupItem( SMESHOp::OpFileInformation, OB, mesh, "&& selcount=1 && isImported" ); createPopupItem( SMESHOp::OpMeshInformation, OB, mesh_part ); - createPopupItem( SMESHOp::OpFindElementByPoint,OB, mesh_group, "&& selcount=1" ); + createPopupItem( SMESHOp::OpFindElementByPoint,OB, mesh_group, "&& selcount=1 && " + hasElems ); createPopupItem( SMESHOp::OpOverallMeshQuality,OB, mesh_part ); popupMgr()->insert( separator(), -1, 0 ); createPopupItem( SMESHOp::OpCreateGroup, OB, mesh, "&& selcount=1" ); @@ -4758,22 +4755,15 @@ void SMESHGUI::initialize( CAM_Application* app ) createPopupItem( SMESHOp::OpEditHypothesis, OB, hypo, "&& isEditableHyp"); createPopupItem( SMESHOp::OpUnassign, OB, hyp_alg ); popupMgr()->insert( separator(), -1, 0 ); - createPopupItem( SMESHOp::OpConvertMeshToQuadratic, OB, mesh_submesh ); + createPopupItem( SMESHOp::OpConvertMeshToQuadratic, OB, mesh_submesh, "&& " + hasElems ); createPopupItem( SMESHOp::OpCreateBoundaryElements, OB, mesh_group, "&& selcount=1 && dim>=2"); - //popupMgr()->insert( separator(), -1, 0 ); - - //popupMgr()->insert( separator(), -1, 0 ); // Adaptation - begin - createPopupItem( SMESHOp::OpUniformRefinement, OB, mesh ); - createPopupItem( SMESHOp::OpHONewCase, OB, mesh ); - createPopupItem( SMESHOp::OpHOCaseFollow, OB, mesh ); - createPopupItem( SMESHOp::OpHONewIter, OB, mesh ); - createPopupItem( SMESHOp::OpHOIterCompute, OB, mesh ); - createPopupItem( SMESHOp::OpHOIterComputePublish, OB, mesh ); - createPopupItem( SMESHOp::OpHOEdit, OB, mesh ); - createPopupItem( SMESHOp::OpHODelete, OB, mesh ); - createPopupItem( SMESHOp::OpMGAdapt, OB, mesh ); +#ifndef DISABLE_MG_ADAPT + popupMgr()->insert( separator(), -1, 0 ); + createPopupItem( SMESHOp::OpMGAdapt, OB, mesh ); + popupMgr()->insert( separator(), -1, 0 ); +#endif // Adaptation - end QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc ); @@ -4816,7 +4806,7 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), -1, 0 ); createPopupItem( SMESHOp::OpMeshInformation, View, mesh_part ); createPopupItem( SMESHOp::OpOverallMeshQuality, View, mesh_part ); - createPopupItem( SMESHOp::OpFindElementByPoint, View, mesh ); + createPopupItem( SMESHOp::OpFindElementByPoint, View, mesh, "&& " + hasElems); popupMgr()->insert( separator(), -1, 0 ); createPopupItem( SMESHOp::OpUpdate, OB + " " + View, mesh_part ); @@ -5171,6 +5161,12 @@ bool SMESHGUI::reusableOperation( const int id ) return ( id == SMESHOp::OpCompute || id == SMESHOp::OpPreCompute || id == SMESHOp::OpEvaluate || id == SMESHOp::OpRecompute ) ? false : SalomeApp_Module::reusableOperation( id ); } +namespace +{ + QString wrap(const QString& text, const QString& tag) + { return QString("<%1>%2").arg(tag).arg(text).arg(tag);} +} + bool SMESHGUI::activateModule( SUIT_Study* study ) { bool res = SalomeApp_Module::activateModule( study ); @@ -5178,6 +5174,49 @@ bool SMESHGUI::activateModule( SUIT_Study* study ) setMenuShown( true ); setToolShown( true ); + // Fill in Help Panel + SalomeApp_Application* app = dynamic_cast( application() ); + app->infoPanel()->setTitle(tr("INFO_WELCOME_TO_SMESH")); + + int gb = app->infoPanel()->addGroup(tr("INFO_GRP_CREATE_MESH")); + QString lab; + QStringList items; + lab = tr("INFO_DEFINE_ALGOS") + "
"; + lab = lab + tr("INFO_DEFINE_HYPOS") + "
"; + lab = lab + tr("INFO_COMPUTE") + "
"; + lab = lab + tr("INFO_REFINE") + ":"; + items << wrap(tr("INFO_REFINE_LOCAL_SIZE"), "li") + << wrap(tr("INFO_REFINE_SUBMESH"), "li"); + lab = lab + wrap(items.join(""), "ul"); + items.clear(); + + app->infoPanel()->addLabel(lab, gb); + + gb = app->infoPanel()->addGroup(tr("INFO_GRP_IMPORT_MESH")); + items << wrap("UNV", "li") + << wrap("MED", "li") + << wrap("STL", "li") + << wrap("CGNS", "li") + << wrap("SAUV", "li") + << wrap("GMF", "li"); + lab = tr("INFO_AVAILABLE_FORMATS") + ":" + wrap(items.join(""), "ul"); + items.clear(); + + app->infoPanel()->addLabel(lab, gb); + + gb = app->infoPanel()->addGroup(tr("INFO_GRP_CHECK_MESH")); + lab = tr("INFO_DISPLAY") + "
"; + items << wrap(tr("INFO_QUALITY_AREA"), "li") + << wrap(tr("INFO_QUALITY_VOLUME"), "li") + << wrap(tr("INFO_QUALITY_ASPECT_RATION"), "li") + << wrap("...", "li"); + lab = lab + tr("INFO_QUALITY_INFO") + ":" + wrap(items.join(""), "ul"); + items.clear(); + lab = lab + tr("INFO_CLIPPING"); + + app->infoPanel()->addLabel(lab, gb); + // << Help Panel + // import Python module that manages SMESH plugins (need to be here because SalomePyQt API uses active module) PyGILState_STATE gstate = PyGILState_Ensure(); PyObject* pluginsmanager = PyImport_ImportModuleNoBlock((char*)"salome_pluginsmanager"); @@ -5296,6 +5335,7 @@ void SMESHGUI::windows( QMap& aMap ) const { aMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea ); aMap.insert( SalomeApp_Application::WT_NoteBook, Qt::LeftDockWidgetArea ); + aMap.insert( SalomeApp_Application::WT_InfoPanel, Qt::RightDockWidgetArea); #ifndef DISABLE_PYCONSOLE aMap.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea ); #endif @@ -5336,7 +5376,7 @@ void SMESHGUI::addActorAsObserver( SMESH_Actor* theActor ) void SMESHGUI::ProcessEvents( vtkObject* theObject, unsigned long theEvent, void* theClientData, - void* theCallData ) + void* /*theCallData*/ ) { if( SMESHGUI* aSMESHGUI = reinterpret_cast( theClientData ) ) { if( theObject && (int) theEvent == SMESH::DeleteActorEvent ) { @@ -5436,6 +5476,7 @@ void SMESHGUI::createPreferences() setPreferenceProperty( exportgroup, "columns", 2 ); addPreference( tr( "PREF_AUTO_GROUPS" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "auto_groups" ); addPreference( tr( "PREF_SHOW_WARN" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "show_warning" ); + addPreference( tr( "PREF_MED_SAVE_NUMS" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "med_save_numbers" ); int zTol = addPreference( tr( "PREF_ZTOLERANCE" ), exportgroup, LightApp_Preferences::DblSpin, "SMESH", "med_ztolerance" ); setPreferenceProperty( zTol, "precision", 10 ); setPreferenceProperty( zTol, "min", 0.0000000001 ); @@ -5593,23 +5634,23 @@ void SMESHGUI::createPreferences() int size0d = addPreference(tr("PREF_SIZE_0D"), elemGroup, LightApp_Preferences::IntSpin, "SMESH", "elem0d_size"); /* int ballSize = addPreference(tr("PREF_BALL_SIZE"), elemGroup, - LightApp_Preferences::IntSpin, "SMESH", "ball_elem_size"); */ - double ballDiameter = addPreference(tr("PREF_BALL_DIAMETER"), elemGroup, - LightApp_Preferences::DblSpin, "SMESH", "ball_elem_diameter"); - double ballScale = addPreference(tr("PREF_BALL_SCALE"), elemGroup, - LightApp_Preferences::DblSpin, "SMESH", "ball_elem_scale"); - int elemW = addPreference(tr("PREF_WIDTH"), elemGroup, - LightApp_Preferences::IntSpin, "SMESH", "element_width"); - int outW = addPreference(tr("PREF_OUTLINE_WIDTH"), elemGroup, - LightApp_Preferences::IntSpin, "SMESH", "outline_width"); - int shrink = addPreference(tr("PREF_SHRINK_COEFF"), elemGroup, - LightApp_Preferences::IntSpin, "SMESH", "shrink_coeff"); + LightApp_Preferences::IntSpin, "SMESH", "ball_elem_size"); */ + int ballDiameter = addPreference(tr("PREF_BALL_DIAMETER"), elemGroup, + LightApp_Preferences::DblSpin, "SMESH", "ball_elem_diameter"); + int ballScale = addPreference(tr("PREF_BALL_SCALE"), elemGroup, + LightApp_Preferences::DblSpin, "SMESH", "ball_elem_scale"); + int elemW = addPreference(tr("PREF_WIDTH"), elemGroup, + LightApp_Preferences::IntSpin, "SMESH", "element_width"); + int outW = addPreference(tr("PREF_OUTLINE_WIDTH"), elemGroup, + LightApp_Preferences::IntSpin, "SMESH", "outline_width"); + int shrink = addPreference(tr("PREF_SHRINK_COEFF"), elemGroup, + LightApp_Preferences::IntSpin, "SMESH", "shrink_coeff"); setPreferenceProperty( size0d, "min", 1 ); setPreferenceProperty( size0d, "max", 10 ); - // setPreferenceProperty( ballSize, "min", 1 ); - // setPreferenceProperty( ballSize, "max", 10 ); + // setPreferenceProperty( ballSize, "min", 1 ); + // setPreferenceProperty( ballSize, "max", 10 ); setPreferenceProperty( ballDiameter, "min", 1e-7 ); setPreferenceProperty( ballDiameter, "max", 1e9 ); @@ -5759,46 +5800,36 @@ void SMESHGUI::createPreferences() addPreference( tr( "SMESH_DISTRIBUTION_COLOR" ), distributionGr, LightApp_Preferences::Color, "SMESH", "distribution_color" ); // Adaptation - begin +#ifndef DISABLE_MG_ADAPT // Adaptation tab ------------------------------------------------------------------------ int adaptTab = addPreference( tr( "ADAPT_PREF_TAB_GENERAL" ) ); int bloc, pref ; - // Refinement with HOMARD - bloc = addPreference( tr( "ADAPT_PREF_PUBLICATION" ), adaptTab ); + // MG-Adapt + bloc = addPreference( tr( "ADAPT_PREF_MG_ADAPT" ), adaptTab ); setPreferenceProperty( bloc, "columns", 1 ); - pref = addPreference( tr( "ADAPT_PREF_PUBLICATION_MAILLAGE_IN" ), bloc, LightApp_Preferences::Bool, "HOMARD", "publish_mesh_in" ); - pref = addPreference( tr( "ADAPT_PREF_PUBLICATION_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "publish_mesh_out" ); - - bloc = addPreference( tr( "ADAPT_PREF_YACS_MAX" ), adaptTab ); - setPreferenceProperty( bloc, "columns", 1 ); - pref = addPreference( tr( "ADAPT_PREF_YACS_MAX_ITER" ), bloc, LightApp_Preferences::IntSpin, "HOMARD", "yacs_max_iter" ); - setPreferenceProperty( pref, "min", 0 ); - setPreferenceProperty( pref, "max", 100000000 ); - setPreferenceProperty( pref, "step", 1 ); - pref = addPreference( tr( "ADAPT_PREF_YACS_MAX_NODE" ), bloc, LightApp_Preferences::IntSpin, "HOMARD", "yacs_max_node" ); - setPreferenceProperty( pref, "min", 0 ); - setPreferenceProperty( pref, "max", 100000000 ); - setPreferenceProperty( pref, "step", 1000 ); - pref = addPreference( tr( "ADAPT_PREF_YACS_MAX_ELEM" ), bloc, LightApp_Preferences::IntSpin, "HOMARD", "yacs_max_elem" ); - setPreferenceProperty( pref, "min", 0 ); - setPreferenceProperty( pref, "max", 100000000 ); - setPreferenceProperty( pref, "step", 1000 ); - bloc = addPreference( tr( "ADAPT_PREF_YACS_CONVERGENCE" ), adaptTab ); - setPreferenceProperty( bloc, "columns", 1 ); - pref = addPreference( tr( "ADAPT_PREF_YACS_TYPE_TEST" ), bloc, LightApp_Preferences::Selector, "HOMARD", "yacs_type_test" ); - QStringList aListOfTypeTest; - aListOfTypeTest << "None"; - aListOfTypeTest << "VTest > VRef"; - aListOfTypeTest << "VTest < VRef"; - setPreferenceProperty( pref, "strings", aListOfTypeTest ); + pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_FILE_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_file_mesh_out" ); + pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_PUBLICATION_MAILLAGE_OUT" ), bloc, LightApp_Preferences::Bool, "HOMARD", "mg_adapt_publish_mesh_out" ); + pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_size_map" ); + QStringList aListOfSizeMap; + aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_LOCAL" ); + aListOfSizeMap << tr( "ADAPT_PREF_MG_ADAPT_SIZE_MAP_BACKGROUND" ); + aListOfSizeMap << tr( "ADAPT_PREF_NONE" );; + setPreferenceProperty( pref, "strings", aListOfSizeMap ); + pref = addPreference( tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP" ), bloc, LightApp_Preferences::Selector, "HOMARD", "mg_adapt_time_step" ); + QStringList aListOfTimeStep; + aListOfTimeStep << tr( "ADAPT_PREF_NONE" ); + aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_LAST" ); + aListOfTimeStep << tr( "ADAPT_PREF_MG_ADAPT_TIME_STEP_C" );; + setPreferenceProperty( pref, "strings", aListOfTimeStep ); +#endif // Adaptation - end - } void SMESHGUI::preferencesChanged( const QString& sect, const QString& name ) { if ( sect=="SMESH" ) { - float sbX1 = 0.01, sbY1 = 0.01, sbW = 0.08, sbH = 0.08; - float aTol = 1.00000009999999; + double sbX1 = 0.01, sbY1 = 0.01, sbW = 0.08, sbH = 0.08; + double aTol = 1.00000009999999; std::string aWarning; SUIT_ResourceMgr* aResourceMgr = SMESH::GetResourceMgr(this); @@ -5981,6 +6012,9 @@ LightApp_Operation* SMESHGUI::createOperation( const int id ) const case SMESHOp::OpComputeSubMesh: op = new SMESHGUI_ComputeOp(); break; + case SMESHOp::OpShowErrors: + op = new SMESHGUI_ShowErrorsOp(); + break; case SMESHOp::OpPreCompute: op = new SMESHGUI_PrecomputeOp(); break; @@ -6002,18 +6036,6 @@ LightApp_Operation* SMESHGUI::createOperation( const int id ) const case SMESHOp::OpElem0DOnElemNodes: // Create 0D elements on all nodes op = new SMESHGUI_Add0DElemsOnAllNodesOp(); break; - // Adaptation - begin - case SMESHOp::OpUniformRefinement: - case SMESHOp::OpHONewCase: - case SMESHOp::OpHOCaseFollow: - case SMESHOp::OpHONewIter: - case SMESHOp::OpHOIterCompute: - case SMESHOp::OpHOIterComputePublish: - case SMESHOp::OpHOEdit: - case SMESHOp::OpHODelete: - case SMESHOp::OpMGAdapt: - break; - // Adaptation - end default: break; }