X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_FilterDlg.h;h=8081aec6994a7fc7434a3bc348862eb79a556db0;hp=f63d2b2e0a134802a10023875517e0ad9c550238;hb=4cd2499bddcd3da3ec8900fe825bc98669b789b5;hpb=e4737e85f0da6d3f90fd08f6be1c2825195fe16f diff --git a/src/SMESHGUI/SMESHGUI_FilterDlg.h b/src/SMESHGUI/SMESHGUI_FilterDlg.h index f63d2b2e0..8081aec69 100755 --- a/src/SMESHGUI/SMESHGUI_FilterDlg.h +++ b/src/SMESHGUI/SMESHGUI_FilterDlg.h @@ -1,145 +1,149 @@ -// SMESH SMESHGUI : GUI for SMESH component +// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // +// 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. // +// 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. +// +// 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_FilterDlg.h -// Author : Sergey LITONIN -// Module : SMESH - -#ifndef SMESHGUI_FilterDlg_H -#define SMESHGUI_FilterDlg_H +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_FilterDlg.h +// Author : Sergey LITONIN, Open CASCADE S.A.S. +// +#ifndef SMESHGUI_FILTERDLG_H +#define SMESHGUI_FILTERDLG_H -#include -#include -#include -#include +// SMESH includes +#include "SMESH_SMESHGUI.hxx" -#include "SALOME_Selection.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_DataMapOfIOMapOfInteger.hxx" +// Qt includes +#include +#include +#include +#include -#include +// SALOME GUI includes +#include +#include +// IDL includes #include #include CORBA_SERVER_HEADER(SMESH_Filter) #include CORBA_SERVER_HEADER(SMESH_Mesh) +class QFrame; class QButtonGroup; class QCheckBox; -class QCloseEvent; -class QComboBox; -class QEvent; class QGroupBox; class QPushButton; -class QStringList; -class QTable; -class QTableItem; -class QWidgetStack; -class SALOME_Selection; +class QTableWidget; +class QTableWidgetItem; +class QStackedWidget; +class LightApp_SelectionMgr; class SMESHGUI; class SMESHGUI_FilterLibraryDlg; +class SVTK_Selector; -/* - Class : SMESHGUI_FilterTable - Description : Frame containig - - Button group for switching entity type - - Table for displaying filter criterions - - Buttons for editing table -*/ +/*! + * Class : SMESHGUI_FilterTable + * Description : Frame containig + * - Button group for switching entity type + * - Table for displaying filter criterions + * - Buttons for editing table + */ -class SMESHGUI_FilterTable : public QFrame +class SMESHGUI_EXPORT SMESHGUI_FilterTable : public QWidget { Q_OBJECT class Table; class ComboItem; + class IntSpinItem; + class DoubleSpinItem; + class CheckItem; class AdditionalWidget; + class ComboDelegate; typedef QMap TableMap; public: - - SMESHGUI_FilterTable( QWidget* parent, - const int type ); - SMESHGUI_FilterTable( QWidget* parent, - const QValueList& type ); - virtual ~SMESHGUI_FilterTable(); - - void Init( const int type ); - void Init( const QValueList& types ); + SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const int ); + SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const QList& ); + virtual ~SMESHGUI_FilterTable(); + + void Init( const QList& ); QGroupBox* GetTableGrp(); - bool IsValid( const bool = true, const int theEntityType = -1 ) const; + bool IsValid( const bool = true, const int = -1 ) const; int GetType() const; - void SetType( const int ); + void SetType(const int); void RestorePreviousEntityType(); - int NumRows( const int theEntityType = -1 ) const; - void Clear( const int theEntityType = -1 ); + int NumRows( const int = -1 ) const; + void Clear( const int = -1 ); void SetEditable( const bool ); void SetEnabled( const bool ); void SetLibsEnabled( const bool ); bool IsEditable() const; - int GetCriterionType( const int theRow, const int theType = -1 ) const; - - void GetCriterion( const int theRow, - SMESH::Filter::Criterion& theCriterion, - const int theEntityType = -1 ) const; + int GetCriterionType( const int, const int = -1 ) const; - void SetCriterion( const int theRow, - const SMESH::Filter::Criterion& theCriterion, - const int theEntityType = -1 ); + void GetCriterion( const int, + SMESH::Filter::Criterion&, + const int = -1 ) const; + + void SetCriterion( const int, + const SMESH::Filter::Criterion&, + const int = -1 ); + + void AddCriterion( const SMESH::Filter::Criterion&, + const int = -1 ); - void AddCriterion( const SMESH::Filter::Criterion& theCriterion, - const int theEntityType = -1 ); - void Copy( const SMESHGUI_FilterTable* ); void SetValidity( const bool ); - bool CurrentCell( int& theRow, int& theCol ) const; - void SetThreshold( const int theRow, - const QString& theText, - const int theEntityType = -1 ); + bool CurrentCell( int&, int& ) const; + void SetThreshold( const int, + const QString&, + const int = -1 ); - bool GetThreshold( const int theRow, - QString& theText, - const int theEntityType = -1 ); + bool GetThreshold( const int, + QString&, + const int = -1 ); + + void SetID( const int, + const QString&, + const int = -1 ); + + bool GetID( const int, + QString&, + const int = -1 ); void Update(); - signals: - void CopyFromClicked(); void AddToClicked(); void EntityTypeChanged( const int ); void NeedValidation(); - void CretarionChanged( const int theRow, const int theEntityType ); + void CriterionChanged( const int, const int ); void CurrentChanged( int, int ); - -private slots: +private slots: void onAddBtn(); void onInsertBtn(); void onRemoveBtn(); @@ -151,29 +155,30 @@ private slots: void onCurrentChanged( int, int ); private: - - void addRow( Table*, const int, const bool toTheEnd = true ); - QTableItem* getCriterionItem( QTable*, const int ); - QTableItem* getCompareItem( QTable* ); - QTableItem* getUnaryItem( QTable* ); - QTableItem* getBinaryItem( QTable* ); - const QMap& getCriteria( const int theType ) const; + void addRow( Table*, const int, const bool = true ); + QTableWidgetItem* getCriterionItem( const int ) const; + QTableWidgetItem* getCompareItem() const; + QTableWidgetItem* getUnaryItem() const; + QTableWidgetItem* getBinaryItem() const; + const QMap& getCriteria( const int ) const; const QMap& getCompare() const; Table* createTable( QWidget*, const int ); - QWidget* createAdditionalFrame( QWidget* theParent ); + QWidget* createAdditionalFrame( QWidget* ); int getFirstSelectedRow() const; - void onCriterionChanged( const int, const int, const int ); - + void onCriterionChanged( const int, const int, const int ); + void updateBtnState(); - void removeAdditionalWidget( QTable* theTable, const int theRow ); + void removeAdditionalWidget( QTableWidget*, const int ); void updateAdditionalWidget(); + const char* getPrecision( const int ); const QMap& getSupportedTypes() const; - + private: + SMESHGUI* mySMESHGUI; QGroupBox* myTableGrp; - QGroupBox* mySwitchTableGrp; + QWidget* mySwitchTableGrp; TableMap myTables; QPushButton* myAddBtn; @@ -183,97 +188,97 @@ private: QPushButton* myCopyFromBtn; QPushButton* myAddToBtn; + QGroupBox* myEntityTypeBox; QButtonGroup* myEntityTypeGrp; int myEntityType; int myIsValid; - + bool myIsLocked; + SMESHGUI_FilterLibraryDlg* myLibDlg; - QWidgetStack* myWgStack; - QMap myAddWidgets; + QStackedWidget* myWgStack; + + QMap myAddWidgets; }; -/* - Class : SMESHGUI_FilterDlg - Description : Dialog to specify filters for VTK viewer -*/ +/*! + * Class : SMESHGUI_FilterDlg + * Description : Dialog to specify filters for VTK viewer + */ class SMESHGUI_FilterDlg : public QDialog -{ +{ Q_OBJECT // Source elements to be selected enum { Mesh, Selection, Dialog, None }; - + // Buttons - enum { BTN_OK, BTN_Cancel, BTN_Apply, BTN_Close }; + enum { BTN_OK, BTN_Apply, BTN_Close, BTN_Help }; public: - SMESHGUI_FilterDlg( QWidget* parent, - const QValueList& types, - const char* name = 0 ); - - SMESHGUI_FilterDlg( QWidget* parent, - const int type, - const char* name = 0 ); - virtual ~SMESHGUI_FilterDlg(); - - void Init( const QValueList& types ); - void Init( const int type ); - - void SetSelection( SALOME_Selection* ); - void SetMesh( SMESH::SMESH_Mesh_ptr ); - void SetSourceWg( QWidget* ); + SMESHGUI_FilterDlg( SMESHGUI*, const QList& ); + SMESHGUI_FilterDlg( SMESHGUI*, const int ); + virtual ~SMESHGUI_FilterDlg(); + + void Init( const QList&, const bool setInViewer=true ); + void Init( const int, const bool setInViewer=true ); + + void SetSelection(); + void SetMesh (SMESH::SMESH_Mesh_var); + void SetSourceWg( QWidget*, const bool initOnApply = true ); static SMESH::Filter::Criterion createCriterion(); + SMESH::Filter_var GetFilter() const; + void SetFilter(SMESH::Filter_var filter, int type); + signals: void Accepted(); +protected slots: + virtual void reject(); + private slots: void onOk(); bool onApply(); - void onClose(); + void onHelp(); void onDeactivate(); void onSelectionDone(); void onCriterionChanged( const int, const int ); void onCurrentChanged( int, int ); - + private: - void construct( const QValueList& types ); + void construct( const QList& ); - void closeEvent( QCloseEvent* e ); - void enterEvent ( QEvent * ); + void enterEvent( QEvent* ); + void keyPressEvent( QKeyEvent* ); // dialog creation - QFrame* createButtonFrame( QWidget* ); - QFrame* createMainFrame( QWidget* ); - QButtonGroup* createSourceGroup( QWidget* ); + QWidget* createButtonFrame( QWidget* ); + QWidget* createMainFrame( QWidget* ); + QWidget* createSourceGroup( QWidget* ); void updateMainButtons(); - + // execution bool isValid() const; - bool createFilter( const int theType ); + bool createFilter( const int ); void insertFilterInViewer(); - void selectInViewer( const int theType, - const QValueList& theIds ); - void filterSource( const int theType, - QValueList& theResIds ); - void filterSelectionSource( const int theType, - QValueList& theResIds ); - void getIdsFromWg( const QWidget*, QValueList& ) const; - void setIdsToWg( QWidget*, const QValueList& ); + void selectInViewer( const int, const QList& ); + void filterSource( const int, QList& ); + void filterSelectionSource( const int, QList& ); + void getIdsFromWg( const QWidget*, QList& ) const; + void setIdsToWg( QWidget*, const QList& ); Selection_Mode getSelMode( const int ) const; void updateSelection(); private: - // widgets - QFrame* myMainFrame; + QWidget* myMainFrame; QButtonGroup* mySourceGrp; QCheckBox* mySetInViewer; @@ -283,10 +288,12 @@ private: SMESHGUI_FilterTable* myTable; // initial fields - QValueList myTypes; + QList myTypes; SMESHGUI* mySMESHGUI; - SALOME_Selection* mySelection; - SMESH::SMESH_Mesh_ptr myMesh; + LightApp_SelectionMgr* mySelectionMgr; + SVTK_Selector* mySelector; + SMESH::SMESH_Mesh_var myMesh; + bool myInitSourceWgOnApply; QWidget* mySourceWg; SALOME_DataMapOfIOMapOfInteger myIObjects; @@ -294,26 +301,8 @@ private: QMap< int, SMESH::Filter_var > myFilter; QMap< int, bool > myInsertState; QMap< int, int > myApplyToState; -}; - -#endif - - - - - - - - - - - - - - - - - - + QString myHelpFileName; +}; +#endif // SMESHGUI_FILTERDLG_H