00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "rviz/properties/combo_box.h"
00031
00032 #include "rviz/properties/enum_property.h"
00033
00034 namespace rviz
00035 {
00036
00037 EnumProperty::EnumProperty( const QString& name,
00038 const QString& default_value,
00039 const QString& description,
00040 Property* parent,
00041 const char *changed_slot,
00042 QObject* receiver )
00043 : StringProperty( name, default_value, description, parent, changed_slot, receiver )
00044 {
00045 }
00046
00047 void EnumProperty::clearOptions()
00048 {
00049 strings_.clear();
00050 ints_.clear();
00051 }
00052
00053 void EnumProperty::addOption( const QString& option, int value )
00054 {
00055 strings_.push_back( option );
00056 ints_[ option ] = value;
00057 }
00058
00059 int EnumProperty::getOptionInt()
00060 {
00061 QString current_string = getValue().toString();
00062 QHash<QString, int>::const_iterator int_iter = ints_.find( current_string );
00063 if( int_iter != ints_.end() )
00064 {
00065 return int_iter.value();
00066 }
00067 return 0;
00068 }
00069
00070 QWidget* EnumProperty::createEditor( QWidget* parent,
00071 const QStyleOptionViewItem& option )
00072 {
00073
00074 Q_EMIT requestOptions( this );
00075
00076 ComboBox* cb = new ComboBox( parent );
00077 cb->addItems( strings_ );
00078 cb->setCurrentIndex( strings_.indexOf( getValue().toString() ));
00079 QObject::connect( cb, SIGNAL( currentIndexChanged( const QString& )), this, SLOT( setString( const QString& )));
00080
00081
00082 return cb;
00083 }
00084
00085 void EnumProperty::setString( const QString& str )
00086 {
00087 setValue( str );
00088 }
00089
00090 }