IntegerWidgets.h
Go to the documentation of this file.
1#pragma once
2
3#include <QPushButton>
4#include <QSlider>
5#include <QSpinBox>
6
7#include "Basic.h"
8
9namespace armarx::RemoteGui
10{
11 struct IntSpinBoxHandler : TypedWidget<IntSpinBox, QSpinBox, VALUE_VARIANT_INT>
12 {
13 static QWidgetT*
15 CreateWidgetCallback const& createChild,
16 const QObject* stateChangeReceiver,
17 const char* stateChangeSlot)
18 {
20 QWidgetT* widget = new QWidgetT();
21
22 widget->setToolTip(QString::fromStdString(desc.toolTip));
23 widget->setMinimum(desc.min);
24 widget->setMaximum(desc.max);
25
26 QObject::connect(
27 widget, SIGNAL(valueChanged(int)), stateChangeReceiver, stateChangeSlot);
28
29 return widget;
30 }
31
32 static void
33 updateGui(RemoteWidgetT const& desc, QWidgetT* widget, ValueT const& value)
34 {
35 widget->setValue(value);
36 }
37
38 static ValueT
40 {
41 return widget->value();
42 }
43 };
44
45 struct IntSliderHandler : TypedWidget<IntSlider, QSlider, VALUE_VARIANT_INT>
46 {
47 static QWidgetT*
49 CreateWidgetCallback const& createChild,
50 const QObject* stateChangeReceiver,
51 const char* stateChangeSlot)
52 {
54 QWidgetT* widget = new QWidgetT();
55
56 widget->setToolTip(QString::fromStdString(desc.toolTip));
57 widget->setOrientation(Qt::Horizontal);
58
59 widget->setMinimum(desc.min);
60 widget->setMaximum(desc.max);
61
62 QObject::connect(
63 widget, SIGNAL(valueChanged(int)), stateChangeReceiver, stateChangeSlot);
64
65 return widget;
66 }
67
68 static void
69 updateGui(RemoteWidgetT const& desc, QWidgetT* widget, ValueT const& value)
70 {
71 widget->setValue(value);
72 }
73
74 static ValueT
76 {
77 return widget->value();
78 }
79 };
80
81 struct ButtonHandler : TypedWidget<Button, QPushButton, VALUE_VARIANT_INT>
82 {
83 static QWidgetT*
85 CreateWidgetCallback const& createChild,
86 const QObject* stateChangeReceiver,
87 const char* stateChangeSlot)
88 {
90 QWidgetT* widget = new QWidgetT();
91 widget->setToolTip(QString::fromStdString(desc.toolTip));
92 widget->setText(toQString(desc.label));
93
94 QObject::connect(widget, SIGNAL(clicked()), stateChangeReceiver, stateChangeSlot);
95
96 return widget;
97 }
98
99 static void
100 updateGui(RemoteWidgetT const& desc, QWidgetT* widget, ValueT const& value)
101 {
102 widget->setProperty("ClickCount", QVariant(value));
103 }
104
105 static ValueT
107 {
108 int newValue = widget->property("ClickCount").toInt() + 1;
109 widget->setProperty("ClickCount", QVariant(newValue));
110 return newValue;
111 }
112 };
113} // namespace armarx::RemoteGui
std::function< QWidgetPtr(WidgetPtr const &)> CreateWidgetCallback
QString toQString(std::string const &string)
static QWidgetT * createWidget(RemoteWidgetT const &desc, CreateWidgetCallback const &createChild, const QObject *stateChangeReceiver, const char *stateChangeSlot)
static void updateGui(RemoteWidgetT const &desc, QWidgetT *widget, ValueT const &value)
static ValueT handleGuiChange(RemoteWidgetT const &desc, QWidgetT *widget)
static QWidgetT * createWidget(RemoteWidgetT const &desc, CreateWidgetCallback const &createChild, const QObject *stateChangeReceiver, const char *stateChangeSlot)
static void updateGui(RemoteWidgetT const &desc, QWidgetT *widget, ValueT const &value)
static ValueT handleGuiChange(RemoteWidgetT const &desc, QWidgetT *widget)
static QWidgetT * createWidget(RemoteWidgetT const &desc, CreateWidgetCallback const &createChild, const QObject *stateChangeReceiver, const char *stateChangeSlot)
static void updateGui(RemoteWidgetT const &desc, QWidgetT *widget, ValueT const &value)
static ValueT handleGuiChange(RemoteWidgetT const &desc, QWidgetT *widget)
#define ARMARX_TRACE
Definition trace.h:77