From: Joel Holdsworth Date: Fri, 28 Dec 2012 10:10:09 +0000 (+0000) Subject: Added Enum property X-Git-Tag: pulseview-0.1.0~182 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=820c3dea881d351f2bbf4e03c2302f5ca645df63;p=pulseview.git Added Enum property --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 9aaf6f3c..1e1716b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,6 +91,7 @@ set(pulseview_SOURCES pv/data/snapshot.cpp pv/dialogs/about.cpp pv/dialogs/hwcap.cpp + pv/prop/enum.cpp pv/prop/property.cpp pv/prop/binding/binding.cpp pv/prop/binding/hwcap.cpp diff --git a/pv/prop/enum.cpp b/pv/prop/enum.cpp new file mode 100644 index 00000000..29f95d8e --- /dev/null +++ b/pv/prop/enum.cpp @@ -0,0 +1,52 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2012 Joel Holdsworth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * 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 + */ + +#include + +#include "enum.h" + +using namespace std; + +namespace pv { +namespace prop { + +Enum::Enum(QString name, vector< pair > values) : + Property(name), + _values(values), + _selector(NULL) +{ +} + +QWidget* Enum::get_widget(QWidget *parent) +{ + if(_selector) + return _selector; + + _selector = new QComboBox(parent); + for(vector< pair >::const_iterator i = _values.begin(); + i != _values.end(); i++) + _selector->addItem((*i).second, + qVariantFromValue((*i).first)); + + return _selector; +} + +} // prop +} // pv diff --git a/pv/prop/enum.h b/pv/prop/enum.h new file mode 100644 index 00000000..2350fef8 --- /dev/null +++ b/pv/prop/enum.h @@ -0,0 +1,50 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2012 Joel Holdsworth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * 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 + */ + +#ifndef PULSEVIEW_PV_PROP_ENUM_H +#define PULSEVIEW_PV_PROP_ENUM_H + +#include +#include + +#include "property.h" + +class QComboBox; + +namespace pv { +namespace prop { + +class Enum : public Property +{ +public: + Enum(QString name, std::vector > values); + + QWidget* get_widget(QWidget *parent); + +private: + const std::vector< std::pair > _values; + + QComboBox *_selector; +}; + +} // prop +} // pv + +#endif // PULSEVIEW_PV_PROP_ENUM_H