X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fprop%2Fbool.cpp;h=699656f75d3ab60adbd81006d0c4c692886161db;hb=e8d009288de28cb194bc7964f96677c2baf900c9;hp=95cbb96e0caceea6c82e37367f933b1481ba3762;hpb=de1d99bbe58f825e30048baa48a9439c01686f10;p=pulseview.git diff --git a/pv/prop/bool.cpp b/pv/prop/bool.cpp index 95cbb96..699656f 100644 --- a/pv/prop/bool.cpp +++ b/pv/prop/bool.cpp @@ -24,9 +24,6 @@ #include "bool.h" -using namespace std; -using namespace boost; - namespace pv { namespace prop { @@ -36,20 +33,31 @@ Bool::Bool(QString name, Getter getter, Setter setter) : { } -QWidget* Bool::get_widget(QWidget *parent) +Bool::~Bool() +{ +} + +QWidget* Bool::get_widget(QWidget *parent, bool auto_commit) { if (_check_box) return _check_box; - _check_box = new QCheckBox(name(), parent); + if (!_getter) + return NULL; - GVariant *const value = _getter ? _getter() : NULL; + Glib::VariantBase variant = _getter(); + if (!variant.gobj()) + return NULL; - if (value) { - _check_box->setCheckState(g_variant_get_boolean(value) ? - Qt::Checked : Qt::Unchecked); - g_variant_unref(value); - } + bool value = Glib::VariantBase::cast_dynamic>( + variant).get(); + + _check_box = new QCheckBox(name(), parent); + _check_box->setCheckState(value ? Qt::Checked : Qt::Unchecked); + + if (auto_commit) + connect(_check_box, SIGNAL(stateChanged(int)), + this, SLOT(on_state_changed(int))); return _check_box; } @@ -66,9 +74,14 @@ void Bool::commit() if (!_check_box) return; - _setter(g_variant_new_boolean( + _setter(Glib::Variant::create( _check_box->checkState() == Qt::Checked)); } +void Bool::on_state_changed(int) +{ + commit(); +} + } // prop } // pv