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=5c1cfd5b56aad8d9934eb542d241ebf4ae667b04;hb=4cd2499bddcd3da3ec8900fe825bc98669b789b5;hpb=57b43b4d010e2d0a1529d3c131bbb9d416e63258 diff --git a/src/SMESHGUI/SMESHGUI_FilterDlg.h b/src/SMESHGUI/SMESHGUI_FilterDlg.h index 5c1cfd5b5..8081aec69 100755 --- a/src/SMESHGUI/SMESHGUI_FilterDlg.h +++ b/src/SMESHGUI/SMESHGUI_FilterDlg.h @@ -1,66 +1,62 @@ -// 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 "LightApp_SelectionMgr.h" -#include "SALOME_InteractiveObject.hxx" -#include "SALOME_DataMapOfIOMapOfInteger.hxx" -#include "SVTK_Selection.h" +// 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 QTableWidget; +class QTableWidgetItem; +class QStackedWidget; class LightApp_SelectionMgr; class SMESHGUI; class SMESHGUI_FilterLibraryDlg; class SVTK_Selector; -class SVTK_ViewWindow; /*! * Class : SMESHGUI_FilterTable @@ -70,114 +66,111 @@ class SVTK_ViewWindow; * - 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( SMESHGUI*, - QWidget* parent, - const int type); - SMESHGUI_FilterTable( SMESHGUI*, - QWidget* parent, - const QValueList& type); - virtual ~SMESHGUI_FilterTable(); + SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const int ); + SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const QList& ); + virtual ~SMESHGUI_FilterTable(); - void Init (const int type); - void Init (const QValueList& types); + 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); - void SetEditable (const bool); - void SetEnabled (const bool); - void SetLibsEnabled (const bool); + 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; + int GetCriterionType( const int, const int = -1 ) const; - void GetCriterion (const int theRow, - SMESH::Filter::Criterion& theCriterion, - const int theEntityType = -1) const; + void GetCriterion( const int, + SMESH::Filter::Criterion&, + const int = -1 ) const; - void SetCriterion (const int theRow, - const SMESH::Filter::Criterion& theCriterion, - const int theEntityType = -1); + void SetCriterion( const int, + const SMESH::Filter::Criterion&, + const int = -1 ); - void AddCriterion (const SMESH::Filter::Criterion& theCriterion, - const int theEntityType = -1); + void AddCriterion( const SMESH::Filter::Criterion&, + const int = -1 ); - void Copy (const SMESHGUI_FilterTable*); - void SetValidity (const bool); + 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 theRow, - const QString& theText, - const int theEntityType = -1 ); + void SetID( const int, + const QString&, + const int = -1 ); - bool GetID( const int theRow, - QString& theText, - const int theEntityType = -1 ); + bool GetID( const int, + QString&, + const int = -1 ); void Update(); signals: - void CopyFromClicked(); void AddToClicked(); - void EntityTypeChanged (const int); + void EntityTypeChanged( const int ); void NeedValidation(); - void CriterionChanged (const int theRow, const int theEntityType); - void CurrentChanged (int, int); + void CriterionChanged( const int, const int ); + void CurrentChanged( int, int ); private slots: - void onAddBtn(); void onInsertBtn(); void onRemoveBtn(); void onClearBtn(); void onCopyFromBtn(); void onAddToBtn(); - void onCriterionChanged (int, int); - void onEntityType (int); - void onCurrentChanged (int, int); + void onCriterionChanged( int, int ); + void onEntityType( int ); + 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); + Table* createTable( QWidget*, const int ); + 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; @@ -185,7 +178,7 @@ private: SMESHGUI* mySMESHGUI; QGroupBox* myTableGrp; - QGroupBox* mySwitchTableGrp; + QWidget* mySwitchTableGrp; TableMap myTables; QPushButton* myAddBtn; @@ -195,6 +188,7 @@ private: QPushButton* myCopyFromBtn; QPushButton* myAddToBtn; + QGroupBox* myEntityTypeBox; QButtonGroup* myEntityTypeGrp; int myEntityType; int myIsValid; @@ -202,9 +196,9 @@ private: SMESHGUI_FilterLibraryDlg* myLibDlg; - QWidgetStack* myWgStack; + QStackedWidget* myWgStack; - QMap myAddWidgets; + QMap myAddWidgets; }; @@ -221,74 +215,70 @@ class SMESHGUI_FilterDlg : public QDialog enum { Mesh, Selection, Dialog, None }; // Buttons - enum { BTN_OK, BTN_Cancel, BTN_Apply, BTN_Close, BTN_Help }; + enum { BTN_OK, BTN_Apply, BTN_Close, BTN_Help }; public: - SMESHGUI_FilterDlg( SMESHGUI*, - const QValueList& types, - const char* name = 0); - - SMESHGUI_FilterDlg( SMESHGUI*, - const int type, - const char* name = 0); - virtual ~SMESHGUI_FilterDlg(); + SMESHGUI_FilterDlg( SMESHGUI*, const QList& ); + SMESHGUI_FilterDlg( SMESHGUI*, const int ); + virtual ~SMESHGUI_FilterDlg(); - void Init (const QValueList& types); - void Init (const int type); + void Init( const QList&, const bool setInViewer=true ); + void Init( const int, const bool setInViewer=true ); void SetSelection(); - void SetMesh (SMESH::SMESH_Mesh_ptr); - void SetSourceWg (QWidget*); + 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); + void onCriterionChanged( const int, const int ); + void onCurrentChanged( int, int ); private: - void construct (const QValueList& types); + void construct( const QList& ); - void closeEvent (QCloseEvent*); - 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&); - Selection_Mode getSelMode (const int) const; + 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; @@ -298,11 +288,12 @@ private: SMESHGUI_FilterTable* myTable; // initial fields - QValueList myTypes; + QList myTypes; SMESHGUI* mySMESHGUI; LightApp_SelectionMgr* mySelectionMgr; SVTK_Selector* mySelector; - SMESH::SMESH_Mesh_ptr myMesh; + SMESH::SMESH_Mesh_var myMesh; + bool myInitSourceWgOnApply; QWidget* mySourceWg; SALOME_DataMapOfIOMapOfInteger myIObjects; @@ -314,4 +305,4 @@ private: QString myHelpFileName; }; -#endif +#endif // SMESHGUI_FILTERDLG_H