*** empty log message ***

This commit is contained in:
asl 2005-07-15 11:48:41 +00:00
parent 56b5060f4b
commit d097f4c8ff
9 changed files with 693 additions and 530 deletions

View File

@ -73,6 +73,7 @@ LIB_SRC = SMESHGUI.cxx \
SMESHGUI_RemoveOp.cxx \
SMESHGUI_MeshInfosDlg.cxx \
SMESHGUI_StandardMeshInfosDlg.cxx \
SMESHGUI_StandardMeshInfosOp.cxx \
SMESHGUI_Preferences_ColorDlg.cxx \
SMESHGUI_Preferences_ScalarBarDlg.cxx \
SMESHGUI_Preferences_SelectionDlg.cxx \
@ -119,7 +120,8 @@ LIB_SRC = SMESHGUI.cxx \
SMESHGUI_Dialog.cxx \
SMESHGUI_Operation.cxx \
SMESHGUI_SelectionOp.cxx \
SMESHGUI_DeleteOp.cxx
SMESHGUI_DeleteOp.cxx \
SMESHGUI_ExportMeshOp.cxx
LIB_MOC = \
SMESHGUI.h \
@ -142,6 +144,7 @@ LIB_MOC = \
SMESHGUI_RemoveOp.h \
SMESHGUI_MeshInfosDlg.h \
SMESHGUI_StandardMeshInfosDlg.h \
SMESHGUI_StandardMeshInfosOp.h \
SMESHGUI_Preferences_ColorDlg.h \
SMESHGUI_Preferences_ScalarBarDlg.h \
SMESHGUI_Preferences_SelectionDlg.h \
@ -175,7 +178,8 @@ LIB_MOC = \
SMESHGUI_CreatePolyhedralVolumeDlg.h \
SMESHGUI_Operation.h \
SMESHGUI_DeleteOp.h \
SMESHGUI_SelectionOp.h
SMESHGUI_SelectionOp.h \
SMESHGUI_ExportMeshOp.h
LIB_CLIENT_IDL = SALOME_Exception.idl \
GEOM_Gen.idl \

View File

