25 #include <boost/none_t.hpp>
27 #include <libsigrokcxx/libsigrokcxx.hpp>
42 using std::shared_ptr;
46 using Glib::VariantBase;
47 using Glib::VariantType;
62 const map<
string, shared_ptr<Option>> &options)
64 for (pair<
string, shared_ptr<Option>> o :
options) {
65 const shared_ptr<Option> &opt = o.second;
68 const QString name = QString::fromStdString(opt->name());
69 const VariantBase def_val = opt->default_value();
70 const vector<VariantBase> values = opt->values();
74 const Property::Getter
get = [&, opt]() {
76 const Property::Setter set = [&, opt](VariantBase value) {
79 shared_ptr<Property> prop;
81 if (!opt->values().empty())
83 else if (def_val.is_of_type(VariantType(
"b")))
84 prop = shared_ptr<Property>(
new Bool(name,
get, set));
85 else if (def_val.is_of_type(VariantType(
"d")))
86 prop = shared_ptr<Property>(
new Double(name, 2,
"",
87 none, none,
get, set));
88 else if (def_val.is_of_type(VariantType(
"i")) ||
89 def_val.is_of_type(VariantType(
"t")) ||
90 def_val.is_of_type(VariantType(
"u")))
91 prop = shared_ptr<Property>(
92 new Int(name,
"", none,
get, set));
93 else if (def_val.is_of_type(VariantType(
"s")))
94 prop = shared_ptr<Property>(
95 new String(name,
get, set));
109 const QString &name,
const vector<VariantBase> &values,
110 Property::Getter getter, Property::Setter setter)
112 vector< pair<VariantBase, QString> > enum_vals;
113 for (VariantBase var : values)
115 return shared_ptr<Property>(
new Enum(name, enum_vals, getter, setter));
std::vector< std::shared_ptr< prop::Property > > properties_
static QString print_gvariant(Glib::VariantBase gvar)