Drop some trailing whitespace.
[pulseview.git] / pv / binding / inputoutput.cpp
index 42ebf06263539bc582f16a7b1d27e2fbcf128bec..9d2299afaf95fd767a5d7142fb71a606e3d97f0f 100644 (file)
@@ -14,8 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <cassert>
@@ -26,6 +25,7 @@
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
+#include <pv/prop/bool.hpp>
 #include <pv/prop/double.hpp>
 #include <pv/prop/enum.hpp>
 #include <pv/prop/int.hpp>
@@ -47,6 +47,7 @@ using Glib::VariantType;
 
 using sigrok::Option;
 
+using pv::prop::Bool;
 using pv::prop::Double;
 using pv::prop::Enum;
 using pv::prop::Int;
@@ -59,17 +60,17 @@ namespace binding {
 InputOutput::InputOutput(
        const map<string, shared_ptr<Option>> &options)
 {
-       for (pair<string, shared_ptr<Option>> o : options)
-       {
+       for (pair<string, shared_ptr<Option>> o : options) {
                const shared_ptr<Option> &opt = o.second;
                assert(opt);
 
                const QString name = QString::fromStdString(opt->name());
+               const QString desc = QString::fromStdString(opt->description());
                const VariantBase def_val = opt->default_value();
                const vector<VariantBase> values = opt->values();
 
                options_[opt->id()] = def_val;
+
                const Property::Getter get = [&, opt]() {
                        return options_[opt->id()]; };
                const Property::Setter set = [&, opt](VariantBase value) {
@@ -78,16 +79,20 @@ InputOutput::InputOutput(
                shared_ptr<Property> prop;
 
                if (!opt->values().empty())
-                       prop = bind_enum(name, values, get, set);
+                       prop = bind_enum(name, desc, values, get, set);
+               else if (def_val.is_of_type(VariantType("b")))
+                       prop = shared_ptr<Property>(new Bool(name, desc, get, set));
                else if (def_val.is_of_type(VariantType("d")))
-                       prop = shared_ptr<Property>(new Double(name, 2, "",
-                               nullptr, nullptr, get, set));
-               else if (def_val.is_of_type(VariantType("u")))
+                       prop = shared_ptr<Property>(new Double(name, desc, 2, "",
+                               none, none, get, set));
+               else if (def_val.is_of_type(VariantType("i")) ||
+                       def_val.is_of_type(VariantType("t")) ||
+                       def_val.is_of_type(VariantType("u")))
                        prop = shared_ptr<Property>(
-                               new Int(name, "", none, get, set));
+                               new Int(name, desc, "", none, get, set));
                else if (def_val.is_of_type(VariantType("s")))
                        prop = shared_ptr<Property>(
-                               new String(name, get, set));
+                               new String(name, desc, get, set));
                else
                        continue;
 
@@ -101,13 +106,13 @@ const map<string, VariantBase>& InputOutput::options() const
 }
 
 shared_ptr<Property> InputOutput::bind_enum(
-       const QString &name, const vector<VariantBase> &values,
+       const QString &name, const QString &desc, const vector<VariantBase> &values,
        Property::Getter getter, Property::Setter setter)
 {
        vector< pair<VariantBase, QString> > enum_vals;
        for (VariantBase var : values)
                enum_vals.push_back(make_pair(var, print_gvariant(var)));
-       return shared_ptr<Property>(new Enum(name, enum_vals, getter, setter));
+       return shared_ptr<Property>(new Enum(name, desc, enum_vals, getter, setter));
 }
 
 } // namespace binding