From: Joel Holdsworth Date: Fri, 28 Dec 2012 10:09:41 +0000 (+0000) Subject: Added Property X-Git-Tag: pulseview-0.1.0~183 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=c8df600577e9c7b1ca90baf6bd01ccc980f89464;p=pulseview.git Added Property --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 189e778a..9aaf6f3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,6 +91,8 @@ set(pulseview_SOURCES pv/data/snapshot.cpp pv/dialogs/about.cpp pv/dialogs/hwcap.cpp + pv/prop/property.cpp + pv/prop/binding/binding.cpp pv/prop/binding/hwcap.cpp pv/view/analogsignal.cpp pv/view/cursor.cpp diff --git a/pv/prop/binding/binding.cpp b/pv/prop/binding/binding.cpp new file mode 100644 index 00000000..e75b9556 --- /dev/null +++ b/pv/prop/binding/binding.cpp @@ -0,0 +1,61 @@ +/* + * 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 + +#include + +#include "binding.h" + +#include + +using namespace boost; + +namespace pv { +namespace prop { +namespace binding { + +Binding::Binding() : + _form(NULL) +{ +} + +QWidget* Binding::get_form(QWidget *parent) +{ + if(_form) + return _form; + + _form = new QWidget(parent); + QFormLayout *const layout = new QFormLayout(_form); + _form->setLayout(layout); + + BOOST_FOREACH(shared_ptr p, _properties) + { + assert(p); + layout->addRow(p->name(), p->get_widget(_form)); + } + + return _form; +} + +} // binding +} // prop +} // pv diff --git a/pv/prop/binding/binding.h b/pv/prop/binding/binding.h index bddca862..b6f12141 100644 --- a/pv/prop/binding/binding.h +++ b/pv/prop/binding/binding.h @@ -21,12 +21,30 @@ #ifndef PULSEVIEW_PV_PROP_BINDING_BINDING_H #define PULSEVIEW_PV_PROP_BINDING_BINDING_H +#include +#include + +class QWidget; + namespace pv { namespace prop { + +class Property; + namespace binding { class Binding { +public: + Binding(); + +public: + QWidget* get_form(QWidget *parent); + +protected: + std::vector< boost::shared_ptr > _properties; + + QWidget *_form; }; } // binding diff --git a/pv/prop/property.cpp b/pv/prop/property.cpp new file mode 100644 index 00000000..0a14d241 --- /dev/null +++ b/pv/prop/property.cpp @@ -0,0 +1,37 @@ +/* + * 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 "property.h" + +namespace pv { +namespace prop { + +Property::Property(QString name) : + _name(name) +{ +} + +const QString& Property::name() const +{ + return _name; +} + +} // prop +} // pv diff --git a/pv/prop/property.h b/pv/prop/property.h new file mode 100644 index 00000000..e6745a10 --- /dev/null +++ b/pv/prop/property.h @@ -0,0 +1,49 @@ +/* + * 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_PROPERTY_H +#define PULSEVIEW_PV_PROP_PROPERTY_H + +#include +#include + +class QWidget; + +namespace pv { +namespace prop { + +class Property +{ +protected: + Property(QString name); + +public: + const QString& name() const; + + virtual QWidget* get_widget(QWidget *parent) = 0; + +private: + QString _name; +}; + +} // prop +} // pv + +#endif // PULSEVIEW_PV_PROP_PROPERTY_H