X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fprop%2Fbool.cpp;h=699656f75d3ab60adbd81006d0c4c692886161db;hb=e8d009288de28cb194bc7964f96677c2baf900c9;hp=ad9a13e7c0e05bc710fc7d385b6ad7e6b22a04be;hpb=f459c5400e067c4389c472b84194d760e7bfd585;p=pulseview.git diff --git a/pv/prop/bool.cpp b/pv/prop/bool.cpp index ad9a13e..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 { @@ -40,20 +37,27 @@ Bool::~Bool() { } -QWidget* Bool::get_widget(QWidget *parent) +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; + + Glib::VariantBase variant = _getter(); + if (!variant.gobj()) + return NULL; + + bool value = Glib::VariantBase::cast_dynamic>( + variant).get(); - GVariant *const value = _getter ? _getter() : NULL; + _check_box = new QCheckBox(name(), parent); + _check_box->setCheckState(value ? Qt::Checked : Qt::Unchecked); - if (value) { - _check_box->setCheckState(g_variant_get_boolean(value) ? - Qt::Checked : Qt::Unchecked); - g_variant_unref(value); - } + if (auto_commit) + connect(_check_box, SIGNAL(stateChanged(int)), + this, SLOT(on_state_changed(int))); return _check_box; } @@ -70,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