RestUiWidget.hh
Go to the documentation of this file.
1/*
2 * Copyright 2015 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17
18#ifndef GAZEBO_PLUGINS_REST_WEB_RESTUIWIDGET_HH_
19#define GAZEBO_PLUGINS_REST_WEB_RESTUIWIDGET_HH_
20
21#include <string>
22#include <list>
23#include <vector>
24
25// See: https://bugreports.qt-project.org/browse/QTBUG-22829
26#ifndef Q_MOC_RUN
27# include <gazebo/gazebo.hh>
28#endif
29#include <gazebo/util/system.hh>
30#include "RestUiLoginDialog.hh"
31
32namespace gazebo
33{
34 namespace gui
35 {
36 class TopToolbar;
37 }
38
41 class GZ_PLUGIN_VISIBLE RestUiWidget : public QWidget
42 {
43 Q_OBJECT
44
51 public: RestUiWidget(QWidget *_parent,
52 QAction &_login,
53 QAction &_logout,
54 const std::string &_menuTitle,
55 const std::string &_loginTitle,
56 const std::string &_urlLabel,
57 const std::string &_defautlUrl);
58
60 public: virtual ~RestUiWidget() = default;
61
63 public slots: void Login();
64
66 public slots: void Logout();
67
70 public: void Update();
71
74 private: void OnResponse(ConstRestResponsePtr &_msg);
75
78 private: void OnWindowMode(const std::string &_mode);
79
81 private: QAction &loginMenuAction;
82
84 private: QAction &logoutMenuAction;
85
87 private: std::string title;
88
90 private: gazebo::transport::NodePtr node;
91
93 private: gui::RestUiLoginDialog loginDialog;
94
96 private: gazebo::transport::PublisherPtr loginPub;
97
99 private: gazebo::transport::PublisherPtr logoutPub;
100
102 private: gazebo::transport::SubscriberPtr responseSub;
103
106 private: std::list<boost::shared_ptr<const gazebo::msgs::RestResponse>>
107 msgRespQ;
108
110 private: gui::TopToolbar *toolbar;
111
113 private: QLabel *loginLabel;
114
116 private: unsigned int restID;
117
119 private: QAction *loginLabelAct;
120
123 private: QAction *spacerAct;
124
126 public: std::vector<event::ConnectionPtr> connections;
127 };
128}
129
130#endif
gui
Definition KeyEventHandler.hh:29
REST user interface widget.
Definition RestUiWidget.hh:42
std::vector< event::ConnectionPtr > connections
Event based connections.
Definition RestUiWidget.hh:126
virtual ~RestUiWidget()=default
Destructor.
RestUiWidget(QWidget *_parent, QAction &_login, QAction &_logout, const std::string &_menuTitle, const std::string &_loginTitle, const std::string &_urlLabel, const std::string &_defautlUrl)
Constructor.
void Logout()
QT callback (from the window menu)
void Login()
QT callback (from the window menu)
void Update()
Called before rendering, from the GUI thread this is called from the plugin's update.
Provides a means to login to a webservice.
Definition RestUiLoginDialog.hh:35
Toolbar on the top of the main window.
Definition TopToolbar.hh:33
boost::shared_ptr< Subscriber > SubscriberPtr
Definition TransportTypes.hh:53
boost::shared_ptr< Publisher > PublisherPtr
Definition TransportTypes.hh:49
boost::shared_ptr< Node > NodePtr
Definition TransportTypes.hh:57
Forward declarations for the common classes.
Definition Animation.hh:27