X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.cxx;h=2d89fec36f9186b34e622d060bd4a2a01219e33d;hb=3e81347908c61a3fd788aa4da905a6cb674ca729;hp=73d08b61f2050757eb6f3d567b3186de37ba8ae3;hpb=fae671f73ccd2faf0eccade10c2ffe475c82ec32;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 73d08b61f..2d89fec36 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -68,6 +68,7 @@ #include "SMESHGUI_MakeNodeAtPointDlg.h" #include "SMESHGUI_BuildCompoundDlg.h" #include "SMESHGUI_ComputeDlg.h" +#include "SMESHGUI_FileInfoDlg.h" #include "SMESHGUI_Utils.h" #include "SMESHGUI_GEOMGenUtils.h" @@ -122,7 +123,7 @@ #include "SALOMEconfig.h" #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) -#include CORBA_SERVER_HEADER(SMESH_MeshEditor) +#include CORBA_CLIENT_HEADER(SMESH_MeshEditor) // QT Includes #define INCLUDE_MENUITEM_DEF @@ -184,8 +185,8 @@ using namespace std; } QString anInitialPath = ""; - //if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() ) - // anInitialPath = QDir::currentDirPath(); + if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() ) + anInitialPath = QDir::currentDirPath(); QString filename = SUIT_FileDlg::getFileName(SMESHGUI::desktop(), anInitialPath, @@ -353,10 +354,12 @@ using namespace std; if ( resMgr ) toCreateGroups = resMgr->booleanValue( "SMESH", "auto_groups", false ); - if ( theCommandID != 122 && theCommandID != 125 && theCommandID != 140 && theCommandID != 141) - - aFilename = SUIT_FileDlg::getFileName(SMESHGUI::desktop(), "", aFilter, aTitle, false); + QString anInitialPath = ""; + if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() ) + anInitialPath = QDir::currentDirPath(); + if ( theCommandID != 122 && theCommandID != 125 && theCommandID != 140 && theCommandID != 141) + aFilename = SUIT_FileDlg::getFileName(SMESHGUI::desktop(), anInitialPath, aFilter, aTitle, false); else if(theCommandID == 140 || theCommandID == 141) { // Export to STL QStringList filters; QMap::const_iterator it = aFilterMapSTL.begin(); @@ -367,6 +370,8 @@ using namespace std; fd->setCaption( aTitle ); fd->setFilters( filters ); fd->setSelectedFilter( QObject::tr("STL ASCII (*.stl)") ); + if ( anInitialPath.isEmpty() ) + fd->setDir( anInitialPath ); bool is_ok = false; while (!is_ok) { fd->exec(); @@ -394,6 +399,8 @@ using namespace std; //fd->setSelectedFilter( QObject::tr("MED 2.2 (*.med)") ); fd->setSelectedFilter(aDefaultFilter); fd->SetChecked(toCreateGroups); + if ( anInitialPath.isEmpty() ) + fd->setDir( anInitialPath ); bool is_ok = false; while (!is_ok) { fd->exec(); @@ -1302,6 +1309,24 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) break; } + case 150: //MED FILE INFORMATION + { + SALOME_ListIO selected; + LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr(); + if( aSel ) + aSel->selectedObjects( selected ); + if( selected.Extent() ) + { + Handle(SALOME_InteractiveObject) anIObject = selected.First(); + SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface(anIObject); + if ( !aMesh->_is_nil() ) + { + SMESHGUI_FileInfoDlg dlg( desktop(), aMesh->GetMEDFileInfo() ); + dlg.exec(); + } + } + break; + } case 122: // EXPORT MED case 121: case 123: @@ -1513,6 +1538,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) new SMESHGUI_BuildCompoundDlg( this ); } break; + case 407: // DIAGONAL INVERSION case 408: // Delete diagonal { @@ -2143,6 +2169,46 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) } break; } + case 4043: { // CLEAR_MESH + + if(checkLock(aStudy)) break; + + SALOME_ListIO selected; + if( LightApp_SelectionMgr *aSel = SMESHGUI::selectionMgr() ) + aSel->selectedObjects( selected ); + + SUIT_OverrideCursor wc; + SALOME_ListIteratorOfListIO It (selected); + for ( ; It.More(); It.Next() ) + { + Handle(SALOME_InteractiveObject) IOS = It.Value(); + SMESH::SMESH_Mesh_var aMesh = + SMESH::IObjectToInterface(IOS); + if ( aMesh->_is_nil()) continue; + try { + SMESH::UpdateView(SMESH::eErase, IOS->getEntry()); + aMesh->Clear(); + _PTR(SObject) aMeshSObj = SMESH::FindSObject(aMesh); + SMESH::ModifiedMesh( aMeshSObj, false, true); + // hide groups and submeshes + _PTR(ChildIterator) anIter = + SMESH::GetActiveStudyDocument()->NewChildIterator( aMeshSObj ); + for ( anIter->InitEx(true); anIter->More(); anIter->Next() ) + { + _PTR(SObject) so = anIter->Value(); + SMESH::UpdateView(SMESH::eErase, so->GetID().c_str()); + } + } + catch (const SALOME::SALOME_Exception& S_ex){ + wc.suspend(); + SalomeApp_Tools::QtCatchCorbaException(S_ex); + wc.resume(); + } + } + SMESH::UpdateView(); + updateObjBrowser(); + break; + } case 4051: // RENUMBERING NODES { if(checkLock(aStudy)) break; @@ -2491,6 +2557,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( 125, "EXPORT_MED" ); createSMESHAction( 126, "EXPORT_UNV" ); createSMESHAction( 141, "EXPORT_STL" ); + createSMESHAction( 150, "FILE_INFO" ); createSMESHAction( 33, "DELETE", "ICON_DELETE", Key_Delete ); createSMESHAction( 5105, "SEL_FILTER_LIB" ); createSMESHAction( 701, "COMPUTE", "ICON_COMPUTE" ); @@ -2533,6 +2600,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( 4032, "HEXA", "ICON_DLG_HEXAS" ); createSMESHAction( 4041, "REMOVE_NODES", "ICON_DLG_REM_NODE" ); createSMESHAction( 4042, "REMOVE_ELEMENTS", "ICON_DLG_REM_ELEMENT" ); + createSMESHAction( 4043, "CLEAR_MESH" , "ICON_CLEAR_MESH" ); createSMESHAction( 4051, "RENUM_NODES", "ICON_DLG_RENUMBERING_NODES" ); createSMESHAction( 4052, "RENUM_ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" ); createSMESHAction( 4061, "TRANS", "ICON_SMESH_TRANSLATION_VECTOR" ); @@ -2624,7 +2692,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( 5105, toolsId, -1 ); - createMenu( 702, meshId, -1 ); + createMenu( 702, meshId, -1 ); // "Mesh" menu createMenu( 703, meshId, -1 ); createMenu( 704, meshId, -1 ); createMenu( 710, meshId, -1 ); @@ -2683,6 +2751,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( 4041, removeId, -1 ); createMenu( 4042, removeId, -1 ); + createMenu( 4043, removeId, -1 ); createMenu( 4051, renumId, -1 ); createMenu( 4052, renumId, -1 ); @@ -2770,6 +2839,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createTool( separator(), addRemTb ); createTool( 4041, addRemTb ); createTool( 4042, addRemTb ); + createTool( 4043, addRemTb ); createTool( separator(), addRemTb ); createTool( 4051, addRemTb ); createTool( 4052, addRemTb ); @@ -2820,6 +2890,8 @@ void SMESHGUI::initialize( CAM_Application* app ) // popup for object browser + createPopupItem( 150, OB, mesh, "&& selcount=1 && isImported" ); // FILE INFORMATION + createPopupItem( 704, OB, mesh, "&& isComputable"); // EDIT_MESHSUBMESH createPopupItem( 704, OB, subMesh, "&& isComputable" ); // EDIT_MESHSUBMESH createPopupItem( 803, OB, group ); // EDIT_GROUP @@ -2833,12 +2905,16 @@ 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, "" /*"&& $hasReference={false}"*/ ); // EDIT HYPOTHESIS + createPopupItem( 1100, OB, hypo); // EDIT HYPOTHESIS createPopupItem( 1102, OB, hyp_alg ); // REMOVE HYPOTHESIS / ALGORITHMS - createPopupItem( 1101, OB, mesh_group + " " + hyp_alg, "" /*"&& $hasReference={false}"*/ ); // RENAME + createPopupItem( 1101, OB, mesh_group + " " + hyp_alg ); // RENAME + popupMgr()->insert( separator(), -1, 0 ); + createPopupItem( 4043, OB, mesh ); // CLEAR_MESH popupMgr()->insert( separator(), -1, 0 ); - QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( QtxPopupMgr::Selection::defSelCountParam() ); + QString nbSelected = QtxPopupMgr::Selection::defSelCountParam(); + QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( nbSelected ); + createPopupItem( 125, OB, mesh, only_one_non_empty ); // EXPORT_MED createPopupItem( 126, OB, mesh, only_one_non_empty ); // EXPORT_UNV createPopupItem( 141, OB, mesh, only_one_non_empty ); // EXPORT_STL @@ -3180,8 +3256,12 @@ void SMESHGUI::contextMenuPopup( const QString& client, QPopupMenu* menu, QStrin SalomeApp_Study* appStudy = dynamic_cast( application()->activeStudy() ); _PTR(Study) study = appStudy->studyDS(); _PTR(SObject) obj = study->FindObjectID( io->getEntry() ); - if ( obj ) - title = QString( obj->GetName().c_str() ); + if ( obj ) { + QString aName = QString( obj->GetName().c_str() ); + while ( aName.at( aName.length() - 1 ) == ' ' ) // Remove extraspaces in Name of Popup + aName.remove( (aName.length() - 1), 1 ); + title = aName; + } } }