// $Header$
#include "SMESHGUI.h"
+
#include "SMESHGUI_InitMeshDlg.h"
#include "SMESHGUI_AddSubMeshDlg.h"
#include "SMESHGUI_NodesDlg.h"
#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"
#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 <SVTK_InteractorStyle.h>
-#include <SVTK_RenderWindowInteractor.h>
+#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 <SALOME_LifeCycleCORBA.hxx>
-
-#include "OB_Browser.h"
-
-#include "QtxPopupMgr.h"
-
#include "SalomeApp_Tools.h"
#include "SalomeApp_Study.h"
#include "SalomeApp_NameDlg.h"
#include "SalomeApp_Application.h"
#include "SalomeApp_Preferences.h"
#include "SalomeApp_VTKSelector.h"
-
#include "SalomeApp_ImportOperation.h"
#include <SVTK_ViewWindow.h>
#include <SVTK_ViewModel.h>
+#include <SVTK_InteractorStyle.h>
+#include <SVTK_RenderWindowInteractor.h>
#include <VTKViewer_ViewManager.h>
-#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 <qapplication.h>
-#include <qlineedit.h>
-#include <qmenudata.h>
-#include <qmenubar.h>
#include <qpopupmenu.h>
-#include <qfont.h>
#include <qstring.h>
-#include <qpainter.h>
-#include <qcheckbox.h>
-#include <qcolordialog.h>
-#include <qspinbox.h>
-#include <qlist.h>
#include <qwidget.h>
-#include <qevent.h>
#include <qaction.h>
-#include <qradiobutton.h>
+// BOOST Includes
#include <boost/shared_ptr.hpp>
+// VTK Includes
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkActorCollection.h>
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();
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()){
SUIT_ViewWindow* view = application()->desktop()->activeWindow();
SVTK_ViewWindow* vtkwnd = dynamic_cast<SVTK_ViewWindow*>( view );
- QAction* act = action( theCommandID );
+ //QAction* act = action( theCommandID );
switch (theCommandID) {
case 33: // DELETE
if(checkLock(aStudy)) break;
- ::OnEditDelete();
+ OnEditDelete();
break;
case 113: // IMPORT
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;
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;
}
}
}
SMESH::FitAll();
}
}
+ SMESH::RepaintCurrentView();
}
}else{
SUIT_MessageBox::warn1(desktop(),
}
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
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" );
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" );
createMenu( 4063, transfId, -1 );
createMenu( 4064, transfId, -1 );
createMenu( 4065, transfId, -1 );
+ createMenu( 4066, transfId, -1 );
createMenu( 406, modifyId, -1 );
createMenu( 407, modifyId, -1 );
createTool( 4063, addRemTb );
createTool( 4064, addRemTb );
createTool( 4065, addRemTb );
+ createTool( 4066, addRemTb );
createTool( separator(), addRemTb );
createTool( 406, modifyTb );
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
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
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 );
//-------------------------------------------------
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);