#include <SMESHGUI_MeshPatternDlg.h>

Public Member Functions | |
| SMESHGUI_MeshPatternDlg (SMESHGUI *) | |
| Class : SMESHGUI_MeshPatternDlg Description : Dialog to specify filters for VTK viewer. | |
| virtual | ~SMESHGUI_MeshPatternDlg () |
| void | Init () |
Private Types | |
| enum | { Type_2d, Type_3d } |
| enum | { Mesh, Object, Vertex1, Vertex2, Ids } |
Private Slots | |
| void | onOk () |
| bool | onApply () |
| void | onClose () |
| void | onHelp () |
| void | onDeactivate () |
| void | onSelectionDone () |
| void | onSelInputChanged () |
| void | onTypeChanged (int) |
| void | onModeToggled (bool) |
| void | onOpen () |
| void | onNew () |
| void | onReverse (bool) |
| void | onPreview (bool) |
| void | onOkCreationDlg () |
| void | onCloseCreationDlg () |
| void | onTextChanged (const QString &) |
| void | onNodeChanged (int) |
Private Member Functions | |
| QWidget * | createButtonFrame (QWidget *) |
| QWidget * | createMainFrame (QWidget *) |
| void | displayPreview () |
| vtkUnstructuredGrid * | getGrid () |
| void | erasePreview () |
| void | updateWgState () |
| bool | loadFromFile (const QString &) |
| void | activateSelection () |
| QStringList | prepareFilters () const |
| QString | autoExtension (const QString &) const |
| void | closeEvent (QCloseEvent *) |
| void | enterEvent (QEvent *) |
| void | keyPressEvent (QKeyEvent *) |
| bool | isValid (const bool=true) |
| void | resetSelInput () |
| bool | isRefine () const |
| bool | getIds (QList< int > &) const |
| int | getNode (bool=false) const |
Private Attributes | |
| QPushButton * | myOkBtn |
| QPushButton * | myApplyBtn |
| QPushButton * | myCloseBtn |
| QPushButton * | myHelpBtn |
| QButtonGroup * | myTypeGrp |
| QRadioButton * | mySwitch2d |
| QRadioButton * | mySwitch3d |
| QCheckBox * | myRefine |
| QFrame * | myRefineGrp |
| SalomeApp_IntSpinBox * | myNode1 |
| SalomeApp_IntSpinBox * | myNode2 |
| QLabel * | myNode2Lbl |
| QFrame * | myGeomGrp |
| QMap< int, QPushButton * > | mySelBtn |
| QMap< int, QLineEdit * > | mySelEdit |
| QMap< int, QLabel * > | mySelLbl |
| QLineEdit * | myName |
| QPushButton * | myOpenBtn |
| QPushButton * | myNewBtn |
| QCheckBox * | myReverseChk |
| QCheckBox * | myCreatePolygonsChk |
| QCheckBox * | myCreatePolyedrsChk |
| SMESHGUI_PatternWidget * | myPicture2d |
| QLabel * | myPicture3d |
| QCheckBox * | myPreviewChk |
| SMESHGUI * | mySMESHGUI |
| SVTK_Selector * | mySelector |
| LightApp_SelectionMgr * | mySelectionMgr |
| int | mySelInput |
| int | myNbPoints |
| int | myType |
| bool | myIsCreateDlgOpen |
| bool | myBusy |
| SMESH::SMESH_Mesh_var | myMesh |
| GEOM::GEOM_Object_var | myMeshShape |
| QMap< int, GEOM::GEOM_Object_var > | myGeomObj |
| SMESHGUI_CreatePatternDlg * | myCreationDlg |
| SMESH::SMESH_Pattern_var | myPattern |
| SALOME_Actor * | myPreviewActor |
| QString | myHelpFileName |
Definition at line 62 of file SMESHGUI_MeshPatternDlg.h.
anonymous enum [private] |
Definition at line 67 of file SMESHGUI_MeshPatternDlg.h.
anonymous enum [private] |
| SMESHGUI_MeshPatternDlg::SMESHGUI_MeshPatternDlg | ( | SMESHGUI * | theModule | ) |
Class : SMESHGUI_MeshPatternDlg Description : Dialog to specify filters for VTK viewer.
Definition at line 108 of file SMESHGUI_MeshPatternDlg.cxx.
References createButtonFrame(), createMainFrame(), SMESH.GetSelector(), SMESH.GetViewWindow(), Init(), MARGIN, myHelpFileName, mySelector, mySMESHGUI, and SPACING.
: QDialog( SMESH::GetDesktop( theModule ) ), mySMESHGUI( theModule ), mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ), myBusy( false ), myCreationDlg( 0 ) { setModal( false ); setWindowTitle( tr( "CAPTION" ) ); QVBoxLayout* aDlgLay = new QVBoxLayout( this ); aDlgLay->setMargin( MARGIN ); aDlgLay->setSpacing( SPACING ); QWidget* aMainFrame = createMainFrame ( this ); QWidget* aBtnFrame = createButtonFrame( this ); aDlgLay->addWidget( aMainFrame ); aDlgLay->addWidget( aBtnFrame ); aDlgLay->setStretchFactor( aMainFrame, 1 ); mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector(); myHelpFileName = "pattern_mapping_page.html"; Init(); }
| SMESHGUI_MeshPatternDlg::~SMESHGUI_MeshPatternDlg | ( | ) | [virtual] |
Definition at line 366 of file SMESHGUI_MeshPatternDlg.cxx.
{
}
| void SMESHGUI_MeshPatternDlg::activateSelection | ( | ) | [private] |
Definition at line 1070 of file SMESHGUI_MeshPatternDlg.cxx.
References SMESH.FindActorByObject(), SMESH.GetViewWindow(), Ids, myGeomObj, myMesh, myMeshShape, myNbPoints, mySelectionMgr, mySelInput, mySMESHGUI, myType, Object, SMESH.SetPickable(), Type_2d, Vertex1, and Vertex2.
Referenced by enterEvent(), Init(), onSelInputChanged(), onTextChanged(), and onTypeChanged().
{
mySelectionMgr->clearFilters();
if (mySelInput == Ids) {
SMESH_Actor* anActor = SMESH::FindActorByObject(myMesh);
if (anActor)
SMESH::SetPickable(anActor);
if (myType == Type_2d)
{
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->SetSelectionMode(FaceSelection);
}
else
{
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->SetSelectionMode(CellSelection);
}
}
else {
SMESH::SetPickable();
//mySelectionMgr->setSelectionModes(ActorSelection);
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->SetSelectionMode(ActorSelection);
}
if (mySelInput == Object && !myMeshShape->_is_nil()) {
if (myType == Type_2d) {
if (myNbPoints > 0)
mySelectionMgr->installFilter
(new SMESH_NumberFilter ("GEOM", TopAbs_VERTEX, myNbPoints, TopAbs_FACE, myMeshShape));
else
mySelectionMgr->installFilter
(new SMESH_NumberFilter ("GEOM", TopAbs_SHAPE, myNbPoints, TopAbs_FACE, myMeshShape));
} else {
TColStd_MapOfInteger aTypes;
aTypes.Add(TopAbs_SHELL);
aTypes.Add(TopAbs_SOLID);
mySelectionMgr->installFilter
(new SMESH_NumberFilter ("GEOM", TopAbs_FACE, 6, aTypes, myMeshShape, true));
}
} else if ((mySelInput == Vertex1 || mySelInput == Vertex2) && !myGeomObj[ Object ]->_is_nil()) {
mySelectionMgr->installFilter
(new SMESH_NumberFilter ("GEOM", TopAbs_SHAPE, 1, TopAbs_VERTEX, myGeomObj[ Object ]));
} else {
}
}
| QString SMESHGUI_MeshPatternDlg::autoExtension | ( | const QString & | theFileName | ) | const [private] |
Definition at line 771 of file SMESHGUI_MeshPatternDlg.cxx.
References SMESH_Nut.theFileName.
Referenced by onOpen().
{
QString anExt = theFileName.section('.', -1);
return anExt != "smp" && anExt != "SMP" ? theFileName + ".smp" : theFileName;
}
| void SMESHGUI_MeshPatternDlg::closeEvent | ( | QCloseEvent * | ) | [private] |
Definition at line 333 of file SMESHGUI_MeshPatternDlg.cxx.
References MARGIN, myApplyBtn, myCloseBtn, myHelpBtn, myOkBtn, onApply(), onClose(), onHelp(), onOk(), and SPACING.
Referenced by SMESHGUI_MeshPatternDlg().
{
QFrame* aFrame = new QFrame(theParent);
aFrame->setFrameStyle(QFrame::Box | QFrame::Sunken);
myOkBtn = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), aFrame);
myApplyBtn = new QPushButton(tr("SMESH_BUT_APPLY"), aFrame);
myCloseBtn = new QPushButton(tr("SMESH_BUT_CLOSE"), aFrame);
myHelpBtn = new QPushButton(tr("SMESH_BUT_HELP"), aFrame);
QHBoxLayout* aLay = new QHBoxLayout( aFrame );
aLay->setMargin( MARGIN );
aLay->setSpacing( SPACING );
aLay->addWidget(myOkBtn);
aLay->addWidget(myApplyBtn);
aLay->addSpacing( 10 );
aLay->addStretch();
aLay->addWidget(myCloseBtn);
aLay->addWidget(myHelpBtn);
connect(myOkBtn, SIGNAL(clicked()), SLOT(onOk()));
connect(myCloseBtn, SIGNAL(clicked()), SLOT(onClose()));
connect(myApplyBtn, SIGNAL(clicked()), SLOT(onApply()));
connect(myHelpBtn, SIGNAL(clicked()), SLOT(onHelp()));
return aFrame;
}
Definition at line 141 of file SMESHGUI_MeshPatternDlg.cxx.
References SMESH.GetResourceMgr(), Ids, MARGIN, Mesh, myCreatePolyedrsChk, myCreatePolygonsChk, myGeomGrp, myName, myNewBtn, myNode1, myNode2, myNode2Lbl, myOpenBtn, myPicture2d, myPicture3d, myPreviewChk, myRefine, myRefineGrp, myReverseChk, mySelBtn, mySelEdit, mySelLbl, mySMESHGUI, mySwitch2d, mySwitch3d, myTypeGrp, Object, onModeToggled(), onNew(), onNodeChanged(), onOpen(), onPreview(), onReverse(), onSelInputChanged(), onTextChanged(), onTypeChanged(), SPACING, Type_2d, Type_3d, and Vertex2.
Referenced by SMESHGUI_MeshPatternDlg().
{
SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI );
QPixmap iconSlct ( mgr->loadPixmap( "SMESH", tr( "ICON_SELECT" ) ) );
QPixmap icon2d ( mgr->loadPixmap( "SMESH", tr( "ICON_PATTERN_2d" ) ) );
QPixmap icon3d ( mgr->loadPixmap( "SMESH", tr( "ICON_PATTERN_3d" ) ) );
QPixmap iconOpen ( mgr->loadPixmap( "STD", tr( "ICON_FILE_OPEN" ) ) );
QPixmap iconSample2d ( mgr->loadPixmap( "SMESH", tr( "ICON_PATTERN_SAMPLE_2D" ) ) );
QPixmap iconSample3d ( mgr->loadPixmap( "SMESH", tr( "ICON_PATTERN_SAMPLE_3D" ) ) );
QWidget* aMainGrp = new QWidget( theParent );
QVBoxLayout* aMainGrpLayout = new QVBoxLayout( aMainGrp );
aMainGrpLayout->setMargin( 0 );
aMainGrpLayout->setSpacing( SPACING );
// Pattern type group
QGroupBox* aTypeGrp = new QGroupBox( tr( "PATTERN_TYPE" ), aMainGrp );
QHBoxLayout* aTypeGrpLayout = new QHBoxLayout( aTypeGrp );
aTypeGrpLayout->setMargin( MARGIN );
aTypeGrpLayout->setSpacing( SPACING );
mySwitch2d = new QRadioButton( aTypeGrp );
mySwitch3d = new QRadioButton( aTypeGrp );
mySwitch2d->setIcon( icon2d );
mySwitch3d->setIcon( icon3d );
myTypeGrp = new QButtonGroup( aMainGrp );
myTypeGrp->addButton( mySwitch2d, Type_2d );
myTypeGrp->addButton( mySwitch3d, Type_3d );
// ... layout widgets
aTypeGrpLayout->addWidget( mySwitch2d );
aTypeGrpLayout->addWidget( mySwitch3d );
// Mesh group
QGroupBox* aMeshGrp = new QGroupBox( tr( "SMESH_MESH" ), aMainGrp );
QHBoxLayout* aMeshGrpLayout = new QHBoxLayout( aMeshGrp );
aMeshGrpLayout->setMargin( MARGIN );
aMeshGrpLayout->setSpacing( SPACING );
QLabel* aMeshLab = new QLabel( tr( "SMESH_MESH" ), aMeshGrp );
mySelBtn[ Mesh ] = new QPushButton( aMeshGrp );
mySelBtn[ Mesh ]->setIcon( iconSlct );
mySelEdit[ Mesh ] = new QLineEdit( aMeshGrp );
mySelEdit[ Mesh ]->setReadOnly( true );
// ... layout widgets
aMeshGrpLayout->addWidget( aMeshLab );
aMeshGrpLayout->addWidget( mySelBtn[ Mesh ] );
aMeshGrpLayout->addWidget( mySelEdit[ Mesh ] );
// Pattern group
QGroupBox* aPatGrp = new QGroupBox( tr( "PATTERN" ), aMainGrp );
QGridLayout* aPatGrpLayout = new QGridLayout( aPatGrp );
aPatGrpLayout->setMargin( MARGIN );
aPatGrpLayout->setSpacing( SPACING );
// ... Pattern name
QLabel* aNameLab = new QLabel( tr( "PATTERN" ), aPatGrp );
myName = new QLineEdit( aPatGrp );
myName->setReadOnly( true );
myOpenBtn = new QPushButton( aPatGrp );
myOpenBtn->setIcon( iconOpen );
myNewBtn = new QPushButton( tr( "NEW" ), aPatGrp );
// ... Mode selection check box
myRefine = new QCheckBox( tr( "REFINE" ), aPatGrp );
// ... selection widgets for Apply to geom mode
myGeomGrp = new QFrame( aPatGrp );
myGeomGrp->setFrameStyle( QFrame::NoFrame );
QGridLayout* myGeomGrpLayout = new QGridLayout( myGeomGrp );
myGeomGrpLayout->setMargin( 0 );
myGeomGrpLayout->setSpacing( SPACING );
for ( int i = Object; i <= Vertex2; i++ ) {
mySelLbl[ i ] = new QLabel( myGeomGrp );
mySelBtn[ i ] = new QPushButton( myGeomGrp );
mySelBtn[ i ]->setIcon( iconSlct );
mySelEdit[ i ] = new QLineEdit( myGeomGrp );
mySelEdit[ i ]->setReadOnly( true );
myGeomGrpLayout->addWidget( mySelLbl[ i ], i - Object, 0 );
myGeomGrpLayout->addWidget( mySelBtn[ i ], i - Object, 1 );
myGeomGrpLayout->addWidget( mySelEdit[ i ], i - Object, 2 );
}
// ... Widgets for refinement of existing mesh elements
myRefineGrp = new QFrame( aPatGrp );
myRefineGrp->setFrameStyle( QFrame::NoFrame );
QGridLayout* myRefineGrpLayout = new QGridLayout( myRefineGrp );
myRefineGrpLayout->setMargin( 0 );
myRefineGrpLayout->setSpacing( SPACING );
mySelLbl[ Ids ] = new QLabel( myRefineGrp );
mySelBtn[ Ids ] = new QPushButton( myRefineGrp );
mySelBtn[ Ids ]->setIcon( iconSlct );
mySelEdit[ Ids ] = new QLineEdit( myRefineGrp );
QLabel* aNodeLbl = new QLabel( tr( "NODE_1" ), myRefineGrp );
myNode1 = new SalomeApp_IntSpinBox( myRefineGrp );
myNode2Lbl = new QLabel( tr( "NODE_2" ), myRefineGrp );
myNode2 = new SalomeApp_IntSpinBox( myRefineGrp );
myRefineGrpLayout->addWidget( mySelLbl[ Ids ], 0, 0 );
myRefineGrpLayout->addWidget( mySelBtn[ Ids ], 0, 1 );
myRefineGrpLayout->addWidget( mySelEdit[ Ids ], 0, 2 );
myRefineGrpLayout->addWidget( aNodeLbl, 1, 0 );
myRefineGrpLayout->addWidget( myNode1, 1, 1, 1, 2 );
myRefineGrpLayout->addWidget( myNode2Lbl, 2, 0 );
myRefineGrpLayout->addWidget( myNode2, 2, 1, 1, 2 );
// ... reverse check box
myReverseChk = new QCheckBox( tr( "REVERSE" ), aPatGrp );
// ... CreatePoly check box
myCreatePolygonsChk = new QCheckBox( tr( "CREATE_POLYGONS_NEAR_BOUNDARY" ), aPatGrp );
myCreatePolyedrsChk = new QCheckBox( tr( "CREATE_POLYEDRS_NEAR_BOUNDARY" ), aPatGrp );
// ... Pictures 2d and 3d
myPicture2d = new SMESHGUI_PatternWidget( aPatGrp );
myPicture2d->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
myPicture3d = new QLabel( aPatGrp );
myPicture3d->setPixmap( iconSample3d );
myPicture3d->setScaledContents( false );
myPicture3d->setAlignment( Qt::AlignCenter );
myPicture3d->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
// ... preview check box
myPreviewChk = new QCheckBox( tr( "PREVIEW" ), aPatGrp );
// ... layout widgets
aPatGrpLayout->addWidget( aNameLab, 0, 0 );
aPatGrpLayout->addWidget( myName, 0, 1 );
aPatGrpLayout->addWidget( myOpenBtn, 0, 2 );
aPatGrpLayout->addWidget( myNewBtn, 0, 3 );
aPatGrpLayout->addWidget( myRefine, 1, 0, 1, 4 );
aPatGrpLayout->addWidget( myRefine, 1, 0, 1, 4 );
aPatGrpLayout->addWidget( myGeomGrp, 2, 0, 1, 4 );
aPatGrpLayout->addWidget( myRefineGrp, 3, 0, 1, 4 );
aPatGrpLayout->addWidget( myReverseChk, 4, 0, 1, 4 );
aPatGrpLayout->addWidget( myCreatePolygonsChk, 5, 0, 1, 4 );
aPatGrpLayout->addWidget( myCreatePolyedrsChk, 6, 0, 1, 4 );
aPatGrpLayout->addWidget( myPicture2d, 7, 0, 1, 4 );
aPatGrpLayout->addWidget( myPicture3d, 8, 0, 1, 4 );
aPatGrpLayout->addWidget( myPreviewChk, 9, 0, 1, 4 );
// main layout
aMainGrpLayout->addWidget( aTypeGrp );
aMainGrpLayout->addWidget( aMeshGrp );
aMainGrpLayout->addWidget( aPatGrp );
// Connect signals and slots
connect(myTypeGrp, SIGNAL(buttonClicked(int)), SLOT(onTypeChanged(int)));
connect(myOpenBtn, SIGNAL(clicked()), SLOT(onOpen()));
connect(myNewBtn, SIGNAL(clicked()), SLOT(onNew()));
connect(myReverseChk, SIGNAL(toggled(bool)), SLOT(onReverse(bool)));
connect(myPreviewChk, SIGNAL(toggled(bool)), SLOT(onPreview(bool)));
connect(myRefine, SIGNAL(toggled(bool)), SLOT(onModeToggled(bool)));
connect(myNode1, SIGNAL(valueChanged(int)), SLOT(onNodeChanged(int)));
connect(myNode2, SIGNAL(valueChanged(int)), SLOT(onNodeChanged(int)));
connect(mySelEdit[Ids], SIGNAL(textChanged(const QString&)), SLOT(onTextChanged(const QString&)));
QMap< int, QPushButton* >::iterator anIter;
for (anIter = mySelBtn.begin(); anIter != mySelBtn.end(); ++anIter)
connect(*anIter, SIGNAL(clicked()), SLOT(onSelInputChanged()));
return aMainGrp;
}
| void SMESHGUI_MeshPatternDlg::displayPreview | ( | ) | [private] |
Definition at line 905 of file SMESHGUI_MeshPatternDlg.cxx.
References erasePreview(), SMESH.FindActorByObject(), SMESH.GetCurrentVtkView(), SMESH.GetFloat(), getGrid(), SMESH_test.i2, SMESH_test.i3, isValid(), myMesh, myPattern, myPicture2d, myPreviewActor, myPreviewChk, SMESH_AdvancedEditor.n2, SMESH_AdvancedEditor.n3, SMESH_AdvancedEditor.n4, and SMESHGUI_PatternWidget.SetPoints().
Referenced by enterEvent(), onModeToggled(), onNodeChanged(), onOkCreationDlg(), onOpen(), onPreview(), onReverse(), onSelectionDone(), onTextChanged(), and onTypeChanged().
{
try {
// Redisplay preview in dialog
SMESH::point_array_var pnts = myPattern->GetPoints();
SMESH::long_array_var keyPoints = myPattern->GetKeyPoints();
SMESH::array_of_long_array_var elemPoints = myPattern->GetElementPoints(false);
if (pnts->length() == 0 ||
keyPoints->length() == 0 ||
elemPoints->length() == 0) {
erasePreview();
return;
} else {
PointVector aPoints(pnts->length());
QVector<int> aKeyPoints(keyPoints->length());
ConnectivityVector anElemPoints(elemPoints->length());
for (int i = 0, n = pnts->length(); i < n; i++)
aPoints[ i ] = pnts[ i ];
for (int i2 = 0, n2 = keyPoints->length(); i2 < n2; i2++)
aKeyPoints[ i2 ] = keyPoints[ i2 ];
for (int i3 = 0, n3 = elemPoints->length(); i3 < n3; i3++) {
QVector<int> aVec(elemPoints[ i3 ].length());
for (int i4 = 0, n4 = elemPoints[ i3 ].length(); i4 < n4; i4++)
aVec[ i4 ] = elemPoints[ i3 ][ i4 ];
anElemPoints[ i3 ] = aVec;
}
myPicture2d->SetPoints(aPoints, aKeyPoints, anElemPoints);
}
// Redisplay preview in 3D viewer
if (myPreviewActor != 0) {
if (SVTK_ViewWindow* vf = SMESH::GetCurrentVtkView()) {
vf->RemoveActor(myPreviewActor);
vf->Repaint();
}
myPreviewActor->Delete();
myPreviewActor = 0;
}
if (!myPreviewChk->isChecked() || !isValid(false))
return;
vtkUnstructuredGrid* aGrid = getGrid();
if (aGrid == 0)
return;
// Create and display actor
vtkDataSetMapper* aMapper = vtkDataSetMapper::New();
aMapper->SetInput(aGrid);
myPreviewActor = SALOME_Actor::New();
myPreviewActor->PickableOff();
myPreviewActor->SetMapper(aMapper);
vtkProperty* aProp = vtkProperty::New();
aProp->SetRepresentationToWireframe();
aProp->SetColor(250, 0, 250);
if (SMESH::FindActorByObject(myMesh))
aProp->SetLineWidth( SMESH::GetFloat( "SMESH:element_width", 1 ) + 1 );
else
aProp->SetLineWidth(1);
myPreviewActor->SetProperty(aProp);
myPreviewActor->SetRepresentation(3);
SMESH::GetCurrentVtkView()->AddActor(myPreviewActor);
SMESH::GetCurrentVtkView()->Repaint();
aProp->Delete();
aGrid->Delete();
} catch (const SALOME::SALOME_Exception& S_ex) {
SalomeApp_Tools::QtCatchCorbaException(S_ex);
erasePreview();
} catch (...) {
erasePreview();
}
}
| void SMESHGUI_MeshPatternDlg::enterEvent | ( | QEvent * | ) | [private] |
Definition at line 712 of file SMESHGUI_MeshPatternDlg.cxx.
References activateSelection(), displayPreview(), SMESHGUI.EmitSignalDeactivateDialog(), Ids, myIsCreateDlgOpen, myReverseChk, mySelectionMgr, mySelEdit, mySMESHGUI, onSelectionDone(), and onTextChanged().
{
if (myIsCreateDlgOpen)
return;
if (myReverseChk->isChecked())
displayPreview();
mySMESHGUI->EmitSignalDeactivateDialog();
setEnabled(true);
activateSelection();
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone()));
onTextChanged(mySelEdit[Ids]->text());
}
| void SMESHGUI_MeshPatternDlg::erasePreview | ( | ) | [private] |
Definition at line 993 of file SMESHGUI_MeshPatternDlg.cxx.
References SMESH.GetCurrentVtkView(), myPicture2d, myPreviewActor, and SMESHGUI_PatternWidget.SetPoints().
Referenced by displayPreview(), onApply(), and onClose().
{
// Erase preview in 2D viewer
myPicture2d->SetPoints(PointVector(), QVector<int>(), ConnectivityVector());
// Erase preview in 3D viewer
if (myPreviewActor == 0)
return;
if (SVTK_ViewWindow* vf = SMESH::GetCurrentVtkView())
{
vf->RemoveActor(myPreviewActor);
vf->Repaint();
}
myPreviewActor->Delete();
myPreviewActor = 0;
}
| vtkUnstructuredGrid * SMESHGUI_MeshPatternDlg::getGrid | ( | ) | [private] |
Definition at line 1223 of file SMESHGUI_MeshPatternDlg.cxx.
References getIds(), getNode(), SMESH_test.i1, SMESH_test.i2, SMESH_test.i3, SMESH_test.ids, isRefine(), myGeomObj, myMesh, myPattern, myReverseChk, myType, SMESH_AdvancedEditor.n1, SMESH_AdvancedEditor.n2, SMESH_AdvancedEditor.n3, Object, Type_2d, Type_3d, Vertex1, Vertex2, ex13_hole1partial.x, and ex13_hole1partial.y.
Referenced by displayPreview().
{
try {
// Get points from pattern
SMESH::point_array_var pnts;
QList<int> ids;
if (isRefine() && getIds(ids)) {
SMESH::long_array_var varIds = new SMESH::long_array();
varIds->length(ids.count());
int i = 0;
for (QList<int>::iterator it = ids.begin(); it != ids.end(); ++it)
varIds[i++] = *it;
pnts = myType == Type_2d
? myPattern->ApplyToMeshFaces (myMesh, varIds, getNode(false), myReverseChk->isChecked())
: myPattern->ApplyToHexahedrons(myMesh, varIds, getNode(false), getNode(true));
} else {
pnts = myType == Type_2d
? myPattern->ApplyToFace (myGeomObj[ Object ], myGeomObj[ Vertex1 ], myReverseChk->isChecked())
: myPattern->ApplyTo3DBlock(myGeomObj[ Object ], myGeomObj[ Vertex1 ], myGeomObj[ Vertex2 ]);
}
SMESH::array_of_long_array_var elemPoints = myPattern->GetElementPoints(true);
if (pnts->length() == 0 || elemPoints->length() == 0)
return 0;
// to do : to be removed /////////////////////////////////////////////
#ifdef DEB_SLN
for (int i1 = 0, n1 = pnts->length(); i1 < n1; i1++)
printf("%d: %g %g %g\n", i1, pnts[ i1 ].x, pnts[ i1 ].y, pnts[ i1 ].z);
printf("\nELEMENTS : \n");
for (int i2 = 0, n2 = elemPoints->length(); i2 < n2; i2++)
{
printf("%d: ", i2);
for (int i3 = 0, n3 = elemPoints[ i2 ].length(); i3 < n3; i3++)
printf("%d ", elemPoints[ i2 ][ i3 ]);
printf("\n");
}
#endif
// Calculate number of points used for cell
vtkIdType aNbCells = elemPoints->length();
vtkIdType aCellsSize = 0;
for (int i = 0, n = elemPoints->length(); i < n; i++)
aCellsSize += elemPoints[ i ].length();
// Create unstructured grid and other usefull arrays
vtkUnstructuredGrid* aGrid = vtkUnstructuredGrid::New();
vtkCellArray* aConnectivity = vtkCellArray::New();
aConnectivity->Allocate(aCellsSize, 0);
vtkPoints* aPoints = vtkPoints::New();
aPoints->SetNumberOfPoints(pnts->length());
vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
aCellTypesArray->SetNumberOfComponents(1);
aCellTypesArray->Allocate(aNbCells * aCellTypesArray->GetNumberOfComponents());
vtkIdList *anIdList = vtkIdList::New();
// Fill array of points
for (int p = 0, nbPnt = pnts->length(); p < nbPnt; p++)
aPoints->SetPoint(p, pnts[ p ].x, pnts[ p ].y, pnts[ p ].z);
for (int e = 0, nbElem = elemPoints->length(); e < nbElem; e++) {
int nbPoints = elemPoints[ e ].length();
anIdList->SetNumberOfIds(nbPoints);
for (int i = 0; i < nbPoints; i++)
anIdList->SetId(i, elemPoints[ e ][ i ]);
aConnectivity->InsertNextCell(anIdList);
if (nbPoints == 3) aCellTypesArray->InsertNextValue(VTK_TRIANGLE);
else if (nbPoints == 5) aCellTypesArray->InsertNextValue(VTK_PYRAMID);
else if (nbPoints == 6) aCellTypesArray->InsertNextValue(VTK_WEDGE);
else if (nbPoints == 8) aCellTypesArray->InsertNextValue(VTK_HEXAHEDRON);
else if (nbPoints == 4 && myType == Type_2d) aCellTypesArray->InsertNextValue(VTK_QUAD);
else if (nbPoints == 4 && myType == Type_3d) aCellTypesArray->InsertNextValue(VTK_TETRA);
else aCellTypesArray->InsertNextValue(VTK_EMPTY_CELL);
}
VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New();
aCellLocationsArray->SetNumberOfComponents(1);
aCellLocationsArray->SetNumberOfTuples(aNbCells);
aConnectivity->InitTraversal();
for (vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell(npts, pts); idType++)
aCellLocationsArray->SetValue(idType, aConnectivity->GetTraversalLocation(npts));
aGrid->SetPoints(aPoints);
aGrid->SetCells(aCellTypesArray, aCellLocationsArray,aConnectivity);
aConnectivity->Delete();
aPoints->Delete();
aCellTypesArray->Delete();
anIdList->Delete();
aCellLocationsArray->Delete();
return aGrid;
} catch (...) {
return 0;
}
}
Definition at line 1423 of file SMESHGUI_MeshPatternDlg.cxx.
| void SMESHGUI_MeshPatternDlg::Init | ( | ) |
Definition at line 374 of file SMESHGUI_MeshPatternDlg.cxx.
References activateSelection(), SMESH.GetPattern(), isRefine(), Mesh, myGeomObj, myIsCreateDlgOpen, myMesh, myMeshShape, myNbPoints, myPattern, myPreviewActor, mySelectionMgr, mySelInput, mySMESHGUI, myType, myTypeGrp, Object, onClose(), onDeactivate(), onModeToggled(), onSelectionDone(), onTypeChanged(), SMESHGUI.SetActiveDialogBox(), Type_2d, Vertex1, and Vertex2.
Referenced by SMESHGUI_MeshPatternDlg().
{
myPattern = SMESH::GetPattern();
myPreviewActor = 0;
myIsCreateDlgOpen = false;
mySelInput = Mesh;
myType = -1;
myNbPoints = -1;
mySMESHGUI->SetActiveDialogBox((QDialog*)this);
myMesh = SMESH::SMESH_Mesh::_nil();
myMeshShape = GEOM::GEOM_Object::_nil();
myGeomObj[ Object ] = GEOM::GEOM_Object::_nil();
myGeomObj[ Vertex1 ] = GEOM::GEOM_Object::_nil();
myGeomObj[ Vertex2 ] = GEOM::GEOM_Object::_nil();
// selection and SMESHGUI
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone()));
connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate()));
connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(onClose()));
myTypeGrp->button(Type_2d)->setChecked(true);
onTypeChanged(Type_2d);
onModeToggled(isRefine());
updateGeometry();
resize(100,100);
activateSelection();
onSelectionDone();
this->show();
}
| bool SMESHGUI_MeshPatternDlg::isRefine | ( | ) | const [private] |
Definition at line 1350 of file SMESHGUI_MeshPatternDlg.cxx.
References myRefine.
Referenced by getGrid(), Init(), isValid(), onApply(), and onTextChanged().
{
return myRefine->isChecked();
}
Definition at line 413 of file SMESHGUI_MeshPatternDlg.cxx.
References getIds(), getNode(), SMESH_test.ids, isRefine(), myGeomObj, myMesh, myMeshShape, myName, myNode1, myNode2, myType, Object, Type_3d, Vertex1, and Vertex2.
Referenced by displayPreview(), and onApply().
{
if (isRefine())
{
QString msg;
bool ok = true;
ok = myNode1->isValid( msg, theMess ) && ok;
if (myType == Type_3d)
ok = myNode2->isValid( msg, theMess ) && ok;
if( !ok ) {
if( theMess ) {
QString str( tr( "SMESH_INCORRECT_INPUT" ) );
if ( !msg.isEmpty() )
str += "\n" + msg;
SUIT_MessageBox::critical( this, tr( "SMESH_ERROR" ), str );
}
return false;
}
}
QList<int> ids;
if ((isRefine() &&
(myMesh->_is_nil() || !getIds(ids) || getNode(false) < 0 ||
(myType == Type_3d && (getNode(true) < 0 || getNode(false) == getNode(true)))))
||
(!isRefine() &&
(myMesh->_is_nil() || myMeshShape->_is_nil() || myGeomObj[ Object ]->_is_nil() ||
myGeomObj[ Vertex1 ]->_is_nil() || (myType == Type_3d && myGeomObj[ Vertex2 ]->_is_nil()))))
{
if (theMess)
SUIT_MessageBox::information(this, tr("SMESH_INSUFFICIENT_DATA"),
tr("SMESHGUI_INVALID_PARAMETERS"));
return false;
}
if ( myName->text().isEmpty() ) {
if (theMess)
SUIT_MessageBox::information(this, tr("SMESH_INSUFFICIENT_DATA"),
tr("SMESHGUI_INVALID_PARAMETERS"));
return false;
}
return true;
}
| void SMESHGUI_MeshPatternDlg::keyPressEvent | ( | QKeyEvent * | e | ) | [private] |
Definition at line 1451 of file SMESHGUI_MeshPatternDlg.cxx.
References onHelp().
{
QDialog::keyPressEvent( e );
if ( e->isAccepted() )
return;
if ( e->key() == Qt::Key_F1 )
{
e->accept();
onHelp();
}
}
| bool SMESHGUI_MeshPatternDlg::loadFromFile | ( | const QString & | theName | ) | [private] |
Definition at line 1122 of file SMESHGUI_MeshPatternDlg.cxx.
References SMESH.SMESH_Pattern.ERR_READ_3D_COORD, SMESH.SMESH_Pattern.ERR_READ_BAD_INDEX, SMESH.SMESH_Pattern.ERR_READ_BAD_KEY_POINT, SMESH.SMESH_Pattern.ERR_READ_ELEM_POINTS, SMESH.SMESH_Pattern.ERR_READ_NB_POINTS, SMESH.SMESH_Pattern.ERR_READ_NO_ELEMS, SMESH.SMESH_Pattern.ERR_READ_NO_KEYPOINT, SMESH.SMESH_Pattern.ERR_READ_POINT_COORDS, SMESH.SMESH_Pattern.ERR_READ_TOO_FEW_POINTS, SMESH.GetPattern(), myPattern, myType, and Type_2d.
Referenced by onOpen().
{
try {
SMESH::SMESH_Pattern_var aPattern = SMESH::GetPattern();
if (!aPattern->LoadFromFile(theName.toLatin1().data()) ||
(myType == Type_2d && !aPattern->Is2D())) {
SMESH::SMESH_Pattern::ErrorCode aCode = aPattern->GetErrorCode();
QString aMess;
if (aCode == SMESH::SMESH_Pattern::ERR_READ_NB_POINTS ) aMess = tr("ERR_READ_NB_POINTS");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_POINT_COORDS ) aMess = tr("ERR_READ_POINT_COORDS");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_TOO_FEW_POINTS) aMess = tr("ERR_READ_TOO_FEW_POINTS");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_3D_COORD ) aMess = tr("ERR_READ_3D_COORD");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_NO_KEYPOINT ) aMess = tr("ERR_READ_NO_KEYPOINT");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_BAD_INDEX ) aMess = tr("ERR_READ_BAD_INDEX");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_ELEM_POINTS ) aMess = tr("ERR_READ_ELEM_POINTS");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_NO_ELEMS ) aMess = tr("ERR_READ_NO_ELEMS");
else if (aCode == SMESH::SMESH_Pattern::ERR_READ_BAD_KEY_POINT ) aMess = tr("ERR_READ_BAD_KEY_POINT");
else aMess = tr("ERROR_OF_LOADING");
SUIT_MessageBox::information(this, tr("SMESH_ERROR"), aMess);
return false;
} else {
myPattern = aPattern;
return true;
}
} catch (const SALOME::SALOME_Exception& S_ex) {
SalomeApp_Tools::QtCatchCorbaException(S_ex);
SUIT_MessageBox::information(this, tr("SMESH_ERROR"),
tr("ERROR_OF_LOADING") );
return false;
}
}
| bool SMESHGUI_MeshPatternDlg::onApply | ( | ) | [private, slot] |
Definition at line 462 of file SMESHGUI_MeshPatternDlg.cxx.
References _PTR(), SMESHGUI.automaticUpdate(), SMESH.CreateActor(), SMESH.DisplayActor(), erasePreview(), SMESH.FindActorByEntry(), SMESH.FitAll(), SMESH.GetActiveWindow(), getIds(), getNode(), Ids, SMESH_test.ids, isRefine(), isValid(), SMESHGUI.Modified(), myCreatePolyedrsChk, myCreatePolygonsChk, myGeomObj, myMesh, myNode1, myNode2, myPattern, myReverseChk, mySelectionMgr, mySelEdit, mySMESHGUI, myType, Object, Type_2d, Type_3d, SMESH.UpdateView(), Vertex1, and Vertex2.
Referenced by createButtonFrame(), and onOk().
{
try {
if (!isValid())
return false;
erasePreview();
if (isRefine()) { // Refining existing mesh elements
QList<int> ids;
getIds(ids);
SMESH::long_array_var varIds = new SMESH::long_array();
varIds->length(ids.count());
int i = 0;
for (QList<int>::iterator it = ids.begin(); it != ids.end(); ++it)
varIds[i++] = *it;
myType == Type_2d
? myPattern->ApplyToMeshFaces (myMesh, varIds, getNode(false), myReverseChk->isChecked())
: myPattern->ApplyToHexahedrons(myMesh, varIds, getNode(false), getNode(true));
QStringList aParameters;
aParameters << myNode1->text();
if(myType == Type_3d )
aParameters << myNode2->text();
myMesh->SetParameters( aParameters.join(":").toLatin1().constData() );
} else { // Applying a pattern to geometrical object
if (myType == Type_2d)
myPattern->ApplyToFace(myGeomObj[Object], myGeomObj[Vertex1], myReverseChk->isChecked());
else
myPattern->ApplyTo3DBlock(myGeomObj[Object], myGeomObj[Vertex1], myGeomObj[Vertex2]);
}
bool toCreatePolygons = myCreatePolygonsChk->isChecked();
bool toCreatePolyedrs = myCreatePolyedrsChk->isChecked();
if ( myPattern->MakeMesh( myMesh, toCreatePolygons, toCreatePolyedrs ) ) {
//mySelectionMgr->clearSelected();
bool autoUpdate = SMESHGUI::automaticUpdate();
if (!isRefine() && autoUpdate) {
_PTR(SObject) aSO = SMESH::FindSObject(myMesh.in());
SMESH_Actor* anActor = SMESH::FindActorByEntry(aSO->GetID().c_str());
if (!anActor) {
anActor = SMESH::CreateActor(aSO->GetStudy(), aSO->GetID().c_str());
if (anActor) {
SMESH::DisplayActor(SMESH::GetActiveWindow(), anActor);
SMESH::FitAll();
}
}
}
mySelectionMgr->clearSelected();
SMESH::UpdateView();
SMESHGUI::Modified();
mySMESHGUI->updateObjBrowser(true);
mySelEdit[ Ids ]->setText("");
return true;
} else {
SUIT_MessageBox::information(this, tr("SMESH_ERROR"),
tr("SMESH_OPERATION_FAILED"));
return false;
}
} catch (const SALOME::SALOME_Exception& S_ex) {
SalomeApp_Tools::QtCatchCorbaException(S_ex);
} catch (...) {
}
return false;
}
| void SMESHGUI_MeshPatternDlg::onClose | ( | ) | [private, slot] |
Definition at line 547 of file SMESHGUI_MeshPatternDlg.cxx.
References erasePreview(), SMESH.GetViewWindow(), mySelectionMgr, mySMESHGUI, SMESHGUI.ResetState(), and SMESH.SetPickable().
Referenced by closeEvent(), createButtonFrame(), Init(), and onOk().
{
mySelectionMgr->clearFilters();
SMESH::SetPickable();
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->SetSelectionMode(ActorSelection);
disconnect(mySelectionMgr, 0, this, 0);
disconnect(mySMESHGUI, 0, this, 0);
mySMESHGUI->ResetState();
erasePreview();
reject();
}
| void SMESHGUI_MeshPatternDlg::onCloseCreationDlg | ( | ) | [private, slot] |
Definition at line 836 of file SMESHGUI_MeshPatternDlg.cxx.
References myIsCreateDlgOpen.
Referenced by onNew().
{
setEnabled(true);
myIsCreateDlgOpen = false;
}
| void SMESHGUI_MeshPatternDlg::onDeactivate | ( | ) | [private, slot] |
Definition at line 699 of file SMESHGUI_MeshPatternDlg.cxx.
References mySelectionMgr.
Referenced by Init().
{
mySelectionMgr->clearFilters();
//if (myReverseChk->isChecked())
// erasePreview();
disconnect(mySelectionMgr, 0, this, 0);
setEnabled(false);
}
| void SMESHGUI_MeshPatternDlg::onHelp | ( | ) | [private, slot] |
Definition at line 564 of file SMESHGUI_MeshPatternDlg.cxx.
References myHelpFileName, and mySMESHGUI.
Referenced by createButtonFrame(), and keyPressEvent().
{
LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
if (app)
app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
else {
QString platform;
#ifdef WIN32
platform = "winapplication";
#else
platform = "application";
#endif
SUIT_MessageBox::warning(this, tr("WRN_WARNING"),
tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
arg(app->resourceMgr()->stringValue("ExternalBrowser",
platform)).
arg(myHelpFileName));
}
}
| void SMESHGUI_MeshPatternDlg::onModeToggled | ( | bool | on | ) | [private, slot] |
Definition at line 1338 of file SMESHGUI_MeshPatternDlg.cxx.
References displayPreview(), myGeomGrp, and myRefineGrp.
Referenced by createMainFrame(), and Init().
{
on ? myRefineGrp->show() : myRefineGrp->hide();
on ? myGeomGrp->hide() : myGeomGrp->show();
displayPreview();
}
| void SMESHGUI_MeshPatternDlg::onNew | ( | ) | [private, slot] |
Definition at line 863 of file SMESHGUI_MeshPatternDlg.cxx.
References SMESHGUI_CreatePatternDlg.Init(), myCreationDlg, myIsCreateDlgOpen, myMesh, mySMESHGUI, myType, onCloseCreationDlg(), onOkCreationDlg(), and SMESHGUI_CreatePatternDlg.SetMesh().
Referenced by createMainFrame().
{
setEnabled(false);
myIsCreateDlgOpen = true;
if (myCreationDlg == 0)
{
myCreationDlg = new SMESHGUI_CreatePatternDlg( mySMESHGUI, myType);
connect(myCreationDlg, SIGNAL(NewPattern()), SLOT(onOkCreationDlg()));
connect(myCreationDlg, SIGNAL(Close()), SLOT(onCloseCreationDlg()));
}
else
myCreationDlg->Init(myType);
myCreationDlg->SetMesh(myMesh);
myCreationDlg->show();
}
| void SMESHGUI_MeshPatternDlg::onNodeChanged | ( | int | value | ) | [private, slot] |
Definition at line 1401 of file SMESHGUI_MeshPatternDlg.cxx.
References displayPreview(), myNode1, myNode2, myType, and Type_3d.
Referenced by createMainFrame().
{
if (myType == Type_3d) {
SalomeApp_IntSpinBox* first = (SalomeApp_IntSpinBox*)sender();
SalomeApp_IntSpinBox* second = first == myNode1 ? myNode2 : myNode1;
int secondVal = second->value();
if (secondVal == value) {
secondVal = value == second->maximum() ? second->minimum() : value + 1;
bool blocked = second->signalsBlocked();
second->blockSignals(true);
second->setValue(secondVal);
second->blockSignals(blocked);
}
}
displayPreview();
}
| void SMESHGUI_MeshPatternDlg::onOk | ( | ) | [private, slot] |
Definition at line 537 of file SMESHGUI_MeshPatternDlg.cxx.
References onApply(), and onClose().
Referenced by createButtonFrame().
| void SMESHGUI_MeshPatternDlg::onOkCreationDlg | ( | ) | [private, slot] |
Definition at line 847 of file SMESHGUI_MeshPatternDlg.cxx.
References displayPreview(), SMESHGUI_CreatePatternDlg.GetPattern(), SMESHGUI_CreatePatternDlg.GetPatternName(), myCreationDlg, myIsCreateDlgOpen, myName, myPattern, and updateWgState().
Referenced by onNew().
{
myPattern = SMESH::SMESH_Pattern::_duplicate(myCreationDlg->GetPattern());
myName->setText(myCreationDlg->GetPatternName());
updateWgState();
displayPreview();
setEnabled(true);
myIsCreateDlgOpen = false;
}
| void SMESHGUI_MeshPatternDlg::onOpen | ( | ) | [private, slot] |
Definition at line 782 of file SMESHGUI_MeshPatternDlg.cxx.
References autoExtension(), displayPreview(), loadFromFile(), myName, prepareFilters(), and updateWgState().
Referenced by createMainFrame().
{
SUIT_FileDlg* aDlg = new SUIT_FileDlg (this, true);
aDlg->setWindowTitle(tr("LOAD_PATTERN"));
aDlg->setFileMode(QFileDialog::ExistingFile);
aDlg->setFilters(prepareFilters());
if (!myName->text().isEmpty())
aDlg->selectFile(myName->text() + ".smp");
QPushButton* anOkBtn = qFindChild<QPushButton*>( aDlg, "OK" );
if (anOkBtn != 0)
anOkBtn->setText(tr("SMESH_BUT_OK"));
if (aDlg->exec() != Accepted)
return;
QString fName = aDlg->selectedFile();
if (fName.isEmpty())
return;
if (QFileInfo(fName).suffix().isEmpty())
fName = autoExtension(fName);
fName = QDir::convertSeparators(fName);
QString prev = QDir::convertSeparators(myName->text());
if (prev == fName)
return;
// Read string from file
QFile aFile(fName);
if (!aFile.open(QIODevice::ReadOnly)) {
SUIT_MessageBox::information(this, tr("SMESH_ERROR"),
tr("ERROR_OF_OPENING"));
return;
}
QByteArray aDataArray = aFile.readAll();
if (aDataArray.isEmpty()) {
SUIT_MessageBox::information(this, tr("SMESH_ERROR"),
tr("ERROR_OF_READING"));
return;
}
if (loadFromFile(aDataArray))
myName->setText(QFileInfo(fName).completeBaseName());
updateWgState();
displayPreview();
}
| void SMESHGUI_MeshPatternDlg::onPreview | ( | bool | ) | [private, slot] |
Definition at line 896 of file SMESHGUI_MeshPatternDlg.cxx.
References displayPreview().
Referenced by createMainFrame().
{
displayPreview();
}
| void SMESHGUI_MeshPatternDlg::onReverse | ( | bool | ) | [private, slot] |
Definition at line 885 of file SMESHGUI_MeshPatternDlg.cxx.
References displayPreview().
Referenced by createMainFrame().
{
displayPreview();
}
| void SMESHGUI_MeshPatternDlg::onSelectionDone | ( | ) | [private, slot] |
Definition at line 588 of file SMESHGUI_MeshPatternDlg.cxx.
References _PTR(), SMESH_BelongToGeom.anIds, displayPreview(), SMESH.GetGeom(), SMESH.GetNameOfSelectedElements(), SMESH.GetNameOfSelectedIObjects(), Handle(), Ids, Mesh, myBusy, myGeomObj, myMesh, myMeshShape, mySelectionMgr, mySelector, mySelEdit, mySelInput, Object, resetSelInput(), updateWgState(), Vertex1, and Vertex2.
Referenced by enterEvent(), Init(), and onSelInputChanged().
{
if (myBusy)
return;
try {
if (mySelInput == Mesh) {
SALOME_ListIO aList;
mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());
if (aList.Extent() != 1)
return;
// Retrieve mesh from selection
Handle(SALOME_InteractiveObject) anIO = aList.First();
SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIO);
if (aMesh->_is_nil())
return;
// Get geom object corresponding to the mesh
_PTR(SObject) aSO = SMESH::FindSObject(aMesh.in());
myMeshShape = SMESH::GetGeom(aSO);
// Clear fields of geom objects if mesh was changed
if (myMesh != aMesh) {
for (int i = Object; i <= Ids; i++) {
myGeomObj[ i ] = GEOM::GEOM_Object::_nil();
mySelEdit[ i ]->setText("");
}
}
myMesh = aMesh;
// Set name of mesh in line edit
QString aName;
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);
mySelEdit[ Mesh ]->setText(aName);
} else if (mySelInput == Ids) {
SALOME_ListIO aList;
mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());
if (aList.Extent() != 1)
return;
QString anIds;
if (!SMESH::GetNameOfSelectedElements(mySelector, aList.First(), anIds))
anIds = "";
myBusy = true;
mySelEdit[ Ids ]->setText(anIds);
myBusy = false;
} else {
SALOME_ListIO aList;
mySelectionMgr->selectedObjects(aList, SVTK_Viewer::Type());
if (aList.Extent() != 1)
return;
// Get geom object from selection
Handle(SALOME_InteractiveObject) anIO = aList.First();
GEOM::GEOM_Object_var anObj = SMESH::IObjectToInterface<GEOM::GEOM_Object>(anIO);
if (anObj->_is_nil())
return;
// Clear fields of vertexes if face or 3d block was changed
if (anObj != myGeomObj[ mySelInput ] && mySelInput == Object) {
for (int i = Vertex1; i <= Vertex2; i++) {
myGeomObj[ i ] = GEOM::GEOM_Object::_nil();
mySelEdit[ i ]->setText("");
}
}
myGeomObj[ mySelInput ] = anObj;
// Set name of geom object in line edit
QString aName;
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);
mySelEdit[ mySelInput ]->setText(aName);
}
} catch (const SALOME::SALOME_Exception& S_ex) {
SalomeApp_Tools::QtCatchCorbaException(S_ex);
resetSelInput();
} catch (...) {
resetSelInput();
}
updateWgState();
displayPreview();
}
| void SMESHGUI_MeshPatternDlg::onSelInputChanged | ( | ) | [private, slot] |
Definition at line 740 of file SMESHGUI_MeshPatternDlg.cxx.
References activateSelection(), Ids, Mesh, mySelBtn, mySelInput, and onSelectionDone().
Referenced by createMainFrame().
{
const QObject* aSender = sender();
for (int i = Mesh; i <= Ids; i++)
if (aSender == mySelBtn[ i ])
mySelInput = i;
activateSelection();
onSelectionDone();
}
| void SMESHGUI_MeshPatternDlg::onTextChanged | ( | const QString & | theNewText | ) | [private, slot] |
Definition at line 1359 of file SMESHGUI_MeshPatternDlg.cxx.
References activateSelection(), displayPreview(), SMESH.FindActorByObject(), SMDS_Mesh.FindElement(), SMDS_MeshElement.GetID(), SMESH_Actor.GetObject(), SMDS_MeshElement.GetType(), SMESH.GetViewWindow(), Ids, isRefine(), myBusy, myMesh, mySelector, mySelInput, mySMESHGUI, myType, SMDSAbs_Face, SMDSAbs_Volume, and Type_2d.
Referenced by createMainFrame(), and enterEvent().
{
if (myBusy || !isRefine())
return;
myBusy = true;
if (mySelInput != Ids) {
mySelInput = Ids;
activateSelection();
}
// hilight entered elements/nodes
SMDS_Mesh* aMesh = 0;
SMESH_Actor* anActor = SMESH::FindActorByObject(myMesh);
if (anActor)
aMesh = anActor->GetObject()->GetMesh();
if (aMesh) {
QStringList aListId = theNewText.split(" ", QString::SkipEmptyParts);
TColStd_MapOfInteger newIndices;
for (int i = 0; i < aListId.count(); i++) {
const SMDS_MeshElement * e = aMesh->FindElement(aListId[ i ].toInt());
if (e && e->GetType() == (myType == Type_2d ? SMDSAbs_Face : SMDSAbs_Volume))
newIndices.Add(e->GetID());
}
mySelector->AddOrRemoveIndex( anActor->getIO(), newIndices, false);
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
aViewWindow->highlight( anActor->getIO(), true, true );
}
myBusy = false;
displayPreview();
}
| void SMESHGUI_MeshPatternDlg::onTypeChanged | ( | int | theType | ) | [private, slot] |
Definition at line 1161 of file SMESHGUI_MeshPatternDlg.cxx.
References activateSelection(), displayPreview(), SMESH.GetPattern(), Ids, Mesh, myCreatePolyedrsChk, myCreatePolygonsChk, myGeomObj, myName, myNbPoints, myNode2, myNode2Lbl, myPattern, myPicture2d, myPicture3d, myReverseChk, mySelBtn, mySelEdit, mySelInput, mySelLbl, myType, Object, Type_2d, updateWgState(), Vertex1, and Vertex2.
Referenced by createMainFrame(), and Init().
{
if (myType == theType)
return;
myType = theType;
myNbPoints = -1;
myGeomObj[ Object ] = GEOM::GEOM_Object::_nil();
myGeomObj[ Vertex1 ] = GEOM::GEOM_Object::_nil();
myGeomObj[ Vertex2 ] = GEOM::GEOM_Object::_nil();
myPattern = SMESH::GetPattern();
myName->setText("");
mySelEdit[ Object ]->setText("");
mySelEdit[ Vertex1 ]->setText("");
mySelEdit[ Vertex2 ]->setText("");
mySelEdit[ Ids ] ->setText("");
myCreatePolygonsChk->show();
myCreatePolyedrsChk->show();
if (theType == Type_2d) {
// Geom widgets
mySelLbl [ Vertex2 ]->hide();
mySelBtn [ Vertex2 ]->hide();
mySelEdit[ Vertex2 ]->hide();
myReverseChk->show();
myPicture2d->show();
myPicture3d->hide();
mySelLbl[ Object ]->setText(tr("FACE"));
mySelLbl[ Vertex1 ]->setText(tr("VERTEX"));
// Refine widgets
mySelLbl[ Ids ]->setText(tr("MESH_FACES"));
myNode2Lbl->hide();
myNode2 ->hide();
} else {
// Geom widgets
mySelLbl [ Vertex2 ]->show();
mySelBtn [ Vertex2 ]->show();
mySelEdit[ Vertex2 ]->show();
myReverseChk->hide();
myPicture2d->hide();
myPicture3d->show();
mySelLbl[ Object ]->setText(tr("3D_BLOCK"));
mySelLbl[ Vertex1 ]->setText(tr("VERTEX1"));
mySelLbl[ Vertex2 ]->setText(tr("VERTEX2"));
// Refine widgets
mySelLbl[ Ids ]->setText(tr("MESH_VOLUMES"));
myNode2Lbl->show();
myNode2 ->show();
}
mySelInput = Mesh;
activateSelection();
updateWgState();
displayPreview();
}
| QStringList SMESHGUI_MeshPatternDlg::prepareFilters | ( | ) | const [private] |
Definition at line 755 of file SMESHGUI_MeshPatternDlg.cxx.
Referenced by onOpen().
{
static QStringList aList;
if (aList.isEmpty())
{
aList.append(tr("PATTERN_FILT"));
//aList.append(tr("ALL_FILES_FILTER"));
}
return aList;
}
| void SMESHGUI_MeshPatternDlg::resetSelInput | ( | ) | [private] |
Definition at line 681 of file SMESHGUI_MeshPatternDlg.cxx.
References Mesh, myGeomObj, myMesh, myMeshShape, mySelEdit, and mySelInput.
Referenced by onSelectionDone().
{
if (mySelInput == Mesh)
{
myMesh = SMESH::SMESH_Mesh::_nil();
myMeshShape = GEOM::GEOM_Object::_nil();
}
else
myGeomObj[ mySelInput ] = GEOM::GEOM_Object::_nil();
mySelEdit[ mySelInput ]->setText("");
}
| void SMESHGUI_MeshPatternDlg::updateWgState | ( | ) | [private] |
Definition at line 1016 of file SMESHGUI_MeshPatternDlg.cxx.
References SMESH_test.ids, Ids, myGeomObj, myMesh, myNode1, myNode2, myPattern, mySelBtn, mySelEdit, Object, Vertex1, and Vertex2.
Referenced by onOkCreationDlg(), onOpen(), onSelectionDone(), and onTypeChanged().
{
if (myMesh->_is_nil()) {
for (int i = Object; i <= Ids; i++) {
mySelBtn [ i ]->setEnabled(false);
mySelEdit[ i ]->setEnabled(false);
mySelEdit[ i ]->setText("");
}
myNode1->setEnabled(false);
myNode2->setEnabled(false);
myNode1->setRange(0, 0);
myNode2->setRange(0, 0);
} else {
mySelBtn [ Object ]->setEnabled(true);
mySelEdit[ Object ]->setEnabled(true);
mySelBtn [ Ids ] ->setEnabled(true);
mySelEdit[ Ids ] ->setEnabled(true);
if (myGeomObj[ Object ]->_is_nil()) {
for (int i = Vertex1; i <= Vertex2; i++) {
mySelBtn [ i ]->setEnabled(false);
mySelEdit[ i ]->setEnabled(false);
mySelEdit[ i ]->setText("");
}
} else {
for (int i = Object; i <= Vertex2; i++) {
mySelBtn [ i ]->setEnabled(true);
mySelEdit[ i ]->setEnabled(true);
}
}
QList<int> ids;
if (!CORBA::is_nil(myPattern)/* && getIds(ids)*/) {
SMESH::long_array_var keyPoints = myPattern->GetKeyPoints();
if (keyPoints->length()) {
myNode1->setEnabled(true);
myNode2->setEnabled(true);
myNode1->setRange(1, keyPoints->length());
myNode2->setRange(1, keyPoints->length());
return;
}
}
myNode1->setEnabled(false);
myNode2->setEnabled(false);
myNode1->setRange(0, 0);
myNode2->setRange(0, 0);
}
}
QPushButton* SMESHGUI_MeshPatternDlg.myApplyBtn [private] |
Definition at line 123 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createButtonFrame().
bool SMESHGUI_MeshPatternDlg.myBusy [private] |
Definition at line 162 of file SMESHGUI_MeshPatternDlg.h.
Referenced by onSelectionDone(), and onTextChanged().
QPushButton* SMESHGUI_MeshPatternDlg.myCloseBtn [private] |
Definition at line 124 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createButtonFrame().
QCheckBox* SMESHGUI_MeshPatternDlg.myCreatePolyedrsChk [private] |
Definition at line 149 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), onApply(), and onTypeChanged().
QCheckBox* SMESHGUI_MeshPatternDlg.myCreatePolygonsChk [private] |
Definition at line 148 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), onApply(), and onTypeChanged().
Definition at line 168 of file SMESHGUI_MeshPatternDlg.h.
Referenced by onNew(), and onOkCreationDlg().
QFrame* SMESHGUI_MeshPatternDlg.myGeomGrp [private] |
Definition at line 138 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and onModeToggled().
QMap<int, GEOM::GEOM_Object_var> SMESHGUI_MeshPatternDlg.myGeomObj [private] |
Definition at line 166 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), getGrid(), Init(), isValid(), onApply(), onSelectionDone(), onTypeChanged(), resetSelInput(), and updateWgState().
QPushButton* SMESHGUI_MeshPatternDlg.myHelpBtn [private] |
Definition at line 125 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createButtonFrame().
QString SMESHGUI_MeshPatternDlg.myHelpFileName [private] |
Definition at line 172 of file SMESHGUI_MeshPatternDlg.h.
Referenced by onHelp(), and SMESHGUI_MeshPatternDlg().
Definition at line 161 of file SMESHGUI_MeshPatternDlg.h.
Referenced by enterEvent(), Init(), onCloseCreationDlg(), onNew(), and onOkCreationDlg().
SMESH::SMESH_Mesh_var SMESHGUI_MeshPatternDlg.myMesh [private] |
Definition at line 164 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), displayPreview(), getGrid(), Init(), isValid(), onApply(), onNew(), onSelectionDone(), onTextChanged(), resetSelInput(), and updateWgState().
GEOM::GEOM_Object_var SMESHGUI_MeshPatternDlg.myMeshShape [private] |
Definition at line 165 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), Init(), isValid(), onSelectionDone(), and resetSelInput().
QLineEdit* SMESHGUI_MeshPatternDlg.myName [private] |
Definition at line 143 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), isValid(), onOkCreationDlg(), onOpen(), and onTypeChanged().
int SMESHGUI_MeshPatternDlg.myNbPoints [private] |
Definition at line 159 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), Init(), and onTypeChanged().
QPushButton* SMESHGUI_MeshPatternDlg.myNewBtn [private] |
Definition at line 145 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame().
SalomeApp_IntSpinBox* SMESHGUI_MeshPatternDlg.myNode1 [private] |
Definition at line 134 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), getNode(), isValid(), onApply(), onNodeChanged(), and updateWgState().
SalomeApp_IntSpinBox* SMESHGUI_MeshPatternDlg.myNode2 [private] |
Definition at line 135 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), getNode(), isValid(), onApply(), onNodeChanged(), onTypeChanged(), and updateWgState().
QLabel* SMESHGUI_MeshPatternDlg.myNode2Lbl [private] |
Definition at line 136 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and onTypeChanged().
QPushButton* SMESHGUI_MeshPatternDlg.myOkBtn [private] |
Definition at line 122 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createButtonFrame().
QPushButton* SMESHGUI_MeshPatternDlg.myOpenBtn [private] |
Definition at line 144 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame().
SMESH::SMESH_Pattern_var SMESHGUI_MeshPatternDlg.myPattern [private] |
Definition at line 169 of file SMESHGUI_MeshPatternDlg.h.
Referenced by displayPreview(), getGrid(), Init(), loadFromFile(), onApply(), onOkCreationDlg(), onTypeChanged(), and updateWgState().
Definition at line 150 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), displayPreview(), erasePreview(), and onTypeChanged().
QLabel* SMESHGUI_MeshPatternDlg.myPicture3d [private] |
Definition at line 151 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and onTypeChanged().
Definition at line 170 of file SMESHGUI_MeshPatternDlg.h.
Referenced by displayPreview(), erasePreview(), and Init().
QCheckBox* SMESHGUI_MeshPatternDlg.myPreviewChk [private] |
Definition at line 153 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and displayPreview().
QCheckBox* SMESHGUI_MeshPatternDlg.myRefine [private] |
Definition at line 131 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and isRefine().
QFrame* SMESHGUI_MeshPatternDlg.myRefineGrp [private] |
Definition at line 133 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and onModeToggled().
QCheckBox* SMESHGUI_MeshPatternDlg.myReverseChk [private] |
Definition at line 147 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), enterEvent(), getGrid(), onApply(), and onTypeChanged().
QMap<int, QPushButton*> SMESHGUI_MeshPatternDlg.mySelBtn [private] |
Definition at line 139 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), onSelInputChanged(), onTypeChanged(), and updateWgState().
LightApp_SelectionMgr* SMESHGUI_MeshPatternDlg.mySelectionMgr [private] |
Definition at line 157 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), enterEvent(), Init(), onApply(), onClose(), onDeactivate(), and onSelectionDone().
SVTK_Selector* SMESHGUI_MeshPatternDlg.mySelector [private] |
Definition at line 156 of file SMESHGUI_MeshPatternDlg.h.
Referenced by onSelectionDone(), onTextChanged(), and SMESHGUI_MeshPatternDlg().
QMap<int, QLineEdit*> SMESHGUI_MeshPatternDlg.mySelEdit [private] |
Definition at line 140 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), enterEvent(), getIds(), onApply(), onSelectionDone(), onTypeChanged(), resetSelInput(), and updateWgState().
int SMESHGUI_MeshPatternDlg.mySelInput [private] |
Definition at line 158 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), Init(), onSelectionDone(), onSelInputChanged(), onTextChanged(), onTypeChanged(), and resetSelInput().
QMap<int, QLabel*> SMESHGUI_MeshPatternDlg.mySelLbl [private] |
Definition at line 141 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and onTypeChanged().
SMESHGUI* SMESHGUI_MeshPatternDlg.mySMESHGUI [private] |
Definition at line 155 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), createMainFrame(), enterEvent(), Init(), onApply(), onClose(), onHelp(), onNew(), onTextChanged(), and SMESHGUI_MeshPatternDlg().
QRadioButton* SMESHGUI_MeshPatternDlg.mySwitch2d [private] |
Definition at line 128 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame().
QRadioButton* SMESHGUI_MeshPatternDlg.mySwitch3d [private] |
Definition at line 129 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame().
int SMESHGUI_MeshPatternDlg.myType [private] |
Definition at line 160 of file SMESHGUI_MeshPatternDlg.h.
Referenced by activateSelection(), getGrid(), Init(), isValid(), loadFromFile(), onApply(), onNew(), onNodeChanged(), onTextChanged(), and onTypeChanged().
QButtonGroup* SMESHGUI_MeshPatternDlg.myTypeGrp [private] |
Definition at line 127 of file SMESHGUI_MeshPatternDlg.h.
Referenced by createMainFrame(), and Init().