ros_topic_property.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #include "ros/master.h"
31 
33 
34 #include <QApplication>
35 
36 
37 namespace rviz
38 {
40  const QString& default_value,
41  const QString& message_type,
42  const QString& description,
43  Property* parent)
44  : EditableEnumProperty(name, default_value, description, parent), message_type_(message_type)
45 {
47 }
48 
49 void RosTopicProperty::setMessageType(const QString& message_type)
50 {
51  message_type_ = message_type;
52 }
53 
55 {
56  QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
57  clearOptions();
58 
59  std::string std_message_type = message_type_.toStdString();
60 
62  ros::master::getTopics(topics);
63 
64  // Loop through all published topics
65  ros::master::V_TopicInfo::iterator it;
66  for (it = topics.begin(); it != topics.end(); ++it)
67  {
68  const ros::master::TopicInfo& topic = *it;
69 
70  // Only add topics whose type matches.
71  if (topic.datatype == std_message_type)
72  {
73  addOptionStd(topic.name);
74  }
75  }
76  sortOptions();
77  QApplication::restoreOverrideCursor();
78 }
79 
80 } // end namespace rviz
rviz::EditableEnumProperty::sortOptions
void sortOptions()
Sort the option strings.
Definition: editable_enum_property.h:86
rviz::RosTopicProperty::message_type_
QString message_type_
Definition: ros_topic_property.h:94
ros_topic_property.h
rviz::EditableEnumProperty
Editable Enum property.
Definition: editable_enum_property.h:43
description
description
rviz::RosTopicProperty::RosTopicProperty
RosTopicProperty(const QString &name=QString(), const QString &default_value=QString(), const QString &message_type=QString(), const QString &description=QString(), Property *parent=nullptr)
Definition: ros_topic_property.cpp:39
ros::master::getTopics
ROSCPP_DECL bool getTopics(V_TopicInfo &topics)
rviz::EditableEnumProperty::addOptionStd
void addOptionStd(const std::string &option)
Definition: editable_enum_property.h:78
rviz::Property::connect
QMetaObject::Connection connect(const QObject *receiver, const char *slot, Qt::ConnectionType type=Qt::AutoConnection)
Connect changed() signal to given slot of receiver.
Definition: property.cpp:78
rviz::Property
A single element of a property tree, with a name, value, description, and possibly children.
Definition: property.h:100
rviz::RosTopicProperty::fillTopicList
virtual void fillTopicList()
Definition: ros_topic_property.cpp:54
rviz
Definition: add_display_dialog.cpp:54
ros::master::V_TopicInfo
std::vector< TopicInfo > V_TopicInfo
rviz::EditableEnumProperty::clearOptions
virtual void clearOptions()
Definition: editable_enum_property.cpp:45
rviz::RosTopicProperty::setMessageType
void setMessageType(const QString &message_type)
Definition: ros_topic_property.cpp:49
ros::master::TopicInfo::datatype
std::string datatype
default_value
def default_value(type_)
ros::master::TopicInfo
master.h
ros::master::TopicInfo::name
std::string name
rviz::EditableEnumProperty::requestOptions
void requestOptions(EditableEnumProperty *property_in_need_of_options)
requestOptions() is emitted each time createEditor() is called.


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust, William Woodall
autogenerated on Fri Dec 13 2024 03:31:02