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 "creation-tore.qt.hh"
00025 #include "window.qt.hh"
00026 #include "HtmlEntities.hh"
00027 #include "SpaceWidget.qt.hh"
00028
00029 #include <QtGui/QLabel>
00030 #include <QtGui/QHBoxLayout>
00031
00032
00033
00034
00035
00036 CreationTore :: CreationTore ( Window * parent ,
00037 GMap3d :: CControlerGMap * controler ) :
00038 CreationObjet ( parent , HTML::decode("Création tore") ,
00039 controler )
00040 {
00041 QWidget * widget = new QWidget ;
00042
00043 QHBoxLayout * wid_hbl = new QHBoxLayout ( widget );
00044 wid_hbl -> setSpacing(0);
00045 wid_hbl -> setContentsMargins (0,0,0,0);
00046
00047 FAffSub = new QLabel ( " Subdivisions : " ) ;
00048 FAffPar = new QLabel ( *HTML::decode("Parallèles : ") ) ;
00049 FSaisiePar = new QSpinBox ;
00050 FSaisiePar -> setMinimum ( 3 );
00051 FSaisiePar -> setMaximum ( 100000 );
00052 FSaisiePar -> setAccelerated(true);
00053
00054 FAffMer = new QLabel ( *HTML::decode("Méridiens : ") ) ;
00055 FSaisieMer = new QSpinBox ;
00056 FSaisieMer -> setMinimum ( 3 );
00057 FSaisieMer -> setMaximum ( 100000 );
00058 FSaisieMer -> setAccelerated(true);
00059
00060 FAffRayon = new QLabel ( "Petit Rayon / Grand Rayon : " ) ;
00061
00062 FSaisieRayon = new QSlider ( Qt::Horizontal ) ;
00063 FSaisieRayon -> setTickPosition ( QSlider::TicksBothSides ) ;
00064 FSaisieRayon -> setMinimum ( 0 ) ;
00065 FSaisieRayon -> setMaximum ( 100 ) ;
00066 FSaisieRayon -> setSingleStep ( 1 ) ;
00067 FSaisieRayon -> setFixedWidth (200);
00068
00069 FAffValRayon = new QLabel ;
00070
00071 wid_hbl -> addWidget(FAffSub);
00072 wid_hbl -> addWidget(FAffPar);
00073 wid_hbl -> addWidget(FSaisiePar);
00074 wid_hbl -> addSpacing(SPACE_PIX_SIZE);
00075 wid_hbl -> addWidget(FAffMer);
00076 wid_hbl -> addWidget(FSaisieMer);
00077 wid_hbl -> addSpacing(SPACE_PIX_SIZE);
00078 wid_hbl -> addWidget(FAffRayon);
00079 wid_hbl -> addWidget(FSaisieRayon);
00080 wid_hbl -> addWidget(FAffValRayon);
00081 wid_hbl -> addSpacing(SPACE_PIX_SIZE);
00082
00083 FChoix = new BoutonsCreation ( this, wid_hbl ) ;
00084
00085 wid_hbl -> addStretch(1);
00086 addWidget(widget);
00087
00088
00089 FPosit = new BoitePositionnement ( this , parent , OBJECT_TORUS ) ;
00090
00091 update ( ) ;
00092
00093 QObject::connect ( FSaisiePar , SIGNAL ( valueChanged ( int ) ) , this,
00094 SLOT ( callbackParallels ( ) ) ) ;
00095 QObject::connect ( FSaisieMer , SIGNAL ( valueChanged ( int ) ) , this,
00096 SLOT ( callbackMeridians ( ) ) ) ;
00097 QObject::connect ( FSaisieRayon , SIGNAL ( valueChanged ( int ) ) , this ,
00098 SLOT ( callbackRR ( ) ) ) ;
00099
00100
00101
00102 }
00103
00104 CreationTore :: ~CreationTore ( )
00105 {
00106 }
00107
00108
00109
00110 void CreationTore::update()
00111 {
00112 CreationObjet :: update ( ) ;
00113
00114 FSaisieMer->setValue(FControler->getParameterCreation()
00115 ->getTorusNbMeridians());
00116 FSaisiePar->setValue(FControler->getParameterCreation()
00117 ->getTorusNbParallels());
00118 FSaisieRayon->setValue(int(FControler->getParameterCreation()
00119 ->getTorusRadiusRapport()*100.0)) ;
00120 }
00121
00122
00123
00124 void CreationTore :: callbackMeridians ( )
00125 {
00126 setMeridians ( getMeridians ( ) ) ;
00127 }
00128
00129 void CreationTore :: callbackParallels ( )
00130 {
00131 setParallels ( getParallels ( ) ) ;
00132 }
00133
00134 void CreationTore :: callbackRR ( )
00135 {
00136 setRR ( getRR ( ) ) ;
00137 }
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151 int CreationTore :: getMeridians() const
00152 {
00153 return FSaisieMer -> value ();
00154 }
00155
00156 int CreationTore :: getParallels() const
00157 {
00158 return FSaisiePar -> value ();
00159 }
00160
00161 float CreationTore::getRR() const
00162 {
00163 float v = FSaisieRayon -> value () / 100.0 ;
00164 return v ;
00165 }
00166
00167
00168
00169 void CreationTore::setMeridians(int m)
00170 {
00171 FControler -> getParameterCreation()->setTorusNbMeridians(m);
00172 update( ) ;
00173 repaint ( ) ;
00174 }
00175
00176 void CreationTore::setParallels(int p)
00177 {
00178 FControler -> getParameterCreation()->setTorusNbParallels(p);
00179 update( ) ;
00180 repaint ( ) ;
00181 }
00182
00183 void CreationTore::setRR(float v)
00184 {
00185 assert(v>=0); assert(v<=1);
00186 FControler->getParameterCreation()->setTorusRadiusRapport(v);
00187 update ( ) ;
00188 repaint ( ) ;
00189 }