]> sigrok.org Git - pulseview.git/blobdiff - pv/dialogs/deviceoptions.cpp
Moved get_property_form out of pv::prop::binding::Binding
[pulseview.git] / pv / dialogs / deviceoptions.cpp
index e6b2f847d12969f15d78ffa01cbd89e0a8ef337b..39e41b589acfea3b110623cbf7cc310c7ef7ef5c 100644 (file)
 
 #include "deviceoptions.h"
 
 
 #include "deviceoptions.h"
 
+#include <boost/foreach.hpp>
+
+#include <QFormLayout>
 #include <QListWidget>
 
 #include <QListWidget>
 
+#include <pv/prop/property.h>
+
+using namespace boost;
+using namespace std;
+
 namespace pv {
 namespace dialogs {
 
 namespace pv {
 namespace dialogs {
 
@@ -66,7 +74,7 @@ DeviceOptions::DeviceOptions(QWidget *parent, struct sr_dev_inst *sdi) :
 
 
        _props_box.setLayout(&_props_box_layout);
 
 
        _props_box.setLayout(&_props_box_layout);
-       _props_box_layout.addWidget(_device_options_binding.get_form(this));
+       _props_box_layout.addWidget(get_property_form());
        _layout.addWidget(&_props_box);
 
        _layout.addWidget(&_button_box);
        _layout.addWidget(&_props_box);
 
        _layout.addWidget(&_button_box);
@@ -89,7 +97,30 @@ void DeviceOptions::accept()
        }
 
        // Commit the properties
        }
 
        // Commit the properties
-       _device_options_binding.commit();
+       const vector< shared_ptr<pv::prop::Property> > &properties =
+               _device_options_binding.properties();
+       BOOST_FOREACH(shared_ptr<pv::prop::Property> p, properties) {
+               assert(p);
+               p->commit();
+       }
+}
+
+QWidget* DeviceOptions::get_property_form()
+{
+       QWidget *const form = new QWidget(this);
+       QFormLayout *const layout = new QFormLayout(form);
+       form->setLayout(layout);
+
+       const vector< shared_ptr<pv::prop::Property> > &properties =
+               _device_options_binding.properties();
+       BOOST_FOREACH(shared_ptr<pv::prop::Property> p, properties)
+       {
+               assert(p);
+               const QString label = p->labeled_widget() ? QString() : p->name();
+               layout->addRow(label, p->get_widget(form));
+       }
+
+       return form;
 }
 
 void DeviceOptions::setup_probes()
 }
 
 void DeviceOptions::setup_probes()