@ -25,6 +25,7 @@
// $Header$
#include "SMESHGUI.h"
#include "SMESHGUI_ExportMeshOp.h"
#include "SMESHGUI_InitMeshOp.h"
#include "SMESHGUI_AddSubMeshOp.h"
#include "SMESHGUI_NodesOp.h"
@ -34,7 +35,7 @@
#include "SMESHGUI_GroupDlg.h"
#include "SMESHGUI_RemoveOp.h"
#include "SMESHGUI_MeshInfosDlg.h"
#include "SMESHGUI_StandardMeshInfosDlg.h"
#include "SMESHGUI_StandardMeshInfosOp.h"
#include "SMESHGUI_Preferences_ColorDlg.h"
#include "SMESHGUI_Preferences_ScalarBarDlg.h"
#include "SMESHGUI_Preferences_SelectionDlg.h"
@ -161,8 +162,6 @@ namespace{
void ImportMeshesFromFile(SMESH::SMESH_Gen_ptr theComponentMesh,
int theCommandID);
void ExportMeshToFile(int theCommandID);
void SetDisplayMode(int theCommandID);
void SetDisplayEntity(int theCommandID);
@ -255,111 +254,6 @@ namespace{
}
}
void ExportMeshToFile( int theCommandID )
{
SalomeApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
SALOME_ListIO selected;
if( aSel )
aSel->selectedObjects( selected );
if(selected.Extent()){
Handle(SALOME_InteractiveObject) anIObject = selected.First();
SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIObject);
if ( !aMesh->_is_nil() ) {
QString aFilter, aTitle = QObject::tr("Export mesh");
QMap<QString, SMESH::MED_VERSION> aFilterMap;
switch ( theCommandID ) {
case 125:
case 122:
aFilterMap.insert( QObject::tr("MED 2.1 (*.med)"), SMESH::MED_V2_1 );
aFilterMap.insert( QObject::tr("MED 2.2 (*.med)"), SMESH::MED_V2_2 );
break;
case 124:
case 121:
aFilter = QObject::tr("DAT files (*.dat)");
break;
case 126:
case 123: {
if(aMesh->NbPyramids()){
int aRet = SUIT_MessageBox::warn2(SMESHGUI::desktop(),
QObject::tr("SMESH_WRN_WARNING"),
QObject::tr("SMESH_EXPORT_UNV").arg(anIObject->getName()),
QObject::tr("SMESH_BUT_YES"),
QObject::tr("SMESH_BUT_NO"),
0,1,0);
if(aRet)
return;
}
aFilter = QObject::tr("IDEAS files (*.unv)");
break;
default:
return;
}}
QString aFilename;
SMESH::MED_VERSION aFormat;
if ( theCommandID != 122 && theCommandID != 125 )
aFilename = SUIT_FileDlg::getFileName(SMESHGUI::desktop(), "", aFilter, aTitle, false);
else
{
QStringList filters;
for ( QMap<QString, SMESH::MED_VERSION>::const_iterator it = aFilterMap.begin(); it != aFilterMap.end(); ++it )
filters.push_back( it.key() );
SUIT_FileDlg* fd = new SUIT_FileDlg( SMESHGUI::desktop(), false, true, true );
fd->setCaption( aTitle );
fd->setFilters( filters );
bool is_ok = false;
while(!is_ok){
fd->exec();
aFilename = fd->selectedFile();
aFormat = aFilterMap[fd->selectedFilter()];
is_ok = true;
if( !aFilename.isEmpty()
&& (aMesh->NbPolygons()>0 or aMesh->NbPolyhedrons()>0)
&& aFormat==SMESH::MED_V2_1){
int aRet = SUIT_MessageBox::warn2(SMESHGUI::desktop(),
QObject::tr("SMESH_WRN_WARNING"),
QObject::tr("SMESH_EXPORT_MED_V2_1").arg(anIObject->getName()),
QObject::tr("SMESH_BUT_YES"),
QObject::tr("SMESH_BUT_NO"),
0,1,0);
if(aRet){
is_ok = false;
}
}
}
delete fd;
}
if ( !aFilename.isEmpty() ) {
// Check whether the file already exists and delete it if yes
QFile aFile( aFilename );
if ( aFile.exists() )
aFile.remove();
SUIT_OverrideCursor wc;
switch ( theCommandID ) {
case 125:
case 122:
aMesh->ExportToMED( aFilename.latin1(), false, aFormat ); // currently, automatic groups are never created
break;
case 124:
case 121:
aMesh->ExportDAT( aFilename.latin1() );
break;
case 126:
case 123:
aMesh->ExportUNV( aFilename.latin1() );
break;
default:
break;
}
}
}
}
}
inline void InverseEntityMode(unsigned int& theOutputMode,
unsigned int theMode)
{
@ -1026,7 +920,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
case 125:
case 126:
{
::ExportMeshToFile(theCommandID);
startOperation( theCommandID );
//::ExportMeshToFile(theCommandID);
break;
}
@ -1631,12 +1526,13 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
}
else
new SMESHGUI_MeshInfosDlg(this, "", false);
startOperation( 900 );
break;
}
case 902: // STANDARD MESH INFOS
{
EmitSignalDeactivateDialog();
/* EmitSignalDeactivateDialog();
SalomeApp_SelectionMgr *aSel = SMESHGUI::selectionMgr();
SALOME_ListIO selected;
if( aSel )
@ -1655,7 +1551,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
aSel->setSelectedObjects( selected );
}
else
new SMESHGUI_StandardMeshInfosDlg( this, "", false);
new SMESHGUI_StandardMeshInfosDlg( this, "", false);*/
startOperation( 902 );
break;
}
@ -3282,7 +3179,27 @@ SalomeApp_Operation* SMESHGUI::createOperation( const int id ) const
case 413:
op = new SMESHGUI_ExtrusionOp();
break;
/* case 900:
op = new SMESHGUI_MeshInfosOp();
break;*/
case 902:
op = new SMESHGUI_StandardMeshInfosOp();
break;
case 121: case 124:
op = new SMESHGUI_ExportMeshOp( SMESHGUI_ExportMeshOp::DAT );
break;
case 122: case 125:
op = new SMESHGUI_ExportMeshOp( SMESHGUI_ExportMeshOp::MED );
break;
case 123: case 126:
op = new SMESHGUI_ExportMeshOp( SMESHGUI_ExportMeshOp::UNV );
break;
default:
op = SalomeApp_Module::createOperation( id );
break;

View File

