/* ============================================================ * * This file is a part of kipi-plugins project * http://www.kipi-plugins.org * * Date : 2008-08-16 * Description : Integer and double num input widget * re-implemented with a reset button to switch to * a default value. * * Copyright (C) 2008-2009 by Gilles Caulier * * 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, 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. * * ============================================================ */ // TQt includes. #include #include // KDE includes. #include #include #include // Local includes. #include "rnuminput.h" #include "rnuminput.moc" namespace KDcrawIface { class RIntNumInputPriv { public: RIntNumInputPriv() { defaultValue = 0; resetButton = 0; input = 0; } int defaultValue; TQToolButton *resetButton; KIntNumInput *input; }; RIntNumInput::RIntNumInput(TQWidget *parent) : TQHBox(parent) { d = new RIntNumInputPriv; d->input = new KIntNumInput(this); d->resetButton = new TQToolButton(this); d->resetButton->setAutoRaise(true); d->resetButton->setFocusPolicy(TQWidget::NoFocus); d->resetButton->setIconSet(SmallIconSet("reload_page")); TQToolTip::add(d->resetButton, i18n("Reset to default value")); setStretchFactor(d->input, 10); setMargin(0); setSpacing(KDialog::spacingHint()); // ------------------------------------------------------------- connect(d->resetButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotReset())); connect(d->input, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotValueChanged(int))); } RIntNumInput::~RIntNumInput() { delete d; } KIntNumInput* RIntNumInput::input() const { return d->input; } void RIntNumInput::setRange(int min, int max, int step) { d->input->setRange(min, max, step); } int RIntNumInput::value() { return d->input->value(); } void RIntNumInput::setValue(int v) { d->input->setValue(v); } int RIntNumInput::defaultValue() { return d->defaultValue; } void RIntNumInput::setDefaultValue(int v) { d->defaultValue = v; d->input->setValue(d->defaultValue); slotValueChanged(v); } void RIntNumInput::slotReset() { d->input->setValue(d->defaultValue); d->resetButton->setEnabled(false); emit reset(); } void RIntNumInput::slotValueChanged(int v) { if (v != d->defaultValue) d->resetButton->setEnabled(true); emit valueChanged(v); } // ---------------------------------------------------- class RDoubleNumInputPriv { public: RDoubleNumInputPriv() { defaultValue = 0.0; resetButton = 0; input = 0; } double defaultValue; TQToolButton *resetButton; KDoubleNumInput *input; }; RDoubleNumInput::RDoubleNumInput(TQWidget *parent) : TQHBox(parent) { d = new RDoubleNumInputPriv; d->input = new KDoubleNumInput(this); d->resetButton = new TQToolButton(this); d->resetButton->setAutoRaise(true); d->resetButton->setFocusPolicy(TQWidget::NoFocus); d->resetButton->setIconSet(SmallIconSet("reload_page")); TQToolTip::add(d->resetButton, i18n("Reset to default value")); setStretchFactor(d->input, 10); setMargin(0); setSpacing(KDialog::spacingHint()); // ------------------------------------------------------------- connect(d->resetButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotReset())); connect(d->input, TQT_SIGNAL(valueChanged(double)), this, TQT_SLOT(slotValueChanged(double))); } RDoubleNumInput::~RDoubleNumInput() { delete d; } KDoubleNumInput* RDoubleNumInput::input() const { return d->input; } void RDoubleNumInput::setPrecision(int p) { d->input->setPrecision(p); } void RDoubleNumInput::setRange(double min, double max, double step, bool slider) { d->input->setRange(min, max, step, slider); } double RDoubleNumInput::value() { return d->input->value(); } void RDoubleNumInput::setValue(double v) { d->input->setValue(v); } double RDoubleNumInput::defaultValue() { return d->defaultValue; } void RDoubleNumInput::setDefaultValue(double v) { d->defaultValue = v; d->input->setValue(d->defaultValue); slotValueChanged(v); } void RDoubleNumInput::slotReset() { d->input->setValue(d->defaultValue); d->resetButton->setEnabled(false); emit reset(); } void RDoubleNumInput::slotValueChanged(double v) { if (v != d->defaultValue) d->resetButton->setEnabled(true); emit valueChanged(v); } } // namespace KDcrawIface