Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSmudgeOverlayModeOptionWidget.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 <QWidget>
9#include <QLabel>
10#include <QCheckBox>
11#include <QHBoxLayout>
12#include <QVBoxLayout>
13
17
19{
20 Private(lager::cursor<KisSmudgeOverlayModeOptionData> optionData,
21 lager::reader<bool> overlayModeAllowed)
22 : model(optionData, overlayModeAllowed)
23 , warningLabelVisible{overlayModeAllowed.map(std::logical_not{})}
25 {
26 }
27
29 lager::reader<bool> warningLabelVisible;
30 lager::reader<KisPaintopLodLimitations> lodLimitations;
31};
32
33
34KisSmudgeOverlayModeOptionWidget::KisSmudgeOverlayModeOptionWidget(lager::cursor<KisSmudgeOverlayModeOptionData> optionData,
35 lager::reader<bool> overlayModeAllowed)
36 : KisPaintOpOption(i18n("Overlay Mode"),
38 optionData[&KisSmudgeOverlayModeOptionData::isChecked],
39 overlayModeAllowed)
40 , m_d(new Private(optionData, overlayModeAllowed))
41{
42 using namespace KisWidgetConnectionUtils;
43
44 QWidget *page = new QWidget();
45
46 QLabel *label = new QLabel(
47 i18n("Paints on the current layer\n"
48 "but uses all layers that are currently visible for smudge input\n"
49 "NOTE: This mode is only able to work correctly with a fully opaque background"),
50 page);
51
52 label->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
53
54
55 QLabel *disabledWarningLabel = new QLabel(
56 i18n("Disabled: overlay mode is not supported in Lightness mode of the brush"),
57 page);
58
59 disabledWarningLabel->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
60
61
62 QVBoxLayout *layout = new QVBoxLayout(page);
63 layout->addWidget(disabledWarningLabel);
64 layout->addWidget(label, 1);
65
66 m_d->warningLabelVisible.bind(std::bind(&QWidget::setVisible, disabledWarningLabel, std::placeholders::_1));
67
69
70 m_d->model.optionData.bind(std::bind(&KisSmudgeOverlayModeOptionWidget::emitSettingChanged, this));
71}
72
76
78{
79 m_d->model.bakedOptionData().write(setting.data());
80}
81
83{
84 KisSmudgeOverlayModeOptionData data = *m_d->model.optionData;
85 data.read(setting.data());
86 m_d->model.optionData.set(data);
87
88}
89
std::optional< lager::reader< KisPaintopLodLimitations > > OptionalLodLimitationsReader
void setConfigurationPage(QWidget *page)
KisSmudgeOverlayModeOptionWidget(lager::cursor< KisSmudgeOverlayModeOptionData > optionData, lager::reader< bool > overlayModeAllowed)
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
OptionalLodLimitationsReader lodLimitationsReader() const override
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
@ GENERAL
Definition nugrid.h:26
bool read(const KisPropertiesConfiguration *setting)
lager::reader< KisPaintopLodLimitations > lodLimitations
Private(lager::cursor< KisSmudgeOverlayModeOptionData > optionData, lager::reader< bool > overlayModeAllowed)