Salome HOME
INT PAL 0052775: Any dialogue with the selector raises an exception for second viewer
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MultiEditDlg.h
index e956292aebbf79a11c253d80177a68ca82eb91ee..2f92d6b00dfdc4d125cc0f22b2c30d47ede6e881 100755 (executable)
@@ -1,41 +1,45 @@
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 //
-//  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.
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  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.
+// 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, or (at your option) any later version.
 //
-//  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
+// 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.
 //
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//
-//  File   : SMESHGUI_MultiEditDlg.h
-//  Author : Sergey LITONIN
-//  Module : SMESH
-
 
-#ifndef SMESHGUI_MultiEditDlg_H
-#define SMESHGUI_MultiEditDlg_H
+// File   : SMESHGUI_MultiEditDlg.h
+// Author : Sergey LITONIN, Open CASCADE S.A.S.
+//
+#ifndef SMESHGUI_MULTIEDITDLG_H
+#define SMESHGUI_MULTIEDITDLG_H
 
-#include <qdialog.h>
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
+#include "SMESHGUI_PreviewDlg.h"
 
-#include "SUIT_SelectionFilter.h"
+// Qt includes 
+#include <QDialog>
 
+// OCCT includes
 #include <TColStd_MapOfInteger.hxx>
 
+// IDL includes
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
-#include CORBA_SERVER_HEADER(SMESH_Filter)
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
 
 class SMESHGUI;
 class SMESHGUI_FilterDlg;
@@ -46,11 +50,8 @@ class SMESH_Actor;
 class LightApp_SelectionMgr;
 class SALOME_Actor;
 class SVTK_Selector;
-class SVTK_ViewWindow;
 
-class QFrame;
-class QObject;
-class QListBox;
+class QListWidget;
 class QComboBox;
 class QCheckBox;
 class QGroupBox;
@@ -64,20 +65,20 @@ class QButtonGroup;
  *               union of two neighboring triangles
  */
 
-class SMESHGUI_MultiEditDlg : public QDialog
+class SMESHGUI_EXPORT SMESHGUI_MultiEditDlg : public SMESHGUI_PreviewDlg
 {
   Q_OBJECT
 
 public:
-                            SMESHGUI_MultiEditDlg(SMESHGUI* theModule,
-                                                 const int,
-                                                 const bool = false,
-                                                 const char* = 0 );
-  virtual                   ~SMESHGUI_MultiEditDlg();
+  SMESHGUI_MultiEditDlg( SMESHGUI*  theModule,
+                         const int  theMode,
+                         const bool the3d2d = false,
+                         bool       theDoInit = true );
+  virtual ~SMESHGUI_MultiEditDlg();
 
   void                      Init();
 
-  bool                      eventFilter( QObject* object, QEvent* event );
+  bool                      eventFilter( QObject*, QEvent* );
 
 signals:
   void                      ListContensChanged();
@@ -85,11 +86,11 @@ signals:
 protected slots:
   void                      onOk();
   virtual bool              onApply();
-  virtual void              onClose();
+  virtual void              reject();
   void                      onHelp();
 
   void                      onDeactivate();
-  void                      onSelectionDone();
+  virtual void              onSelectionDone();
 
   void                      onFilterBtn();
   void                      onAddBtn();
@@ -100,22 +101,26 @@ protected slots:
   void                      onGroupChk();
   virtual void              onToAllChk();
   void                      onFilterAccepted();
-  void                      on3d2dChanged(int);
+  virtual void              on3d2dChanged(int);
+  void                      onOpenView();
+  void                      onCloseView();
 
   SMESH::NumericalFunctor_ptr getNumericalFunctor();
 
 protected:
-  void                      closeEvent( QCloseEvent* e ) ;
-  void                      enterEvent ( QEvent * ) ;
-  void                      hideEvent ( QHideEvent * );                        /* ESC key */
-  QFrame*                   createButtonFrame( QWidget* );
-  QFrame*                   createMainFrame  ( QWidget*, const bool );
-  bool                      isValid( const bool ) const;
-  SMESH::long_array_var     getIds();
+  void                      enterEvent( QEvent * );
+  void                      keyPressEvent( QKeyEvent* );
+  QWidget*                  createButtonFrame( QWidget* );
+  QWidget*                  createMainFrame( QWidget*, const bool );
+  virtual bool              isValid( const bool );
+  SMESH::long_array_var     getIds(SMESH::SMESH_IDSource_var& obj);
   void                      updateButtons();
-  void                      setSelectionMode();
-  virtual bool              isIdValid( const int theID ) const;
-  virtual bool              process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& ) = 0;
+  virtual void              setSelectionMode();
+  virtual bool              isIdValid( const int ) const;
+  virtual bool              process( SMESH::SMESH_MeshEditor_ptr, 
+                                     const SMESH::long_array& ,
+                                     SMESH::SMESH_IDSource_ptr obj) = 0;
+  virtual int               nbElemsInMesh() = 0;
   int                       entityType();
 
 protected:
