/* * Copyright 2008-2009 Ben Boeckel * * 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 3 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, see . */ #ifndef SIGMODRCOREWIDGETS_FRACTIONWIDGET #define SIGMODRCOREWIDGETS_FRACTIONWIDGET // Sigmodr core includes #include "Global.h" // Sigcore includes #include // Qt includes #include namespace Sigmodr { namespace CoreWidgets { class SIGMODRCOREWIDGETS_EXPORT FractionWidget : public QWidget { Q_OBJECT Q_PROPERTY(Sigcore::Fraction value READ value WRITE setValue USER true) Q_PROPERTY(Behavior behavior READ behavior WRITE setBehavior) Q_ENUMS(Behavior) public: enum Behavior { NonZero = 0, Proper = 1, AnyButZero = 2, Any = 3, Improper = 4 }; explicit FractionWidget(QWidget* parent, const Sigcore::Fraction& value = Sigcore::Fraction(1, 1)); Behavior behavior() const; Sigcore::Fraction value() const; public slots: void setBehavior(const Behavior behavior); void setValue(const Sigcore::Fraction& value); signals: void valueChanged(const Sigcore::Fraction& value); void behaviorChanged(const Behavior behavior); private: class Private; Private* const d; }; } } #endif