+ if ( e->key() == Qt::Key_F1 ) {
+ e->accept();
+ ClickOnHelp();
+ }
+}
+
+//=================================================================================
+// function : setFilters()
+// purpose : SLOT. Called when "Filter" button pressed.
+//=================================================================================
+void SMESHGUI_SymmetryDlg::setFilters()
+{
+ if(myMesh->_is_nil()) {
+ SUIT_MessageBox::critical(this,
+ tr("SMESH_ERROR"),
+ tr("NO_MESH_SELECTED"));
+ return;
+ }
+ if ( !myFilterDlg )
+ myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL );
+
+ myFilterDlg->SetSelection();
+ myFilterDlg->SetMesh( myMesh );
+ myFilterDlg->SetSourceWg( LineEditElements );
+
+ myFilterDlg->show();
+}
+
+//=================================================================================
+// function : isValid
+// purpose :
+//=================================================================================
+bool SMESHGUI_SymmetryDlg::isValid()
+{
+ bool ok = true;
+ QString msg;
+
+ ok = SpinBox_X->isValid( msg, true ) && ok;
+ ok = SpinBox_Y->isValid( msg, true ) && ok;
+ ok = SpinBox_Z->isValid( msg, true ) && ok;
+ if (GetConstructorId() != 0) {
+ ok = SpinBox_DX->isValid( msg, true ) && ok;
+ ok = SpinBox_DY->isValid( msg, true ) && ok;
+ ok = SpinBox_DZ->isValid( msg, true ) && ok;
+ }
+
+ if( !ok ) {
+ QString str( tr( "SMESH_INCORRECT_INPUT" ) );
+ if ( !msg.isEmpty() )
+ str += "\n" + msg;
+ SUIT_MessageBox::critical( this, tr( "SMESH_ERROR" ), str );
+ return false;
+ }
+ return true;
+}
+
+//=================================================================================
+// function : onDisplaySimulation
+// purpose : Show/Hide preview
+//=================================================================================
+void SMESHGUI_SymmetryDlg::onDisplaySimulation( bool toDisplayPreview ) {
+ if (myPreviewCheckBox->isChecked() && toDisplayPreview) {
+ if ( myNbOkElements && isValid() && IsMirrorOk() ) {
+ QStringList aListElementsId = myElementsId.split(" ", QString::SkipEmptyParts);
+ SMESH::long_array_var anElementsId = new SMESH::long_array;
+
+ anElementsId->length(aListElementsId.count());
+ for (int i = 0; i < aListElementsId.count(); i++)
+ anElementsId[i] = aListElementsId[i].toInt();
+
+ SMESH::AxisStruct aMirror;
+ SMESH::SMESH_MeshEditor::MirrorType aMirrorType;
+
+ getMirror(aMirror,aMirrorType);
+
+ try {
+ bool copy = ( ActionGroup->checkedId() == COPY_ELEMS_BUTTON ||
+ ActionGroup->checkedId() == MAKE_MESH_BUTTON );
+ SUIT_OverrideCursor aWaitCursor;
+ SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditPreviewer();
+ if(CheckBoxMesh->isChecked())
+ aMeshEditor->MirrorObject(mySelectedObject, aMirror, aMirrorType, copy );
+ else
+ aMeshEditor->Mirror(anElementsId, aMirror, aMirrorType, copy );
+
+ SMESH::MeshPreviewStruct_var aMeshPreviewStruct = aMeshEditor->GetPreviewData();
+ mySimulation->SetData(aMeshPreviewStruct._retn());
+ } catch (...) {
+ hidePreview();
+ }
+ } else {
+ hidePreview();
+ }
+ } else {
+ hidePreview();
+ }
+}
+
+//=================================================================================
+// function : getMirror
+// purpose : return mirror parameters
+//=================================================================================
+void SMESHGUI_SymmetryDlg::getMirror(SMESH::AxisStruct& theMirror, SMESH::SMESH_MeshEditor::MirrorType& theMirrorType) {
+ theMirror.x = SpinBox_X->GetValue();
+ theMirror.y = SpinBox_Y->GetValue();
+ theMirror.z = SpinBox_Z->GetValue();
+ if (GetConstructorId() == 0) {
+ theMirror.vx = theMirror.vy = theMirror.vz = 0;
+ } else {
+ theMirror.vx = SpinBox_DX->GetValue();
+ theMirror.vy = SpinBox_DY->GetValue();
+ theMirror.vz = SpinBox_DZ->GetValue();
+ }
+ if (GetConstructorId() == 0)
+ theMirrorType = SMESH::SMESH_MeshEditor::POINT;
+ if (GetConstructorId() == 1)
+ theMirrorType = SMESH::SMESH_MeshEditor::AXIS;
+ if (GetConstructorId() == 2)
+ theMirrorType = SMESH::SMESH_MeshEditor::PLANE;