SkillMemoryGui.cpp
Go to the documentation of this file.
1 #include "SkillMemoryGui.h"
3 
4 #include "gui_utils.h"
5 
6 namespace armarx::skills::gui
7 {
8  SkillMemoryGUI::SkillMemoryGUI(QTreeWidget* _skillExecutionTreeWidget,
9  QLayout* _skillExecutionTreeWidgetParentLayout,
10  QGroupBox* _skillGroupBox,
11  QSplitter* _skillGroupBoxParentLayout,
12  QGroupBox* _skillDetailGroupBox,
13  QSplitter* _skillDetailGroupBoxParentLayout,
14  QHBoxLayout* _updateWidgetLayout,
15 
16  QLayout* stopAllLayout,
17 
18  QWidget* _connectionStatusLabel,
19 
20  std::shared_ptr<SkillManagerWrapper> _memory)
21  {
22  Logging::setTag("SkillMemoryGui");
23 
24  // parameter check
25  ARMARX_CHECK(_skillExecutionTreeWidgetParentLayout);
26  ARMARX_CHECK(_skillGroupBoxParentLayout);
27  ARMARX_CHECK(_skillDetailGroupBoxParentLayout);
28  ARMARX_CHECK(_memory);
29 
30  ARMARX_CHECK(_skillExecutionTreeWidget);
31  ARMARX_CHECK(_skillGroupBox);
32  ARMARX_CHECK(_skillDetailGroupBox);
33  ARMARX_CHECK(_updateWidgetLayout);
34  ARMARX_CHECK(_connectionStatusLabel);
35  ARMARX_CHECK(_memory);
36 
37  // setup memory
38  this->memory = _memory;
39 
40  // Update widget
41  this->updateWidgetLayout = _updateWidgetLayout;
42  this->updateWidget = new PeriodicUpdateWidget();
43  this->updateWidgetLayout->insertWidget(0, updateWidget);
44 
45 
46  // replace skillExecutionTreeWidget
47  this->skillExecutionTreeWidget = new SkillExecutionTreeWidget(memory);
48  armarx::gui::replaceWidget(_skillExecutionTreeWidget,
49  this->skillExecutionTreeWidget,
50  _skillExecutionTreeWidgetParentLayout);
51 
52  // replace skillGroupBox
53  this->skillGroupBox = new SkillGroupBox(memory);
54 
55  // replace skillDetailGroupBox
56  this->skillDetailGroupBox = new SkillDetailGroupBox(memory);
57 
58  armarx::gui::clearSplitter(_skillGroupBoxParentLayout);
59  _skillGroupBoxParentLayout->insertWidget(0, this->skillDetailGroupBox);
60  _skillGroupBoxParentLayout->insertWidget(0, this->skillGroupBox);
61 
62  // setup stop all button
63  stopAllButton = new QPushButton(QString::fromStdString(STOP_ALL_BUTTON_TEXT));
64  stopAllLayout->addWidget(stopAllButton);
65 
66  this->connectionStatusLabel = new StatusLabel();
67  armarx::gui::replaceWidget(_connectionStatusLabel,
68  this->connectionStatusLabel,
69  _connectionStatusLabel->parentWidget()->layout());
70 
71  setupUi();
72  }
73 
74  void
75  SkillMemoryGUI::setupUi()
76  {
77  stopAllButton->setStyleSheet("background-color: red");
78  connectSignals();
79  }
80 
81  void
82  SkillMemoryGUI::connectSignals()
83  {
84  connect(skillGroupBox,
86  skillDetailGroupBox,
88 
89  // disconnect gui
90  connect(this, &SkillMemoryGUI::disconnectGui, skillGroupBox, &SkillGroupBox::disconnectGui);
91  connect(this,
93  skillDetailGroupBox,
95  connect(this,
97  skillExecutionTreeWidget,
99  connect(
101 
102  // connect gui
103  connect(this,
105  updateWidget,
107  connect(this, &SkillMemoryGUI::connectGui, skillGroupBox, &SkillGroupBox::connectGui);
108 
109  // timer
110  connect(this->updateWidget,
112  this->memory.get(),
114 
115  // updates
116  connect(this->memory.get(),
118  this,
120 
121  connect(this, &SkillMemoryGUI::updateGui, this->skillGroupBox, &SkillGroupBox::updateGui);
122 
123  connect(this,
125  this->skillExecutionTreeWidget,
127 
128  connect(this, &SkillMemoryGUI::updateGui, this->skillDetailGroupBox, &SkillDetailGroupBox::updateGui);
129 
130 
131  // stop all
132  connect(stopAllButton,
133  &QPushButton::clicked,
134  memory.get(),
136 
137  // status label
138  connect(memory.get(),
140  connectionStatusLabel,
142 
143  connect(memory.get(),
145  updateWidget,
147  }
148 } // namespace armarx::skills::gui
armarx::skills::gui::SkillGroupBox::connectGui
void connectGui(std::string observerName)
Definition: SkillGroupBox.cpp:23
armarx::skills::gui::SkillMemoryGUI::SkillMemoryGUI
SkillMemoryGUI(QTreeWidget *_skillExecutionTreeWidget, QLayout *_skillExecutionTreeWidgetParentLayout, QGroupBox *_skillGroupBox, QSplitter *_skillGroupBoxParentLayout, QGroupBox *_skillDetailGroupBox, QSplitter *_skillDetailGroupBoxParentLayout, QHBoxLayout *_updateWidgetLayout, QLayout *stopAllLayout, QWidget *connectionStatusLabel, std::shared_ptr< SkillManagerWrapper > _memory)
Definition: SkillMemoryGui.cpp:8
armarx::skills::gui::SkillManagerWrapper::updateAvailable
void updateAvailable(Snapshot update)
armarx::skills::gui::StatusLabel::handleMessage
void handleMessage(std::string const &message, std::string const &error)
Display a message to indicate an update.
Definition: StatusLabel.cpp:16
armarx::skills::gui::SkillGroupBox::updateSkillDetails
void updateSkillDetails(skills::SkillID &skillId)
Notify the skill description widget of an updated selection.
armarx::skills::gui::SkillManagerWrapper::updateFromMemory
void updateFromMemory()
Requests this wrapper to overwrite its own state from memory.
Definition: SkillManagerWrapper.cpp:235
armarx::skills::gui::SkillGroupBox::disconnectGui
void disconnectGui()
armarx::skills::gui::SkillMemoryGUI::STOP_ALL_BUTTON_TEXT
static const constexpr char * STOP_ALL_BUTTON_TEXT
Definition: SkillMemoryGui.h:28
armarx::skills::gui::SkillMemoryGUI::disconnectGui
void disconnectGui()
Notify affected widgets to clear all saved state.
armarx::skills::gui::SkillManagerWrapper::connectionUpdate
void connectionUpdate(std::string const &message, std::string const &error)
armarx::skills::gui::PeriodicUpdateWidget::stopTimer
void stopTimer()
Definition: PeriodicUpdateWidget.cpp:96
armarx::skills::gui::SkillMemoryGUI::connectGui
void connectGui(std::string observerName)
Notify widgets of new connection.
armarx::skills::gui::SkillDetailGroupBox
Definition: SkillDetailsGroupBox.h:20
armarx::gui::replaceWidget
void replaceWidget(WidgetT *&old, QWidget *neu, QLayout *parentLayout)
Definition: gui_utils.h:34
armarx::memory
Brief description of class memory.
Definition: memory.h:38
ARMARX_CHECK
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
Definition: ExpressionException.h:82
armarx::skills::gui::PeriodicUpdateWidget::disableAutoUpdate
void disableAutoUpdate()
Definition: PeriodicUpdateWidget.cpp:103
armarx::skills::gui::SkillDetailGroupBox::disconnectGui
void disconnectGui()
armarx::skills::gui::PeriodicUpdateWidget
Definition: PeriodicUpdateWidget.h:14
armarx::skills::gui::SkillDetailGroupBox::updateGui
void updateGui(SkillManagerWrapper::Snapshot update)
armarx::skills::gui::PeriodicUpdateWidget::update
void update()
armarx::skills::gui::SkillExecutionTreeWidget::disconnectGui
void disconnectGui()
Definition: SkillExecutionTreeWidget.cpp:86
armarx::skills::gui::SkillGroupBox
Definition: SkillGroupBox.h:13
SkillDetailsGroupBox.h
armarx::skills::gui
Definition: PeriodicUpdateWidget.cpp:11
armarx::skills::gui::StatusLabel
Definition: StatusLabel.h:8
armarx::skills::gui::SkillMemoryGUI::updateGui
void updateGui(SkillManagerWrapper::Snapshot update)
armarx::skills::gui::SkillDetailGroupBox::updateSkillDetails
void updateSkillDetails(skills::SkillID &skillId)
Notify subwidgets of an updated skill selection.
Definition: SkillDetailsGroupBox.cpp:9
armarx::skills::gui::SkillExecutionTreeWidget::updateGui
void updateGui(SkillManagerWrapper::Snapshot update)
Definition: SkillExecutionTreeWidget.cpp:145
SkillMemoryGui.h
armarx::gui::clearSplitter
void clearSplitter(QSplitter *splitter)
Definition: gui_utils.cpp:103
armarx::Logging::setTag
void setTag(const LogTag &tag)
Definition: Logging.cpp:54
armarx::skills::gui::SkillManagerWrapper::disableAutoUpdate
void disableAutoUpdate()
armarx::skills::gui::SkillManagerWrapper::stopAllExecutions
void stopAllExecutions()
Stops all available (and running) executions.
Definition: SkillManagerWrapper.cpp:204
armarx::skills::gui::SkillExecutionTreeWidget
Definition: SkillExecutionTreeWidget.h:14
gui_utils.h
armarx::skills::gui::SkillGroupBox::updateGui
void updateGui(SkillManagerWrapper::Snapshot update)
Definition: SkillGroupBox.cpp:29
armarx::skills::gui::PeriodicUpdateWidget::startTimerIfEnabled
void startTimerIfEnabled()
Definition: PeriodicUpdateWidget.cpp:78