X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.cxx;h=4226a8a3f10cf2a12a6d905a6a24451332dbdc80;hb=1fa8c229871aff624d20ab6918d75e3907638f27;hp=03c2c9abdf63945286a4d716eef9aceffce3c3b0;hpb=a58d1281752d62ff40dac81af7076e1ab1fee824;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 03c2c9abd..4226a8a3f 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -162,6 +162,7 @@ #include #include #include +#include // OCCT includes #include @@ -1221,6 +1222,25 @@ } } + void sortChildren(){ + LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr(); + SALOME_ListIO selected; + if( aSel ) { + aSel->selectedObjects( selected ); + + if(selected.Extent()){ + Handle(SALOME_InteractiveObject) anIObject = selected.First(); + _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); + _PTR(SObject) aSObj = aStudy->FindObjectID(anIObject->getEntry()); + if (aSObj) { + if ( aStudy->GetUseCaseBuilder()->SortChildren( aSObj, true/*AscendingOrder*/ ) ) { + SMESHGUI::GetSMESHGUI()->updateObjBrowser(); + } + } + } + } + } + void SetDisplayMode(int theCommandID, SMESHGUI_StudyId2MarkerMap& theMarkerMap) { SALOME_ListIO selected; @@ -1982,7 +2002,7 @@ bool SMESHGUI::automaticUpdate(unsigned int requestedSize, bool* limitExceeded) */ //============================================================================= bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh, - int* entities, bool* limitExceeded ) + int* entities, bool* limitExceeded ) { SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); if ( !resMgr ) @@ -2010,41 +2030,41 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh, if ( nbOdElems > 0 ) { if ( total + nbOdElems > updateLimit ) - *entities = *entities & ~SMESH_Actor::e0DElements; + *entities = *entities & ~SMESH_Actor::e0DElements; else - exceeded = false; + exceeded = false; } total += nbOdElems; if ( nbEdges > 0 ) { if ( total + nbEdges > updateLimit ) - *entities = *entities & ~SMESH_Actor::eEdges; + *entities = *entities & ~SMESH_Actor::eEdges; else - exceeded = false; + exceeded = false; } total += nbEdges; if ( nbFaces > 0 ) { if ( total + nbFaces > updateLimit ) - *entities = *entities & ~SMESH_Actor::eFaces; + *entities = *entities & ~SMESH_Actor::eFaces; else - exceeded = false; + exceeded = false; } total += nbFaces; if ( nbVolumes > 0 ) { if ( total + nbVolumes > updateLimit ) - *entities = *entities & ~SMESH_Actor::eVolumes; + *entities = *entities & ~SMESH_Actor::eVolumes; else - exceeded = false; + exceeded = false; } total += nbVolumes; if ( nbBalls > 0 ) { if ( total + nbBalls > updateLimit ) - *entities = *entities & ~SMESH_Actor::eBallElem; + *entities = *entities & ~SMESH_Actor::eBallElem; else - exceeded = false; + exceeded = false; } total += nbBalls; } @@ -3533,6 +3553,10 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) dlg->show(); break; } + case 41: + ::sortChildren(); + break; + } anApp->updateActions(); //SRN: To update a Save button in the toolbar @@ -3830,6 +3854,8 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( 301, "SHOW" ); createSMESHAction( 302, "DISPLAY_ONLY" ); + createSMESHAction( 41, "SORT_CHILD_ITEMS" ); + // ----- create menu -------------- int fileId = createMenu( tr( "MEN_FILE" ), -1, 1 ), editId = createMenu( tr( "MEN_EDIT" ), -1, 3 ), @@ -4512,6 +4538,10 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), -1, -1 ); + popupMgr()->insert( action( 41 ), -1, -1 ); + popupMgr()->setRule( action( 41 ), "$component={'SMESH'} and client='ObjectBrowser' and isContainer and nbChildren>1", QtxPopupMgr::VisibleRule ); + popupMgr()->insert( separator(), -1, -1 ); + connect( application(), SIGNAL( viewManagerActivated( SUIT_ViewManager* ) ), this, SLOT( onViewManagerActivated( SUIT_ViewManager* ) ) );