Krita Source Code Documentation
Loading...
Searching...
No Matches
KisPaintingModeOptionWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <QButtonGroup>
9
10#include <lager/constant.hpp>
11#include "ui_wdgincremental.h"
12
14
15namespace {
16
17class KisPaintingModeWidget: public QWidget, public Ui::WdgIncremental
18{
19public:
20 KisPaintingModeWidget(QWidget *parent = 0)
21 : QWidget(parent) {
22 setupUi(this);
23 }
24};
25
26QString calcButtonGroupToolTip(bool maskingBrushEnabled) {
27 return maskingBrushEnabled ?
28 i18nc("@info:tooltip",
29 "Only wash mode is possible when using a masked brush.") :
30 "";
31}
32
33}
34
35
37{
38 Private(lager::cursor<KisPaintingModeOptionData> optionData, lager::reader<bool> maskingBrushEnabled)
39 : model(optionData, maskingBrushEnabled)
40 , buttonGroupToolTip {maskingBrushEnabled.map(&calcButtonGroupToolTip)}
41 {
42 }
43
45 lager::reader<QString> buttonGroupToolTip;
46};
47
48
49KisPaintingModeOptionWidget::KisPaintingModeOptionWidget(lager::cursor<KisPaintingModeOptionData> optionData)
50 : KisPaintingModeOptionWidget(optionData, lager::make_constant(false))
51{
52}
53
54KisPaintingModeOptionWidget::KisPaintingModeOptionWidget(lager::cursor<KisPaintingModeOptionData> optionData, lager::reader<bool> maskingBrushEnabled)
55 : KisPaintOpOption(i18n("Painting Mode"), KisPaintOpOption::COLOR, true)
56 , m_d(new Private(optionData, maskingBrushEnabled))
57{
58 using namespace KisWidgetConnectionUtils;
59
60 setObjectName("KisPaintActionTypeOption");
61 m_checkable = false;
62
63 KisPaintingModeWidget *widget = new KisPaintingModeWidget();
64
65 QButtonGroup *group = new QButtonGroup(widget);
66 group->addButton(widget->radioBuildup, static_cast<int>(enumPaintingMode::BUILDUP));
67 group->addButton(widget->radioWash, static_cast<int>(enumPaintingMode::WASH));
68 group->setExclusive(true);
69
71
72 connectControlState(group, &m_d->model, "paintingModeState", "paintingMode");
73 m_d->buttonGroupToolTip.bind(std::bind(&QWidget::setToolTip, widget->radioBuildup, std::placeholders::_1));
74 m_d->buttonGroupToolTip.bind(std::bind(&QWidget::setToolTip, widget->radioWash, std::placeholders::_1));
75 m_d->buttonGroupToolTip.bind(std::bind(&QWidget::setToolTip, widget->label, std::placeholders::_1));
76
77 m_d->model.optionData.bind(std::bind(&KisPaintingModeOptionWidget::emitSettingChanged, this));
78}
79
83
85{
86 m_d->model.bakedOptionData().write(setting.data());
87}
88
90{
91 KisPaintingModeOptionData data = *m_d->model.optionData;
92 data.read(setting.data());
93 m_d->model.optionData.set(data);
94}
void setConfigurationPage(QWidget *page)
const QScopedPointer< Private > m_d
KisPaintingModeOptionWidget(lager::cursor< KisPaintingModeOptionData > optionData)
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327
bool read(const KisPropertiesConfiguration *setting)
Private(lager::cursor< KisPaintingModeOptionData > optionData, lager::reader< bool > maskingBrushEnabled)