X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.cxx;h=7fe7f5fafe8e43bf4a37cb31c74fdc07e30d8740;hp=62bc9ff883ea4abe8f989060ab84d78dde95fd07;hb=970a19aa54c76a9b7667c35298bbbbedb9f04b8a;hpb=b73a5f27ba8842adfaccb96af928745a2db32acc;ds=sidebyside diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 62bc9ff88..7fe7f5faf 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -25,6 +25,7 @@ // $Header$ #include "SMESHGUI.h" + #include "SMESHGUI_InitMeshDlg.h" #include "SMESHGUI_AddSubMeshDlg.h" #include "SMESHGUI_NodesDlg.h" @@ -39,7 +40,6 @@ #include "SMESHGUI_Preferences_ScalarBarDlg.h" #include "SMESHGUI_Preferences_SelectionDlg.h" #include "SMESHGUI_Hypotheses.h" -#include "SMESHGUI_HypothesesUtils.h" #include "SMESHGUI_MoveNodesDlg.h" #include "SMESHGUI_AddMeshElementDlg.h" #include "SMESHGUI_EditHypothesesDlg.h" @@ -60,38 +60,25 @@ #include "SMESHGUI_SymmetryDlg.h" #include "SMESHGUI_SewingDlg.h" #include "SMESHGUI_MergeNodesDlg.h" +#include "SMESHGUI_EditMeshDlg.h" #include "SMESHGUI_MeshPatternDlg.h" #include "SMESHGUI_PrecisionDlg.h" #include "SMESHGUI_Selection.h" #include "SMESHGUI_CreatePolyhedralVolumeDlg.h" -#include -#include +#include "SMESHGUI_Utils.h" +#include "SMESHGUI_GEOMGenUtils.h" +#include "SMESHGUI_MeshUtils.h" +#include "SMESHGUI_GroupUtils.h" +#include "SMESHGUI_FilterUtils.h" +#include "SMESHGUI_PatternUtils.h" +#include "SMESHGUI_VTKUtils.h" +#include "SMESHGUI_HypothesesUtils.h" #include "SMESH_Actor.h" #include "SMESH_Object.h" #include "SMESH_TypeFilter.hxx" -#include "SUIT_Tools.h" -#include "SUIT_MessageBox.h" -#include "SUIT_ResourceMgr.h" -#include "SUIT_FileDlg.h" -#include "SUIT_Desktop.h" -#include "SUIT_ResourceMgr.h" -#include "SUIT_OverrideCursor.h" -#include "SUIT_Study.h" -#include "SUIT_Session.h" - -#include "SALOME_NamingService.hxx" -#include "SALOME_ListIteratorOfListIO.hxx" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_ListIO.hxx" -#include - -#include "OB_Browser.h" - -#include "QtxPopupMgr.h" - #include "SalomeApp_Tools.h" #include "SalomeApp_Study.h" #include "SalomeApp_NameDlg.h" @@ -99,46 +86,49 @@ #include "SalomeApp_Application.h" #include "SalomeApp_Preferences.h" #include "SalomeApp_VTKSelector.h" - #include "SalomeApp_ImportOperation.h" #include #include +#include +#include #include -#include "SMESHGUI_Utils.h" -#include "SMESHGUI_GEOMGenUtils.h" -#include "SMESHGUI_MeshUtils.h" -#include "SMESHGUI_GroupUtils.h" -#include "SMESHGUI_FilterUtils.h" -#include "SMESHGUI_PatternUtils.h" -#include "SMESHGUI_VTKUtils.h" +#include "OB_Browser.h" + +#include "SUIT_Tools.h" +#include "SUIT_MessageBox.h" +#include "SUIT_ResourceMgr.h" +#include "SUIT_FileDlg.h" +#include "SUIT_Desktop.h" +#include "SUIT_ResourceMgr.h" +#include "SUIT_OverrideCursor.h" +#include "SUIT_Study.h" +#include "SUIT_Session.h" + +#include "QtxPopupMgr.h" + +#include "SALOME_ListIO.hxx" +#include "SALOME_ListIteratorOfListIO.hxx" +#include "SALOME_InteractiveObject.hxx" +#include "SALOME_NamingService.hxx" +#include "SALOME_LifeCycleCORBA.hxx" #include "SALOMEconfig.h" #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) // QT Includes #define INCLUDE_MENUITEM_DEF -#include -#include -#include -#include #include -#include #include -#include -#include -#include -#include -#include #include -#include #include -#include +// BOOST Includes #include +// VTK Includes #include #include #include @@ -665,7 +655,8 @@ namespace{ return RefType; } - void OnEditDelete() + + void SMESHGUI::OnEditDelete() { // VSR 17/11/04: check if all objects selected belong to SMESH component --> start SalomeApp_SelectionMgr* aSel = SMESHGUI::selectionMgr(); @@ -713,6 +704,13 @@ namespace{ if(IObject->hasEntry()){ _PTR(SObject) SO = aStudy->FindObjectID(IObject->getEntry()); + // disable removal of "SMESH" component object + if(SO->FindAttribute(anAttr, "AttributeIOR")){ + anIOR = anAttr; + if ( !strcmp( (char*)anIOR->Value().c_str(), engineIOR().latin1() ) ) + continue; + } + /* Erase child graphical objects */ _PTR(ChildIterator) it = aStudy->NewChildIterator(SO); for(it->InitEx(true); it->More(); it->Next()){ @@ -1058,12 +1056,12 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) SUIT_ViewWindow* view = application()->desktop()->activeWindow(); SVTK_ViewWindow* vtkwnd = dynamic_cast( view ); - QAction* act = action( theCommandID ); + //QAction* act = action( theCommandID ); switch (theCommandID) { case 33: // DELETE if(checkLock(aStudy)) break; - ::OnEditDelete(); + OnEditDelete(); break; case 113: // IMPORT @@ -1145,7 +1143,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case 302: // DISPLAY ONLY { SMESH::EDisplaing anAction; - switch(theCommandID){ + switch (theCommandID) { case 300: anAction = SMESH::eErase; break; case 301: anAction = SMESH::eDisplay; break; case 302: anAction = SMESH::eDisplayOnly; break; @@ -1153,15 +1151,17 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) SalomeApp_SelectionMgr *aSel = SMESHGUI::selectionMgr(); SALOME_ListIO selected; - if( aSel ) + if (aSel) aSel->selectedObjects( selected ); - if ( vtkwnd ) { - SALOME_ListIteratorOfListIO It(selected); + if (vtkwnd) { + SALOME_ListIteratorOfListIO It (selected); for (; It.More(); It.Next()) { Handle(SALOME_InteractiveObject) IOS = It.Value(); if (IOS->hasEntry()) { - SMESH::UpdateView(anAction,IOS->getEntry()); + SMESH::UpdateView(anAction, IOS->getEntry()); + if (anAction == SMESH::eDisplayOnly) + anAction = SMESH::eDisplay; } } } @@ -1302,6 +1302,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) SMESH::FitAll(); } } + SMESH::RepaintCurrentView(); } }else{ SUIT_MessageBox::warn1(desktop(), @@ -2006,6 +2007,22 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) } break; } + case 4066: // MERGE EQUAL ELEMENTS + { + if (checkLock(aStudy)) break; + if (vtkwnd) { + EmitSignalDeactivateDialog(); + new SMESHGUI_EditMeshDlg(this, + "SMESH_MERGE_ELEMENTS_TITLE", + "ICON_DLG_MERGE_ELEMENTS", + 1); // MergeEqualElemets + } else { + SUIT_MessageBox::warn1(desktop(), + tr("SMESH_WRN_WARNING"), tr("SMESH_WRN_VIEWER_VTK"), + tr("SMESH_BUT_OK")); + } + break; + } case 5000: // HYPOTHESIS @@ -2289,6 +2306,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( 4063, "SYM", "ICON_SMESH_SYMMETRY_PLANE" ); createSMESHAction( 4064, "SEW", "ICON_SMESH_SEWING_FREEBORDERS" ); createSMESHAction( 4065, "MERGE", "ICON_SMESH_MERGE_NODES" ); + createSMESHAction( 4066, "MERGE_ELEMENTS", "ICON_DLG_MERGE_ELEMENTS" ); createSMESHAction( 406, "MOVE", "ICON_DLG_MOVE_NODE" ); createSMESHAction( 407, "INV", "ICON_DLG_MESH_DIAGONAL" ); createSMESHAction( 408, "UNION2", "ICON_UNION2TRI" ); @@ -2313,6 +2331,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( 220, "ALL" ); createSMESHAction( 1100, "EDIT_HYPO" ); createSMESHAction( 1101, "RENAME" ); + createSMESHAction( 1102, "UNASSIGN" ); createSMESHAction( 9010, "NUM_NODES", "", 0, true ); createSMESHAction( 9011, "NUM_ELEMENTS", "", 0, true ); createSMESHAction( 1131, "DISPMODE" ); @@ -2420,6 +2439,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( 4063, transfId, -1 ); createMenu( 4064, transfId, -1 ); createMenu( 4065, transfId, -1 ); + createMenu( 4066, transfId, -1 ); createMenu( 406, modifyId, -1 ); createMenu( 407, modifyId, -1 ); @@ -2497,6 +2517,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( 4063, addRemTb ); createTool( 4064, addRemTb ); createTool( 4065, addRemTb ); + createTool( 4066, addRemTb ); createTool( separator(), addRemTb ); createTool( 406, modifyTb ); @@ -2546,9 +2567,9 @@ void SMESHGUI::initialize( CAM_Application* app ) createPopupItem( 801, OB, mesh ); // CREATE_GROUP createPopupItem( 802, OB, subMesh ); // CONSTRUCT_GROUP popupMgr()->insert( separator(), -1, 0 ); - createPopupItem( 1100, OB, hypo ); // EDIT HYPOTHESIS - createPopupItem( 1102, OB, hyp_alg, "&& hasReference" ); // REMOVE HYPOTHESIS / ALGORITHMS - createPopupItem( 1101, OB, mesh_group + " " + hyp_alg ); // RENAME + createPopupItem( 1100, OB, hypo, "&& $hasReference={false}" ); // EDIT HYPOTHESIS + createPopupItem( 1102, OB, hyp_alg ); // REMOVE HYPOTHESIS / ALGORITHMS + createPopupItem( 1101, OB, mesh_group + " " + hyp_alg, "&& $hasReference={false}" ); // RENAME popupMgr()->insert( separator(), -1, 0 ); createPopupItem( 125, OB, mesh ); // EXPORT_MED createPopupItem( 126, OB, mesh ); // EXPORT_UNV @@ -2579,11 +2600,10 @@ void SMESHGUI::initialize( CAM_Application* app ) hasFaces("({'Face'} in elemTypes)"), hasVolumes("({'Volume'} in elemTypes)"); - QString aSelCount = QString( "%1 = 1" ).arg( QtxPopupMgr::Selection::defSelCountParam() ); QString lc = QtxPopupMgr::Selection::defEquality(); QString aClient = QString( "%1client in {%2}" ).arg( lc ).arg( "'VTKViewer'" ); QString aType = QString( "%1type in {%2}" ).arg( QtxPopupMgr::Selection::defEquality() ).arg( mesh_group ); - QString aMeshInVTK = aClient + "&&" + aType;// + "&&" + aSelCount; + QString aMeshInVTK = aClient + "&&" + aType; //------------------------------------------------- // Numbering @@ -2591,7 +2611,7 @@ void SMESHGUI::initialize( CAM_Application* app ) anId = popupMgr()->insert( tr( "MEN_NUM" ), -1, -1 ); popupMgr()->insert( action( 9010 ), anId, -1 ); - popupMgr()->setRule( action( 9010 ), aMeshInVTK + "&& isVisible &&" + hasNodes, true );//@ + popupMgr()->setRule( action( 9010 ), aMeshInVTK + "&& isVisible &&" + hasNodes, true ); popupMgr()->setRule( action( 9010 ), "{'Point'} in labeledTypes", false ); popupMgr()->insert( action( 9011 ), anId, -1 ); @@ -2750,6 +2770,7 @@ void SMESHGUI::initialize( CAM_Application* app ) //------------------------------------------------- aClient = "($client in {'VTKViewer' 'ObjectBrowser'})"; QString anActiveVTK = QString("activeView = '%1'").arg(VTKViewer_Viewer::Type()); + QString aSelCount = QString( "%1 > 0" ).arg( QtxPopupMgr::Selection::defSelCountParam() ); QString aRule = aClient + " and " + aType + " and " + aSelCount + " and " + anActiveVTK; popupMgr()->insert( action( 301 ), -1, -1 ); // DISPLAY popupMgr()->setRule( action( 301 ), aRule + "&&" + isNotEmpty + "&&" + isInvisible, true);