41
41
#include < OgreTechnique.h>
42
42
#include < OgreTextureManager.h>
43
43
#include < OgreViewport.h>
44
+ #include < QString>
44
45
45
46
#include < QString> // NOLINT: cpplint is unable to handle the include order here
46
47
@@ -117,40 +118,14 @@ ImageDisplay::ImageDisplay(std::unique_ptr<ROSImageTextureIface> texture)
117
118
void ImageDisplay::onInitialize ()
118
119
{
119
120
ITDClass::onInitialize ();
120
-
121
121
updateNormalizeOptions ();
122
122
setupScreenRectangle ();
123
-
124
123
setupRenderPanel ();
125
124
126
125
render_panel_->getRenderWindow ()->setupSceneAfterInit (
127
126
[this ](Ogre::SceneNode * scene_node) {scene_node->attachObject (screen_rect_.get ());});
128
- }
129
-
130
- ImageDisplay::~ImageDisplay () = default ;
131
-
132
- void ImageDisplay::onEnable () {subscribe ();}
133
-
134
- void ImageDisplay::onDisable ()
135
- {
136
- unsubscribe ();
137
- clear ();
138
- }
139
-
140
- // Need a signature with pass by reference for image_transport_.subscribe
141
- void ImageDisplay::incomingMessage (const sensor_msgs::msg::Image::ConstSharedPtr & img_msg)
142
- {
143
- ImageTransportDisplay<sensor_msgs::msg::Image>::incomingMessage (img_msg);
144
- }
145
127
146
- void ImageDisplay::updateTopic ()
147
- {
148
- if (!isEnabled ()) {
149
- return ;
150
- }
151
- transport_override_property_->setStdString (" " );
152
-
153
- // Populate topic message types based on installed image_transport plugins
128
+ // Populate message types and transport overrides based on installed image_transport plugins
154
129
image_transport::ImageTransport image_transport_ (rviz_ros_node_.lock ()->get_raw_node ());
155
130
std::vector<std::string> loadable_transports = image_transport_.getLoadableTransports ();
156
131
std::vector<QString> message_types;
@@ -165,7 +140,7 @@ void ImageDisplay::updateTopic()
165
140
std::string transports_str = " " ;
166
141
rviz_common::properties::StatusProperty::Level transports_status_level =
167
142
rviz_common::properties::StatusProperty::Ok;
168
- // Populate topic message types and transport override options
143
+ transport_override_property_-> clearOptions ();
169
144
transport_override_property_->addOptionStd (" " );
170
145
for (std::string & transport : loadable_transports) {
171
146
transport = transport.substr (transport.find_last_of (' /' ) + 1 );
@@ -178,14 +153,29 @@ void ImageDisplay::updateTopic()
178
153
transports_str += " (unknown: " + transport + " ), " ;
179
154
}
180
155
}
156
+ // TODO(mjforan) setStatus doesn't work in onInitialize or updateTopic
181
157
setStatusStd (transports_status_level, " Image Transports" , transports_str);
182
158
// Remove duplicates
183
159
message_types.erase (std::unique (message_types.begin (), message_types.end ()), message_types.end ());
184
160
// Update the message types to allow in the topic_property_
185
161
((rviz_common::properties::RosTopicMultiProperty *)topic_property_)
186
162
->setMessageTypes (message_types);
163
+ }
187
164
188
- rviz_default_plugins::displays::ImageTransportDisplay<sensor_msgs::msg::Image>::updateTopic ();
165
+ ImageDisplay::~ImageDisplay () = default ;
166
+
167
+ void ImageDisplay::onEnable () {subscribe ();}
168
+
169
+ void ImageDisplay::onDisable ()
170
+ {
171
+ unsubscribe ();
172
+ clear ();
173
+ }
174
+
175
+ // Need a signature with pass by reference for image_transport_.subscribe
176
+ void ImageDisplay::incomingMessage (const sensor_msgs::msg::Image::ConstSharedPtr & img_msg)
177
+ {
178
+ ImageTransportDisplay<sensor_msgs::msg::Image>::incomingMessage (img_msg);
189
179
}
190
180
191
181
void ImageDisplay::subscribe ()
0 commit comments