Salome HOME
Merge from V5_1_4_BR 07/05/2010
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_ExtrusionAlongPathDlg.h
1 //  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, 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.
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_ExtrusionAlongPathDlg.h
25 // Author : Vadim SANDLER, Open CASCADE S.A.S.
26 //
27 #ifndef SMESHGUI_EXTRUSIONALONGPATHDLG_H
28 #define SMESHGUI_EXTRUSIONALONGPATHDLG_H
29
30 // SMESH includes
31 #include "SMESH_SMESHGUI.hxx"
32
33 // Qt includes
34 #include <QDialog>
35
36 // IDL includes
37 #include <SALOMEconfig.h>
38 #include CORBA_SERVER_HEADER(SMESH_Mesh)
39
40 class QButtonGroup;
41 class QRadioButton;
42 class QGroupBox;
43 class QLabel;
44 class QToolButton;
45 class QLineEdit;
46 class QCheckBox;
47 class QListWidget;
48 class QPushButton;
49
50 class SMESHGUI;
51 class SMESH_Actor;
52 class SMESHGUI_IdValidator;
53 class SMESHGUI_SpinBox;
54 class SMESHGUI_FilterDlg;
55 class SVTK_Selector;
56 class LightApp_SelectionMgr;
57 class SUIT_SelectionFilter;
58
59 //=================================================================================
60 // class    : SMESHGUI_ExtrusionAlongPathDlg
61 // purpose  :
62 //=================================================================================
63 class SMESHGUI_EXPORT SMESHGUI_ExtrusionAlongPathDlg : public QDialog
64 {
65   Q_OBJECT
66
67   class SetBusy;
68   friend class SetBusy;
69
70 public:
71   SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* );
72   ~SMESHGUI_ExtrusionAlongPathDlg();
73
74   bool                      eventFilter( QObject*, QEvent* );
75
76 private:
77   void                      Init( bool = true );
78   void                      enterEvent( QEvent* );                           /* mouse enter the QWidget */
79   void                      keyPressEvent( QKeyEvent* );
80   int                       GetConstructorId();
81   void                      SetEditCurrentArgument( QToolButton* );
82
83   bool                      isValid();
84
85   void                      updateLinearAngles();
86   
87   SMESHGUI*                 mySMESHGUI;            /* Current SMESHGUI object */
88   SMESHGUI_IdValidator*     myIdValidator;
89   LightApp_SelectionMgr*    mySelectionMgr;        /* User shape selection */
90   SVTK_Selector*            mySelector;
91
92   QWidget*                  myEditCurrentArgument; /* Current  argument */
93
94   bool                      myBusy;
95   SMESH::SMESH_Mesh_var     myMesh;
96   SMESH_Actor*              myMeshActor;
97   SMESH::SMESH_IDSource_var myIDSource;
98   //SMESH::SMESH_Mesh_var     myPathMesh;
99   SMESH::SMESH_IDSource_var myPath;
100   //GEOM::GEOM_Object_var     myPathShape;
101   SUIT_SelectionFilter*     myElementsFilter;
102   SUIT_SelectionFilter*     myPathMeshFilter;
103   int                       myType;
104   QList<double>             myAnglesList;
105
106   // widgets
107   QGroupBox*                ConstructorsBox;
108   QButtonGroup*             GroupConstructors;
109   QRadioButton*             Elements1dRB;
110   QRadioButton*             Elements2dRB;
111
112   QGroupBox*                GroupArguments;
113   QLabel*                   ElementsLab;
114   QToolButton*              SelectElementsButton;
115   QLineEdit*                ElementsLineEdit;
116   QCheckBox*                MeshCheck;
117   QGroupBox*                PathGrp;
118   QToolButton*              SelectPathMeshButton;
119   QLineEdit*                PathMeshLineEdit;
120   //QToolButton*              SelectPathShapeButton;
121   //QLineEdit*                PathShapeLineEdit;
122   QToolButton*              SelectStartPointButton;
123   QLineEdit*                StartPointLineEdit;
124   QCheckBox*                LinearAnglesCheck;
125   QGroupBox*                AnglesGrp;
126   QListWidget*              AnglesList;
127   QToolButton*              AddAngleButton;
128   QToolButton*              RemoveAngleButton;
129   SMESHGUI_SpinBox*         AngleSpin;
130   QGroupBox*                BasePointGrp;
131   QToolButton*              SelectBasePointButton;
132   SMESHGUI_SpinBox*         XSpin;
133   SMESHGUI_SpinBox*         YSpin;
134   SMESHGUI_SpinBox*         ZSpin;
135   QCheckBox*                MakeGroupsCheck;
136
137   QGroupBox*                GroupButtons;
138   QPushButton*              OkButton;
139   QPushButton*              ApplyButton;
140   QPushButton*              CloseButton;
141   QPushButton*              HelpButton;
142
143   QString                   myHelpFileName;
144
145   QPushButton*              myFilterBtn;
146   SMESHGUI_FilterDlg*       myFilterDlg;
147    
148 protected slots:
149   void                      reject();
150
151 private slots:
152   void                      ConstructorsClicked( int );
153   void                      ClickOnOk();
154   bool                      ClickOnApply();
155   void                      ClickOnHelp();
156   void                      SetEditCurrentArgument();
157   void                      SelectionIntoArgument();
158   void                      DeactivateActiveDialog();
159   void                      ActivateThisDialog();
160   void                      onTextChange( const QString& );
161   void                      onSelectMesh();
162   void                      OnAngleAdded();
163   void                      OnAngleRemoved();
164   void                      setFilters();
165 };
166
167 #endif // SMESHGUI_EXTRUSIONALONGPATHDLG_H