RobotUnitWidgetBase.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 <boost/thread.hpp>
29 
30 #include <QCheckBox>
31 #include <QComboBox>
32 #include <QFormLayout>
33 #include <QHBoxLayout>
34 #include <QLabel>
35 #include <QLineEdit>
36 #include <QPushButton>
37 #include <QSettings>
38 #include <QStackedWidget>
39 #include <QTreeWidget>
40 #include <QWidget>
41 
42 #include <RobotAPI/interface/units/RobotUnit/RobotUnitInterface.h>
43 
44 namespace armarx
45 {
46 
47  class RobotUnitWidgetBase : public QWidget
48  {
49  Q_OBJECT
50 
51  public:
52  explicit RobotUnitWidgetBase(QString name, QWidget* parent);
55 
56  virtual void
57  loadSettings(QSettings*)
58  {
59  }
60 
61  virtual void
62  saveSettings(QSettings*)
63  {
64  }
65 
66  void setVisible(bool visible) override;
67  protected slots:
68  void updateContent();
69  private slots:
70  void doReset();
71 
72  protected:
73  virtual QTreeWidget& getTreeWidget() = 0;
74  virtual QStackedWidget& getStackedWidget() = 0;
75  virtual QLabel& getResettigLabel() = 0;
76 
77  virtual void
79  {
80  }
81 
82  virtual void clearAll() = 0;
83  virtual void doContentUpdate() = 0;
84 
85  virtual void getResetData() = 0;
86  /**
87  * @return true if all objects were added
88  */
89  virtual bool addOneFromResetData() = 0;
90 
91  void timerEvent(QTimerEvent*) override;
92 
94  mutable std::recursive_timed_mutex mutex;
95  std::atomic_bool gotResetData{false};
96  int resetTimerId{0};
97  int resetCount{0};
98  std::atomic_bool isResetting{false};
99  std::atomic_bool doMetaCall{false};
100 
101  private:
102  boost::thread _resetThread;
103  };
104 
105  template <class UI>
107  {
108  public:
109  RobotUnitWidgetTemplateBase(QString name, QWidget* parent) :
110  RobotUnitWidgetBase(name, parent), ui{new UI}
111  {
112  ui->setupUi(this);
113  }
114 
115  protected:
116  QTreeWidget&
117  getTreeWidget() final override
118  {
119  return *(ui->treeWidget);
120  }
121 
122  QStackedWidget&
123  getStackedWidget() final override
124  {
125  return *(ui->stackedWidget);
126  }
127 
128  QLabel&
129  getResettigLabel() final override
130  {
131  return *(ui->labelResetting);
132  }
133 
134  UI* ui;
135  };
136 } // namespace armarx
armarx::RobotUnitWidgetBase::doContentUpdate
virtual void doContentUpdate()=0
armarx::RobotUnitWidgetBase::addFilter
virtual void addFilter()
Definition: RobotUnitWidgetBase.h:78
armarx::RobotUnitWidgetBase::addOneFromResetData
virtual bool addOneFromResetData()=0
armarx::RobotUnitWidgetBase::~RobotUnitWidgetBase
~RobotUnitWidgetBase()
Definition: RobotUnitWidgetBase.cpp:36
armarx::RobotUnitWidgetTemplateBase::ui
UI * ui
Definition: RobotUnitWidgetBase.h:134
armarx::RobotUnitWidgetTemplateBase::RobotUnitWidgetTemplateBase
RobotUnitWidgetTemplateBase(QString name, QWidget *parent)
Definition: RobotUnitWidgetBase.h:109
armarx::RobotUnitWidgetBase::doMetaCall
std::atomic_bool doMetaCall
Definition: RobotUnitWidgetBase.h:99
armarx::RobotUnitWidgetBase::resetTimerId
int resetTimerId
Definition: RobotUnitWidgetBase.h:96
armarx::RobotUnitWidgetBase::robotUnit
RobotUnitInterfacePrx robotUnit
Definition: RobotUnitWidgetBase.h:93
armarx::RobotUnitWidgetBase::saveSettings
virtual void saveSettings(QSettings *)
Definition: RobotUnitWidgetBase.h:62
armarx::RobotUnitWidgetBase::updateContent
void updateContent()
Definition: RobotUnitWidgetBase.cpp:46
armarx::RobotUnitWidgetTemplateBase::getResettigLabel
QLabel & getResettigLabel() final override
Definition: RobotUnitWidgetBase.h:129
armarx::RobotUnitWidgetBase::gotResetData
std::atomic_bool gotResetData
Definition: RobotUnitWidgetBase.h:95
armarx::RobotUnitWidgetBase::mutex
std::recursive_timed_mutex mutex
Definition: RobotUnitWidgetBase.h:94
armarx::RobotUnitWidgetBase::getStackedWidget
virtual QStackedWidget & getStackedWidget()=0
armarx::RobotUnitWidgetBase::timerEvent
void timerEvent(QTimerEvent *) override
Definition: RobotUnitWidgetBase.cpp:133
armarx::RobotUnitWidgetBase::RobotUnitWidgetBase
RobotUnitWidgetBase(QString name, QWidget *parent)
Definition: RobotUnitWidgetBase.cpp:31
armarx::RobotUnitWidgetBase::getResettigLabel
virtual QLabel & getResettigLabel()=0
armarx::RobotUnitWidgetBase::loadSettings
virtual void loadSettings(QSettings *)
Definition: RobotUnitWidgetBase.h:57
armarx::RobotUnitWidgetTemplateBase
Definition: RobotUnitWidgetBase.h:106
armarx::RobotUnitWidgetBase::setVisible
void setVisible(bool visible) override
Definition: RobotUnitWidgetBase.cpp:74
armarx::RobotUnitWidgetBase::getTreeWidget
virtual QTreeWidget & getTreeWidget()=0
IceInternal::ProxyHandle<::IceProxy::armarx::RobotUnitInterface >
armarx::RobotUnitWidgetBase
Definition: RobotUnitWidgetBase.h:47
armarx::RobotUnitWidgetBase::isResetting
std::atomic_bool isResetting
Definition: RobotUnitWidgetBase.h:98
armarx::RobotUnitWidgetBase::clearAll
virtual void clearAll()=0
armarx::RobotUnitWidgetBase::reset
void reset(RobotUnitInterfacePrx ru)
Definition: RobotUnitWidgetBase.cpp:64
armarx::RobotUnitWidgetTemplateBase::getTreeWidget
QTreeWidget & getTreeWidget() final override
Definition: RobotUnitWidgetBase.h:117
armarx::RobotUnitWidgetBase::resetCount
int resetCount
Definition: RobotUnitWidgetBase.h:97
armarx::RobotUnitWidgetBase::getResetData
virtual void getResetData()=0
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::RobotUnitWidgetTemplateBase::getStackedWidget
QStackedWidget & getStackedWidget() final override
Definition: RobotUnitWidgetBase.h:123