Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_spacing_selection_widget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QCheckBox>
10#include <QHBoxLayout>
11
12#include "klocalizedstring.h"
13
14#include "kis_signals_blocker.h"
15#include "kis_slider_spin_box.h"
16
17
18
36
37
39 : QWidget(parent),
40 m_d(new Private(this))
41{
42 m_d->slider = new KisDoubleSliderSpinBox(this);
43 m_d->slider->setRange(0.02, 10.0, 2);
44 m_d->slider->setExponentRatio(3);
45 m_d->slider->setSingleStep(0.01);
46 m_d->slider->setValue(0.1);
47 m_d->slider->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed));
48
49
50 m_d->autoButton = new QCheckBox(this);
51 m_d->autoButton->setText(i18nc("@action:button", "Auto"));
52 m_d->autoButton->setToolTip(i18nc("@info:tooltip", "In auto mode the spacing of the brush will be calculated automatically depending on its size"));
53 m_d->autoButton->setCheckable(true);
54 m_d->autoButton->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
55
56 QHBoxLayout *layout = new QHBoxLayout(this);
57 layout->addWidget(m_d->autoButton);
58 layout->addWidget(m_d->slider);
59 layout->setContentsMargins(0, 0, 0, 0);
60
61 connect(m_d->slider, SIGNAL(valueChanged(qreal)), SLOT(slotSpacingChanged(qreal)));
62 connect(m_d->autoButton, SIGNAL(toggled(bool)), SLOT(slotAutoSpacing(bool)));
63}
64
68
70{
71 return autoSpacingActive() ? 0.1 : m_d->slider->value();
72}
73
75{
76 return m_d->autoButton->isChecked();
77}
78
80{
81 return autoSpacingActive() ? m_d->slider->value() : 1.0;
82}
83
84void KisSpacingSelectionWidget::setSpacing(bool isAuto, qreal spacing)
85{
86 KisSignalsBlocker b1(m_d->autoButton);
87 KisSignalsBlocker b2(m_d->slider);
88
89 m_d->autoButton->setChecked(isAuto);
90 m_d->slider->setValue(spacing);
91}
92
98
100{
101 qreal newSliderValue = 0.0;
102
103 if (value) {
104 newSliderValue = 1.0;
105 oldSliderValue = slider->value();
106 } else {
107 newSliderValue = oldSliderValue;
108 }
109
110 {
111 KisSignalsBlocker b(slider);
112 slider->setValue(newSliderValue);
113 }
114
115 Q_EMIT q->sigSpacingChanged();
116}
117
118#include "moc_kis_spacing_selection_widget.moc"
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
void setSpacing(bool isAuto, qreal spacing)
const QScopedPointer< Private > m_d