StringWidgets.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QComboBox>
4 #include <QLineEdit>
5 
6 #include "Basic.h"
7 
8 namespace armarx::RemoteGui
9 {
10  struct LineEditHandler : TypedWidget<LineEdit, QLineEdit, VALUE_VARIANT_STRING>
11  {
12  static QWidgetT*
14  CreateWidgetCallback const& createChild,
15  const QObject* stateChangeReceiver,
16  const char* stateChangeSlot)
17  {
19  QWidgetT* widget = new QWidgetT();
20  widget->setToolTip(QString::fromStdString(desc.toolTip));
21 
22  QObject::connect(
23  widget, SIGNAL(editingFinished()), stateChangeReceiver, stateChangeSlot);
24 
25  return widget;
26  }
27 
28  static void
29  updateGui(RemoteWidgetT const& desc, QWidgetT* widget, ValueT const& value)
30  {
31  widget->setText(toQString(value));
32  }
33 
34  static ValueT
35  handleGuiChange(RemoteWidgetT const& desc, QWidgetT* widget)
36  {
37  return toUtf8(widget->text());
38  }
39  };
40 
41  struct ComboBoxHandler : TypedWidget<ComboBox, QComboBox, VALUE_VARIANT_STRING>
42  {
43  static QWidgetT*
45  CreateWidgetCallback const& createChild,
46  const QObject* stateChangeReceiver,
47  const char* stateChangeSlot)
48  {
50  QWidgetT* widget = new QWidgetT();
51  widget->setToolTip(QString::fromStdString(desc.toolTip));
52 
53  for (std::string const& option : desc.options)
54  {
56  widget->addItem(toQString(option));
57  }
59  QObject::connect(
60  widget, SIGNAL(currentIndexChanged(int)), stateChangeReceiver, stateChangeSlot);
61 
62  return widget;
63  }
64 
65  static void
66  updateGui(RemoteWidgetT const& desc, QWidgetT* widget, ValueT const& value)
67  {
69  int index = widget->findText(toQString(value));
70  if (index >= 0)
71  {
72  widget->setCurrentIndex(index);
73  }
74  else
75  {
76  throw LocalException()
77  << "Invalid value set for ComboBox '" << desc.name << "': " << value;
78  }
79  }
80 
81  static ValueT
82  handleGuiChange(RemoteWidgetT const& desc, QWidgetT* widget)
83  {
84  return toUtf8(widget->currentText());
85  }
86  };
87 
88 } // namespace armarx::RemoteGui
index
uint8_t index
Definition: EtherCATFrame.h:59
armarx::RemoteGui
Definition: LightweightRemoteGuiComponentPlugin.h:30
armarx::RemoteGui::LineEditHandler::handleGuiChange
static ValueT handleGuiChange(RemoteWidgetT const &desc, QWidgetT *widget)
Definition: StringWidgets.h:35
armarx::RemoteGui::TypedWidget
Definition: TypedWidget.h:113
armarx::RemoteGui::ComboBoxHandler
Definition: StringWidgets.h:41
armarx::RemoteGui::LineEditHandler::updateGui
static void updateGui(RemoteWidgetT const &desc, QWidgetT *widget, ValueT const &value)
Definition: StringWidgets.h:29
armarx::RemoteGui::TypedWidget< LineEdit, QLineEdit, VALUE_VARIANT_STRING >::ValueT
typename Storage< ValueType >::Type ValueT
Definition: TypedWidget.h:118
armarx::RemoteGui::toUtf8
std::string toUtf8(QString const &qstring)
Definition: WidgetHandler.cpp:8
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:77
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:855
armarx::RemoteGui::LineEditHandler::createWidget
static QWidgetT * createWidget(RemoteWidgetT const &desc, CreateWidgetCallback const &createChild, const QObject *stateChangeReceiver, const char *stateChangeSlot)
Definition: StringWidgets.h:13
Basic.h
armarx::RemoteGui::Client::LineEdit
Definition: Widgets.h:40
armarx::RemoteGui::Client::ComboBox
Definition: Widgets.h:50
armarx::RemoteGui::TypedWidget< LineEdit, QLineEdit, VALUE_VARIANT_STRING >::QWidgetT
QLineEdit QWidgetT
Definition: TypedWidget.h:116
armarx::RemoteGui::ComboBoxHandler::handleGuiChange
static ValueT handleGuiChange(RemoteWidgetT const &desc, QWidgetT *widget)
Definition: StringWidgets.h:82
option
#define option(type, fn)
armarx::RemoteGui::ComboBoxHandler::updateGui
static void updateGui(RemoteWidgetT const &desc, QWidgetT *widget, ValueT const &value)
Definition: StringWidgets.h:66
armarx::RemoteGui::toQString
QString toQString(std::string const &string)
Definition: WidgetHandler.cpp:14
armarx::RemoteGui::CreateWidgetCallback
std::function< QWidgetPtr(WidgetPtr const &)> CreateWidgetCallback
Definition: WidgetHandler.h:20
armarx::RemoteGui::ComboBoxHandler::createWidget
static QWidgetT * createWidget(RemoteWidgetT const &desc, CreateWidgetCallback const &createChild, const QObject *stateChangeReceiver, const char *stateChangeSlot)
Definition: StringWidgets.h:44
armarx::RemoteGui::LineEditHandler
Definition: StringWidgets.h:10