SkillMemoryGui.cpp
Go to the documentation of this file.
1#include "SkillMemoryGui.h"
3
4#include "gui_utils.h"
5
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
void setTag(const LogTag &tag)
Definition Logging.cpp:54
Brief description of class memory.
Definition memory.h:39
void updateSkillDetails(skills::SkillID &skillId)
Notify subwidgets of an updated skill selection.
void updateGui(SkillManagerWrapper::Snapshot update)
void updateGui(SkillManagerWrapper::Snapshot update)
void connectGui(std::string observerName)
void updateSkillDetails(skills::SkillID &skillId)
Notify the skill description widget of an updated selection.
void updateGui(SkillManagerWrapper::Snapshot update)
void stopAllExecutions()
Stops all available (and running) executions.
void connectionUpdate(std::string const &message, std::string const &error)
void updateFromMemory()
Requests this wrapper to overwrite its own state from memory.
void connectGui(std::string observerName)
Notify widgets of new connection.
SkillMemoryGUI(QTreeWidget *_skillExecutionTreeWidget, QLayout *_skillExecutionTreeWidgetParentLayout, QGroupBox *_skillGroupBox, QSplitter *_skillGroupBoxParentLayout, QGroupBox *_skillDetailGroupBox, QSplitter *_skillDetailGroupBoxParentLayout, QHBoxLayout *_updateWidgetLayout, QLayout *stopAllLayout, QWidget *connectionStatusLabel, std::shared_ptr< SkillManagerWrapper > _memory)
void updateGui(SkillManagerWrapper::Snapshot update)
static const constexpr char * STOP_ALL_BUTTON_TEXT
void disconnectGui()
Notify affected widgets to clear all saved state.
void handleMessage(std::string const &message, std::string const &error)
Display a message to indicate an update.
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
void replaceWidget(WidgetT *&old, QWidget *neu, QLayout *parentLayout)
Definition gui_utils.h:34
void clearSplitter(QSplitter *splitter)