-// SMESH SMESHGUI : GUI for SMESH component
+// Copyright (C) 2007-2021 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, or (at your option) any later version.
//
+// 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 <qdialog.h>
-#include <qframe.h>
-#include <qmap.h>
-#include <qvaluelist.h>
+// SMESH includes
+#include "SMESH_SMESHGUI.hxx"
-#include "SALOME_Selection.h"
-#include "SALOME_InteractiveObject.hxx"
-#include "SALOME_DataMapOfIOMapOfInteger.hxx"
+// Qt includes
+#include <QWidget>
+#include <QDialog>
+#include <QMap>
+#include <QList>
-#include <TColStd_IndexedMapOfInteger.hxx>
+// SALOME GUI includes
+#include <SALOME_DataMapOfIOMapOfInteger.hxx>
+#include <SVTK_Selection.h>
+#include <SVTK_Hash.h>
+// IDL includes
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Filter)
#include CORBA_SERVER_HEADER(SMESH_Mesh)
+class LightApp_SelectionMgr;
class QButtonGroup;
class QCheckBox;
-class QCloseEvent;
-class QComboBox;
-class QEvent;
+class QFrame;
class QGroupBox;
class QPushButton;
-class QStringList;
-class QTable;
-class QTableItem;
-class QWidgetStack;
-class SALOME_Selection;
+class QStackedWidget;
+class QTableWidget;
+class QTableWidgetItem;
class SMESHGUI;
class SMESHGUI_FilterLibraryDlg;
+class SMESH_Actor;
+class SVTK_Selector;
-/*
- Class : SMESHGUI_FilterTable
- Description : Frame containig
- - Button group for switching entity type
- - Table for displaying filter criterions
- - Buttons for editing table
-*/
+typedef NCollection_DataMap<Handle(SALOME_InteractiveObject), SVTK_TIndexedMapOfVtkId> SALOME_DataMapOfIOMapOfVtk;
+typedef SALOME_DataMapOfIOMapOfVtk::Iterator SALOME_DataMapIteratorOfIOMapOfVtk;
-class SMESHGUI_FilterTable : public QFrame
+/*!
+ * Class : SMESHGUI_FilterTable
+ * Description : Frame containing
+ * - Button group for switching entity type
+ * - Table for displaying filter criterions
+ * - Buttons for editing table
+ */
+
+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<int, Table*> TableMap;
public:
-
- SMESHGUI_FilterTable( QWidget* parent,
- const int type );
- SMESHGUI_FilterTable( QWidget* parent,
- const QValueList<int>& type );
- virtual ~SMESHGUI_FilterTable();
-
- void Init( const int type );
- void Init( const QValueList<int>& types );
+ SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const int );
+ SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const QList<int>& );
+ virtual ~SMESHGUI_FilterTable();
+
+ void Init( const QList<int>& );
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 ThresholdChanged( const int, const int );
void CurrentChanged( int, int );
-
-private slots:
+private slots:
void onAddBtn();
void onInsertBtn();
void onRemoveBtn();
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<int, QString>& 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<int, QString>& getCriteria( const int ) const;
const QMap<int, QString>& 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<int, QString>& getSupportedTypes() const;
-
+
private:
+ SMESHGUI* mySMESHGUI;
QGroupBox* myTableGrp;
- QGroupBox* mySwitchTableGrp;
+ QWidget* mySwitchTableGrp;
TableMap myTables;
QPushButton* myAddBtn;
QPushButton* myCopyFromBtn;
QPushButton* myAddToBtn;
+ QGroupBox* myEntityTypeBox;
QButtonGroup* myEntityTypeGrp;
int myEntityType;
int myIsValid;
-
+ bool myIsLocked;
+
SMESHGUI_FilterLibraryDlg* myLibDlg;
- QWidgetStack* myWgStack;
- QMap<QTableItem*, AdditionalWidget*> myAddWidgets;
+ QStackedWidget* myWgStack;
+
+ QMap<QTableWidgetItem*, AdditionalWidget*> 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<int>& types,
- const char* name = 0 );
-
- SMESHGUI_FilterDlg( QWidget* parent,
- const int type,
- const char* name = 0 );
- virtual ~SMESHGUI_FilterDlg();
-
- void Init( const QValueList<int>& types );
- void Init( const int type );
-
- void SetSelection( SALOME_Selection* );
- void SetMesh( SMESH::SMESH_Mesh_ptr );
- void SetSourceWg( QWidget* );
+ SMESHGUI_FilterDlg( SMESHGUI*, const QList<int>& );
+ SMESHGUI_FilterDlg( SMESHGUI*, const int );
+ virtual ~SMESHGUI_FilterDlg();
+
+ void Init( const QList<int>&, const bool setInViewer=true );
+ void Init( const int, const bool setInViewer=true );
+
+ void SetSelection();
+ void SetMesh (SMESH::SMESH_Mesh_var);
+ void SetGroup (SMESH::SMESH_GroupOnFilter_var);
+ void SetSourceWg( QWidget*, const bool initOnApply = true );
+ void SetEnabled( bool setInViewer, bool diffSources );
static SMESH::Filter::Criterion createCriterion();
+ SMESH::Filter_var GetFilter() const;
+ void SetFilter(SMESH::Filter_var filter, int type);
+ void UnRegisterFilters();
+
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 onThresholdChanged( const int, const int );
void onCurrentChanged( int, int );
-
+ void onOpenView();
+ void onCloseView();
+
private:
- void construct( const QValueList<int>& types );
+ void construct( const QList<int>& );
- 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<int>& theIds );
- void filterSource( const int theType,
- QValueList<int>& theResIds );
- void filterSelectionSource( const int theType,
- QValueList<int>& theResIds );
- void getIdsFromWg( const QWidget*, QValueList<int>& ) const;
- void setIdsToWg( QWidget*, const QValueList<int>& );
+ void selectInViewer( const int, const QList<int>& );
+ void filterSource( const int, QList<int>& );
+ void filterSelectionSource( const int, QList<int>& );
+ void getIdsFromWg( const QWidget*, QList<int>& ) const;
+ void setIdsToWg( QWidget*, const QList<int>& );
Selection_Mode getSelMode( const int ) const;
void updateSelection();
+ SMESH_Actor* getActor();
private:
-
// widgets
- QFrame* myMainFrame;
+ QWidget* myMainFrame;
QButtonGroup* mySourceGrp;
QCheckBox* mySetInViewer;
SMESHGUI_FilterTable* myTable;
// initial fields
- QValueList<int> myTypes;
+ QList<int> myTypes;
SMESHGUI* mySMESHGUI;
- SALOME_Selection* mySelection;
- SMESH::SMESH_Mesh_ptr myMesh;
+ LightApp_SelectionMgr* mySelectionMgr;
+ SVTK_Selector* mySelector;
+ SMESH::SMESH_Mesh_var myMesh;
+ SMESH::SMESH_GroupOnFilter_var myGroup;
+ bool myInitSourceWgOnApply;
+ bool myInsertEnabled;
+ bool myDiffSourcesEnabled;
QWidget* mySourceWg;
- SALOME_DataMapOfIOMapOfInteger myIObjects;
+ SALOME_DataMapOfIOMapOfVtk myIObjects;
bool myIsSelectionChanged;
QMap< int, SMESH::Filter_var > myFilter;
QMap< int, bool > myInsertState;
QMap< int, int > myApplyToState;
-};
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ QString myHelpFileName;
+ bool myToRestoreSelMode;
+ int mySelModeToRestore;
+ void restoreSelMode();
+};
+#endif // SMESHGUI_FILTERDLG_H