Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members  

SIG_EnvironmentView.cpp

00001 #include <qvalidator.h>
00002 #include <qlineedit.h>
00003 #include <qcombobox.h>
00004 
00005 #include "SIGEL_MasterGUI/SIG_EnvironmentView.h"
00006 
00007 #include "pointvector.h"
00008 
00009 namespace SIGEL_MasterGUI
00010 {
00011 /* 
00012  *  Constructs a SIG_Environment which is a child of 'parent', with the 
00013  *  name 'name' and widget flags set to 'f' 
00014  */
00015 SIG_EnvironmentView::SIG_EnvironmentView( QWidget* parent,  const char* name, WFlags fl, SIGEL_GP::SIG_GPExperiment &theExperiment )
00016   : SIG_EnvironmentBase( parent, name, fl ), theExperiment( theExperiment )
00017 {
00018   // gravity validators
00019   lineeditGravityX->setValidator( new QDoubleValidator( lineeditGravityX , "ValidatorGravityX") );
00020   lineeditGravityY->setValidator( new QDoubleValidator( lineeditGravityY , "ValidatorGravityY") );
00021   lineeditGravityZ->setValidator( new QDoubleValidator( lineeditGravityZ , "ValidatorGravityZ") );
00022 
00023   // y plane level validators
00024   lineeditYPlaneLevel->setValidator( new QDoubleValidator( lineeditYPlaneLevel, "ValidatorYPlaneLevel") );
00025 
00026   // start position validators
00027   lineeditStartPositionX->setValidator( new QDoubleValidator( lineeditStartPositionX , "ValidatorStartPositionX") );
00028   lineeditStartPositionY->setValidator( new QDoubleValidator( lineeditStartPositionY , "ValidatorStartPositionY") );
00029   lineeditStartPositionZ->setValidator( new QDoubleValidator( lineeditStartPositionZ , "ValidatorStartPositionZ") );
00030 
00031   // validators for the dynaMechs lineedits
00032   lineeditPlanarSpringConstant->setValidator( new QDoubleValidator(lineeditPlanarSpringConstant) );
00033   lineeditNormalSpringConstant->setValidator( new QDoubleValidator(lineeditNormalSpringConstant) );
00034   lineeditPlanarDamperConstant->setValidator( new QDoubleValidator(lineeditPlanarDamperConstant) );
00035   lineeditNormalDamperConstant->setValidator( new QDoubleValidator(lineeditNormalDamperConstant) );
00036   lineeditStaticFrictionCoefficient->setValidator( new QDoubleValidator(lineeditStaticFrictionCoefficient) );
00037   lineeditKineticFrictionCoefficient->setValidator( new QDoubleValidator(lineeditKineticFrictionCoefficient) );
00038 }
00039 
00040 /*  
00041  *  Destroys the object and frees any allocated resources
00042  */
00043 SIG_EnvironmentView::~SIG_EnvironmentView()
00044 {
00045     // no need to delete child widgets, Qt does it all for us
00046 }
00047 
00048 void SIG_EnvironmentView::putIntoExperiment()
00049 {
00050   // put the gravity values out of the widgets into the experiment ( lineedits )
00051   DL_vector gravityVector( lineeditGravityX->text().toDouble(),
00052                            lineeditGravityY->text().toDouble(),
00053                            lineeditGravityZ->text().toDouble() );
00054   theExperiment.environment.setGravity( gravityVector );
00055 
00056   // floor parameters
00057   // put the floor material into the experiment
00058   theExperiment.environment.setFloorMaterialName( comboboxMaterialName->currentText() );
00059   // put the y plane level into the experiment ( lineedit )
00060   theExperiment.environment.setYPlaneLevel( lineeditYPlaneLevel->text().toDouble() );
00061 
00062   DL_vector startPositionVector( lineeditStartPositionX->text().toDouble(),
00063                                  lineeditStartPositionY->text().toDouble(),
00064                                  lineeditStartPositionZ->text().toDouble() );
00065   theExperiment.environment.setStartPosition( startPositionVector );
00066 
00067   // put the dynaMechs values into the experiment
00068   theExperiment.environment.setGroundPlanarSpringConstant( lineeditPlanarSpringConstant->text().toDouble() );
00069   theExperiment.environment.setGroundNormalSpringConstant( lineeditNormalSpringConstant->text().toDouble() );
00070   theExperiment.environment.setGroundPlanarDamperConstant( lineeditPlanarDamperConstant->text().toDouble() );
00071   theExperiment.environment.setGroundNormalDamperConstant( lineeditNormalDamperConstant->text().toDouble() );
00072   theExperiment.environment.setFrictionCoeff_u_s( lineeditStaticFrictionCoefficient->text().toDouble() );
00073   theExperiment.environment.setFrictionCoeff_u_k( lineeditKineticFrictionCoefficient->text().toDouble() );
00074 };
00075 
00076 void SIG_EnvironmentView::getOutOfExperiment()
00077 {
00078   // set the gravity vector according to the experiment (three lineedits)
00079   DL_vector gravityVector = theExperiment.environment.getGravity();
00080   lineeditGravityX->setText( QString::number( gravityVector.x) );
00081   lineeditGravityY->setText( QString::number( gravityVector.y) );
00082   lineeditGravityZ->setText( QString::number( gravityVector.z) );
00083 
00084   // floor parameters
00085 
00086   // get the material name
00087   // first build the combobox
00088   comboboxMaterialName->clear();
00089   QDictIterator<SIGEL_Robot::SIG_Material> materialIter = theExperiment.robot.getMaterialIter();
00090   for(; materialIter.current(); ++materialIter )
00091     {
00092       comboboxMaterialName->insertItem( materialIter.current()->getName() );
00093     }
00094   bool wasAlreadyInserted = false;
00095   for( int i=0; i < comboboxMaterialName->count(); i++ )
00096     {
00097       if( comboboxMaterialName->text(i) == theExperiment.environment.getFloorMaterialName() )
00098         {
00099           comboboxMaterialName->setCurrentItem( i );
00100           wasAlreadyInserted = true;
00101           break;
00102         }
00103     }
00104   if( !wasAlreadyInserted)
00105     comboboxMaterialName->insertItem( theExperiment.environment.getFloorMaterialName() );
00106 
00107   //  lineeditMaterialName->setText( theExperiment.environment.getFloorMaterialName() );
00108   // get the y plane level
00109   QString yPlaneLevel;
00110   yPlaneLevel.setNum( theExperiment.environment.getYPlaneLevel() );
00111   lineeditYPlaneLevel->setText( yPlaneLevel );
00112 
00113   // get the start position
00114   DL_vector startPositionVector = theExperiment.environment.getStartPosition();
00115   lineeditStartPositionX->setText( QString::number( startPositionVector.x ) );
00116   lineeditStartPositionY->setText( QString::number( startPositionVector.y ) );
00117   lineeditStartPositionZ->setText( QString::number( startPositionVector.z ) );
00118 
00119   // get the dynaMechs values
00120   lineeditPlanarSpringConstant->setText( QString::number( theExperiment.environment.getGroundPlanarSpringConstant() ) );
00121   lineeditNormalSpringConstant->setText( QString::number( theExperiment.environment.getGroundNormalSpringConstant() ) );
00122   lineeditPlanarDamperConstant->setText( QString::number( theExperiment.environment.getGroundPlanarDamperConstant() ) );
00123   lineeditNormalDamperConstant->setText( QString::number( theExperiment.environment.getGroundNormalDamperConstant() ) );
00124   lineeditStaticFrictionCoefficient->setText( QString::number( theExperiment.environment.getFrictionCoeff_u_s() ) );
00125   lineeditKineticFrictionCoefficient->setText( QString::number( theExperiment.environment.getFrictionCoeff_u_k() ) );
00126 };
00127 
00128 }

Generated at Mon Sep 3 01:32:21 2001 for PG 368 - SIGEL by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000