@ -0,0 +1,177 @@
// SMESH SMESHGUI : GUI for SMESH component
//
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
//
//
//
// File : SMESHGUI_ExportMeshOp.cxx
// Author : Alexander SOLOVYOV
// Module : SMESH
// $Header$
#include "SMESHGUI_ExportMeshOp.h"
#include <SMESHGUI_MeshUtils.h>
#include <SMESHGUI_Utils.h>
#include <SalomeApp_SelectionMgr.h>
#include <SUIT_FileDlg.h>
#include <SUIT_MessageBox.h>
#include <SUIT_Desktop.h>
#include <SUIT_OverrideCursor.h>
#include <SALOME_ListIO.hxx>
//=================================================================================
// function :
// purpose :
//=================================================================================
SMESHGUI_ExportMeshOp::SMESHGUI_ExportMeshOp( const Type t )
: SMESHGUI_Operation(),
myType( t )
{
}
//=================================================================================
// function :
// purpose :
//=================================================================================
SMESHGUI_ExportMeshOp::~SMESHGUI_ExportMeshOp()
{
}
//=================================================================================
// function :
// purpose :
//=================================================================================
void SMESHGUI_ExportMeshOp::startOperation()
{
SMESHGUI_Operation::startOperation();
SalomeApp_SelectionMgr *aSel = selectionMgr();
SALOME_ListIO selected;
if( aSel )
aSel->selectedObjects( selected );
if( selected.Extent()==0 )
{
abort();
return;
}
Handle(SALOME_InteractiveObject) anIObject = selected.First();
SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIObject);
if( !aMesh->_is_nil() )
{
QString aFilter, aTitle = QObject::tr("Export mesh");
QMap<QString, SMESH::MED_VERSION> aFilterMap;
switch( myType )
{
case MED:
aFilterMap.insert( QObject::tr("MED 2.1 (*.med)"), SMESH::MED_V2_1 );
aFilterMap.insert( QObject::tr("MED 2.2 (*.med)"), SMESH::MED_V2_2 );
break;
case DAT:
aFilter = QObject::tr("DAT files (*.dat)");
break;
case UNV:
if( aMesh->NbPyramids() )
{
int aRet = SUIT_MessageBox::warn2( desktop(), tr("SMESH_WRN_WARNING"),
tr("SMESH_EXPORT_UNV").arg(anIObject->getName()), tr("SMESH_BUT_YES"),
tr("SMESH_BUT_NO"), 0,1,0 );
if(aRet)
{
abort();
return;
}
}
aFilter = QObject::tr("IDEAS files (*.unv)");
break;
default:
abort();
return;
}
QString aFilename;
SMESH::MED_VERSION aFormat;
if( myType!=MED )
aFilename = SUIT_FileDlg::getFileName( desktop(), "", aFilter, aTitle, false );
else
{
QStringList filters;
for( QMap<QString, SMESH::MED_VERSION>::const_iterator it = aFilterMap.begin(); it != aFilterMap.end(); ++it )
filters.push_back( it.key() );
SUIT_FileDlg* fd = new SUIT_FileDlg( desktop(), false, true, true );
fd->setCaption( aTitle );
fd->setFilters( filters );
bool is_ok = false;
while( !is_ok )
{
fd->exec();
aFilename = fd->selectedFile();
aFormat = aFilterMap[fd->selectedFilter()];
is_ok = true;
if( !aFilename.isEmpty() && (aMesh->NbPolygons()>0 or aMesh->NbPolyhedrons()>0 ) && aFormat==SMESH::MED_V2_1)
{
int aRet = SUIT_MessageBox::warn2( desktop(), tr("SMESH_WRN_WARNING"),
tr("SMESH_EXPORT_MED_V2_1").arg(anIObject->getName()), tr("SMESH_BUT_YES"),
tr("SMESH_BUT_NO"), 0,1,0 );
if(aRet)
is_ok = false;
}
}
delete fd;
}
if( !aFilename.isEmpty() )
{
// Check whether the file already exists and delete it if yes
QFile aFile( aFilename );
if( aFile.exists() )
aFile.remove();
SUIT_OverrideCursor wc;
switch( myType )
{
case MED:
aMesh->ExportToMED( aFilename.latin1(), false, aFormat ); // currently, automatic groups are never created
break;
case DAT:
aMesh->ExportDAT( aFilename.latin1() );
break;
case UNV:
aMesh->ExportUNV( aFilename.latin1() );
break;
default:
abort();
return;
}
commit();
return;
}
}
abort();
}

View File

@ -0,0 +1,54 @@
// SMESH SMESHGUI : GUI for SMESH component
//
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
//
//
//
// File : SMESHGUI_ExportMeshOp.h
// Author : Alexander SOLOVYOV
// Module : SMESH
// $Header$
#ifndef OPERATION_EXPORT_MESH_H
#define OPERATION_EXPORT_MESH_H
#include <SMESHGUI_Operation.h>
class SMESHGUI_ExportMeshOp : public SMESHGUI_Operation
{
public:
typedef enum
{
MED, DAT, UNV
} Type;
public:
SMESHGUI_ExportMeshOp( const Type );
~SMESHGUI_ExportMeshOp();
protected:
virtual void startOperation();
private:
Type myType;
};
#endif

View File

