--- /dev/null
+// 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