NJointControllersWidget.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * \package RobotAPI::gui-plugins::RobotUnitPlugin
17  * \author Raphael Grimm ( raphael dot grimm at kit dot edu )
18  * \date 2017
19  * \copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
23 #pragma once
24 
25 #include <atomic>
26 #include <mutex>
27 
28 #include <QCheckBox>
29 #include <QFormLayout>
30 #include <QHBoxLayout>
31 #include <QLabel>
32 #include <QLineEdit>
33 #include <QPushButton>
34 #include <QTreeWidget>
35 #include <QTreeWidgetItem>
36 #include <QWidget>
37 
39 
42 
43 #include <RobotAPI/gui-plugins/RobotUnitPlugin/ui_NJointControllersWidget.h>
44 #include <RobotAPI/interface/units/RobotUnit/NJointController.h>
45 #include <RobotAPI/interface/units/RobotUnit/RobotUnitInterface.h>
46 
47 #include "RobotUnitWidgetBase.h"
48 
49 namespace armarx
50 {
51  class NJointControllersWidget;
52  class NJointControllersWidgetEntry;
53  class NJointControllersWidgetRemoteFunction;
54 
55  class NJointControllersWidget : public RobotUnitWidgetTemplateBase<Ui::NJointControllersWidget>
56  {
57  Q_OBJECT
58  public:
59  explicit NJointControllersWidget(QWidget* parent = 0);
60  ~NJointControllersWidget() override;
61  void nJointControllerStatusChanged(const NJointControllerStatusSeq& allStatus);
62 
63  virtual void nJointControllerCreated(std::string name);
64  virtual void nJointControllerDeleted(std::string name);
65 
66  void loadSettings(QSettings* settings) override;
67  void saveSettings(QSettings* settings) override;
68 
69  protected:
70  void clearAll() override;
71  void doContentUpdate() override;
72  void getResetData() override;
73  bool addOneFromResetData() override;
74 
75  private:
76  void add(const NJointControllerDescriptionWithStatus& ds);
77 
78  std::map<std::string, NJointControllersWidgetEntry*> entries;
79  std::map<std::string, NJointControllerStatus> statusUpdates;
80  std::map<std::string, NJointControllerDescriptionWithStatus> controllersCreated;
81  std::set<std::string> controllersDeleted;
82  private slots:
83  void onPushButtonStopAll_clicked();
84  void onPushButtonRemoveAll_clicked();
85 
86  public:
87  static constexpr int idxName = 0;
88  static constexpr int idxClass = 1;
89  static constexpr int idxActive = 2;
90  static constexpr int idxRequested = 3;
91  static constexpr int idxError = 4;
92  static constexpr int idxInternal = 5;
93  static constexpr int idxCtrlDev = 6;
94  static constexpr int idxCtrlMode = 7;
95  static constexpr int idxActivate = 8;
96  static constexpr int idxDeactivate = 9;
97  static constexpr int idxDelete = 10;
98  };
99 
100  class NJointControllersWidgetEntry : public QObject
101  {
102  Q_OBJECT
103  public:
105 
107  QTreeWidget& treeWidget,
108  const NJointControllerDescription& desc);
109 
110  void update(const NJointControllerStatus& status);
111 
112  bool matchName(const QString& name);
113  bool matchClass(const QString& name);
114  bool isActiveState(const QString& state);
115  bool isRequestedState(const QString& state);
116  bool isErrorState(const QString& state);
117  bool matchDevice(const QString& dev);
118  bool matchMode(const QString& mode);
119  void deleteContent();
120 
121  public slots:
122  void setVisible(bool vis);
123  private slots:
124  void activateController();
125  void deactivateController();
126  void deleteController();
127 
128  void hideDeviceList();
129 
130  void setDeviceListVisible(bool vis);
131 
132  private:
133  const bool deletable;
134  QCheckBox* boxDev;
135  QCheckBox* boxMod;
136  QTreeWidgetItem* header;
137  NJointControllerInterfacePrx controller;
138  std::vector<QTreeWidgetItem*> devsToModes;
139  };
140 
143  {
144  Q_OBJECT
145  public:
146  NJointControllersWidgetRemoteFunction(QTreeWidget& treeWidget,
147  QTreeWidgetItem& header,
148  const std::string& functionName,
149  const NJointControllerInterfacePrx& ctrl,
151  private slots:
152  void execFunction();
153 
154  private:
155  QTreeWidgetItem* functionHeader;
156 
157  std::string functionName;
158  NJointControllerInterfacePrx ctrl;
159 
160  QCheckBox* execOnParamChange;
162 
163  std::map<std::string, VariantBasePtr> paramValues;
164 
165  public slots:
166  void valueChangedSlot(std::string name, VariantBasePtr value) override;
167  };
168 } // namespace armarx
armarx::NJointControllersWidgetRemoteFunction::valueChangedSlot
void valueChangedSlot(std::string name, VariantBasePtr value) override
Definition: NJointControllersWidget.cpp:641
RobotUnitWidgetBase.h
algorithm.h
armarx::NJointControllersWidget::idxRequested
static constexpr int idxRequested
Definition: NJointControllersWidget.h:90
armarx::NJointControllersWidgetEntry::matchMode
bool matchMode(const QString &mode)
Definition: NJointControllersWidget.cpp:453
armarx::NJointControllersWidgetRemoteFunction
Definition: NJointControllersWidget.h:141
armarx::NJointControllersWidgetEntry::isRequestedState
bool isRequestedState(const QString &state)
Definition: NJointControllersWidget.cpp:427
armarx::NJointControllersWidgetRemoteFunction::NJointControllersWidgetRemoteFunction
NJointControllersWidgetRemoteFunction(QTreeWidget &treeWidget, QTreeWidgetItem &header, const std::string &functionName, const NJointControllerInterfacePrx &ctrl, const WidgetDescription::WidgetPtr &w)
Definition: NJointControllersWidget.cpp:535
armarx::NJointControllersWidgetEntry::matchName
bool matchName(const QString &name)
Definition: NJointControllersWidget.cpp:408
armarx::NJointControllersWidgetEntry::setVisible
void setVisible(bool vis)
Definition: NJointControllersWidget.cpp:477
armarx::NJointControllersWidget::idxName
static constexpr int idxName
Definition: NJointControllersWidget.h:87
armarx::NJointControllersWidget::~NJointControllersWidget
~NJointControllersWidget() override
Definition: NJointControllersWidget.cpp:100
VariantWidget.h
armarx::NJointControllersWidget::idxClass
static constexpr int idxClass
Definition: NJointControllersWidget.h:88
WidgetDescription.h
armarx::NJointControllersWidget::clearAll
void clearAll() override
Definition: NJointControllersWidget.cpp:218
armarx::NJointControllersWidget
Definition: NJointControllersWidget.h:55
armarx::WidgetDescription::ValueChangedListenerInterface
Definition: WidgetDescription.h:37
armarx::NJointControllersWidget::idxError
static constexpr int idxError
Definition: NJointControllersWidget.h:91
armarx::NJointControllersWidget::idxActive
static constexpr int idxActive
Definition: NJointControllersWidget.h:89
IceInternal::Handle
Definition: forward_declarations.h:8
armarx::NJointControllersWidget::NJointControllersWidget
NJointControllersWidget(QWidget *parent=0)
Definition: NJointControllersWidget.cpp:30
armarx::NJointControllersWidget::loadSettings
void loadSettings(QSettings *settings) override
Definition: NJointControllersWidget.cpp:200
armarx::NJointControllersWidget::idxCtrlMode
static constexpr int idxCtrlMode
Definition: NJointControllersWidget.h:94
armarx::status
status
Definition: FiniteStateMachine.h:244
armarx::NJointControllersWidgetEntry::isActiveState
bool isActiveState(const QString &state)
Definition: NJointControllersWidget.cpp:420
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:855
armarx::NJointControllersWidgetEntry::matchDevice
bool matchDevice(const QString &dev)
Definition: NJointControllersWidget.cpp:440
controller
Definition: AddOperation.h:39
armarx::NJointControllersWidget::nJointControllerDeleted
virtual void nJointControllerDeleted(std::string name)
Definition: NJointControllersWidget.cpp:189
armarx::NJointControllersWidget::addOneFromResetData
bool addOneFromResetData() override
Definition: NJointControllersWidget.cpp:283
armarx::WidgetDescription::DescribedWidgetBase
Definition: WidgetDescription.h:50
armarx::NJointControllersWidget::idxCtrlDev
static constexpr int idxCtrlDev
Definition: NJointControllersWidget.h:93
armarx::NJointControllersWidget::idxDelete
static constexpr int idxDelete
Definition: NJointControllersWidget.h:97
armarx::RobotUnitWidgetTemplateBase
Definition: RobotUnitWidgetBase.h:106
armarx::NJointControllersWidget::saveSettings
void saveSettings(QSettings *settings) override
Definition: NJointControllersWidget.cpp:209
armarx::NJointControllersWidgetEntry::matchClass
bool matchClass(const QString &name)
Definition: NJointControllersWidget.cpp:414
armarx::NJointControllersWidgetEntry::NJointControllersWidgetEntry
NJointControllersWidgetEntry(NJointControllersWidget &parent, QTreeWidget &treeWidget, const NJointControllerDescription &desc)
Definition: NJointControllersWidget.cpp:294
armarx::NJointControllersWidgetEntry::isErrorState
bool isErrorState(const QString &state)
Definition: NJointControllersWidget.cpp:434
armarx::NJointControllersWidget::nJointControllerStatusChanged
void nJointControllerStatusChanged(const NJointControllerStatusSeq &allStatus)
Definition: NJointControllersWidget.cpp:106
armarx::NJointControllersWidgetEntry::update
void update(const NJointControllerStatus &status)
Definition: NJointControllersWidget.cpp:393
armarx::NJointControllersWidget::getResetData
void getResetData() override
Definition: NJointControllersWidget.cpp:270
armarx::NJointControllersWidget::doContentUpdate
void doContentUpdate() override
Definition: NJointControllersWidget.cpp:227
armarx::NJointControllersWidgetEntry
Definition: NJointControllersWidget.h:100
armarx::NJointControllersWidget::nJointControllerCreated
virtual void nJointControllerCreated(std::string name)
Definition: NJointControllersWidget.cpp:166
armarx::NJointControllersWidget::idxActivate
static constexpr int idxActivate
Definition: NJointControllersWidget.h:95
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::NJointControllersWidget::idxInternal
static constexpr int idxInternal
Definition: NJointControllersWidget.h:92
armarx::NJointControllersWidget::idxDeactivate
static constexpr int idxDeactivate
Definition: NJointControllersWidget.h:96
armarx::NJointControllersWidgetEntry::deleteContent
void deleteContent()
Definition: NJointControllersWidget.cpp:467