@ -70,8 +70,9 @@ void SMESHGUI_Operation::startOperation()
if( dlg()->testButtonFlags( QtxDialog::Cancel ) )
connect( dlg(), SIGNAL( dlgCancel() ), this, SLOT( onCancel() ) );
if( dlg()->testButtonFlags( QtxDialog::Close ) )
connect( dlg(), SIGNAL( dlgClose() ), this, SLOT( onCancel() ) );
//if( dlg()->testButtonFlags( QtxDialog::Close ) )
//if dialog hasn't close, cancel, no and etc buttons, dlgClose will be emitted when dialog is closed not by OK
connect( dlg(), SIGNAL( dlgClose() ), this, SLOT( onCancel() ) );
initDialog();
}

View File

@ -26,44 +26,13 @@
// Module : SMESH
// $Header$
#include "SMESHGUI_StandardMeshInfosDlg.h"
#include <SMESHGUI_StandardMeshInfosDlg.h>
#include "SMESHGUI.h"
#include "SMESHGUI_Utils.h"
#include "SMESHGUI_MeshUtils.h"
#include <SMESH_Type.h>
#include "SMESH.hxx"
#include "SMESH_TypeFilter.hxx"
#include "SALOMEDSClient_Study.hxx"
#include "SALOMEDSClient_SObject.hxx"
#include "SUIT_Desktop.h"
#include "SUIT_Session.h"
#include "SUIT_OverrideCursor.h"
#include "SalomeApp_SelectionMgr.h"
#include "SALOME_ListIO.hxx"
#include "utilities.h"
// QT Includes
#include <qgroupbox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qgroupbox.h>
#include <qtextbrowser.h>
#include <qmap.h>
#include <qpushbutton.h>
// IDL Headers
#include "SALOMEconfig.h"
#include CORBA_SERVER_HEADER(SMESH_Mesh)
#include CORBA_SERVER_HEADER(SMESH_Group)
#include CORBA_SERVER_HEADER(GEOM_Gen)
using namespace std;
//=================================================================================
/*!
@ -72,107 +41,41 @@ using namespace std;
* Constructor
*/
//=================================================================================
SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg( SMESHGUI* theModule, const char* name,
bool modal, WFlags fl)
: QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
WStyle_Title | WStyle_SysMenu | WDestructiveClose),
mySMESHGUI( theModule ),
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg()
: SMESHGUI_Dialog( false, false, OK )
{
if (!name)
setName("SMESHGUI_StandardMeshInfosDlg");
setCaption(tr("SMESH_STANDARD_MESHINFO_TITLE" ));
setSizeGripEnabled(TRUE);
myStartSelection = true;
myIsActiveWindow = true;
resize( 300, 200 );
// dialog layout
QGridLayout* aDlgLayout = new QGridLayout(this);
aDlgLayout->setSpacing(6);
aDlgLayout->setMargin(11);
QVBoxLayout* main = new QVBoxLayout( mainFrame(), 0, 5 );
// mesh group box
myMeshGroup = new QGroupBox(this, "myMeshGroup");
myMeshGroup->setTitle(tr("SMESH_MESH"));
myMeshGroup->setColumnLayout(0, Qt::Vertical);
myMeshGroup->layout()->setSpacing(0);
myMeshGroup->layout()->setMargin(0);
QGridLayout* myMeshGroupLayout = new QGridLayout(myMeshGroup->layout());
myMeshGroupLayout->setAlignment(Qt::AlignTop);
myMeshGroupLayout->setSpacing(6);
myMeshGroupLayout->setMargin(11);
QGroupBox* MeshGroup = new QGroupBox( mainFrame(), "myMeshGroup");
MeshGroup->setTitle(tr("SMESH_MESH"));
MeshGroup->setColumnLayout(3, Qt::Horizontal);
MeshGroup->layout()->setSpacing(0);
MeshGroup->layout()->setMargin(5);
// select button, label and line edit with mesh name
myNameLab = new QLabel(myMeshGroup, "myNameLab");
myNameLab->setText(tr("SMESH_NAME" ));
myMeshGroupLayout->addWidget(myNameLab, 0, 0);
createObject( tr("SMESH_NAME" ), MeshGroup, 0 );
setNameIndication( 0, OneName );
setObjectType( 0, prefix( "SMESH" ) + MESH, -1 );
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("SMESH",tr("ICON_SELECT")));
mySelectBtn = new QPushButton(myMeshGroup, "mySelectBtn");
mySelectBtn->setPixmap(image0);
mySelectBtn->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
myMeshGroupLayout->addWidget(mySelectBtn, 0, 1);
myMeshLine = new QLineEdit(myMeshGroup, "myMeshLine");
myMeshGroupLayout->addWidget(myMeshLine, 0, 2);
aDlgLayout->addWidget(myMeshGroup, 0, 0);
main->addWidget( MeshGroup );
// information group box
myInfoGroup = new QGroupBox(this, "myInfoGroup");
myInfoGroup->setTitle(tr("SMESH_INFORMATION"));
myInfoGroup->setColumnLayout(0, Qt::Vertical);
myInfoGroup->layout()->setSpacing(0);
myInfoGroup->layout()->setMargin(0);
QGridLayout* myInfoGroupLayout = new QGridLayout(myInfoGroup->layout());
myInfoGroupLayout->setAlignment(Qt::AlignTop);
myInfoGroupLayout->setSpacing(6);
myInfoGroupLayout->setMargin(11);
QGroupBox* InfoGroup = new QGroupBox( mainFrame(), "myInfoGroup");
InfoGroup->setTitle(tr("SMESH_INFORMATION"));
InfoGroup->setColumnLayout(1, Qt::Vertical);
InfoGroup->layout()->setSpacing(0);
InfoGroup->layout()->setMargin(5);
// information text browser
myInfo = new QTextBrowser(myInfoGroup, "myInfo");
myInfoGroupLayout->addWidget(myInfo, 0, 0);
myInfo = new QTextBrowser( InfoGroup, "myInfo");
aDlgLayout->addWidget(myInfoGroup, 1, 0);
main->addWidget( InfoGroup );
// buttons group
myButtonsGroup = new QGroupBox(this, "myButtonsGroup");
myButtonsGroup->setColumnLayout(0, Qt::Vertical);
myButtonsGroup->layout()->setSpacing(0); myButtonsGroup->layout()->setMargin(0);
QHBoxLayout* myButtonsGroupLayout = new QHBoxLayout(myButtonsGroup->layout());
myButtonsGroupLayout->setAlignment(Qt::AlignTop);
myButtonsGroupLayout->setSpacing(6); myButtonsGroupLayout->setMargin(11);
// buttons --> OK button
myOkBtn = new QPushButton(tr("SMESH_BUT_OK" ), myButtonsGroup, "myOkBtn");
myOkBtn->setAutoDefault(TRUE); myOkBtn->setDefault(TRUE);
myButtonsGroupLayout->addStretch();
myButtonsGroupLayout->addWidget(myOkBtn);
myButtonsGroupLayout->addStretch();
aDlgLayout->addWidget(myButtonsGroup, 2, 0);
mySMESHGUI->SetActiveDialogBox(this);
// connect signals
connect( myOkBtn, SIGNAL(clicked()), this, SLOT(close()));
connect( mySelectBtn, SIGNAL(clicked()), this, SLOT(onStartSelection()));
connect( mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(close()));
connect( mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
// resize and move dialog, then show
this->setMinimumSize(270, 428);
int x, y;
mySMESHGUI->DefineDlgPosition(this, x, y);
this->move(x, y);
this->show();
// init dialog with current selection
myMeshFilter = new SMESH_TypeFilter (MESH);
mySelectionMgr->installFilter(myMeshFilter);
onSelectionChanged();
}
//=================================================================================
@ -188,259 +91,12 @@ SMESHGUI_StandardMeshInfosDlg::~SMESHGUI_StandardMeshInfosDlg()
//=================================================================================
/*!
* SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos
* SMESHGUI_StandardMeshInfosDlg::setInfo
*
* Set text to text browser
*/
//=================================================================================
void SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos()
void SMESHGUI_StandardMeshInfosDlg::setInfo( const QString& text )
{
SUIT_OverrideCursor wc;
SALOME_ListIO aList;
mySelectionMgr->selectedObjects(aList);
int nbSel = aList.Extent();
myInfo->clear();
if (nbSel == 1) {
myStartSelection = false;
myMeshLine->setText("");
SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(aList.First());
if (!aMesh->_is_nil()) {
QString aName, anInfo;
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);
myMeshLine->setText(aName);
int aNbNodes = (int)aMesh->NbNodes();
int aNbEdges = (int)aMesh->NbEdges();
int aNbFaces = (int)aMesh->NbFaces();
int aNbVolumes = (int)aMesh->NbVolumes();
int aDimension = 0;
double aNbDimElements = 0;
if (aNbVolumes > 0) {
aNbDimElements = aNbVolumes;
aDimension = 3;
}
else if(aNbFaces > 0) {
aNbDimElements = aNbFaces;
aDimension = 2;
}
else if(aNbEdges > 0) {
aNbDimElements = aNbEdges;
aDimension = 1;
}
else if(aNbNodes > 0) {
aNbDimElements = aNbNodes;
aDimension = 0;
}
// information about the mesh
anInfo.append(QString("Nb of element of dimension %1:<b> %2</b><br>").arg(aDimension).arg(aNbDimElements));
anInfo.append(QString("Nb of nodes: <b>%1</b><br><br>").arg(aNbNodes));
// information about the groups of the mesh
_PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
_PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh);
_PTR(SObject) anObj;
bool hasGroup = false;
// info about groups on nodes
aMeshSO->FindSubObject(Tag_NodeGroups, anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (it->More()) {
anInfo.append(QString("Groups:<br><br>"));
hasGroup = true;
}
for (; it->More(); it->Next()) {
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if (!aGroup->_is_nil()) {
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on nodes"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if (!aGroupOnGeom->_is_nil()) {
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
} else {
anInfo.append(QString("<br>"));
}
}
}
}
// info about groups on edges
anObj.reset();
aMeshSO->FindSubObject(Tag_EdgeGroups, anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (!hasGroup && it->More()) {
anInfo.append(QString("Groups:<br><br>"));
hasGroup = true;
}
for (; it->More(); it->Next()) {
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if (!aGroup->_is_nil()) {
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on edges"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if (!aGroupOnGeom->_is_nil()) {
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
} else {
anInfo.append(QString("<br>"));
}
}
}
}
// info about groups on faces
anObj.reset();
aMeshSO->FindSubObject(Tag_FaceGroups , anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (!hasGroup && it->More()) {
anInfo.append(QString("Groups:<br><br>"));
hasGroup = true;
}
for (; it->More(); it->Next()) {
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if (!aGroup->_is_nil()) {
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on faces"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if (!aGroupOnGeom->_is_nil()) {
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
} else {
anInfo.append(QString("<br>"));
}
}
}
}
// info about groups on volumes
anObj.reset();
aMeshSO->FindSubObject(Tag_VolumeGroups, anObj);
if (anObj) {
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
if (!hasGroup && it->More())
anInfo.append(QString("Groups:<br>"));
for (; it->More(); it->Next()) {
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if (!aGroup->_is_nil()) {
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on volumes"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if (!aGroupOnGeom->_is_nil()) {
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
} else {
anInfo.append(QString("<br>"));
}
}
}
}
myInfo->setText(anInfo);
return;
}
}
}
//=================================================================================
// function : SelectionIntoArgument()
// purpose : Called when selection has changed
//=================================================================================
void SMESHGUI_StandardMeshInfosDlg::onSelectionChanged()
{
if (myStartSelection)
DumpMeshInfos();
}
//=================================================================================
// function : closeEvent()
// purpose :
//=================================================================================
void SMESHGUI_StandardMeshInfosDlg::closeEvent (QCloseEvent* e)
{
mySelectionMgr->clearFilters();
mySMESHGUI->ResetState();
QDialog::closeEvent(e);
}
//=================================================================================
// function : windowActivationChange()
// purpose : called when window is activated/deactivated
//=================================================================================
void SMESHGUI_StandardMeshInfosDlg::windowActivationChange (bool oldActive)
{
QDialog::windowActivationChange(oldActive);
if (isActiveWindow() && myIsActiveWindow != isActiveWindow())
ActivateThisDialog();
myIsActiveWindow = isActiveWindow();
}
//=================================================================================
// function : DeactivateActiveDialog()
// purpose :
//=================================================================================
void SMESHGUI_StandardMeshInfosDlg::DeactivateActiveDialog()
{
disconnect(mySelectionMgr, 0, this, 0);
}
//=================================================================================
// function : ActivateThisDialog()
// purpose :
//=================================================================================
void SMESHGUI_StandardMeshInfosDlg::ActivateThisDialog()
{
/* Emit a signal to deactivate any active dialog */
mySMESHGUI->EmitSignalDeactivateDialog();
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
}
//=================================================================================
// function : onStartSelection()
// purpose : starts selection
//=================================================================================
void SMESHGUI_StandardMeshInfosDlg::onStartSelection()
{
myStartSelection = true;
mySelectionMgr->installFilter(myMeshFilter);
myMeshLine->setText(tr("Select a mesh"));
onSelectionChanged();
myStartSelection = true;
myInfo->setText( text );
}

