GCC Code Coverage Report


Directory: plugins/
File: plugins/hppwidgetsplugin/joint-tree-item.hh
Date: 2024-12-13 15:51:58
Exec Total Coverage
Lines: 0 5 0.0%
Branches: 0 0 -%

Line Branch Exec Source
1 //
2 // Copyright (c) CNRS
3 // Authors: Joseph Mirabel
4 //
5
6 #ifndef HPP_GUI_JOINTTREEITEM_HH
7 #define HPP_GUI_JOINTTREEITEM_HH
8
9 #include <QItemDelegate>
10 #include <QSlider>
11 #include <QStandardItem>
12
13 // #include <hpp/corbaserver/robot.hh>
14 #include <gepetto/viewer/node.h>
15
16 #include <gepetto/gui/fwd.hh>
17
18 #include "hppwidgetsplugin/hppwidgetsplugin.hh"
19
20 class QDoubleSpinBox;
21 class QMenu;
22 class QPushButton;
23
24 namespace hpp {
25 namespace gui {
26 class JointTreeItem : public QStandardItem {
27 public:
28 typedef CORBA::ULong ULong;
29 typedef gepetto::viewer::NodePtr_t NodePtr_t;
30 typedef std::vector<NodePtr_t> NodesPtr_t;
31
32 static const int IndexRole;
33 static const int LowerBoundRole;
34 static const int UpperBoundRole;
35 static const int TypeRole;
36
37 enum ItemType {
38 SkipType = 0,
39 IntegratorType,
40 UnboundedValueType,
41 BoundedValueType,
42 BoundType
43 };
44
45 JointTreeItem(const char* name, const ULong& idxQ, const ULong& idxV,
46 const hpp::floatSeq& q, const hpp::floatSeq& b,
47 const ULong& nbDof, const NodesPtr_t& node);
48
49 ~JointTreeItem();
50
51 virtual QStandardItem* clone() const;
52
53 virtual int type() { return QStandardItem::UserType + 3; }
54
55 const std::string& name() const { return name_; }
56
57 hpp::floatSeq config() const;
58
59 hpp::floatSeq bounds() const;
60
61 ULong rankInConfig() const { return idxQ_; }
62
63 ULong rankInVelocity() const { return idxV_; }
64
65 ULong configSize() const { return nq_; }
66
67 ULong numberDof() const { return nv_; }
68
69 void updateBounds(const hpp::floatSeq& b);
70
71 void updateConfig(const hpp::floatSeq& c);
72
73 void updateFromRobotConfig(const hpp::floatSeq& c);
74
75 void updateTypeRole();
76
77 void setupActions(HppWidgetsPlugin* plugin);
78
79 const QList<QAction*>& actions() const;
80
81 private:
82 typedef QList<QStandardItem*> StandardItemList;
83
84 std::string name_;
85 ULong idxQ_, idxV_, nq_, nv_;
86 NodesPtr_t nodes_;
87 QVector<StandardItemList> value_;
88 QList<QAction*> actions_;
89 };
90
91 class IntegratorWheel : public QSlider {
92 Q_OBJECT
93
94 public:
95 IntegratorWheel(Qt::Orientation o, HppWidgetsPlugin* plugin, QWidget* parent,
96 gepetto::gui::MainWindow* main, JointTreeItem const* item,
97 int index);
98
99 protected:
100 void timerEvent(QTimerEvent*);
101
102 protected slots:
103 void reset();
104 void updateIntegrator(int value);
105
106 private:
107 int rate_; // in millisecond
108 int timerId_;
109 gepetto::gui::MainWindow* main_;
110 HppWidgetsPlugin* plugin_;
111 JointTreeItem const* item_;
112
113 const int bound_;
114 const double maxVelocity_;
115 hpp::floatSeq q_, dq_;
116 int index_;
117 };
118
119 class SliderBoundedJoint : public QSlider {
120 Q_OBJECT
121
122 public:
123 SliderBoundedJoint(Qt::Orientation orientation, HppWidgetsPlugin* plugin,
124 QWidget* parent, gepetto::gui::MainWindow* main,
125 JointTreeItem const* item, int index);
126
127 double getValue();
128
129 private slots:
130 void updateConfig(int value);
131
132 private:
133 gepetto::gui::MainWindow* main_;
134 HppWidgetsPlugin* plugin_;
135 JointTreeItem const* item_;
136 double value_;
137 int index_;
138 double m_, M_;
139 };
140
141 class JointItemDelegate : public QItemDelegate {
142 Q_OBJECT
143
144 public:
145 JointItemDelegate(QPushButton* forceVelocity, HppWidgetsPlugin* plugin,
146 gepetto::gui::MainWindow* parent);
147
148 void updateTypeRole(JointTreeItem::ItemType& type) const;
149
150 QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option,
151 const QModelIndex& index) const;
152 void setEditorData(QWidget* editor, const QModelIndex& index) const;
153 void setModelData(QWidget* editor, QAbstractItemModel* model,
154 const QModelIndex& index) const;
155 void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option,
156 const QModelIndex& index) const;
157
158 private:
159 gepetto::gui::MainWindow* main_;
160 HppWidgetsPlugin* plugin_;
161 QPushButton* forceIntegrator_;
162 };
163 } // namespace gui
164 } // namespace hpp
165
166 #endif // HPP_GUI_JOINTTREEITEM_HH
167