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 
27 namespace 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 
105  {
106  return debugDrawer;
107  }
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
armarx::DebugDrawerConfigWidget::onAddDefaultLayerVisibility
void onAddDefaultLayerVisibility()
Definition: DebugDrawerConfigWidget.cpp:168
armarx::DebugDrawerConfigWidget::getDebugDrawer
DebugDrawerComponentPtr getDebugDrawer() const
Definition: DebugDrawerConfigWidget.cpp:104
armarx::DebugDrawerConfigWidget::onDefaultLayerVisibilityChanged
void onDefaultLayerVisibilityChanged(int checkState)
Definition: DebugDrawerConfigWidget.cpp:147
armarx::DebugDrawerConfigWidget::refresh
void refresh()
Definition: DebugDrawerConfigWidget.cpp:110
armarx::DebugDrawerConfigWidget::saveSettings
void saveSettings(QSettings *settings)
Definition: DebugDrawerConfigWidget.cpp:79
armarx::DebugDrawerConfigWidget::onDefaultLayerVisibilityPerLayerChanged
void onDefaultLayerVisibilityPerLayerChanged(QListWidgetItem *item)
Definition: DebugDrawerConfigWidget.cpp:157
armarx::DebugDrawerConfigWidget::loadSettings
void loadSettings(QSettings *settings)
Definition: DebugDrawerConfigWidget.cpp:62
armarx::DebugDrawerConfigWidget::setDebugDrawer
void setDebugDrawer(const DebugDrawerComponentPtr &debugDrawer)
Definition: DebugDrawerConfigWidget.cpp:92
armarx::DebugDrawerConfigWidget::onRemoveDefaultLayerVisibility
void onRemoveDefaultLayerVisibility()
Definition: DebugDrawerConfigWidget.cpp:190
visionx::imrecman::ok
@ ok
Definition: ImageRecordingManagerInterface.ice:45
DebugDrawerConfigWidget.h
IceInternal::Handle< DebugDrawerComponent >
armarx::DebugDrawerConfigWidget::ui
Ui::DebugDrawerConfigWidget ui
Definition: DebugDrawerConfigWidget.h:69
armarx::DebugDrawerConfigWidget::debugDrawer
DebugDrawerComponentPtr debugDrawer
Definition: DebugDrawerConfigWidget.h:68
armarx::DebugDrawerConfigWidget::DebugDrawerConfigWidget
DebugDrawerConfigWidget(const DebugDrawerComponentPtr &debugDrawer, QWidget *parent=nullptr)
Definition: DebugDrawerConfigWidget.cpp:30
armarx::DebugDrawerConfigWidget::onVisibilityChanged
void onVisibilityChanged(QListWidgetItem *item)
Definition: DebugDrawerConfigWidget.cpp:137
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27