View File

@ -29,60 +29,22 @@
#ifndef SMESHGUI_STANDARDMESHINFOSDLG_H
#define SMESHGUI_STANDARDMESHINFOSDLG_H
//#include "SMESH_TypeFilter.hxx"
#include "SUIT_SelectionFilter.h"
#include <SMESHGUI_Dialog.h>
// QT Includes
#include <qdialog.h>
class QGroupBox;
class QLabel;
class QPushButton;
class QLineEdit;
class QTextBrowser;
class SalomeApp_SelectionMgr;
class SMESHGUI;
class SMESHGUI_StandardMeshInfosDlg : public QDialog
class SMESHGUI_StandardMeshInfosDlg : public SMESHGUI_Dialog
{
Q_OBJECT
public:
SMESHGUI_StandardMeshInfosDlg( SMESHGUI*, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
SMESHGUI_StandardMeshInfosDlg();
~SMESHGUI_StandardMeshInfosDlg();
protected:
void closeEvent( QCloseEvent* e );
void windowActivationChange( bool oldActive );
void DumpMeshInfos();
private slots:
void onSelectionChanged();
void DeactivateActiveDialog() ;
void ActivateThisDialog();
void onStartSelection();
void setInfo( const QString& );
private:
SMESHGUI* mySMESHGUI;
SalomeApp_SelectionMgr* mySelectionMgr;
bool myStartSelection;
bool myIsActiveWindow;
//Handle(SMESH_TypeFilter) myMeshFilter;
SUIT_SelectionFilter* myMeshFilter;
QLabel* myNameLab;
QPushButton* mySelectBtn;
QLineEdit* myMeshLine;
QTextBrowser* myInfo;
QGroupBox* myMeshGroup;
QGroupBox* myInfoGroup;
QGroupBox* myButtonsGroup;
QPushButton* myOkBtn;
};
#endif // SMESHGUI_STANDARDMESHINFOSDLG_H

View File

@ -0,0 +1,333 @@
// SMESH SMESHGUI : GUI for SMESH component
//
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
//
//
//
// File : SMESHGUI_StandardMeshInfosOp.cxx
// Author : Alexander SOLOVYOV
// Module : SMESH
// $Header$
#include "SMESHGUI_StandardMeshInfosOp.h"
#include <SMESHGUI_StandardMeshInfosDlg.h>
#include <SMESHGUI_Utils.h>
#include <SMESH.hxx>
#include <SMESH_TypeFilter.hxx>
#include <SUIT_OverrideCursor.h>
#include CORBA_SERVER_HEADER(SMESH_Gen)
#include CORBA_SERVER_HEADER(SMESH_Group)
#include <SALOMEDS_SObject.hxx>
//=================================================================================
// function : SMESHGUI_StandardMeshInfosOp()
// purpose : constructor
//=================================================================================
SMESHGUI_StandardMeshInfosOp::SMESHGUI_StandardMeshInfosOp()
: SMESHGUI_SelectionOp(),
myDlg( 0 )
{
}
//=================================================================================
// function : ~SMESHGUI_StandardMeshInfosOp()
// purpose : destructor
//=================================================================================
SMESHGUI_StandardMeshInfosOp::~SMESHGUI_StandardMeshInfosOp()
{
if( myDlg )
delete myDlg;
}
//=================================================================================
// function : dlg
// purpose :
//=================================================================================
SalomeApp_Dialog* SMESHGUI_StandardMeshInfosOp::dlg() const
{
return myDlg;
}
//=================================================================================
// function : startOperation
// purpose :
//=================================================================================
void SMESHGUI_StandardMeshInfosOp::startOperation()
{
if( !myDlg )
myDlg = new SMESHGUI_StandardMeshInfosDlg();
SMESHGUI_SelectionOp::startOperation();
myDlg->show();
}
//=================================================================================
// function : createFilter
// purpose :
//=================================================================================
SUIT_SelectionFilter* SMESHGUI_StandardMeshInfosOp::createFilter( const int ) const
{
return new SMESH_TypeFilter( MESH );
}
//=================================================================================
// function : fillMeshInfos
// purpose :
//=================================================================================
void SMESHGUI_StandardMeshInfosOp::fillMeshInfos()
{
if( !myDlg )
return;
SUIT_OverrideCursor wc;
QStringList ids; myDlg->selectedObject( 0, ids );
if( ids.count()==0 )
{
myDlg->setInfo( "" );
return;
}
_PTR(SObject) SO = studyDS()->FindObjectID( ids.first() ), anObj;
if( !SO )
{
myDlg->setInfo( "" );
return;
}
SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( _CAST(SObject,SO)->GetObject() );
if( aMesh->_is_nil() )
{
myDlg->setInfo( "" );
return;
}
QString anInfo;
int aNbNodes = (int)aMesh->NbNodes();
int aNbEdges = (int)aMesh->NbEdges();
int aNbFaces = (int)aMesh->NbFaces();
int aNbVolumes = (int)aMesh->NbVolumes();
int aDimension = 0;
double aNbDimElements = 0;
if( aNbVolumes > 0 )
{
aNbDimElements = aNbVolumes;
aDimension = 3;
}
else if( aNbFaces > 0 )
{
aNbDimElements = aNbFaces;
aDimension = 2;
}
else if( aNbEdges > 0 )
{
aNbDimElements = aNbEdges;
aDimension = 1;
}
else if( aNbNodes > 0 )
{
aNbDimElements = aNbNodes;
aDimension = 0;
}
// information about the mesh
anInfo.append(QString("Nb of element of dimension %1:<b> %2</b><br>").arg(aDimension).arg(aNbDimElements));
anInfo.append(QString("Nb of nodes: <b>%1</b><br><br>").arg(aNbNodes));
bool hasGroup = false;
// info about groups on nodes
SO->FindSubObject( Tag_NodeGroups, anObj );
if( anObj )
{
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
if( it->More() )
{
anInfo.append(QString("Groups:<br><br>"));
hasGroup = true;
for( ; it->More(); it->Next() )
{
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if( !aGroup->_is_nil() )
{
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on nodes"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if (!aGroupOnGeom->_is_nil())
{
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
}
else
anInfo.append(QString("<br>"));
}
}
}
// info about groups on edges
anObj.reset();
SO->FindSubObject(Tag_EdgeGroups, anObj);
if( anObj )
{
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
if( !hasGroup && it->More() )
{
anInfo.append(QString("Groups:<br><br>"));
hasGroup = true;
}
for( ; it->More(); it->Next() )
{
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if( !aGroup->_is_nil() )
{
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on edges"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if( !aGroupOnGeom->_is_nil() )
{
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if( subObj->FindSubObject( 1, aGeomObj ) && aGeomObj->ReferencedObject( aRef ) )
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
}
else
anInfo.append(QString("<br>"));
}
}
}
// info about groups on faces
anObj.reset();
SO->FindSubObject( Tag_FaceGroups, anObj );
if (anObj)
{
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
if( !hasGroup && it->More() )
{
anInfo.append(QString("Groups:<br><br>"));
hasGroup = true;
}
for( ; it->More(); it->Next() )
{
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if( !aGroup->_is_nil() )
{
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on faces"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if( !aGroupOnGeom->_is_nil() )
{
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
}
else
anInfo.append(QString("<br>"));
}
}
}
// info about groups on volumes
anObj.reset();
SO->FindSubObject( Tag_VolumeGroups, anObj );
if( anObj )
{
_PTR(ChildIterator) it = studyDS()->NewChildIterator(anObj);
if( !hasGroup && it->More() )
anInfo.append(QString("Groups:<br>"));
for( ; it->More(); it->Next() )
{
_PTR(SObject) subObj = it->Value();
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
if( !aGroup->_is_nil() )
{
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
anInfo.append(QString("%1<br>").arg("on volumes"));
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
// check if the group based on geometry
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
if( !aGroupOnGeom->_is_nil() )
{
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
QString aShapeName = "<unknown>";
_PTR(SObject) aGeomObj, aRef;
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
aShapeName = aRef->GetName().c_str();
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
}
else
anInfo.append(QString("<br>"));
}
}
}
}
myDlg->setInfo(anInfo);
}
//=================================================================================
// function : onOk
// purpose :
//=================================================================================
void SMESHGUI_StandardMeshInfosOp::onOk()
{
commit();
}
//=================================================================================
// function : onSelectionChanged
// purpose :
//=================================================================================
void SMESHGUI_StandardMeshInfosOp::onSelectionChanged( int )
{
fillMeshInfos();
}

View File

@ -0,0 +1,59 @@
// SMESH SMESHGUI : GUI for SMESH component
//
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
//
//
//
// File : SMESHGUI_StandardMeshInfos.h
// Author : Alexander SOLOVYOV
// Module : SMESH
// $Header:
#ifndef SMESHGUI_STANDARDMESHINFOSOP_H
#define SMESHGUI_STANDARDMESHINFOSOP_H
#include <SMESHGUI_SelectionOp.h>
class SMESHGUI_StandardMeshInfosDlg;
class SMESHGUI_StandardMeshInfosOp : public SMESHGUI_SelectionOp
{
Q_OBJECT
public:
SMESHGUI_StandardMeshInfosOp();
~SMESHGUI_StandardMeshInfosOp();
virtual SalomeApp_Dialog* dlg() const;
protected:
virtual void startOperation();
virtual SUIT_SelectionFilter* createFilter( const int ) const;
void fillMeshInfos();
protected slots:
virtual void onOk();
virtual void onSelectionChanged( int );
private:
SMESHGUI_StandardMeshInfosDlg* myDlg;
};
#endif // SMESHGUI_STANDARDMESHINFOSOP_H