Salome HOME
22763: [EDF] Shape processing
[modules/geom.git] / src / RepairGUI / RepairGUI_ShapeProcessDlg.h
1 // Copyright (C) 2007-2014  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, 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 // GEOM GEOMGUI : GUI for Geometry component
24 // File   : RepairGUI_ShapeProcessDlg.h
25 // Author : Lucien PIGNOLONI, Open CASCADE S.A.S.
26 //
27 #ifndef REPAIRGUI_SHAPEPROCESSDLG_H
28 #define REPAIRGUI_SHAPEPROCESSDLG_H
29
30 #include <GEOMBase_Skeleton.h>
31
32 #include <QMap>
33
34 class DlgRef_1Sel;
35 class SalomeApp_IntSpinBox;
36 class SalomeApp_DoubleSpinBox;
37 class QCheckBox;
38 class QComboBox;
39 class QListWidget;
40 class QListWidgetItem;
41 class QStackedLayout;
42
43 //=================================================================================
44 // class    : RepairGUI_ShapeProcessDlg
45 // purpose  :
46 //=================================================================================
47 class RepairGUI_ShapeProcessDlg : public GEOMBase_Skeleton
48
49   Q_OBJECT
50
51 public:
52   RepairGUI_ShapeProcessDlg( GeometryGUI*, QWidget* = 0, bool = false );
53   ~RepairGUI_ShapeProcessDlg();
54   
55 protected:
56   // redefined from GEOMBase_Helper
57   virtual GEOM::GEOM_IOperations_ptr createOperation();
58   virtual bool                       isValid( QString& );
59   virtual bool                       execute( ObjectList&  );
60   
61 private:
62   void                               init();
63   void                               reset();
64   void                               loadDefaults(); // initialize all controls with default values (from resource file)
65     
66   GEOM::string_array*                getActiveOperators();
67   GEOM::string_array*                getParameters( const GEOM::string_array& );
68   GEOM::string_array*                getValues( const GEOM::string_array& );
69
70   QStringList                        getTexts( const GEOM::string_array& );
71
72   void                               enterEvent( QEvent* );
73
74   QWidget*                           getControl( const QString&  );
75   void                               setValue( QWidget*, const QString& ); // initialize the given control in the proper way
76   // (analize its class and convert the value string)
77   QString                            getValue( QWidget* ) const; // retrieve value of the control in the proper way
78   QString                            getText( QWidget* ) const; // retrieve text of the control (for spin-boxes only)
79
80   //QDict<QString,QWidget*>            myCtrlMap;  // map of controls (values) of parameters
81   void                               initParamsValues(); // initialize the data structures
82   void                               initSelection();
83
84 private:
85   QStringList                        myOpLst; // list of available Shape Healing Operators
86   QMap<QString,QStringList>          myValMap; // map of parameters of operators
87
88   GEOM::ListOfGO_var                 myObjects;  // selected objects
89   
90   DlgRef_1Sel*                       mySelectWdgt;
91   QListWidget*                       myOpList;
92   QStackedLayout*                    myStack;
93   
94   SalomeApp_DoubleSpinBox*           myFixShapeTol3D;
95   SalomeApp_DoubleSpinBox*           myFixShapeMaxTol3D;
96
97   SalomeApp_DoubleSpinBox*           myFixFaceSizeTol;
98   
99   SalomeApp_DoubleSpinBox*           myDropSmallEdgesTol3D;
100
101   SalomeApp_DoubleSpinBox*           mySplitAngleAngle;
102   SalomeApp_DoubleSpinBox*           mySplitAngleMaxTol;
103   
104   SalomeApp_IntSpinBox*              mySplitClosedFacesNum;
105   
106   SalomeApp_DoubleSpinBox*           mySplitContTol3D;
107   QComboBox*                         mySplitContSurfCont;
108   QComboBox*                         mySplitContCurvCont;
109   
110   QCheckBox*                         myBSplineSurfModeChk;
111   QCheckBox*                         myBSpline3DCurveChk;
112   QCheckBox*                         myBSpline2DCurveChk;
113   SalomeApp_DoubleSpinBox*           myBSplineTol3D;
114   SalomeApp_DoubleSpinBox*           myBSplineTol2D;
115   SalomeApp_IntSpinBox*              myBSplineDegree;
116   SalomeApp_IntSpinBox*              myBSplineSegments;
117   QComboBox*                         myBSpline2DCont;
118   QComboBox*                         myBSpline3DCont;
119   
120   QCheckBox*                         myToBezierSurfModeChk;
121   QCheckBox*                         myToBezier3DCurveChk;
122   QCheckBox*                         myToBezier2DCurveChk;
123   SalomeApp_DoubleSpinBox*           myToBezierMaxTol;
124   
125   SalomeApp_DoubleSpinBox*           mySameParameterTol3D;
126
127   QCheckBox*                         myDropSmallSolidsWidChk;
128   QCheckBox*                         myDropSmallSolidsVolChk;
129   SalomeApp_DoubleSpinBox*           myDropSmallSolidsWidTol;
130   SalomeApp_DoubleSpinBox*           myDropSmallSolidsVolTol;
131   QCheckBox*                         myDropSmallSolidsMergeChk;
132
133 private slots:
134   void                               onOk();
135   bool                               onApply();
136
137   void                               activate();
138   
139   void                               lineEditReturnPressed();
140   void                               selectionChanged();
141   void                               selectClicked();
142   void                               advOptionToggled( bool );
143   void                               operatorChecked( QListWidgetItem * item );
144 };
145
146 #endif // REPAIRGUI_SHAPEPROCESSDLG_H