Salome HOME
Copyright update 2020
[modules/geom.git] / src / RepairGUI / RepairGUI_ShapeProcessDlg.h
1 // Copyright (C) 2007-2020  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   virtual QList<GEOM::GeomObjPtr>    getSourceObjects();
61   
62 private:
63   void                               init();
64   void                               reset();
65   void                               loadDefaults(); // initialize all controls with default values (from resource file)
66     
67   GEOM::string_array*                getActiveOperators();
68   GEOM::string_array*                getParameters( const GEOM::string_array& );
69   GEOM::string_array*                getValues( const GEOM::string_array& );
70
71   QStringList                        getTexts( const GEOM::string_array& );
72
73   void                               enterEvent( QEvent* );
74
75   QWidget*                           getControl( const QString&  );
76   void                               setValue( QWidget*, const QString& ); // initialize the given control in the proper way
77   // (analyze its class and convert the value string)
78   QString                            getValue( QWidget* ) const; // retrieve value of the control in the proper way
79   QString                            getText( QWidget* ) const; // retrieve text of the control (for spin-boxes only)
80
81   //QDict<QString,QWidget*>            myCtrlMap;  // map of controls (values) of parameters
82   void                               initParamsValues(); // initialize the data structures
83   void                               initSelection();
84   void                               updateSelectAll();
85
86 private:
87   QStringList                        myOpLst; // list of available Shape Healing Operators
88   QMap<QString,QStringList>          myValMap; // map of parameters of operators
89
90   GEOM::ListOfGO_var                 myObjects;  // selected objects
91   
92   DlgRef_1Sel*                       mySelectWdgt;
93   QCheckBox*                         mySelectAll;
94   QListWidget*                       myOpList;
95   QStackedLayout*                    myStack;
96   
97   SalomeApp_DoubleSpinBox*           myFixShapeTol3D;
98   SalomeApp_DoubleSpinBox*           myFixShapeMaxTol3D;
99
100   SalomeApp_DoubleSpinBox*           myFixFaceSizeTol;
101   
102   SalomeApp_DoubleSpinBox*           myDropSmallEdgesTol3D;
103
104   SalomeApp_DoubleSpinBox*           mySplitAngleAngle;
105   SalomeApp_DoubleSpinBox*           mySplitAngleMaxTol;
106   
107   SalomeApp_IntSpinBox*              mySplitClosedFacesNum;
108   
109   SalomeApp_DoubleSpinBox*           mySplitContTol3D;
110   QComboBox*                         mySplitContSurfCont;
111   QComboBox*                         mySplitContCurvCont;
112   
113   QCheckBox*                         myBSplineSurfModeChk;
114   QCheckBox*                         myBSpline3DCurveChk;
115   QCheckBox*                         myBSpline2DCurveChk;
116   SalomeApp_DoubleSpinBox*           myBSplineTol3D;
117   SalomeApp_DoubleSpinBox*           myBSplineTol2D;
118   SalomeApp_IntSpinBox*              myBSplineDegree;
119   SalomeApp_IntSpinBox*              myBSplineSegments;
120   QComboBox*                         myBSpline2DCont;
121   QComboBox*                         myBSpline3DCont;
122   
123   QCheckBox*                         myToBezierSurfModeChk;
124   QCheckBox*                         myToBezier3DCurveChk;
125   QCheckBox*                         myToBezier2DCurveChk;
126   SalomeApp_DoubleSpinBox*           myToBezierMaxTol;
127   
128   SalomeApp_DoubleSpinBox*           mySameParameterTol3D;
129
130   QCheckBox*                         myDropSmallSolidsWidChk;
131   QCheckBox*                         myDropSmallSolidsVolChk;
132   SalomeApp_DoubleSpinBox*           myDropSmallSolidsWidTol;
133   SalomeApp_DoubleSpinBox*           myDropSmallSolidsVolTol;
134   QCheckBox*                         myDropSmallSolidsMergeChk;
135
136 private slots:
137   void                               onOk();
138   bool                               onApply();
139
140   void                               activate();
141   
142   void                               lineEditReturnPressed();
143   void                               selectionChanged();
144   void                               selectClicked();
145   void                               advOptionToggled( bool );
146   void                               operatorChecked( QListWidgetItem * item );
147   void                               onSelectAll( int );
148 };
149
150 #endif // REPAIRGUI_SHAPEPROCESSDLG_H