Salome HOME
SALOME PAL V1_4_1
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_FilterDlg.h
diff --git a/src/SMESHGUI/SMESHGUI_FilterDlg.h b/src/SMESHGUI/SMESHGUI_FilterDlg.h
new file mode 100755 (executable)
index 0000000..6ba1d4a
--- /dev/null
@@ -0,0 +1,195 @@
+//  SMESH SMESHGUI : GUI for SMESH component\r
+//\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
+// \r
+//  This library is free software; you can redistribute it and/or \r
+//  modify it under the terms of the GNU Lesser General Public \r
+//  License as published by the Free Software Foundation; either \r
+//  version 2.1 of the License. \r
+// \r
+//  This library is distributed in the hope that it will be useful, \r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
+//  Lesser General Public License for more details. \r
+// \r
+//  You should have received a copy of the GNU Lesser General Public \r
+//  License along with this library; if not, write to the Free Software \r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
+// \r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//\r
+//\r
+//\r
+//  File   : SMESHGUI_FilterDlg.h\r
+//  Author : Sergey LITONIN\r
+//  Module : SMESH\r
+\r
+\r
+#ifndef SMESHGUI_FilterDlg_H\r
+#define SMESHGUI_FilterDlg_H\r
+\r
+#include <qdialog.h>\r
+#include <qmap.h>\r
+#include <qvaluelist.h>\r
+#include <SALOME_Selection.h>\r
+\r
+#include <SALOMEconfig.h>\r
+#include CORBA_SERVER_HEADER(SMESH_Filter)\r
+#include CORBA_SERVER_HEADER(SMESH_Mesh)\r
+\r
+class QCloseEvent;\r
+class QWidgetStack;\r
+class QStringList;\r
+class QTableItem;\r
+class QFrame;\r
+class QEvent;\r
+class QPushButton;\r
+class QTable;\r
+class SALOME_Selection;\r
+class SMESHGUI;\r
+class QComboBox;\r
+class QButtonGroup;\r
+class QCheckBox;\r
+class QGroupBox;\r
+\r
+\r
+/*\r
+  Class       : SMESHGUI_FilterDlg\r
+  Description : Dialog to specify filters for VTK viewer\r
+*/\r
+\r
+class SMESHGUI_FilterDlg : public QDialog\r
+{ \r
+  Q_OBJECT\r
+\r
+  class Table;\r
+\r
+  // Edge criteria\r
+  enum { FreeBorders = 0, MultiBorders, Length }; \r
+\r
+  // Face criteria\r
+  enum { AspectRatio = 0, Warping, MinimumAngle, Taper, Skew, Area }; \r
+\r
+  // Comparision\r
+  enum { LessThan = 0, MoreThan, EqualTo };\r
+\r
+  // Logical operations\r
+  enum { LO_And = 0, LO_Or, LO_Undefined };\r
+\r
+  // Source elements to be selected\r
+  enum { Mesh, Selection, Dialog, None };\r
+\r
+  typedef QMap<int, Table*> TableMap;\r
+\r
+public:\r
+                            SMESHGUI_FilterDlg( QWidget*    parent, \r
+                                                const int   type,\r
+                                                const bool  theModal = true,\r
+                                                const char* name = 0 );\r
+  virtual                   ~SMESHGUI_FilterDlg();\r
+\r
+  void                      Init( const int type );\r
+\r
+  void                      SetSelection( SALOME_Selection* );\r
+  void                      SetMesh( SMESH::SMESH_Mesh_ptr );\r
+  void                      SetSourceWg( QWidget* );\r
+\r
+private slots:\r
+\r
+  void                      onAddBtn();\r
+  void                      onRemoveBtn();\r
+  void                      onClearBtn();\r
+  void                      onCriterionChanged( int, int );\r
+\r
+  void                      onOk();\r
+  bool                      onApply();\r
+  void                      onClose();\r
+  void                      onDeactivate();\r
+\r
+private:\r
+\r
+  void                      closeEvent( QCloseEvent* e );\r
+  void                      enterEvent ( QEvent * );\r
+\r
+  void                      updateBtnState();\r
+\r
+  // dialog creation\r
+  QFrame*                   createButtonFrame( QWidget*, const bool );\r
+  QFrame*                   createMainFrame( QWidget* );\r
+  Table*                    createTable( QWidget*, const int );\r
+  QButtonGroup*             createSourceGroup( QWidget* );\r
+  void                      addRow( Table*, const int );\r
+  QTableItem*               getCriterionItem( QTable*, const int );\r
+  QTableItem*               getCompareItem( QTable* );\r
+  QTableItem*               getNotItem( QTable* );\r
+  QTableItem*               getLogOpItem( QTable* );\r
+  const QStringList&        getCriteria( const int theType ) const;\r
+  const QStringList&        getCompare () const;\r
+  \r
+  // query\r
+  int                       getCurrType() const;\r
+  int                       getCriterion( const int theType, const int theRow ) const;\r
+\r
+  // execution\r
+  bool                      isValid() const;\r
+  SMESH::Predicate_ptr      createPredicate( const int theType );\r
+  void                      insertFilterInViewer( SMESH::Predicate_ptr thePred );\r
+  void                      selectInViewer( const int theType,\r
+                                            const QValueList<int>& theIds );\r
+  void                      filterSource( const int            theType,\r
+                                          SMESH::Predicate_ptr thePred,\r
+                                          QValueList<int>&     theResIds );\r
+  void                      filterSelectionSource( const int            theType,\r
+                                                   SMESH::Predicate_ptr thePred,\r
+                                                   QValueList<int>&     theResIds );\r
+  void                      getIdsFromWg( const QWidget*, QValueList<int>& ) const;\r
+  void                      setIdsToWg( QWidget*, const QValueList<int>& );\r
+  Selection_Mode            getSelMode( const int ) const;\r
+\r
+private:\r
+\r
+  // widgets\r
+  QFrame*                   myMainFrame;\r
+  QGroupBox*                myTableGrp;\r
+\r
+  TableMap                  myTables;\r
+  QPushButton*              myAddBtn;\r
+  QPushButton*              myRemoveBtn;\r
+  QPushButton*              myClearBtn;\r
+  QButtonGroup*             mySourceGrp;\r
+  QCheckBox*                mySetInViewer;\r
+\r
+  QPushButton*              myOkBtn;\r
+  QPushButton*              myApplyBtn;\r
+  QPushButton*              myCloseBtn;\r
+\r
+  // initial fields\r
+  int                       myType;\r
+  SMESHGUI*                 mySMESHGUI;\r
+  SALOME_Selection*         mySelection;\r
+  SMESH::SMESH_Mesh_ptr     myMesh;\r
+  QWidget*                  mySourceWg;\r
+};\r
+\r
+#endif\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r