Version: 9.12.0
SMESHGUI_FilterDlg.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 // SMESH SMESHGUI : GUI for SMESH component
24 // File : SMESHGUI_FilterDlg.h
25 // Author : Sergey LITONIN, Open CASCADE S.A.S.
26 //
27 #ifndef SMESHGUI_FILTERDLG_H
28 #define SMESHGUI_FILTERDLG_H
29 
30 // SMESH includes
31 #include "SMESH_SMESHGUI.hxx"
32 
33 // Qt includes
34 #include <QWidget>
35 #include <QDialog>
36 #include <QMap>
37 #include <QList>
38 
39 // SALOME GUI includes
40 #include <SALOME_DataMapOfIOMapOfInteger.hxx>
41 #include <SVTK_Selection.h>
42 #include <SVTK_Hash.h>
43 
44 // IDL includes
45 #include <SALOMEconfig.h>
46 #include CORBA_SERVER_HEADER(SMESH_Filter)
47 #include CORBA_SERVER_HEADER(SMESH_Mesh)
48 
49 class LightApp_SelectionMgr;
50 class QButtonGroup;
51 class QCheckBox;
52 class QFrame;
53 class QGroupBox;
54 class QPushButton;
55 class QStackedWidget;
56 class QTableWidget;
57 class QTableWidgetItem;
58 class SMESHGUI;
60 class SMESH_Actor;
61 class SVTK_Selector;
62 
63 typedef NCollection_DataMap<Handle(SALOME_InteractiveObject), SVTK_TIndexedMapOfVtkId> SALOME_DataMapOfIOMapOfVtk;
64 typedef SALOME_DataMapOfIOMapOfVtk::Iterator SALOME_DataMapIteratorOfIOMapOfVtk;
65 
75 {
76  Q_OBJECT
77 
78  class Table;
79  class ComboItem;
80  class IntSpinItem;
81  class DoubleSpinItem;
82  class CheckItem;
83  class AdditionalWidget;
84  class ComboDelegate;
85 
86  typedef QMap<int, Table*> TableMap;
87 
88 public:
89  SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const int );
90  SMESHGUI_FilterTable( SMESHGUI*, QWidget*, const QList<int>& );
91  virtual ~SMESHGUI_FilterTable();
92 
93  void Init( const QList<int>& );
94 
95  QGroupBox* GetTableGrp();
96 
97  bool IsValid( const bool = true, const int = -1 ) const;
98  int GetType() const;
99  void SetType(const int);
100  void RestorePreviousEntityType();
101  int NumRows( const int = -1 ) const;
102  void Clear( const int = -1 );
103  void SetEditable( const bool );
104  void SetEnabled( const bool );
105  void SetLibsEnabled( const bool );
106  bool IsEditable() const;
107 
108  int GetCriterionType( const int, const int = -1 ) const;
109 
110  void GetCriterion( const int,
112  const int = -1 ) const;
113 
114  void SetCriterion( const int,
116  const int = -1 );
117 
118  void AddCriterion( const SMESH::Filter::Criterion&,
119  const int = -1 );
120 
121  void Copy( const SMESHGUI_FilterTable* );
122  void SetValidity( const bool );
123 
124  bool CurrentCell( int&, int& ) const;
125  void SetThreshold( const int,
126  const QString&,
127  const int = -1 );
128 
129  bool GetThreshold( const int,
130  QString&,
131  const int = -1 );
132 
133  void SetID( const int,
134  const QString&,
135  const int = -1 );
136 
137  bool GetID( const int,
138  QString&,
139  const int = -1 );
140 
141  void Update();
142 
143 signals:
145  void AddToClicked();
146  void EntityTypeChanged( const int );
148  void CriterionChanged( const int, const int );
149  void ThresholdChanged( const int, const int );
150  void CurrentChanged( int, int );
151 
152 private slots:
153  void onAddBtn();
154  void onInsertBtn();
155  void onRemoveBtn();
156  void onClearBtn();
157  void onCopyFromBtn();
158  void onAddToBtn();
159  void onCriterionChanged( int, int );
160  void onEntityType( int );
161  void onCurrentChanged( int, int );
162 
163 private:
164  void addRow( Table*, const int, const bool = true );
165  QTableWidgetItem* getCriterionItem( const int ) const;
166  QTableWidgetItem* getCompareItem() const;
167  QTableWidgetItem* getUnaryItem() const;
168  QTableWidgetItem* getBinaryItem() const;
169  const QMap<int, QString>& getCriteria( const int ) const;
170  const QMap<int, QString>& getCompare() const;
171  Table* createTable( QWidget*, const int );
172  QWidget* createAdditionalFrame( QWidget* );
173  int getFirstSelectedRow() const;
174  void onCriterionChanged( const int, const int, const int );
175 
176  void updateBtnState();
177  void removeAdditionalWidget( QTableWidget*, const int );
178  void updateAdditionalWidget();
179  const char* getPrecision( const int );
180 
181  const QMap<int, QString>& getSupportedTypes() const;
182 
183 private:
185 
188 
190  QPushButton* myAddBtn;
191  QPushButton* myInsertBtn;
192  QPushButton* myRemoveBtn;
193  QPushButton* myClearBtn;
194  QPushButton* myCopyFromBtn;
195  QPushButton* myAddToBtn;
196 
198  QButtonGroup* myEntityTypeGrp;
202 
204 
205  QStackedWidget* myWgStack;
206 
207  QMap<QTableWidgetItem*, AdditionalWidget*> myAddWidgets;
208 };
209 
210 
217 {
218  Q_OBJECT
219 
220  // Source elements to be selected
221  enum { Mesh, Selection, Dialog, None };
222 
223  // Buttons
225 
226 public:
227  SMESHGUI_FilterDlg( SMESHGUI*, const QList<int>& );
228  SMESHGUI_FilterDlg( SMESHGUI*, const int );
229  virtual ~SMESHGUI_FilterDlg();
230 
231  void Init( const QList<int>&, const bool setInViewer=true );
232  void Init( const int, const bool setInViewer=true );
233 
234  void SetSelection();
235  void SetMesh (SMESH::SMESH_Mesh_var);
236  void SetGroup (SMESH::SMESH_GroupOnFilter_var);
237  void SetSourceWg( QWidget*, const bool initOnApply = true );
238  void SetEnabled( bool setInViewer, bool diffSources );
239 
241 
242  SMESH::Filter_var GetFilter() const;
243  void SetFilter(SMESH::Filter_var filter, int type);
244  void UnRegisterFilters();
245 
246 signals:
247 
248  void Accepted();
249 
250 protected slots:
251  virtual void reject();
252 
253 private slots:
254 
255  void onOk();
256  bool onApply();
257  void onHelp();
258  void onDeactivate();
259  void onSelectionDone();
260  void onCriterionChanged( const int, const int );
261  void onThresholdChanged( const int, const int );
262  void onCurrentChanged( int, int );
263  void onOpenView();
264  void onCloseView();
265 
266 private:
267 
268  void construct( const QList<int>& );
269 
270  void enterEvent( QEvent* );
271  void keyPressEvent( QKeyEvent* );
272 
273  // dialog creation
277  void updateMainButtons();
278 
279  // execution
280  bool isValid() const;
281  bool createFilter( const int );
282  void insertFilterInViewer();
283  void selectInViewer( const int, const QList<int>& );
284  void filterSource( const int, QList<int>& );
285  void filterSelectionSource( const int, QList<int>& );
286  void getIdsFromWg( const QWidget*, QList<int>& ) const;
287  void setIdsToWg( QWidget*, const QList<int>& );
288  Selection_Mode getSelMode( const int ) const;
289  void updateSelection();
291 
292 private:
293  // widgets
295  QButtonGroup* mySourceGrp;
296 
297  QCheckBox* mySetInViewer;
298 
299  QMap<int, QPushButton*> myButtons;
300 
302 
303  // initial fields
304  QList<int> myTypes;
306  LightApp_SelectionMgr* mySelectionMgr;
307  SVTK_Selector* mySelector;
308  SMESH::SMESH_Mesh_var myMesh;
309  SMESH::SMESH_GroupOnFilter_var myGroup;
314 
317  QMap< int, SMESH::Filter_var > myFilter;
318  QMap< int, bool > myInsertState;
319  QMap< int, int > myApplyToState;
320 
321  QString myHelpFileName;
322 
325  void restoreSelMode();
326 };
327 
328 #endif // SMESHGUI_FILTERDLG_H
Handle(SALOME_InteractiveObject) GeomSelectionTools
Return the first selected Salome Interactive Object (Handle(Salome_InteractiveObject))
Definition: GeomSelectionTools.cxx:97
NCollection_DataMap< Handle(SALOME_InteractiveObject), SVTK_TIndexedMapOfVtkId > SALOME_DataMapOfIOMapOfVtk
Definition: SMESHGUI_FilterDlg.h:61
SALOME_DataMapOfIOMapOfVtk::Iterator SALOME_DataMapIteratorOfIOMapOfVtk
Definition: SMESHGUI_FilterDlg.h:64
#define SMESHGUI_EXPORT
Definition: SMESH_SMESHGUI.hxx:36
Class : SMESHGUI_FilterDlg Description : Dialog to specify filters for VTK viewer.
Definition: SMESHGUI_FilterDlg.h:217
QMap< int, QPushButton * > myButtons
Definition: SMESHGUI_FilterDlg.h:299
void SetSourceWg(QWidget *, const bool initOnApply=true)
Definition: SMESHGUI_FilterDlg.cxx:3288
SALOME_DataMapOfIOMapOfVtk myIObjects
Definition: SMESHGUI_FilterDlg.h:315
@ BTN_Help
Definition: SMESHGUI_FilterDlg.h:224
@ BTN_Apply
Definition: SMESHGUI_FilterDlg.h:224
@ BTN_OK
Definition: SMESHGUI_FilterDlg.h:224
@ BTN_Close
Definition: SMESHGUI_FilterDlg.h:224
void insertFilterInViewer()
Definition: SMESHGUI_FilterDlg.cxx:3503
SMESHGUI * mySMESHGUI
Definition: SMESHGUI_FilterDlg.h:305
bool myIsSelectionChanged
Definition: SMESHGUI_FilterDlg.h:316
void onSelectionDone()
Definition: SMESHGUI_FilterDlg.cxx:3755
SMESHGUI_FilterDlg(SMESHGUI *, const QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:2693
void SetGroup(SMESH::SMESH_GroupOnFilter_var)
Definition: SMESHGUI_FilterDlg.cxx:3330
void onThresholdChanged(const int, const int)
Definition: SMESHGUI_FilterDlg.cxx:3853
void onCriterionChanged(const int, const int)
Definition: SMESHGUI_FilterDlg.cxx:3843
bool myToRestoreSelMode
Definition: SMESHGUI_FilterDlg.h:323
void keyPressEvent(QKeyEvent *)
Definition: SMESHGUI_FilterDlg.cxx:3967
Selection_Mode getSelMode(const int) const
Definition: SMESHGUI_FilterDlg.cxx:3149
void setIdsToWg(QWidget *, const QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3169
void SetMesh(SMESH::SMESH_Mesh_var)
Definition: SMESHGUI_FilterDlg.cxx:3314
static SMESH::Filter::Criterion createCriterion()
Definition: SMESHGUI_FilterDlg.cxx:3733
bool onApply()
Definition: SMESHGUI_FilterDlg.cxx:3367
@ Mesh
Definition: SMESHGUI_FilterDlg.h:221
@ None
Definition: SMESHGUI_FilterDlg.h:221
@ Dialog
Definition: SMESHGUI_FilterDlg.h:221
@ Selection
Definition: SMESHGUI_FilterDlg.h:221
SMESH_Actor * getActor()
Definition: SMESHGUI_FilterDlg.cxx:3647
QWidget * myMainFrame
Definition: SMESHGUI_FilterDlg.h:294
QWidget * createSourceGroup(QWidget *)
Definition: SMESHGUI_FilterDlg.cxx:2806
SMESHGUI_FilterTable * myTable
Definition: SMESHGUI_FilterDlg.h:301
void filterSource(const int, QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3530
void onDeactivate()
Definition: SMESHGUI_FilterDlg.cxx:3086
SMESH::SMESH_Mesh_var myMesh
Definition: SMESHGUI_FilterDlg.h:308
SMESH::Filter_var GetFilter() const
Return the current filter.
Definition: SMESHGUI_FilterDlg.cxx:3455
QCheckBox * mySetInViewer
Definition: SMESHGUI_FilterDlg.h:297
void UnRegisterFilters()
call UnRegister() for myFilter's
Definition: SMESHGUI_FilterDlg.cxx:3490
bool isValid() const
Definition: SMESHGUI_FilterDlg.cxx:3193
void updateMainButtons()
Definition: SMESHGUI_FilterDlg.cxx:2836
void enterEvent(QEvent *)
Definition: SMESHGUI_FilterDlg.cxx:3095
void SetFilter(SMESH::Filter_var filter, int type)
Sets a filter to the table.
Definition: SMESHGUI_FilterDlg.cxx:3474
SMESH::SMESH_GroupOnFilter_var myGroup
Definition: SMESHGUI_FilterDlg.h:309
void getIdsFromWg(const QWidget *, QList< int > &) const
Definition: SMESHGUI_FilterDlg.cxx:3107
QWidget * mySourceWg
Definition: SMESHGUI_FilterDlg.h:313
void filterSelectionSource(const int, QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3577
QWidget * createMainFrame(QWidget *)
Definition: SMESHGUI_FilterDlg.cxx:2761
bool myDiffSourcesEnabled
Definition: SMESHGUI_FilterDlg.h:312
void onCloseView()
Definition: SMESHGUI_FilterDlg.cxx:3053
void onOk()
Definition: SMESHGUI_FilterDlg.cxx:2985
virtual void reject()
Definition: SMESHGUI_FilterDlg.cxx:3003
void selectInViewer(const int, const QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3675
QList< int > myTypes
Definition: SMESHGUI_FilterDlg.h:304
bool createFilter(const int)
Definition: SMESHGUI_FilterDlg.cxx:3417
SVTK_Selector * mySelector
Definition: SMESHGUI_FilterDlg.h:307
QString myHelpFileName
Definition: SMESHGUI_FilterDlg.h:321
LightApp_SelectionMgr * mySelectionMgr
Definition: SMESHGUI_FilterDlg.h:306
bool myInsertEnabled
Definition: SMESHGUI_FilterDlg.h:311
void construct(const QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:2732
void onHelp()
Definition: SMESHGUI_FilterDlg.cxx:3062
virtual ~SMESHGUI_FilterDlg()
Definition: SMESHGUI_FilterDlg.cxx:2888
QMap< int, SMESH::Filter_var > myFilter
Definition: SMESHGUI_FilterDlg.h:317
void SetSelection()
Definition: SMESHGUI_FilterDlg.cxx:3339
void Init(const QList< int > &, const bool setInViewer=true)
Definition: SMESHGUI_FilterDlg.cxx:2907
QButtonGroup * mySourceGrp
Definition: SMESHGUI_FilterDlg.h:295
bool myInitSourceWgOnApply
Definition: SMESHGUI_FilterDlg.h:310
void onCurrentChanged(int, int)
Definition: SMESHGUI_FilterDlg.cxx:3866
QMap< int, bool > myInsertState
Definition: SMESHGUI_FilterDlg.h:318
void updateSelection()
Definition: SMESHGUI_FilterDlg.cxx:3875
void onOpenView()
Definition: SMESHGUI_FilterDlg.cxx:3039
void SetEnabled(bool setInViewer, bool diffSources)
Definition: SMESHGUI_FilterDlg.cxx:3301
QWidget * createButtonFrame(QWidget *)
Definition: SMESHGUI_FilterDlg.cxx:2854
QMap< int, int > myApplyToState
Definition: SMESHGUI_FilterDlg.h:319
int mySelModeToRestore
Definition: SMESHGUI_FilterDlg.h:324
void restoreSelMode()
Restores a selection mode if it was changed to set up some criterion.
Definition: SMESHGUI_FilterDlg.cxx:3985
Definition: SMESHGUI_FilterLibraryDlg.h:55
Definition: SMESHGUI_FilterDlg.cxx:152
Definition: SMESHGUI_FilterDlg.cxx:425
Definition: SMESHGUI_FilterDlg.cxx:594
Definition: SMESHGUI_FilterDlg.cxx:339
Definition: SMESHGUI_FilterDlg.cxx:532
Definition: SMESHGUI_FilterDlg.cxx:485
Definition: SMESHGUI_FilterDlg.cxx:712
Class : SMESHGUI_FilterTable Description : Frame containing.
Definition: SMESHGUI_FilterDlg.h:75
QGroupBox * myEntityTypeBox
Definition: SMESHGUI_FilterDlg.h:197
QButtonGroup * myEntityTypeGrp
Definition: SMESHGUI_FilterDlg.h:198
TableMap myTables
Definition: SMESHGUI_FilterDlg.h:189
QPushButton * myInsertBtn
Definition: SMESHGUI_FilterDlg.h:191
int myIsValid
Definition: SMESHGUI_FilterDlg.h:200
void EntityTypeChanged(const int)
QPushButton * myCopyFromBtn
Definition: SMESHGUI_FilterDlg.h:194
QMap< QTableWidgetItem *, AdditionalWidget * > myAddWidgets
Definition: SMESHGUI_FilterDlg.h:207
QPushButton * myClearBtn
Definition: SMESHGUI_FilterDlg.h:193
QPushButton * myRemoveBtn
Definition: SMESHGUI_FilterDlg.h:192
QPushButton * myAddBtn
Definition: SMESHGUI_FilterDlg.h:190
QStackedWidget * myWgStack
Definition: SMESHGUI_FilterDlg.h:205
SMESHGUI_FilterLibraryDlg * myLibDlg
Definition: SMESHGUI_FilterDlg.h:203
QPushButton * myAddToBtn
Definition: SMESHGUI_FilterDlg.h:195
SMESHGUI * mySMESHGUI
Definition: SMESHGUI_FilterDlg.h:184
void CurrentChanged(int, int)
void CriterionChanged(const int, const int)
QMap< int, Table * > TableMap
Definition: SMESHGUI_FilterDlg.h:84
QGroupBox * myTableGrp
Definition: SMESHGUI_FilterDlg.h:186
bool myIsLocked
Definition: SMESHGUI_FilterDlg.h:201
int myEntityType
Definition: SMESHGUI_FilterDlg.h:199
void ThresholdChanged(const int, const int)
QWidget * mySwitchTableGrp
Definition: SMESHGUI_FilterDlg.h:187
Definition: SMESHGUI.h:84
Definition: SMESH_Actor.h:55
static bool getCriteria(Predicate_i *thePred, SMESH::Filter::Criteria_out theCriteria)
Definition: SMESH_Filter_i.cxx:2817
bool IsValid(SALOME_Actor *theActor, int theCellId, SVTK_Selector *theSelector)
Definition: SMESHGUI_VTKUtils.cxx:1143
bool Update(const Handle(SALOME_InteractiveObject)&theIO, bool theDisplay)
Definition: SMESHGUI_VTKUtils.cxx:929
Structure containing information about one criterion Type - FT_Taper, FT_Skew ...
Definition: SMESH_Filter.idl:513