yes_no_button_interface.cpp
Go to the documentation of this file.
2 #include <boost/thread.hpp>
3 #include <rviz/config.h>
4 #include <ros/package.h>
5 #include <QVBoxLayout>
6 #include <QHBoxLayout>
7 #include <QSignalMapper>
8 
9 #include <jsk_gui_msgs/YesNo.h>
10 
11 
12 namespace jsk_rviz_plugins
13 {
14 
16  : rviz::Panel(parent)
17  {
18  layout_ = new QHBoxLayout;
19 
20  yes_button_ = new QPushButton("Yes");
21  layout_->addWidget(yes_button_);
22  yes_button_->setEnabled(false);
23 
24  no_button_ = new QPushButton("No");
25  layout_->addWidget(no_button_);
26  no_button_->setEnabled(false);
27 
28  connect(yes_button_, SIGNAL(clicked()), this, SLOT(respondYes()));
29  connect(no_button_, SIGNAL(clicked()), this, SLOT(respondNo()));
30 
31  setLayout(layout_);
32  }
33 
35  {
36  ros::NodeHandle nh;
37  if (!ros::service::exists("/rviz/yes_no_button", /*print_failure_reason*/false)) {
39  "/rviz/yes_no_button",
41  this);
42  }
43  }
44 
46  jsk_gui_msgs::YesNo::Request& req,
47  jsk_gui_msgs::YesNo::Response& res)
48  {
49  need_user_input_ = true;
50  yes_button_->setEnabled(true);
51  no_button_->setEnabled(true);
52  while (need_user_input_) {
53  QApplication::processEvents(QEventLoop::AllEvents, 100);
54  }
55  yes_button_->setEnabled(false);
56  no_button_->setEnabled(false);
57  res.yes = yes_;
58  return true;
59  }
60 
62  {
63  boost::mutex::scoped_lock lock(mutex_);
64  yes_ = true;
65  need_user_input_ = false;
66  }
67 
69  {
70  boost::mutex::scoped_lock lock(mutex_);
71  yes_ = false;
72  need_user_input_ = false;
73  }
74 
76  {
77  rviz::Panel::save(config);
78  }
79 
81  {
82  rviz::Panel::load(config);
83  }
84 
85 } // namespace jsk_rviz_plugins
86 
87 
PLUGINLIB_EXPORT_CLASS(jsk_rviz_plugins::PictogramArrayDisplay, rviz::Display)
virtual void save(rviz::Config config) const
virtual void load(const rviz::Config &config)
ServiceServer advertiseService(const std::string &service, bool(T::*srv_func)(MReq &, MRes &), T *obj)
virtual void save(Config config) const
virtual bool requested(jsk_gui_msgs::YesNo::Request &req, jsk_gui_msgs::YesNo::Response &res)
ROSCPP_DECL bool exists(const std::string &service_name, bool print_failure_reason)
virtual void load(const Config &config)


jsk_rviz_plugins
Author(s): Kei Okada , Yohei Kakiuchi , Shohei Fujii , Ryohei Ueda
autogenerated on Thu Jun 1 2023 02:45:58