Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_multi_double_filter_widget.cc
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2004 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8#include <QLabel>
9#include <QLayout>
10#include <QTimer>
11#include <QGridLayout>
12#include <QSpinBox>
13
14#include <kis_config_widget.h>
16#include <klocalizedstring.h>
18
19KisDelayedActionDoubleInput::KisDelayedActionDoubleInput(QWidget * parent, const QString & name)
21{
22 setObjectName(name);
23 m_timer = new QTimer(this);
24 m_timer->setObjectName(name);
25 m_timer->setSingleShot(true);
26 connect(m_timer, SIGNAL(timeout()), SLOT(slotValueChanged()));
27 connect(this, SIGNAL(valueChanged(double)), SLOT(slotTimeToUpdate()));
28}
29
34
39
44
45KisDoubleWidgetParam::KisDoubleWidgetParam(double nmin, double nmax, double ninitvalue, const QString & nlabel, const QString & nname) :
46 min(nmin),
47 max(nmax),
48 initvalue(ninitvalue),
49 label(nlabel),
50 name(nname)
51{
52
53}
54
55KisMultiDoubleFilterWidget::KisMultiDoubleFilterWidget(const QString & filterid, QWidget * parent, const QString & caption, vKisDoubleWidgetParam dwparam)
56 : KisConfigWidget(parent), m_filterid(filterid)
57{
58 m_nbdoubleWidgets = dwparam.size();
59
60 this->setWindowTitle(caption);
61
62 QGridLayout *widgetLayout = new QGridLayout(this);
63 widgetLayout->setColumnStretch(1, 1);
64 widgetLayout->setContentsMargins(0,0,0,0);
65 widgetLayout->setHorizontalSpacing(0);
66
68
69 for (qint32 i = 0; i < m_nbdoubleWidgets; ++i) {
70 m_doubleWidgets[i] = new KisDelayedActionDoubleInput(this, dwparam[i].name);
71 m_doubleWidgets[i]->setRange(dwparam[i].min, dwparam[i].max);
72 m_doubleWidgets[i]->setValue(dwparam[i].initvalue);
73 m_doubleWidgets[i]->cancelDelayedSignal();
74
75 connect(m_doubleWidgets[i], SIGNAL(valueChangedDelayed(double)), SIGNAL(sigConfigurationItemChanged()));
76
77 QLabel* lbl = new QLabel(dwparam[i].label + ':', this);
78 widgetLayout->addWidget(lbl, i , 0);
79
80 widgetLayout->addWidget(m_doubleWidgets[i], i , 1);
81 }
82 widgetLayout->setRowStretch(m_nbdoubleWidgets,1);
83
84 QSpacerItem * sp = new QSpacerItem(1, 1);
85 widgetLayout->addItem(sp, m_nbdoubleWidgets, 0);
86
87}
88
90{
91 if (!config) return;
92
93 for (int i = 0; i < m_nbdoubleWidgets ; ++i) {
95 if (w) {
96 double val = config->getDouble(m_doubleWidgets[i]->objectName());
97 m_doubleWidgets[i]->setValue(val);
98 m_doubleWidgets[i]->cancelDelayedSignal();
99 }
100 }
101}
102
104{
106 for (int i = 0; i < nbValues(); ++i) {
107 config->setProperty(m_doubleWidgets[i]->objectName(), m_doubleWidgets[i]->value());
108 }
109 return config;
110}
111
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void sigConfigurationItemChanged()
KisDelayedActionDoubleInput(QWidget *parent, const QString &name)
void valueChangedDelayed(double value)
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
static KisResourcesInterfaceSP instance()
void setConfiguration(const KisPropertiesConfigurationSP cfg) override
KisPropertiesConfigurationSP configuration() const override
QVector< KisDelayedActionDoubleInput * > m_doubleWidgets
KisMultiDoubleFilterWidget(const QString &filterid, QWidget *parent, const QString &caption, vKisDoubleWidgetParam dwparam)
std::vector< KisDoubleWidgetParam > vKisDoubleWidgetParam
KisDoubleWidgetParam(double nmin, double nmax, double ninitvalue, const QString &label, const QString &nname)