StringWidgets.h
Go to the documentation of this file.
1#pragma once
2
3#include "Basic.h"
4
6{
8 public ValueMixin<LineEdit, std::string, LineEditBuilder>,
9 public ToolTipMixin<LineEditBuilder>
10 {
11 using ValueMixin::ValueMixin;
12 };
13
15 public ValueMixin<ComboBox, std::string, ComboBoxBuilder>,
16 public ToolTipMixin<ComboBoxBuilder>
17 {
18 using ValueMixin::ValueMixin;
19
21 options(std::vector<std::string> const& options)
22 {
23 widget().options = options;
24 return *this;
25 }
26
28 addOptions(std::vector<std::string> const& options)
29 {
30 widget().options.insert(widget().options.end(), options.begin(), options.end());
31 return *this;
32 }
33
34 operator WidgetPtr() const override
35 {
36 ComboBox& w = *dynamic_cast<ComboBox*>(widget_.get());
37 if (!w.options.empty())
38 {
39 const auto it = std::find(w.options.begin(),
40 w.options.end(),
41 getSingleValue<std::string>(w.defaultValue));
42 if (it == w.options.end())
43 {
44 w.defaultValue = makeValue(w.options.front());
45 }
46 }
47 return widget_;
48 }
49 };
50} // namespace armarx::RemoteGui::detail
51
52namespace armarx::RemoteGui
53{
54 inline detail::LineEditBuilder
55 makeLineEdit(std::string const& name)
56 {
57 return detail::LineEditBuilder(name);
58 }
59
60 inline detail::ComboBoxBuilder
61 makeComboBox(std::string const& name)
62 {
63 return detail::ComboBoxBuilder(name);
64 }
65} // namespace armarx::RemoteGui
T getSingleValue(ValueVariant const &value, const std::string &name="")
detail::ComboBoxBuilder makeComboBox(std::string const &name)
ValueVariant makeValue(bool value)
Definition Storage.cpp:144
detail::LineEditBuilder makeLineEdit(std::string const &name)
ComboBoxBuilder & addOptions(std::vector< std::string > const &options)
ComboBoxBuilder & options(std::vector< std::string > const &options)