File indexing completed on 2024-05-12 16:01:38

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "kis_paintop_option.h"
0008 
0009 #include <klocalizedstring.h>
0010 
0011 #include <KisResourcesInterface.h>
0012 #include <KoCanvasResourcesInterface.h>
0013 
0014 struct KisPaintOpOption::Private
0015 {
0016 public:
0017     bool checked {false};
0018     QString label;
0019     KisPaintOpOption::PaintopCategory category;
0020     QWidget *configurationPage {nullptr};
0021 
0022     bool updatesBlocked {false};
0023     bool isWritingSettings {false};
0024 
0025     KisResourcesInterfaceSP resourcesInterface;
0026     KoCanvasResourcesInterfaceSP canvasResourcesInterface;
0027 };
0028 
0029 KisPaintOpOption::KisPaintOpOption(const QString label, PaintopCategory category, bool checked)
0030     : m_checkable(true)
0031     , m_d(new Private())
0032 
0033 {
0034     m_d->label = label;
0035     m_d->checked = checked;
0036     m_d->category = category;
0037 }
0038 
0039 KisPaintOpOption::~KisPaintOpOption()
0040 {
0041     delete m_d;
0042 }
0043 
0044 void KisPaintOpOption::emitSettingChanged()
0045 {
0046     KIS_ASSERT_RECOVER_RETURN(!m_d->isWritingSettings);
0047 
0048     if (!m_d->updatesBlocked) {
0049         emit sigSettingChanged();
0050     }
0051 }
0052 
0053 void KisPaintOpOption::emitCheckedChanged()
0054 {
0055     KIS_ASSERT_RECOVER_RETURN(!m_d->isWritingSettings);
0056 
0057     if (!m_d->updatesBlocked) {
0058         emit sigCheckedChanged(isChecked());
0059     }
0060 }
0061 
0062 void KisPaintOpOption::startReadOptionSetting(const KisPropertiesConfigurationSP setting)
0063 {
0064     m_d->updatesBlocked = true;
0065     readOptionSetting(setting);
0066     m_d->updatesBlocked = false;
0067 }
0068 
0069 void KisPaintOpOption::startWriteOptionSetting(KisPropertiesConfigurationSP setting) const
0070 {
0071     m_d->isWritingSettings = true;
0072     writeOptionSetting(setting);
0073     m_d->isWritingSettings = false;
0074 }
0075 
0076 void KisPaintOpOption::lodLimitations(KisPaintopLodLimitations *l) const
0077 {
0078     Q_UNUSED(l);
0079 }
0080 
0081 KisPaintOpOption::PaintopCategory KisPaintOpOption::category() const
0082 {
0083     return m_d->category;
0084 }
0085 
0086 bool KisPaintOpOption::isChecked() const
0087 {
0088     return m_d->checked;
0089 }
0090 
0091 bool KisPaintOpOption::isCheckable() const {
0092     return m_checkable;
0093 }
0094 
0095 void KisPaintOpOption::setChecked(bool checked)
0096 {
0097     m_d->checked = checked;
0098 
0099     emitCheckedChanged();
0100     emitSettingChanged();
0101 }
0102 
0103 void KisPaintOpOption::setImage(KisImageWSP image)
0104 {
0105     Q_UNUSED(image);
0106 }
0107 
0108 void KisPaintOpOption::setNode(KisNodeWSP node)
0109 {
0110     Q_UNUSED(node);
0111 }
0112 
0113 void KisPaintOpOption::setResourcesInterface(KisResourcesInterfaceSP resourcesInterface)
0114 {
0115     m_d->resourcesInterface = resourcesInterface;
0116 }
0117 
0118 void KisPaintOpOption::setCanvasResourcesInterface(KoCanvasResourcesInterfaceSP canvasResourcesInterface)
0119 {
0120     m_d->canvasResourcesInterface = canvasResourcesInterface;
0121 }
0122 
0123 KisResourcesInterfaceSP KisPaintOpOption::resourcesInterface() const
0124 {
0125     return m_d->resourcesInterface;
0126 }
0127 
0128 KoCanvasResourcesInterfaceSP KisPaintOpOption::canvasResourcesInterface() const
0129 {
0130     return m_d->canvasResourcesInterface;
0131 }
0132 
0133 void KisPaintOpOption::setConfigurationPage(QWidget * page)
0134 {
0135     m_d->configurationPage = page;
0136 }
0137 
0138 QWidget* KisPaintOpOption::configurationPage() const
0139 {
0140     return m_d->configurationPage;
0141 }
0142 void KisPaintOpOption::setLocked(bool value)
0143 {
0144     m_locked = value;
0145 }
0146 
0147 bool KisPaintOpOption::isLocked ()const
0148 {
0149     return m_locked;
0150 }
0151 
0152 QString KisPaintOpOption::label() const
0153 {
0154     return m_d->label;
0155 }