MIRA
JointPublisherView.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
47 #ifndef _MIRA_JOINTPUBLISHERVIEW_H_
48 #define _MIRA_JOINTPUBLISHERVIEW_H_
49 
50 #include <QTimer>
51 #include <QVBoxLayout>
52 #include <QLineEdit>
53 #include <QSlider>
54 
55 #include <fw/Framework.h>
56 #include <rcp/ViewPart.h>
57 #include <views/PropertyViewPage.h>
58 
60 
61 namespace mira { namespace model {
62 
64 
72 {
74  ("Name", "JointPublisher")
75  ("Category", "Models")
76  ("Description", "Modify and publish joints of a rigid model"))
77 Q_OBJECT
78 
79 public:
81  virtual ~JointPublisherView();
82 
83  template <typename Reflector>
84  void reflect(Reflector& r)
85  {
86  r.property("RigidModelProvider", modelProvider, "Service used for providing a rigid model", "");
87  }
88 
89  virtual Object* getAdapter(const Class& adapter);
90 
91 protected:
92 
93  virtual QWidget* createPartControl();
94 
95 public:
96 
97  std::string modelProvider;
98 
99 private:
100  PropertyViewPage* mControl;
101 
102  class UI;
103  UI* ui;
104 };
105 
107 
108 class JointPublisherView::UI : public QWidget
109 {
110  Q_OBJECT
111 public:
112  UI(JointPublisherView* parent);
113 
114 public slots:
115 
116  void updateService();
117  void revolute(int value);
118  void prismatic(int value);
119  void revolute(const QString& value);
120  void prismatic(const QString& value);
121 
122 public:
123 
124  void setupModel();
125  void clearModel();
126 
127  QTimer* serviceTimer;
129  std::string service;
131 
132 private:
133  struct JointInfo
134  {
135  float min;
136  float max;
137  QLineEdit* edit;
138  QSlider* slider;
139  };
140  std::map<std::string, JointInfo> mJointInfos;
141  JointPublisherView* mParent;
142  QVBoxLayout* mLayout;
143 };
144 
146 
147 }}
148 
149 #endif
Template helper class that provides a rigid model via rpc service.
Authority authority
Definition: JointPublisherView.h:128
PropertyHint slider(const T &min, const T &max, const T &s)
View plugin for miracenter for modifying joints of rigid models.
Definition: JointPublisherView.h:71
#define MIRA_META_OBJECT(classIdentifier, MetaInfo)
boost::shared_ptr< RigidModel > RigidModelPtr
Definition: RigidModel.h:205
UI(JointPublisherView *parent)
RigidModelPtr model
Definition: JointPublisherView.h:130
std::string modelProvider
Definition: JointPublisherView.h:97
virtual QWidget * createPartControl()
Definition: JointPublisherView.h:108
QTimer * serviceTimer
Definition: JointPublisherView.h:127
std::string service
Definition: JointPublisherView.h:129