DebugDrawerConfigWidget.cpp
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::ArmarXObjects::DebugDrawerConfigWidget
17 * @author Adrian Knobloch ( adrian dot knobloch at student dot kit dot edu )
18 * @date 2019
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22
24
25#include <QInputDialog>
26
27namespace armarx
28{
29
31 QWidget* parent) :
32 QWidget(parent), debugDrawer(debugDrawer)
33 {
34 ui.setupUi(this);
35 refresh();
36
37 connect(
38 ui.pushButtonRefresh, &QPushButton::released, this, &DebugDrawerConfigWidget::refresh);
39 connect(ui.listWidgetLayerVisibility,
40 &QListWidget::itemChanged,
41 this,
43 connect(ui.checkBoxDefaultLayerVisibility,
44 &QCheckBox::stateChanged,
45 this,
47 connect(ui.listWidgetDefaultLayerVisibility,
48 &QListWidget::itemChanged,
49 this,
51 connect(ui.pushButtonDefaultLayerVisibilityAdd,
52 &QPushButton::released,
53 this,
55 connect(ui.pushButtonDefaultLayerVisibilityRemove,
56 &QPushButton::released,
57 this,
59 }
60
61 void
63 {
64 ui.checkBoxDefaultLayerVisibility->setCheckState(
65 settings->value(QString::fromStdString("DefaultLayerVisibility")).toBool()
66 ? Qt::Checked
67 : Qt::Unchecked);
68 settings->beginGroup("layer");
69 for (const auto& key : settings->allKeys())
70 {
71 QListWidgetItem* item = new QListWidgetItem(key, ui.listWidgetDefaultLayerVisibility);
72 item->setCheckState(settings->value(key).toBool() ? Qt::Checked : Qt::Unchecked);
73 ui.listWidgetDefaultLayerVisibility->addItem(item);
74 }
75 settings->endGroup();
76 }
77
78 void
80 {
81 settings->setValue(QString::fromStdString("DefaultLayerVisibility"),
82 ui.checkBoxDefaultLayerVisibility->checkState() == Qt::Checked);
83 settings->beginGroup("layer");
84 for (const auto& layerInfo : debugDrawer->getAllDefaultLayerVisibilities())
85 {
86 settings->setValue(QString::fromStdString(layerInfo.first), layerInfo.second);
87 }
88 settings->endGroup();
89 }
90
91 void
93 {
94 this->debugDrawer = debugDrawer;
95 onDefaultLayerVisibilityChanged(ui.checkBoxDefaultLayerVisibility->checkState());
96 for (int i = 0; i < ui.listWidgetDefaultLayerVisibility->count(); ++i)
97 {
98 onDefaultLayerVisibilityPerLayerChanged(ui.listWidgetDefaultLayerVisibility->item(i));
99 }
100 refresh();
101 }
102
108
109 void
111 {
112 if (!debugDrawer)
113 {
114 return;
115 }
116 ui.listWidgetLayerVisibility->clear();
117 for (const auto& layerInfo : debugDrawer->layerInformation())
118 {
119 QListWidgetItem* item = new QListWidgetItem(QString::fromStdString(layerInfo.layerName),
120 ui.listWidgetLayerVisibility);
121 item->setCheckState(layerInfo.visible ? Qt::Checked : Qt::Unchecked);
122 ui.listWidgetLayerVisibility->addItem(item);
123 }
124 ui.checkBoxDefaultLayerVisibility->setCheckState(
125 debugDrawer->getDefaultLayerVisibility() ? Qt::Checked : Qt::Unchecked);
126 ui.listWidgetDefaultLayerVisibility->clear();
127 for (const auto& layerInfo : debugDrawer->getAllDefaultLayerVisibilities())
128 {
129 QListWidgetItem* item = new QListWidgetItem(QString::fromStdString(layerInfo.first),
130 ui.listWidgetDefaultLayerVisibility);
131 item->setCheckState(layerInfo.second ? Qt::Checked : Qt::Unchecked);
132 ui.listWidgetDefaultLayerVisibility->addItem(item);
133 }
134 }
135
136 void
138 {
139 if (!debugDrawer)
140 {
141 return;
142 }
143 debugDrawer->enableLayerVisu(item->text().toStdString(), item->checkState() == Qt::Checked);
144 }
145
146 void
148 {
149 if (!debugDrawer)
150 {
151 return;
152 }
153 debugDrawer->setDefaultLayerVisibility(checkState != Qt::Unchecked);
154 }
155
156 void
158 {
159 if (!debugDrawer)
160 {
161 return;
162 }
163 debugDrawer->setDefaultLayerVisibility(item->text().toStdString(),
164 item->checkState() == Qt::Checked);
165 }
166
167 void
169 {
170 bool ok;
171 QString text = QInputDialog::getText(
172 this,
173 "Layer name",
174 "Layer name:",
175 QLineEdit::Normal,
176 ui.listWidgetLayerVisibility->selectedItems().empty()
177 ? ""
178 : ui.listWidgetLayerVisibility->selectedItems().front()->text(),
179 &ok);
180 if (ok && !text.isEmpty())
181 {
182 QListWidgetItem* item = new QListWidgetItem(text, ui.listWidgetDefaultLayerVisibility);
183 item->setCheckState(debugDrawer->getDefaultLayerVisibility() ? Qt::Checked
184 : Qt::Unchecked);
185 ui.listWidgetDefaultLayerVisibility->addItem(item);
186 }
187 }
188
189 void
191 {
192 for (const auto& selected : ui.listWidgetDefaultLayerVisibility->selectedItems())
193 {
194 if (debugDrawer)
195 {
196 debugDrawer->removeDefaultLayerVisibility(selected->text().toStdString());
197 }
198 ui.listWidgetDefaultLayerVisibility->takeItem(
199 ui.listWidgetDefaultLayerVisibility->row(selected));
200 }
201 }
202
203} // namespace armarx
DebugDrawerConfigWidget(const DebugDrawerComponentPtr &debugDrawer, QWidget *parent=nullptr)
void onDefaultLayerVisibilityPerLayerChanged(QListWidgetItem *item)
void onVisibilityChanged(QListWidgetItem *item)
DebugDrawerComponentPtr getDebugDrawer() const
void setDebugDrawer(const DebugDrawerComponentPtr &debugDrawer)
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceInternal::Handle< DebugDrawerComponent > DebugDrawerComponentPtr