/* * Copyright 2008 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 SIGMODR_FRACTIONWIDGET #define SIGMODR_FRACTIONWIDGET // Sigcore includes #include "../sigcore/Fraction.h" // Qt includes #include // Form include #include "ui_fraction.h" namespace Sigmodr { class FractionWidget : public QWidget, private Ui::formFraction { Q_OBJECT 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); void updateValue(); signals: void valueChanged(const Sigcore::Fraction&); void behaviorChanged(const Behavior); protected slots: void on_varNumerator_valueChanged(const int numerator); void on_varDenominator_valueChanged(const int denominator); void resetRanges(); private: Behavior m_behavior; Sigcore::Fraction m_value; }; } #endif