• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • krita API Reference
  • KDE Home
  • Contact Us
 

plugins/paintops/libpaintop

  • sources
  • kfour-appscomplete
  • krita
  • plugins
  • paintops
  • libpaintop
kis_spacing_selection_widget.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <[email protected]>
3  *
4  * SPDX-License-Identifier: GPL-2.0-or-later
5  */
6 
7 #include "kis_spacing_selection_widget.h"
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 
19 struct KisSpacingSelectionWidget::Private
20 {
21  Private(KisSpacingSelectionWidget *_q)
22  : q(_q)
23  {
24  }
25 
26  KisSpacingSelectionWidget *q;
27 
28  KisDoubleSliderSpinBox *slider {0};
29  QCheckBox *autoButton {0};
30 
31  qreal oldSliderValue {0.1};
32 
33  void slotSpacingChanged(qreal value);
34  void slotAutoSpacing(bool value);
35 };
36 
37 
38 KisSpacingSelectionWidget::KisSpacingSelectionWidget(QWidget *parent)
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->setMargin(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 
65 KisSpacingSelectionWidget::~KisSpacingSelectionWidget()
66 {
67 }
68 
69 qreal KisSpacingSelectionWidget::spacing() const
70 {
71  return autoSpacingActive() ? 0.1 : m_d->slider->value();
72 }
73 
74 bool KisSpacingSelectionWidget::autoSpacingActive() const
75 {
76  return m_d->autoButton->isChecked();
77 }
78 
79 qreal KisSpacingSelectionWidget::autoSpacingCoeff() const
80 {
81  return autoSpacingActive() ? m_d->slider->value() : 1.0;
82 }
83 
84 void 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 
93 void KisSpacingSelectionWidget::Private::slotSpacingChanged(qreal value)
94 {
95  Q_UNUSED(value);
96  emit q->sigSpacingChanged();
97 }
98 
99 void KisSpacingSelectionWidget::Private::slotAutoSpacing(bool value)
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  emit q->sigSpacingChanged();
116 }
117 
118 #include "moc_kis_spacing_selection_widget.moc"
KisSpacingSelectionWidget::setSpacing
void setSpacing(bool isAuto, qreal spacing)
Definition: kis_spacing_selection_widget.cpp:84
QWidget::layout
QLayout * layout() const
QLayout::setMargin
void setMargin(int margin)
QWidget
KisSpacingSelectionWidget::autoSpacingCoeff
qreal autoSpacingCoeff() const
Definition: kis_spacing_selection_widget.cpp:79
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
KisSpacingSelectionWidget::autoSpacingActive
bool autoSpacingActive() const
Definition: kis_spacing_selection_widget.cpp:74
QSizePolicy
QCheckBox
KisSpacingSelectionWidget::~KisSpacingSelectionWidget
~KisSpacingSelectionWidget() override
Definition: kis_spacing_selection_widget.cpp:65
kis_spacing_selection_widget.h
QLayout::addWidget
void addWidget(QWidget *w)
QHBoxLayout
KisSpacingSelectionWidget
Definition: kis_spacing_selection_widget.h:15
KisSpacingSelectionWidget::KisSpacingSelectionWidget
KisSpacingSelectionWidget(QWidget *parent)
Definition: kis_spacing_selection_widget.cpp:38
KisSpacingSelectionWidget::spacing
qreal spacing() const
Definition: kis_spacing_selection_widget.cpp:69
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Apr 17 2021 23:38:22 by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

plugins/paintops/libpaintop

Skip menu "plugins/paintops/libpaintop"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

krita API Reference

Skip menu "krita API Reference"
  • libs
  •   KritaBasicFlakes
  •   brush
  •   KritaUndo2
  •   KritaFlake
  •   image
  •   KritaPlugin
  •   Krita
  •   KritaPigment
  •   KritaResources
  •   KritaStore
  •   ui
  •   KritaWidgets
  •   KritaWidgetUtils
  • plugins
  •   Assitants
  •   Extensions
  •   Filters
  •   Generators
  •   Formats
  •           src
  •   PaintOps
  •     libpaintop

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal