Krita Source Code Documentation
Loading...
Searching...
No Matches
KisHatchingOptionsWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2008 Lukas Tvrdy <lukast.dev@gmail.com>
3 * SPDX-FileCopyrightText: 2010 José Luis Vergara <pentalis@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
8
9#include <QButtonGroup>
10
11#include <lager/constant.hpp>
12#include "ui_wdghatchingoptions.h"
13
16
17namespace {
18
19
20class KisHatchingOptions: public QWidget, public Ui::WdgHatchingOptions
21{
22public:
23 KisHatchingOptions(QWidget *parent = 0)
24 : QWidget(parent) {
25 setupUi(this);
26
27 QString px = i18n(" px");
28
29 angleKisAngleSelector ->setIncreasingDirection(KisAngleGauge::IncreasingDirection_Clockwise);
30
31 //setRange(minimum, maximum, decimals)
32 angleKisAngleSelector -> setRange(-90.0, 90.0);
33 angleKisAngleSelector -> setDecimals(1);
34 separationKisDoubleSliderSpinBox-> setRange(1.0, 30.0, 1);
35 thicknessKisDoubleSliderSpinBox -> setRange(1.0, 30.0, 1);
36 originXKisDoubleSliderSpinBox -> setRange(-300, 300, 0);
37 originYKisDoubleSliderSpinBox -> setRange(-300, 300, 0);
38
39 separationKisDoubleSliderSpinBox-> setSingleStep(0.1);
40 thicknessKisDoubleSliderSpinBox -> setSingleStep(0.1);
41
42 separationKisDoubleSliderSpinBox-> setSuffix(px);
43 thicknessKisDoubleSliderSpinBox -> setSuffix(px);
44 originXKisDoubleSliderSpinBox -> setSuffix(px);
45 originYKisDoubleSliderSpinBox -> setSuffix(px);
46 }
47};
48
49
50}
51
52
54{
55 Private(lager::cursor<KisHatchingOptionsData> optionData)
56 : model(optionData)
57 {
58 }
59
61};
62
63
64KisHatchingOptionsWidget::KisHatchingOptionsWidget(lager::cursor<KisHatchingOptionsData> optionData)
65 : KisPaintOpOption(i18n("Hatching options"), KisPaintOpOption::GENERAL, true)
66 , m_d(new Private(optionData))
67{
68
69 KisHatchingOptions *widget = new KisHatchingOptions();
70 setObjectName("KisHatchingOptions");
71
72 m_checkable = false;
73
74 using namespace KisWidgetConnectionUtils;
75
76 connectControl(widget->angleKisAngleSelector, &m_d->model, "angle");
77 connectControl(widget->separationKisDoubleSliderSpinBox, &m_d->model, "separation");
78 connectControl(widget->thicknessKisDoubleSliderSpinBox, &m_d->model, "thickness");
79 connectControl(widget->originXKisDoubleSliderSpinBox, &m_d->model, "originX");
80 connectControl(widget->originYKisDoubleSliderSpinBox, &m_d->model, "originY");
81
82 QButtonGroup *group = new QButtonGroup(widget);
83 group->addButton(widget->noCrosshatchingRadioButton, static_cast<int>(CrosshatchingType::NoCrosshatching));
84 group->addButton(widget->perpendicularRadioButton, static_cast<int>(CrosshatchingType::Perpendicular));
85 group->addButton(widget->minusThenPlusRadioButton, static_cast<int>(CrosshatchingType::MinusThenPlus));
86 group->addButton(widget->plusThenMinusRadioButton, static_cast<int>(CrosshatchingType::PlusThenMinus));
87 group->addButton(widget->moirePatternRadioButton, static_cast<int>(CrosshatchingType::MoirePattern));
88 group->setExclusive(true);
89 connectControl(group, &m_d->model, "crosshatchingStyle");
90
91 connectControl(widget->separationIntervalSpinBox, &m_d->model, "separationIntervals");
92
93 m_d->model.optionData.bind(std::bind(&KisHatchingOptionsWidget::emitSettingChanged, this));
94
96}
97
101
103{
104 KisHatchingOptionsData data = *m_d->model.optionData;
105 data.write(setting.data());
106}
107
109{
110 KisHatchingOptionsData data = *m_d->model.optionData;
111 data.read(setting.data());
112 m_d->model.optionData.set(data);
113}
@ NoCrosshatching
@ IncreasingDirection_Clockwise
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
KisHatchingOptionsWidget(lager::cursor< KisHatchingOptionsData > optionData)
const QScopedPointer< Private > m_d
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
void setConfigurationPage(QWidget *page)
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327
@ GENERAL
Definition nugrid.h:26
bool read(const KisPropertiesConfiguration *setting)
void write(KisPropertiesConfiguration *setting) const
Private(lager::cursor< KisHatchingOptionsData > optionData)