@@ -133,10 +138,11 @@ protected:
   QGroupBox*                mySelGrp;
   QGroupBox*                myCriterionGrp;
 
+  QWidget*                  myChoiceWidget;
   QButtonGroup*             myGroupChoice;
   QComboBox*                myComboBoxFunctor;
 
-  QListBox*                 myListBox;
+  QListWidget*              myListBox;
   QPushButton*              myFilterBtn;
   QPushButton*              myAddBtn;
   QPushButton*              myRemoveBtn;
@@ -171,12 +177,14 @@ class  SMESHGUI_ChangeOrientationDlg : public SMESHGUI_MultiEditDlg
   Q_OBJECT
 
 public:
-               SMESHGUI_ChangeOrientationDlg(SMESHGUI* theModule,
-                                            const char* = 0);
-  virtual      ~SMESHGUI_ChangeOrientationDlg();
+  SMESHGUI_ChangeOrientationDlg( SMESHGUI* );
+  virtual ~SMESHGUI_ChangeOrientationDlg();
 
 protected:
-  virtual bool process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& );
+  virtual bool process( SMESH::SMESH_MeshEditor_ptr,
+                        const SMESH::long_array& ,
+                        SMESH::SMESH_IDSource_ptr obj);
+  virtual int  nbElemsInMesh();
 };
 
 /*!
@@ -188,12 +196,18 @@ class  SMESHGUI_UnionOfTrianglesDlg : public SMESHGUI_MultiEditDlg
   Q_OBJECT
 
 public:
-               SMESHGUI_UnionOfTrianglesDlg(SMESHGUI* theModule,
-                                           const char* = 0);
-  virtual      ~SMESHGUI_UnionOfTrianglesDlg();
+  SMESHGUI_UnionOfTrianglesDlg( SMESHGUI* );
+  virtual ~SMESHGUI_UnionOfTrianglesDlg();
 
 protected:
-  virtual bool process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& );
+  virtual bool      isValid( const bool );
+  virtual bool      process( SMESH::SMESH_MeshEditor_ptr,
+                             const SMESH::long_array&,
+                             SMESH::SMESH_IDSource_ptr obj );
+  virtual int       nbElemsInMesh();
+
+protected slots:
+   virtual void     onDisplaySimulation( bool );
 
 private:
   SMESHGUI_SpinBox* myMaxAngleSpin;
@@ -208,15 +222,17 @@ class  SMESHGUI_CuttingOfQuadsDlg : public SMESHGUI_MultiEditDlg
   Q_OBJECT
 
 public:
-                SMESHGUI_CuttingOfQuadsDlg(SMESHGUI* theModule,
-                                          const char* = 0);
-  virtual       ~SMESHGUI_CuttingOfQuadsDlg();
+  SMESHGUI_CuttingOfQuadsDlg( SMESHGUI* );
+  virtual ~SMESHGUI_CuttingOfQuadsDlg();
 
 protected:
-  virtual bool  process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& );
+  virtual bool  process( SMESH::SMESH_MeshEditor_ptr,
+                         const SMESH::long_array& ,
+                         SMESH::SMESH_IDSource_ptr obj);
+  virtual int   nbElemsInMesh();
 
 protected slots:
-  virtual void  onClose();
+  virtual void  reject();
   void          onCriterionRB();
   void          onPreviewChk();
 
@@ -229,4 +245,46 @@ private:
   QCheckBox*    myPreviewChk;
 };
 
-#endif
+/*!
+ * Class       : SMESHGUI_SplitVolumesDlg
+ * Description : Split all volumes into tetrahedrons
+ */
+class  SMESHGUI_SplitVolumesDlg : public SMESHGUI_MultiEditDlg
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_SplitVolumesDlg( SMESHGUI* );
+  virtual ~SMESHGUI_SplitVolumesDlg();
+
+protected slots:
+
+  virtual void on3d2dChanged(int);
+  virtual void onSelectionDone();
+
+  void         onFacetSelection(bool);
+  void         onSetDir();
+  void         updateNormalPreview(const QString& s="");
+
+protected:
+
+  virtual bool process( SMESH::SMESH_MeshEditor_ptr,
+                        const SMESH::long_array&,
+                        SMESH::SMESH_IDSource_ptr obj );
+  virtual int  nbElemsInMesh();
+
+  virtual void setSelectionMode();
+  void         showFacetByElement( int id );
+  bool         isIntoPrisms();
+
+  QGroupBox*        myFacetSelGrp;
+  SMESHGUI_SpinBox* myPointSpin[3];
+  SMESHGUI_SpinBox* myDirSpin  [3];
+  QPushButton*      myFacetSelBtn;
+  QPushButton*      myAxisBtn[3];
+  QCheckBox*        myAllDomainsChk;
+
+  double            myCellSize;
+};
+
+#endif // SMESHGUI_MULTIEDITDLG_H