Version: 9.16.0
SMESHGUI_GroupDlg.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_GroupDlg.h
25// Author : Natalia KOPNOVA, Open CASCADE S.A.S.
26//
27#ifndef SMESHGUI_GROUPDLG_H
28#define SMESHGUI_GROUPDLG_H
29
30// SMESH includes
31#include "SMESH_SMESHGUI.hxx"
32
33// Qt includes
34#include <QDialog>
35#include <QList>
36#include <QMap>
37
38// IDL includes
39#include <SALOMEconfig.h>
40#include CORBA_SERVER_HEADER(SMESH_Mesh)
41#include CORBA_SERVER_HEADER(SMESH_Group)
42#include CORBA_SERVER_HEADER(SMESH_Filter)
43
44class QGroupBox;
45class QLabel;
46class QLineEdit;
47class QButtonGroup;
48class QListWidget;
49class QMenu;
50class QPushButton;
51class QToolButton;
52class QCheckBox;
53class QStackedWidget;
54class QAction;
55class SMESHGUI;
56class SMESH_Actor;
59class QtxColorButton;
60class SUIT_Operation;
61class SVTK_Selector;
63class LightApp_SelectionMgr;
65
66//=================================================================================
67// class : SMESHGUI_GroupDlg
68// purpose :
69//=================================================================================
71{
72 Q_OBJECT
73
74public:
76 SMESH::SMESH_Mesh_ptr = SMESH::SMESH_Mesh::_nil() );
78 SMESH::SMESH_GroupBase_ptr,
79 const bool theIsConvert = false );
81
82 static QString GetDefaultName( const QString& );
83
84public slots:
85 void onAdd();
86 void onRemove();
87
88protected slots:
89 virtual void reject();
90
91private slots:
92 void onTypeChanged( int );
93 void onGrpTypeChanged( int );
94 void onColorChanged( QColor );
95
96 void onOK();
97 bool onApply();
98 void onHelp();
99 void onDeactivate();
100 void onVisibilityChanged();
101
102 void onListSelectionChanged();
103 void onObjectSelectionChanged();
104
105 void onSelectAll();
106 void onSelectSubMesh( bool );
107 void onSelectGroup( bool );
108 void onSelectGeomGroup( bool );
109 void setCurrentSelection();
110
111 void setFilters();
112 void onSort();
113
114 void onNameChanged( const QString& );
115 void onFilterAccepted();
116
117 void onGeomPopup( QAction* );
118 void onGeomSelectionButton( bool );
119
120 void onPublishShapeByMeshDlg( SUIT_Operation* );
121 void onCloseShapeByMeshDlg( SUIT_Operation* );
122
123 void onOpenView();
124 void onCloseView();
125
126private:
127 void initDialog( bool );
128 void init( SMESH::SMESH_Mesh_ptr );
129 void init( SMESH::SMESH_GroupBase_ptr,
130 const bool theIsConvert = false );
131 void enterEvent( QEvent* );
132 void keyPressEvent( QKeyEvent* );
133 void setSelectionMode( int );
134 void updateButtons();
135 void updateGeomPopup();
136 bool SetAppropriateActor();
137 void setShowEntityMode();
138 void restoreShowEntityMode();
139
140 bool IsActorVisible( SMESH_Actor* );
141
142 void setGroupColor( const SALOMEDS::Color& );
143 SALOMEDS::Color getGroupColor() const;
144
145 void setGroupQColor( const QColor& );
146 QColor getGroupQColor() const;
147 void setDefaultName() const;
148 void setDefaultGroupColor();
149
150 void setIsApplyAndClose( const bool theFlag );
151 bool isApplyAndClose() const;
152
153 private:
154
155 SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
156 LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */
157 int myGrpTypeId; /* Current group type id : standalone or group on geometry */
158 int myTypeId; /* Current type id = radio button id */
159 int myStoredShownEntity; /* Store ShowEntity mode of myMesh */
160 QLineEdit* myCurrentLineEdit; /* Current LineEdit */
161 SVTK_Selector* mySelector;
162
163 QPushButton* myMeshGroupBtn;
164 QLineEdit* myMeshGroupLine;
165
166 QButtonGroup* myTypeGroup;
167 QLineEdit* myName;
168 QString myOldName;
169
170 QButtonGroup* myGrpTypeGroup;
171
172 QStackedWidget* myWGStack;
173 QCheckBox* mySelectAll;
176 QListWidget* myElements;
177 QPushButton* myFilterBtn;
178 QPushButton* myAddBtn;
179 QPushButton* myRemoveBtn;
180 QPushButton* mySortBtn;
181
183 QCheckBox* mySelectSubMesh;
184 QPushButton* mySubMeshBtn;
185 QLineEdit* mySubMeshLine;
186 QCheckBox* mySelectGroup;
187 QPushButton* myGroupBtn;
188 QLineEdit* myGroupLine;
189
190 QtxColorButton* myColorBtn;
191
193 QToolButton* myGeomGroupBtn;
194 QLineEdit* myGeomGroupLine;
196
197 QPushButton* myOKBtn;
198 QPushButton* myApplyBtn;
199 QPushButton* myCloseBtn;
200 QPushButton* myHelpBtn;
201
203
204 SMESH::SMESH_Mesh_var myMesh;
205 QList<SMESH_Actor*> myActorsList;
206 SMESH::SMESH_Group_var myGroup;
207 SMESH::SMESH_GroupOnGeom_var myGroupOnGeom;
208 SMESH::SMESH_GroupOnFilter_var myGroupOnFilter;
209 SMESH::Filter_var myFilter;
210 QList<int> myIdList;
211 GEOM::ListOfGO_var myGeomObjects;
212
218
220
221 bool myCreate, myIsBusy;
222
224
225 QMap<QAction*, int> myActions;
226
227 bool myNameChanged; //added by skl for IPAL19574
228 int myNbChangesOfContents; // nb add's and remove's
229
232};
233
234#endif // SMESHGUI_GROUPDLG_H
#define SMESHGUI_EXPORT
Definition: SMESH_SMESHGUI.hxx:36
Class : SMESHGUI_FilterDlg Description : Dialog to specify filters for VTK viewer.
Definition: SMESHGUI_FilterDlg.h:217
Definition: SMESHGUI_GroupDlg.h:71
SMESH::SMESH_GroupOnGeom_var myGroupOnGeom
Definition: SMESHGUI_GroupDlg.h:207
QPushButton * myHelpBtn
Definition: SMESHGUI_GroupDlg.h:200
int myNbChangesOfContents
Definition: SMESHGUI_GroupDlg.h:228
SUIT_SelectionFilter * myMeshFilter
Definition: SMESHGUI_GroupDlg.h:214
QString myHelpFileName
Definition: SMESHGUI_GroupDlg.h:223
QPushButton * mySortBtn
Definition: SMESHGUI_GroupDlg.h:180
SMESH::SMESH_GroupOnFilter_var myGroupOnFilter
Definition: SMESHGUI_GroupDlg.h:208
QCheckBox * mySelectGeomGroup
Definition: SMESHGUI_GroupDlg.h:192
SMESHGUI_FilterDlg * myFilterDlg
Definition: SMESHGUI_GroupDlg.h:219
QGroupBox * mySelectBox
Definition: SMESHGUI_GroupDlg.h:182
int myTypeId
Definition: SMESHGUI_GroupDlg.h:158
SMESH::SMESH_Mesh_var myMesh
Definition: SMESHGUI_GroupDlg.h:204
QCheckBox * mySelectGroup
Definition: SMESHGUI_GroupDlg.h:186
GEOM::ListOfGO_var myGeomObjects
Definition: SMESHGUI_GroupDlg.h:211
QListWidget * myElements
Definition: SMESHGUI_GroupDlg.h:176
QLineEdit * myName
Definition: SMESHGUI_GroupDlg.h:167
QPushButton * myGroupBtn
Definition: SMESHGUI_GroupDlg.h:187
SUIT_SelectionFilter * myGeomFilter
Definition: SMESHGUI_GroupDlg.h:217
QCheckBox * mySelectSubMesh
Definition: SMESHGUI_GroupDlg.h:183
QtxColorButton * myColorBtn
Definition: SMESHGUI_GroupDlg.h:190
LightApp_SelectionMgr * mySelectionMgr
Definition: SMESHGUI_GroupDlg.h:156
int myStoredShownEntity
Definition: SMESHGUI_GroupDlg.h:159
int myGrpTypeId
Definition: SMESHGUI_GroupDlg.h:157
QCheckBox * myAllowElemsModif
Definition: SMESHGUI_GroupDlg.h:174
QPushButton * myApplyBtn
Definition: SMESHGUI_GroupDlg.h:198
QPushButton * myMeshGroupBtn
Definition: SMESHGUI_GroupDlg.h:163
QCheckBox * mySelectAll
Definition: SMESHGUI_GroupDlg.h:173
QPushButton * myOKBtn
Definition: SMESHGUI_GroupDlg.h:197
QList< int > myIdList
Definition: SMESHGUI_GroupDlg.h:210
int mySelectionMode
Definition: SMESHGUI_GroupDlg.h:213
QString myOldName
Definition: SMESHGUI_GroupDlg.h:168
QLineEdit * myMeshGroupLine
Definition: SMESHGUI_GroupDlg.h:164
SMESH_LogicalFilter * mySubMeshFilter
Definition: SMESHGUI_GroupDlg.h:215
QPushButton * myCloseBtn
Definition: SMESHGUI_GroupDlg.h:199
QLineEdit * mySubMeshLine
Definition: SMESHGUI_GroupDlg.h:185
SMESHGUI_ShapeByMeshOp * myShapeByMeshOp
Definition: SMESHGUI_GroupDlg.h:202
QString myObjectToSelect
Definition: SMESHGUI_GroupDlg.h:230
QPushButton * mySubMeshBtn
Definition: SMESHGUI_GroupDlg.h:184
QLabel * myElementsLab
Definition: SMESHGUI_GroupDlg.h:175
QButtonGroup * myTypeGroup
Definition: SMESHGUI_GroupDlg.h:166
QMenu * myGeomPopup
Definition: SMESHGUI_GroupDlg.h:195
QStackedWidget * myWGStack
Definition: SMESHGUI_GroupDlg.h:172
QButtonGroup * myGrpTypeGroup
Definition: SMESHGUI_GroupDlg.h:170
QMap< QAction *, int > myActions
Definition: SMESHGUI_GroupDlg.h:225
QToolButton * myGeomGroupBtn
Definition: SMESHGUI_GroupDlg.h:193
SVTK_Selector * mySelector
Definition: SMESHGUI_GroupDlg.h:161
bool myNameChanged
Definition: SMESHGUI_GroupDlg.h:227
QLineEdit * myGroupLine
Definition: SMESHGUI_GroupDlg.h:188
QLineEdit * myGeomGroupLine
Definition: SMESHGUI_GroupDlg.h:194
bool myIsApplyAndClose
Definition: SMESHGUI_GroupDlg.h:231
SMESH::SMESH_Group_var myGroup
Definition: SMESHGUI_GroupDlg.h:206
SMESHGUI * mySMESHGUI
Definition: SMESHGUI_GroupDlg.h:155
SMESH_LogicalFilter * myGroupFilter
Definition: SMESHGUI_GroupDlg.h:216
QPushButton * myAddBtn
Definition: SMESHGUI_GroupDlg.h:178
QPushButton * myRemoveBtn
Definition: SMESHGUI_GroupDlg.h:179
QList< SMESH_Actor * > myActorsList
Definition: SMESHGUI_GroupDlg.h:205
QPushButton * myFilterBtn
Definition: SMESHGUI_GroupDlg.h:177
SMESH::Filter_var myFilter
Definition: SMESHGUI_GroupDlg.h:209
bool myCreate
Definition: SMESHGUI_GroupDlg.h:221
QLineEdit * myCurrentLineEdit
Definition: SMESHGUI_GroupDlg.h:160
Operation to publish a sub-shape of the mesh main shape by selecting mesh elements.
Definition: SMESHGUI_ShapeByMeshDlg.h:76
Definition: SMESHGUI.h:84
Definition: SMESH_Actor.h:56
Definition: SMESH_LogicalFilter.hxx:36