Version: 9.16.0
SMESHGUI_FilterDlg.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 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
49class LightApp_SelectionMgr;
50class QButtonGroup;
51class QCheckBox;
52class QFrame;
53class QGroupBox;
54class QPushButton;
55class QStackedWidget;
56class QTableWidget;
58class SMESHGUI;
60class SMESH_Actor;
61class SVTK_Selector;
62
63typedef NCollection_DataMap<Handle(SALOME_InteractiveObject), SVTK_TIndexedMapOfVtkId> SALOME_DataMapOfIOMapOfVtk;
64typedef 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
88public:
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
143signals:
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
152private 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
163private:
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
183private:
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
222
223 // Buttons
225
226public:
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
246signals:
247
248 void Accepted();
249
250protected slots:
251 virtual void reject();
252
253private 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
266private:
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 );
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
292private:
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
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:63
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:3293
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:3508
SMESHGUI * mySMESHGUI
Definition: SMESHGUI_FilterDlg.h:305
bool myIsSelectionChanged
Definition: SMESHGUI_FilterDlg.h:316
void onSelectionDone()
Definition: SMESHGUI_FilterDlg.cxx:3760
SMESHGUI_FilterDlg(SMESHGUI *, const QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:2698
void SetGroup(SMESH::SMESH_GroupOnFilter_var)
Definition: SMESHGUI_FilterDlg.cxx:3335
void onThresholdChanged(const int, const int)
Definition: SMESHGUI_FilterDlg.cxx:3858
void onCriterionChanged(const int, const int)
Definition: SMESHGUI_FilterDlg.cxx:3848
bool myToRestoreSelMode
Definition: SMESHGUI_FilterDlg.h:323
void keyPressEvent(QKeyEvent *)
Definition: SMESHGUI_FilterDlg.cxx:3972
Selection_Mode getSelMode(const int) const
Definition: SMESHGUI_FilterDlg.cxx:3154
void setIdsToWg(QWidget *, const QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3174
void SetMesh(SMESH::SMESH_Mesh_var)
Definition: SMESHGUI_FilterDlg.cxx:3319
static SMESH::Filter::Criterion createCriterion()
Definition: SMESHGUI_FilterDlg.cxx:3738
bool onApply()
Definition: SMESHGUI_FilterDlg.cxx:3372
@ 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:3652
QWidget * myMainFrame
Definition: SMESHGUI_FilterDlg.h:294
QWidget * createSourceGroup(QWidget *)
Definition: SMESHGUI_FilterDlg.cxx:2811
SMESHGUI_FilterTable * myTable
Definition: SMESHGUI_FilterDlg.h:301
void filterSource(const int, QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3535
void onDeactivate()
Definition: SMESHGUI_FilterDlg.cxx:3091
SMESH::SMESH_Mesh_var myMesh
Definition: SMESHGUI_FilterDlg.h:308
SMESH::Filter_var GetFilter() const
Return the current filter.
Definition: SMESHGUI_FilterDlg.cxx:3460
QCheckBox * mySetInViewer
Definition: SMESHGUI_FilterDlg.h:297
void UnRegisterFilters()
call UnRegister() for myFilter's
Definition: SMESHGUI_FilterDlg.cxx:3495
bool isValid() const
Definition: SMESHGUI_FilterDlg.cxx:3198
void updateMainButtons()
Definition: SMESHGUI_FilterDlg.cxx:2841
void enterEvent(QEvent *)
Definition: SMESHGUI_FilterDlg.cxx:3100
void SetFilter(SMESH::Filter_var filter, int type)
Sets a filter to the table.
Definition: SMESHGUI_FilterDlg.cxx:3479
SMESH::SMESH_GroupOnFilter_var myGroup
Definition: SMESHGUI_FilterDlg.h:309
void getIdsFromWg(const QWidget *, QList< int > &) const
Definition: SMESHGUI_FilterDlg.cxx:3112
QWidget * mySourceWg
Definition: SMESHGUI_FilterDlg.h:313
void filterSelectionSource(const int, QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3582
QWidget * createMainFrame(QWidget *)
Definition: SMESHGUI_FilterDlg.cxx:2766
bool myDiffSourcesEnabled
Definition: SMESHGUI_FilterDlg.h:312
void onCloseView()
Definition: SMESHGUI_FilterDlg.cxx:3058
void onOk()
Definition: SMESHGUI_FilterDlg.cxx:2990
virtual void reject()
Definition: SMESHGUI_FilterDlg.cxx:3008
void selectInViewer(const int, const QList< int > &)
Definition: SMESHGUI_FilterDlg.cxx:3680
QList< int > myTypes
Definition: SMESHGUI_FilterDlg.h:304
bool createFilter(const int)
Definition: SMESHGUI_FilterDlg.cxx:3422
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:2737
void onHelp()
Definition: SMESHGUI_FilterDlg.cxx:3067
virtual ~SMESHGUI_FilterDlg()
Definition: SMESHGUI_FilterDlg.cxx:2893
QMap< int, SMESH::Filter_var > myFilter
Definition: SMESHGUI_FilterDlg.h:317
void SetSelection()
Definition: SMESHGUI_FilterDlg.cxx:3344
void Init(const QList< int > &, const bool setInViewer=true)
Definition: SMESHGUI_FilterDlg.cxx:2912
QButtonGroup * mySourceGrp
Definition: SMESHGUI_FilterDlg.h:295
bool myInitSourceWgOnApply
Definition: SMESHGUI_FilterDlg.h:310
void onCurrentChanged(int, int)
Definition: SMESHGUI_FilterDlg.cxx:3871
QMap< int, bool > myInsertState
Definition: SMESHGUI_FilterDlg.h:318
void updateSelection()
Definition: SMESHGUI_FilterDlg.cxx:3880
void onOpenView()
Definition: SMESHGUI_FilterDlg.cxx:3044
void SetEnabled(bool setInViewer, bool diffSources)
Definition: SMESHGUI_FilterDlg.cxx:3306
QWidget * createButtonFrame(QWidget *)
Definition: SMESHGUI_FilterDlg.cxx:2859
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:3990
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:86
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:56
static bool getCriteria(Predicate_i *thePred, SMESH::Filter::Criteria_out theCriteria)
Definition: SMESH_Filter_i.cxx:2839
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 ... Compare - FT_LessTh...
Definition: SMESH_Filter.idl:515