Salome HOME
ffdbd536b21b6d7c0e737634502a3ffd629ef0b8
[modules/geom.git] / src / RepairGUI / RepairGUI_ShapeProcessDlg.h
1 //  GEOM GEOMGUI : GUI for Geometry component
2 //
3 //  Copyright (C) 2003  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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : RepairGUI_ShapeProcessDlg.h
25 //  Author : Lucien PIGNOLONI
26 //  Module : GEOM
27 //  $Header$
28
29 #ifndef DIALOGBOX_ShapeProcess_H
30 #define DIALOGBOX_ShapeProcess_H
31
32 #include "GEOMBase_Skeleton.h"
33 #include "DlgRef_1Sel_QTD.h"
34 #include "RepairGUI.h"
35 #include "QtxDblSpinBox.h"
36
37 #include <qspinbox.h>
38 #include <qcombobox.h>
39 #include <qcheckbox.h>
40 #include <qlistview.h>
41 #include <qwidgetstack.h>
42 #include <qvaluelist.h>
43 #include <qdict.h>
44 #include <qmap.h>
45
46 //=================================================================================
47 // class    : RepairGUI_ShapeProcessDlg
48 // purpose  :
49 //=================================================================================
50 class RepairGUI_ShapeProcessDlg : public GEOMBase_Skeleton
51
52     Q_OBJECT
53
54 public:
55     RepairGUI_ShapeProcessDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0);
56     ~RepairGUI_ShapeProcessDlg();
57
58 protected:
59     // redefined from GEOMBase_Helper
60     virtual GEOM::GEOM_IOperations_ptr createOperation();
61     virtual bool isValid( QString& );
62     virtual bool execute( ObjectList& objects );
63
64     virtual void closeEvent( QCloseEvent* e );        
65
66 private :
67     void             init();
68     void             reset();
69     void             loadDefaults(); // initialize all controls with default values (from resource file)
70                 GEOM::string_array* getActiveOperators();
71                 GEOM::string_array* getParameters( const GEOM::string_array& theOperators );
72                 GEOM::string_array* getValues( const GEOM::string_array& theParameters );
73                 
74     void             enterEvent(QEvent* e);
75
76     QWidget*         getControl( const char* );
77     void             setValue( QWidget*, const char* ); // initialize the given control in the proper way
78                                                         // (analize its class and convert the value string)
79     const char*      getValue( QWidget* theControl ) const; // retrieve value of the control in the proper way
80
81     QStringList      myOpLst;                                     // list of available Shape Healing Operators
82     QMap<QString,QStringList> myValMap; // map of parameters of operators
83     //QDict<QString,QWidget*> myCtrlMap;  // map of controls (values) of parameters
84     void             initParamsValues(); // initialize the data structures
85     void             initSelection();
86
87     GEOM::ListOfGO_var myObjects;  // selected objects
88
89     DlgRef_1Sel_QTD* mySelectWdgt;
90     QListView*       myOpList;
91     QWidgetStack*    myStack;
92
93     QtxDblSpinBox*  myFixShapeTol3D;
94     QtxDblSpinBox*  myFixShapeMaxTol3D;
95     
96     QtxDblSpinBox*  myFixFaceSizeTol;
97
98     QtxDblSpinBox*  myDropSmallEdgesTol3D;
99
100     QtxDblSpinBox*  mySplitAngleAngle;
101     QtxDblSpinBox*  mySplitAngleMaxTol;
102
103     QSpinBox*        mySplitClosedFacesNum;
104
105     QtxDblSpinBox*  mySplitContTol3D;
106     QComboBox*       mySplitContSurfCont;
107     QComboBox*       mySplitContCurvCont;
108
109     QCheckBox*       myBSplineSurfModeChk;
110     QCheckBox*       myBSpline3DCurveChk;
111     QCheckBox*       myBSpline2DCurveChk;
112     QtxDblSpinBox*  myBSplineTol3D;
113     QtxDblSpinBox*  myBSplineTol2D;
114     QSpinBox*        myBSplineDegree;
115     QSpinBox*        myBSplineSegments;
116     QComboBox*       myBSpline2DCont;
117     QComboBox*       myBSpline3DCont;
118
119     QCheckBox*       myToBezierSurfModeChk;
120     QCheckBox*       myToBezier3DCurveChk;
121     QCheckBox*       myToBezier2DCurveChk;
122     QtxDblSpinBox*  myToBezierMaxTol;
123
124     QtxDblSpinBox*  mySameParameterTol3D;
125     
126 private slots:
127     void             onOk();
128     bool             onApply();
129     void             onCancel();
130     
131     void             activate();
132     void             deactivate();
133
134     void             lineEditReturnPressed();
135     void             selectionChanged();
136     void             selectClicked();
137     void             activateSelection();
138     void             operationChanged();
139     void             advOptionToggled(bool);
140 };             
141
142 #endif // DIALOGBOX_ShapeProcess_H