Go to the documentation of this file.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 <float.h>
00031
00032 #include "rviz/properties/property_widget_item.h"
00033 #include "rviz/properties/property_tree_widget.h"
00034 #include "rviz/properties/property.h"
00035 #include "rviz/properties/topic_info_variant.h"
00036
00037 namespace rviz
00038 {
00039
00040 PropertyWidgetItem::PropertyWidgetItem( PropertyBase* property,
00041 const std::string& label,
00042 bool editable,
00043 bool needs_check_box,
00044 bool first_column_spans )
00045 : max_( FLT_MAX )
00046 , min_( -FLT_MAX )
00047 , property_( property )
00048 , first_column_spans_( first_column_spans )
00049 {
00050 Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
00051
00052 if( needs_check_box && editable )
00053 {
00054 flags |= Qt::ItemIsUserCheckable;
00055 }
00056
00057
00058
00059 if( !needs_check_box && editable )
00060 {
00061 flags |= Qt::ItemIsEditable;
00062 }
00063
00064 setFlags( flags );
00065
00066 setLeftText( label );
00067
00068
00069
00070
00071
00072 }
00073
00074 void PropertyWidgetItem::addToParent( PropertyWidgetItem* parent_item )
00075 {
00076 if( parent_item )
00077 {
00078 parent_item->addChild( this );
00079 }
00080 else
00081 {
00082 CategoryPropertyPtr parent = property_->getParent().lock();
00083 if( parent )
00084 {
00085 parent->getWidgetItem()->addChild( this );
00086 }
00087 else
00088 {
00089 property_->getPropertyTreeWidget()->addTopLevelItem( this );
00090 }
00091 }
00092
00093
00094
00095 setFirstColumnSpanned( first_column_spans_ );
00096 }
00097
00098 void PropertyWidgetItem::setLeftText( const std::string& text )
00099 {
00100 bool ign = property_->getPropertyTreeWidget()->setIgnoreChanges( true );
00101
00102 setText( 0, QString::fromStdString( text ));
00103
00104 property_->getPropertyTreeWidget()->setIgnoreChanges( ign );
00105 }
00106
00107 void PropertyWidgetItem::setRightText( const QString& text )
00108 {
00109 bool ign = property_->getPropertyTreeWidget()->setIgnoreChanges( true );
00110
00111 setText( 1, text );
00112
00113 property_->getPropertyTreeWidget()->setIgnoreChanges( ign );
00114 }
00115
00116 void PropertyWidgetItem::setRightText( const std::string& text )
00117 {
00118 setRightText( QString::fromStdString( text ));
00119 }
00120
00121 void PropertyWidgetItem::setUserData( QVariant _data )
00122 {
00123 bool ign = property_->getPropertyTreeWidget()->setIgnoreChanges( true );
00124
00125 setData( 1, Qt::UserRole, _data );
00126
00127 if( _data.canConvert<ros::master::TopicInfo>() )
00128 {
00129 ros::master::TopicInfo topic = _data.value<ros::master::TopicInfo>();
00130 setText( 1, QString::fromStdString( topic.name ));
00131 }
00132 else
00133 {
00134 setText( 1, _data.toString() );
00135 }
00136
00137 property_->getPropertyTreeWidget()->setIgnoreChanges( ign );
00138 }
00139
00140 QVariant PropertyWidgetItem::userData() const
00141 {
00142 return data( 1, Qt::UserRole );
00143 }
00144
00145 }
00146