X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.cxx;h=b43530f9ce3b3f4c5614f33b2acfb24528081137;hb=9d134b21b1ed187851322a6b5feef3bee83b6583;hp=cccf51ff654e78cc8dc39208d9cba7a2ca3e9310;hpb=d0cb9e8d04012519ce1a30cf238275cb645a9294;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index cccf51ff6..b43530f9c 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -81,6 +81,7 @@ #include "SMESHGUI_SymmetryDlg.h" #include "SMESHGUI_TranslationDlg.h" #include "SMESHGUI_TransparencyDlg.h" +#include "SMESHGUI_DisplayEntitiesDlg.h" #include "SMESHGUI_FilterUtils.h" #include "SMESHGUI_GEOMGenUtils.h" @@ -91,14 +92,14 @@ #include "SMESHGUI_Utils.h" #include "SMESHGUI_VTKUtils.h" -#include +#include "SMESH_version.h" #include "SMESH_ControlsDef.hxx" -#include -#include -#include -#include -#include +#include "SMESH_Actor.h" +#include "SMESH_ActorUtils.h" +#include "SMESH_Client.hxx" +#include "SMESH_ScalarBarActor.h" +#include "SMESH_TypeFilter.hxx" // SALOME GUI includes #include @@ -132,7 +133,6 @@ #include #include -#include #ifndef DISABLE_PLOT2DVIEWER #include @@ -168,6 +168,7 @@ #include #include #include +#include "utilities.h" // OCCT includes #include @@ -1756,6 +1757,19 @@ namespace return RefType; } + uint randomize( uint size ) + { + static bool initialized = false; + if ( !initialized ) { + qsrand( QDateTime::currentDateTime().toTime_t() ); + initialized = true; + } + uint v = qrand(); + v = uint( (double)( v ) / RAND_MAX * size ); + v = qMax( uint(0), qMin ( v, size-1 ) ); + return v; + } + } //namespace void SMESHGUI::OnEditDelete() @@ -2516,6 +2530,13 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) ::SetDisplayEntity(theCommandID); break; + // Choose entities to be displayed + case SMESHOp::OpDEChoose: + { + ( new SMESHGUI_DisplayEntitiesDlg( SMESHGUI::desktop() ) )->exec(); + break; + } + case SMESHOp::OpOrientationOnFaces: { LightApp_SelectionMgr* mgr = selectionMgr(); @@ -3859,8 +3880,8 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( SMESHOp::OpRemoveOrphanNodes, "REMOVE_ORPHAN_NODES", "ICON_DLG_REM_ORPHAN_NODES" ); createSMESHAction( SMESHOp::OpClearMesh, "CLEAR_MESH", "ICON_CLEAR_MESH" ); - createSMESHAction( SMESHOp::OpRenumberingNodes, "RENUM_NODES", "ICON_DLG_RENUMBERING_NODES" ); - createSMESHAction( SMESHOp::OpRenumberingElements, "RENUM_ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" ); + //createSMESHAction( SMESHOp::OpRenumberingNodes, "RENUM_NODES", "ICON_DLG_RENUMBERING_NODES" ); + //createSMESHAction( SMESHOp::OpRenumberingElements, "RENUM_ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" ); createSMESHAction( SMESHOp::OpTranslation, "TRANS", "ICON_SMESH_TRANSLATION_VECTOR" ); createSMESHAction( SMESHOp::OpRotation, "ROT", "ICON_DLG_MESH_ROTATION" ); @@ -3903,7 +3924,8 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( SMESHOp::OpDEFaces, "FACES", "ICON_DLG_TRIANGLE", 0, true ); createSMESHAction( SMESHOp::OpDEVolumes, "VOLUMES", "ICON_DLG_TETRAS", 0, true ); createSMESHAction( SMESHOp::OpDEBalls, "BALLS", "ICON_DLG_BALL", 0, true ); - createSMESHAction( SMESHOp::OpDEAllEntity, "ALL" ); + createSMESHAction( SMESHOp::OpDEChoose, "CHOOSE", "ICON_DLG_CHOOSE", 0, false ); + createSMESHAction( SMESHOp::OpDEAllEntity, "ALL", "ICON_DLG_CHOOSE_ALL", 0, false ); createSMESHAction( SMESHOp::OpOrientationOnFaces, "FACE_ORIENTATION", "", 0, true ); createSMESHAction( SMESHOp::OpRepresentationLines, "LINE_REPRESENTATION", "", 0, true ); @@ -3968,7 +3990,7 @@ void SMESHGUI::initialize( CAM_Application* app ) volumeId = createMenu( tr( "MEN_VOLUME_CTRL" ), ctrlId, -1, 10 ), addId = createMenu( tr( "MEN_ADD" ), modifyId, 402 ), removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ), - renumId = createMenu( tr( "MEN_RENUM" ), modifyId, 404 ), + //renumId = createMenu( tr( "MEN_RENUM" ), modifyId, 404 ), transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ), basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 ); @@ -4090,8 +4112,8 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( separator(), removeId, -1 ); createMenu( SMESHOp::OpClearMesh, removeId, -1 ); - createMenu( SMESHOp::OpRenumberingNodes, renumId, -1 ); - createMenu( SMESHOp::OpRenumberingElements, renumId, -1 ); + //createMenu( SMESHOp::OpRenumberingNodes, renumId, -1 ); + //createMenu( SMESHOp::OpRenumberingElements, renumId, -1 ); createMenu( SMESHOp::OpTranslation, transfId, -1 ); createMenu( SMESHOp::OpRotation, transfId, -1 ); @@ -4136,7 +4158,7 @@ void SMESHGUI::initialize( CAM_Application* app ) addElemTb = createTool( tr( "TB_ADD" ), QString( "SMESHAddElementToolbar" ) ), addNonElemTb = createTool( tr( "TB_ADDNON" ), QString( "SMESHAddElementToolbar" ) ), remTb = createTool( tr( "TB_REM" ), QString( "SMESHRemoveToolbar" ) ), - renumbTb = createTool( tr( "TB_RENUMBER" ), QString( "SMESHRenumberingToolbar" ) ), + //renumbTb = createTool( tr( "TB_RENUMBER" ), QString( "SMESHRenumberingToolbar" ) ), transformTb = createTool( tr( "TB_TRANSFORM" ), QString( "SMESHTransformationToolbar" ) ), modifyTb = createTool( tr( "TB_MODIFY" ), QString( "SMESHModificationToolbar" ) ), measuremTb = createTool( tr( "TB_MEASUREM" ), QString( "SMESHMeasurementsToolbar" ) ), @@ -4224,8 +4246,8 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( SMESHOp::OpRemoveOrphanNodes, remTb ); createTool( SMESHOp::OpClearMesh, remTb ); - createTool( SMESHOp::OpRenumberingNodes, renumbTb ); - createTool( SMESHOp::OpRenumberingElements, renumbTb ); + //createTool( SMESHOp::OpRenumberingNodes, renumbTb ); + //createTool( SMESHOp::OpRenumberingElements, renumbTb ); createTool( SMESHOp::OpTranslation, transformTb ); createTool( SMESHOp::OpRotation, transformTb ); @@ -4436,6 +4458,11 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), anId, -1 ); + popupMgr()->insert( action( SMESHOp::OpDEChoose ), anId, -1 ); + popupMgr()->setRule( action( SMESHOp::OpDEChoose ), aClient + "&&" + aType + "&&" + isNotEmpty, QtxPopupMgr::VisibleRule ); + + popupMgr()->insert( separator(), anId, -1 ); + popupMgr()->insert( action( SMESHOp::OpDEAllEntity ), anId, -1 ); popupMgr()->setRule( action( SMESHOp::OpDEAllEntity ), aDiffElemsInVTK + "&& isVisible && not( elemTypes in entityMode )", QtxPopupMgr::VisibleRule ); @@ -4754,6 +4781,8 @@ bool SMESHGUI::deactivateModule( SUIT_Study* study ) void SMESHGUI::studyClosed( SUIT_Study* s ) { + if( !s ) + return; SMESH::RemoveVisuData( s->id() ); SalomeApp_Module::studyClosed( s ); } @@ -4801,7 +4830,7 @@ void SMESHGUI::contextMenuPopup( const QString& client, QMenu* menu, QString& ti _PTR(Study) study = appStudy->studyDS(); _PTR(SObject) obj = study->FindObjectID( io->getEntry() ); if ( obj ) { - QString aName = QString( QString::fromUtf8(obj->GetName().c_str()) ); + QString aName = QString( SMESH::fromUtf8(obj->GetName()) ); while ( aName.at( aName.length() - 1 ) == ' ' ) // Remove extraspaces in Name of Popup aName.remove( (aName.length() - 1), 1 ); title = aName; @@ -4902,7 +4931,7 @@ void SMESHGUI::createPreferences() addPreference( tr( "PREF_PRECISION_USE" ), qaGroup, LightApp_Preferences::Bool, "SMESH", "use_precision" ); int prec = addPreference( tr( "PREF_PRECISION_VALUE" ), qaGroup, LightApp_Preferences::IntSpin, "SMESH", "controls_precision" ); setPreferenceProperty( prec, "min", 0 ); - setPreferenceProperty( prec, "max", 16 ); + setPreferenceProperty( prec, "max", 100 ); int doubleNodesTol = addPreference( tr( "PREF_EQUAL_NODES_TOL" ), qaGroup, LightApp_Preferences::DblSpin, "SMESH", "equal_nodes_tolerance" ); setPreferenceProperty( doubleNodesTol, "precision", 10 ); setPreferenceProperty( doubleNodesTol, "min", 0.0000000001 ); @@ -6781,7 +6810,7 @@ void SMESHGUI::message( const QString& msg ) _PTR(SObject) obj = study->FindObjectID( entry.toLatin1().constData() ); QString name; if ( obj ) - name = QString::fromUtf8(obj->GetName().c_str()); + name = SMESH::fromUtf8(obj->GetName()); if ( name.isEmpty() ) return; @@ -6924,7 +6953,7 @@ SALOMEDS::Color SMESHGUI::getPredefinedUniqueColor() } } } - static int currentColor = 0; + static int currentColor = randomize( colors.size() ); SALOMEDS::Color color; color.R = (double)colors[currentColor].red() / 255.0;