X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fprop%2Fbinding%2Fdeviceoptions.h;h=0ca55e0e5b040afd11999ca4d7dbb7d90f449090;hb=8dbbc7f0b9ea59d0f0d62225772f8a56eee125f5;hp=b622d9379665a014283bb05eea7799907bd97910;hpb=d71bca8b719331690455e3b3aa8aeeba350c9d3a;p=pulseview.git diff --git a/pv/prop/binding/deviceoptions.h b/pv/prop/binding/deviceoptions.h index b622d93..0ca55e0 100644 --- a/pv/prop/binding/deviceoptions.h +++ b/pv/prop/binding/deviceoptions.h @@ -21,38 +21,50 @@ #ifndef PULSEVIEW_PV_PROP_BINDING_DEVICEOPTIONS_H #define PULSEVIEW_PV_PROP_BINDING_DEVICEOPTIONS_H -#include +#include -#include +#include +#include #include "binding.h" +#include + +namespace sigrok { + class Configurable; +} + namespace pv { + namespace prop { namespace binding { -class DeviceOptions : public Binding +class DeviceOptions : public QObject, public Binding { -public: - DeviceOptions(struct sr_dev_inst *sdi); - -private: - void expose_enum(const struct sr_config_info *info, - const std::vector > &values, - int opt); + Q_OBJECT - void bind_stropt(const struct sr_config_info *info, int key); +public: + DeviceOptions(std::shared_ptr configurable); - void bind_buffer_size(const struct sr_config_info *info); - void bind_time_base(const struct sr_config_info *info); - void bind_vdiv(const struct sr_config_info *info); +Q_SIGNALS: + void config_changed(); private: - static const void* enum_getter( - const struct sr_dev_inst *sdi, int key); + void bind_bool(const QString &name, + Property::Getter getter, Property::Setter setter); + void bind_enum(const QString &name, Glib::VariantContainerBase gvar_list, + Property::Getter getter, Property::Setter setter, + std::function printer = print_gvariant); + void bind_int(const QString &name, QString suffix, + boost::optional< std::pair > range, + Property::Getter getter, Property::Setter setter); + + static QString print_timebase(Glib::VariantBase gvar); + static QString print_vdiv(Glib::VariantBase gvar); + static QString print_voltage_threshold(Glib::VariantBase gvar); protected: - struct sr_dev_inst *const _sdi; + std::shared_ptr configurable_; }; } // binding