00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "operation-chanfreinage.qt.hh"
00025 #include "window.qt.hh"
00026 #include "HtmlEntities.hh"
00027
00028 #include <QtGui/QLabel>
00029 #include <QtGui/QBoxLayout>
00030 #include <Qt3Support/Q3Accel>
00031
00032
00033
00034
00035 OperationChanfreinage :: OperationChanfreinage ( Window * parent )
00036 :
00037 QDialog ( parent ) ,
00038 FParent ( parent ) ,
00039 FUpdate ( false )
00040 {
00041
00042 setWindowTitle ( "Chanfreinage" ) ;
00043
00044
00045
00046 Q3Accel * Raccourci = new Q3Accel ( this ) ;
00047 Raccourci -> insertItem ( QKeySequence ( Qt :: Key_Space ) , 9 ) ;
00048 Raccourci -> connectItem ( 9 , FParent ,
00049 SLOT ( callbackHideAllWindow ( ) ) ) ;
00050
00051
00052 QBoxLayout * placement = new QBoxLayout ( QBoxLayout::TopToBottom, this ) ;
00053
00055 QWidget * WidgetHaut = new QWidget ( this ) ;
00056 QBoxLayout * haut = new QBoxLayout ( QBoxLayout::LeftToRight, WidgetHaut );
00057
00058 FAffSommet = new QLabel ( "Coefficient des sommets" , WidgetHaut ) ;
00059
00060 FSaisie[0] = new FloatSpinBox ( 0.1 ) ;
00061
00062 FGetSommet = new QPushButton ( "Get" , WidgetHaut ) ;
00063 FSetSommet = new QPushButton ( "Set" , WidgetHaut ) ;
00064 FNextSommet = new QPushButton ( ">>" , WidgetHaut ) ;
00065
00066 haut -> addWidget ( FAffSommet ) ;
00067 haut -> addWidget ( FSaisie[0] ) ;
00068 haut -> addWidget ( FGetSommet ) ;
00069 haut -> addWidget ( FSetSommet ) ;
00070 haut -> addWidget ( FNextSommet ) ;
00071
00073 QWidget * WidgetBas = new QWidget ( this ) ;
00074 QBoxLayout * bas = new QBoxLayout ( QBoxLayout::LeftToRight, WidgetBas ) ;
00075
00076 FAffArete = new QLabel ( *HTML::decode("Coefficient des arêtes") ,
00077 WidgetBas ) ;
00078 FSaisie[1] = new FloatSpinBox ( 0.1 ) ;
00079 FGetArete = new QPushButton ( "Get" , WidgetBas ) ;
00080 FSetArete = new QPushButton ( "Set" , WidgetBas) ;
00081 FNextArete = new QPushButton ( " >>" , WidgetBas ) ;
00082
00083 bas -> addWidget ( FAffArete ) ;
00084 bas -> addWidget ( FSaisie[1] ) ;
00085 bas -> addWidget ( FGetArete ) ;
00086 bas -> addWidget ( FSetArete ) ;
00087 bas -> addWidget ( FNextArete ) ;
00088
00089 FClose = new QPushButton ( "fermer" , this ) ;
00090 QObject :: connect ( FClose ,
00091 SIGNAL ( clicked ( ) ) ,
00092 this ,
00093 SLOT ( close ( ) ) ) ;
00094 FClose -> setFocus ( ) ;
00095 placement -> addWidget ( WidgetHaut ) ;
00096 placement -> addWidget ( WidgetBas ) ;
00097 placement -> addWidget ( FClose ) ;
00098
00099 QObject :: connect ( FSaisie[0] ,
00100 SIGNAL ( valueChanged ( double ) ) ,
00101 this ,
00102 SLOT ( callbackRounding0Coef ( ) ) ) ;
00103
00104 QObject :: connect ( FGetSommet ,
00105 SIGNAL ( clicked ( ) ) ,
00106 this ,
00107 SLOT ( callbackGet0 ( ) ) ) ;
00108 QObject :: connect ( FSetSommet ,
00109 SIGNAL ( clicked ( ) ) ,
00110 this ,
00111 SLOT ( callbackSet0 ( ) ) ) ;
00112
00113 QObject :: connect ( FNextSommet ,
00114 SIGNAL ( clicked ( ) ) ,
00115 this ,
00116 SLOT ( callbackNext0 ( ) ) ) ;
00117
00118
00119 QObject :: connect ( FSaisie[1] ,
00120 SIGNAL ( valueChanged ( double ) ) ,
00121 this ,
00122 SLOT ( callbackRounding1Coef ( ) ) ) ;
00123
00124 QObject :: connect ( FGetArete ,
00125 SIGNAL ( clicked ( ) ) ,
00126 this ,
00127 SLOT ( callbackGet1 ( ) ) ) ;
00128 QObject :: connect ( FSetArete ,
00129 SIGNAL ( clicked ( ) ) ,
00130 this ,
00131 SLOT ( callbackSet1 ( ) ) ) ;
00132 QObject :: connect ( FNextArete ,
00133 SIGNAL ( clicked ( ) ) ,
00134 this ,
00135 SLOT ( callbackNext1 ( ) ) ) ;
00136
00137 update ( ) ;
00138
00139 }
00140
00141
00142
00143 OperationChanfreinage :: ~OperationChanfreinage ( )
00144 {
00145 }
00146
00147
00148
00149 void OperationChanfreinage::update()
00150 {
00151 CParameterOperations * p = FParent -> getControler ( )
00152 -> getParameterOperations();
00153
00154 FSaisie[0] -> setValuef ( p -> getDefaultRoundingCoefForVertices() );
00155 FSaisie[1] -> setValuef ( p -> getDefaultRoundingCoefForEdges () );
00156 }
00157
00158
00159
00160
00161 void OperationChanfreinage :: callbackRounding0Coef ( )
00162 {
00163 if (!FUpdate)
00164 setRoundingCoef(0, FSaisie[0]->valuef());
00165 }
00166
00167 void OperationChanfreinage :: callbackRounding1Coef ( )
00168 {
00169 if (!FUpdate)
00170 setRoundingCoef(1, FSaisie[1]->valuef());
00171 }
00172
00173 void OperationChanfreinage :: callbackGet0 ( )
00174 {
00175 getCoef ( 0 ) ;
00176 }
00177
00178 void OperationChanfreinage :: callbackGet1 ( )
00179 {
00180 getCoef ( 1 ) ;
00181 }
00182
00183 void OperationChanfreinage :: callbackSet0 ( )
00184 {
00185 setCoef ( 0 ) ;
00186 }
00187
00188 void OperationChanfreinage :: callbackSet1 ( )
00189 {
00190 setCoef ( 1 ) ;
00191 }
00192
00193 void OperationChanfreinage :: callbackNext0 ( )
00194 {
00195 nextCoef ( 0 ) ;
00196 }
00197
00198 void OperationChanfreinage :: callbackNext1 ( )
00199 {
00200 nextCoef ( 1 ) ;
00201 }
00202
00203
00204
00205
00206 void OperationChanfreinage :: getCoef ( int ADimension )
00207 {
00208 #ifdef MODULE_ROUNDING
00209 TCoordinate value;
00210 bool same = FParent ->
00211 getControler ( ) ->
00212 modeRoundingGetCoefOfMarkedDarts ( ADimension , value ) ;
00213
00214 if (same)
00215 FSaisie [ ADimension ] -> setValuef ( value ) ;
00216
00217 #endif // MODULE_ROUNDING
00218 }
00219
00220 void OperationChanfreinage :: setCoef ( int ADimension )
00221 {
00222 #ifdef MODULE_ROUNDING
00223 FParent -> getControler ( )
00224 ->modeRoundingSetCoefOfMarkedDarts ( ADimension,
00225 FSaisie [ ADimension ] -> valuef ( ) ) ;
00226 #endif // MODULE_ROUNDING
00227 }
00228
00229 void OperationChanfreinage :: nextCoef ( int ADimension )
00230 {
00231 #ifdef MODULE_ROUNDING
00232 float result = FParent ->
00233 getControler ( ) ->
00234 modeRoundingSelectNextCoef ( ADimension ) ;
00235 FSaisie [ ADimension ] -> setValuef ( result ) ;
00236 FParent -> repaint ( ) ;
00237 #endif // MODULE_ROUNDING
00238 }
00239
00240
00241
00242
00243 void OperationChanfreinage :: setRoundingCoef ( int i , float k )
00244 {
00245 CParameterOperations * p = FParent ->
00246 getControler ( ) -> getParameterOperations ( ) ;
00247
00248 switch ( i )
00249 {
00250 case 0 :
00251 p -> setDefaultRoundingCoefForVertices ( k ) ;
00252 break ;
00253
00254 case 1 :
00255 p -> setDefaultRoundingCoefForEdges ( k ) ;
00256 break ;
00257
00258 default :
00259 assert ( false ) ;
00260 }
00261
00262 update ( ) ;
00263 }