Krita Source Code Documentation
Loading...
Searching...
No Matches
KisPaintOpSettingsWidget Class Reference

#include <kis_paintop_settings_widget.h>

+ Inheritance diagram for KisPaintOpSettingsWidget:

Classes

struct  Private
 

Public Member Functions

void addPaintOpOption (KisPaintOpOption *option)
 
void addPaintOpOption (KisPaintOpOption *option, KisPaintOpOption::PaintopCategory category)
 
lager::reader< qreal > effectiveBrushSize () const override
 
 KisPaintOpSettingsWidget (QWidget *parent=0)
 
KisPaintopLodLimitations lodLimitations () const override
 
lager::reader< KisPaintopLodLimitationslodLimitationsReader () const override
 
void setCanvasResourcesInterface (KoCanvasResourcesInterfaceSP canvasResourcesInterface) override
 
void setConfiguration (const KisPropertiesConfigurationSP config) override
 Reimplemented.
 
void setImage (KisImageWSP image) override
 Reimplemented, sets image on option widgets.
 
void setNode (KisNodeWSP node) override
 Reimplemented, sets node on option widgets.
 
void setResourcesInterface (KisResourcesInterfaceSP resourcesInterface) override
 
void writeConfiguration (KisPropertiesConfigurationSP config) const override
 Reimplemented.
 
 ~KisPaintOpSettingsWidget () override
 
- Public Member Functions inherited from KisPaintOpConfigWidget
 KisPaintOpConfigWidget (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
KisResourcesInterfaceSP resourcesInterface () const
 
void setConfigurationSafe (const KisPropertiesConfigurationSP config)
 
void setView (KisViewManager *view) override
 
virtual bool supportScratchBox ()
 
void writeConfigurationSafe (KisPropertiesConfigurationSP config) const
 
 ~KisPaintOpConfigWidget () override
 
- Public Member Functions inherited from KisConfigWidget
virtual KoCanvasResourcesInterfaceSP canvasResourcesInterface () const
 
virtual KisPropertiesConfigurationSP configuration () const =0
 
 ~KisConfigWidget () override
 

Protected Member Functions

void addPaintOpOption (KisPaintOpOption *option, QString category)
 
bool eventFilter (QObject *obj, QEvent *event) override
 
virtual void notifyPageChanged ()
 
- Protected Member Functions inherited from KisConfigWidget
 KisConfigWidget (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags(), int delay=200)
 

Private Slots

void changePage (const QModelIndex &)
 
void lockProperties (const QModelIndex &index)
 
void slotEntryChecked (const QModelIndex &index)
 
void slotLockPropertiesDrop ()
 
void slotLockPropertiesSave ()
 

Private Attributes

Private *const m_d
 
bool m_saveLockedOption
 

Additional Inherited Members

- Signals inherited from KisConfigWidget
void sigConfigurationItemChanged ()
 
void sigConfigurationUpdated ()
 
void sigDropLockedConfig (KisPropertiesConfigurationSP p)
 
void sigSaveLockedConfig (KisPropertiesConfigurationSP p)
 
- Protected Attributes inherited from KisPaintOpConfigWidget
KisImageWSP m_image
 
int m_isInsideUpdateCall
 
KisNodeWSP m_node
 
KisResourcesInterfaceSP m_resourcesInterface
 

Detailed Description

A common widget for enabling/disabling and determining the effect of tablet pressure, tilt and rotation and other paintop settings.

Definition at line 26 of file kis_paintop_settings_widget.h.

Constructor & Destructor Documentation

◆ KisPaintOpSettingsWidget()

KisPaintOpSettingsWidget::KisPaintOpSettingsWidget ( QWidget * parent = 0)

Definition at line 46 of file kis_paintop_settings_widget.cpp.

48 , m_d(new Private())
49{
50 setObjectName("KisPaintOpPresetsWidget");
51
56 m_d->optionsList->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
57 m_d->optionsList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
58
59 QSizePolicy policy = QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
60 m_d->optionsList->setSizePolicy(policy);
61
62 m_d->optionsList->setMinimumWidth(160); // this should be just big enough to show all of the setting names
63
64 m_d->optionsStack = new QStackedWidget(this);
65 policy = QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
66 m_d->optionsStack->setSizePolicy(policy);
67
68 QHBoxLayout* layout = new QHBoxLayout(this);
69 layout->addWidget(m_d->optionsList);
70 layout->addWidget(m_d->optionsStack);
71
72 layout->setStretch(0, 0);
73 layout->setStretch(1, 1);
74
75 m_saveLockedOption = false;
76
77 connect(m_d->optionsList, SIGNAL(activated(QModelIndex)), this, SLOT(changePage(QModelIndex)));
78 connect(m_d->optionsList, SIGNAL(clicked(QModelIndex)), this, SLOT(changePage(QModelIndex)));
79 connect(m_d->optionsList, SIGNAL(rightClickedMenuDropSettingsTriggered()), this, SLOT(slotLockPropertiesDrop()));
80 connect(m_d->optionsList, SIGNAL(rightClickedMenuSaveSettingsTriggered()), this, SLOT(slotLockPropertiesSave()));
81 connect(m_d->optionsList, SIGNAL(sigEntryChecked(QModelIndex)), this, SLOT(slotEntryChecked(QModelIndex)));
82 connect (m_d->optionsList, SIGNAL(lockAreaTriggered(QModelIndex)), this, SLOT(lockProperties(QModelIndex)));
83
84 // allow the list viewport to be responsive to input release events
85 m_d->optionsList->viewport()->installEventFilter(this);
86}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setModel(QAbstractItemModel *model) override
KisPaintOpConfigWidget(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
void slotEntryChecked(const QModelIndex &index)
void lockProperties(const QModelIndex &index)

References changePage(), connect(), lockProperties(), m_d, m_saveLockedOption, KisPaintOpSettingsWidget::Private::model, KisPaintOpSettingsWidget::Private::optionsList, KisPaintOpSettingsWidget::Private::optionsStack, KisCategorizedListView::setModel(), slotEntryChecked(), slotLockPropertiesDrop(), and slotLockPropertiesSave().

◆ ~KisPaintOpSettingsWidget()

KisPaintOpSettingsWidget::~KisPaintOpSettingsWidget ( )
override

Definition at line 89 of file kis_paintop_settings_widget.cpp.

90{
91 qDeleteAll(m_d->paintOpOptions);
92 delete m_d;
93}

References m_d, and KisPaintOpSettingsWidget::Private::paintOpOptions.

Member Function Documentation

◆ addPaintOpOption() [1/3]

void KisPaintOpSettingsWidget::addPaintOpOption ( KisPaintOpOption * option)

Definition at line 95 of file kis_paintop_settings_widget.cpp.

96{
97 addPaintOpOption(option, option->category());
98}
KisPaintOpOption::PaintopCategory category() const
void addPaintOpOption(KisPaintOpOption *option)

References addPaintOpOption(), and KisPaintOpOption::category().

◆ addPaintOpOption() [2/3]

void KisPaintOpSettingsWidget::addPaintOpOption ( KisPaintOpOption * option,
KisPaintOpOption::PaintopCategory category )

Definition at line 100 of file kis_paintop_settings_widget.cpp.

101{
102 addPaintOpOption(option, m_d->model->categoryName(category));
103}
static QString categoryName(KisPaintOpOption::PaintopCategory category)

References addPaintOpOption(), KisPaintOpOptionListModel::categoryName(), m_d, and KisPaintOpSettingsWidget::Private::model.

◆ addPaintOpOption() [3/3]

void KisPaintOpSettingsWidget::addPaintOpOption ( KisPaintOpOption * option,
QString category )
protected

Definition at line 105 of file kis_paintop_settings_widget.cpp.

106{
107 if (!option->configurationPage()) return;
108 m_d->model->addPaintOpOption(option, m_d->optionsStack->count(), option->label(), category);
109 connect(option, SIGNAL(sigSettingChanged()), SIGNAL(sigConfigurationItemChanged()));
110 m_d->optionsStack->addWidget(option->configurationPage());
111 m_d->paintOpOptions << option;
112
115 option->effectiveLodLimitations());
116}
void sigConfigurationItemChanged()
void addPaintOpOption(KisPaintOpOption *option, int widgetIndex, const QString &label, const QString &category)
QWidget * configurationPage() const
OptionalLodLimitationsReader effectiveLodLimitations() const
std::optional< lager::reader< T > > fold_optional_cursors(const Func &func, Cursors &&...cursors)
Definition KisLager.h:37
std::optional< lager::reader< KisPaintopLodLimitations > > lodLimitations

References KisPaintOpOptionListModel::addPaintOpOption(), KisPaintOpOption::configurationPage(), connect(), KisPaintOpOption::effectiveLodLimitations(), kislager::fold_optional_cursors(), KisPaintOpOption::label(), KisPaintOpSettingsWidget::Private::lodLimitations, m_d, KisPaintOpSettingsWidget::Private::model, KisPaintOpSettingsWidget::Private::optionsStack, KisPaintOpSettingsWidget::Private::paintOpOptions, and KisConfigWidget::sigConfigurationItemChanged().

◆ changePage

void KisPaintOpSettingsWidget::changePage ( const QModelIndex & index)
privateslot

Definition at line 204 of file kis_paintop_settings_widget.cpp.

205{
206 KisOptionInfo info;
207 QPalette palette;
208 palette.setColor(QPalette::Base, QColor(255,200,200));
209 palette.setColor(QPalette::Text, Qt::black);
210
211 if(m_d->model->entryAt(info, index)) {
212 m_d->optionsStack->setCurrentIndex(info.index);
213 }
214
216}
bool entryAt(TEntry &entry, QModelIndex index) const
rgba palette[MAX_PALETTE]
Definition palette.c:35

References KisCategorizedListModel< TEntry, TEntryToQStringConverter >::entryAt(), KisOptionInfo::index, m_d, KisPaintOpSettingsWidget::Private::model, notifyPageChanged(), KisPaintOpSettingsWidget::Private::optionsStack, and palette.

◆ effectiveBrushSize()

lager::reader< qreal > KisPaintOpSettingsWidget::effectiveBrushSize ( ) const
overridevirtual

Implements KisPaintOpConfigWidget.

Definition at line 163 of file kis_paintop_settings_widget.cpp.

164{
165 return lager::make_constant(1.0);
166}

◆ eventFilter()

bool KisPaintOpSettingsWidget::eventFilter ( QObject * obj,
QEvent * event )
overrideprotected

Definition at line 269 of file kis_paintop_settings_widget.cpp.

270{
271 if (event->type() == (QEvent::MouseButtonRelease) || event->type() == QEvent::TabletRelease) {
272 // bit of a hack to properly work with the KisCategorizedListView type:
273 // get the mouse position and utilize indexAt() instead of currentIndex() to
274 // ensure the pages don't swap back and forth if the user repeatedly clicks
275 // another option's checkbox too quickly
276 const QMouseEvent* mevent = static_cast<const QMouseEvent*>(event);
277 QModelIndex index = m_d->optionsList->indexAt(mevent->pos());
278 changePage(index);
279 event->accept();
280 }
281
282 return QObject::eventFilter(obj, event);
283}

References changePage(), m_d, and KisPaintOpSettingsWidget::Private::optionsList.

◆ lockProperties

void KisPaintOpSettingsWidget::lockProperties ( const QModelIndex & index)
privateslot

Definition at line 222 of file kis_paintop_settings_widget.cpp.

223{
224 KisOptionInfo info;
225 if (m_d->model->entryAt(info, index)) {
226 m_d->optionsList->setCurrentIndex(index);
229
230 if (!info.option->isLocked()){
232 info.option->setLocked(true);
233 m_d->model->categoriesMapper()->itemFromRow(index.row())->setLocked(true);
234 m_d->model->signalDataChanged(index);
235
236 }
237 else {
239 info.option->setLocked(false);
240 m_d->model->categoriesMapper()->itemFromRow(index.row())->setLocked(false);
241 m_d->model->signalDataChanged(index);
242
244 Q_EMIT sigSaveLockedConfig(p);
245 }
246 else {
247 Q_EMIT sigDropLockedConfig(p);
248 }
249 m_saveLockedOption = false;
250 }
251 }
252}
const Params2D p
DataItem * itemFromRow(int row) const
SpecificCategoriesMapper * categoriesMapper()
void sigSaveLockedConfig(KisPropertiesConfigurationSP p)
void sigDropLockedConfig(KisPropertiesConfigurationSP p)
static KisLockedPropertiesServer * instance()
void addToLockedProperties(KisPropertiesConfigurationSP p)
void removeFromLockedProperties(KisPropertiesConfigurationSP p)
void signalDataChanged(const QModelIndex &index)
void startWriteOptionSetting(KisPropertiesConfigurationSP setting) const
void setLocked(bool value)
KisPaintOpOption * option

References KisLockedPropertiesServer::addToLockedProperties(), KisCategorizedListModel< TEntry, TEntryToQStringConverter >::categoriesMapper(), KisCategorizedListModel< TEntry, TEntryToQStringConverter >::entryAt(), KisLockedPropertiesServer::instance(), KisPaintOpOption::isLocked(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::itemFromRow(), m_d, m_saveLockedOption, KisPaintOpSettingsWidget::Private::model, KisOptionInfo::option, KisPaintOpSettingsWidget::Private::optionsList, p, KisLockedPropertiesServer::removeFromLockedProperties(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::setLocked(), KisPaintOpOption::setLocked(), KisConfigWidget::sigDropLockedConfig(), KisPaintOpOptionListModel::signalDataChanged(), KisConfigWidget::sigSaveLockedConfig(), and KisPaintOpOption::startWriteOptionSetting().

◆ lodLimitations()

KisPaintopLodLimitations KisPaintOpSettingsWidget::lodLimitations ( ) const
overridevirtual

Implements KisPaintOpConfigWidget.

Definition at line 146 of file kis_paintop_settings_widget.cpp.

147{
149
150 Q_FOREACH (const KisPaintOpOption* option, m_d->paintOpOptions) {
151 if (option->isCheckable() && !option->isChecked()) continue;
152 option->lodLimitations(&l);
153 }
154
155 return l;
156}
virtual void lodLimitations(KisPaintopLodLimitations *l) const
virtual bool isCheckable() const
virtual bool isChecked() const

References KisPaintOpOption::isCheckable(), KisPaintOpOption::isChecked(), KisPaintOpOption::lodLimitations(), m_d, and KisPaintOpSettingsWidget::Private::paintOpOptions.

◆ lodLimitationsReader()

lager::reader< KisPaintopLodLimitations > KisPaintOpSettingsWidget::lodLimitationsReader ( ) const
overridevirtual

Implements KisPaintOpConfigWidget.

Definition at line 158 of file kis_paintop_settings_widget.cpp.

159{
160 return m_d->lodLimitations.value_or(lager::make_constant(KisPaintopLodLimitations()));
161}

References KisPaintOpSettingsWidget::Private::lodLimitations, and m_d.

◆ notifyPageChanged()

void KisPaintOpSettingsWidget::notifyPageChanged ( )
protectedvirtual

Definition at line 218 of file kis_paintop_settings_widget.cpp.

219{
220}

◆ setCanvasResourcesInterface()

void KisPaintOpSettingsWidget::setCanvasResourcesInterface ( KoCanvasResourcesInterfaceSP canvasResourcesInterface)
overridevirtual

Reimplemented from KisConfigWidget.

Definition at line 195 of file kis_paintop_settings_widget.cpp.

196{
198
199 Q_FOREACH (KisPaintOpOption* option, m_d->paintOpOptions) {
201 }
202}
virtual void setCanvasResourcesInterface(KoCanvasResourcesInterfaceSP canvasResourcesInterface)
virtual KoCanvasResourcesInterfaceSP canvasResourcesInterface() const
virtual void setCanvasResourcesInterface(KoCanvasResourcesInterfaceSP canvasResourcesInterface)

References KisConfigWidget::canvasResourcesInterface(), m_d, KisPaintOpSettingsWidget::Private::paintOpOptions, KisConfigWidget::setCanvasResourcesInterface(), and KisPaintOpOption::setCanvasResourcesInterface().

◆ setConfiguration()

void KisPaintOpSettingsWidget::setConfiguration ( const KisPropertiesConfigurationSP config)
overridevirtual

Reimplemented.

Implements KisPaintOpConfigWidget.

Definition at line 118 of file kis_paintop_settings_widget.cpp.

119{
120 Q_ASSERT(!config->getString("paintop").isEmpty());
122 int indexcount = 0;
123 Q_FOREACH (KisPaintOpOption* option, m_d->paintOpOptions) {
124 option->startReadOptionSetting(propertiesProxy);
125
127 KisOptionInfo info;
128 info.option = option;
129 info.index = indexcount;
130
131 m_d->model->categoriesMapper()->itemFromRow(m_d->model->indexOf(info).row())->setLocked(option->isLocked());
134 indexcount++;
135 }
136}
QModelIndex indexOf(const TEntry &entry) const
KisLockedPropertiesProxySP createLockedPropertiesProxy(KisPropertiesConfiguration *settings)
void startReadOptionSetting(const KisPropertiesConfigurationSP setting)

References KisCategorizedListModel< TEntry, TEntryToQStringConverter >::categoriesMapper(), KisLockedPropertiesServer::createLockedPropertiesProxy(), KisOptionInfo::index, KisCategorizedListModel< TEntry, TEntryToQStringConverter >::indexOf(), KisLockedPropertiesServer::instance(), KisPaintOpOption::isLocked(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::itemFromRow(), m_d, KisPaintOpSettingsWidget::Private::model, KisOptionInfo::option, KisPaintOpSettingsWidget::Private::paintOpOptions, KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::setLockable(), KisCategoriesMapper< TEntry, TEntryToQStringConverter >::DataItem::setLocked(), KisLockedPropertiesServer::setPropertiesFromLocked(), KisPaintOpOptionListModel::signalDataChanged(), and KisPaintOpOption::startReadOptionSetting().

◆ setImage()

void KisPaintOpSettingsWidget::setImage ( KisImageWSP image)
overridevirtual

Reimplemented, sets image on option widgets.

Reimplemented from KisPaintOpConfigWidget.

Definition at line 168 of file kis_paintop_settings_widget.cpp.

169{
171
172 Q_FOREACH (KisPaintOpOption* option, m_d->paintOpOptions) {
173 option->setImage(image);
174 }
175}
virtual void setImage(KisImageWSP image)
virtual void setImage(KisImageWSP image)

References m_d, KisPaintOpSettingsWidget::Private::paintOpOptions, KisPaintOpConfigWidget::setImage(), and KisPaintOpOption::setImage().

◆ setNode()

void KisPaintOpSettingsWidget::setNode ( KisNodeWSP node)
overridevirtual

Reimplemented, sets node on option widgets.

Reimplemented from KisPaintOpConfigWidget.

Definition at line 177 of file kis_paintop_settings_widget.cpp.

178{
180
181 Q_FOREACH (KisPaintOpOption* option, m_d->paintOpOptions) {
182 option->setNode(node);
183 }
184}
virtual void setNode(KisNodeWSP node)
virtual void setNode(KisNodeWSP node)

References m_d, KisPaintOpSettingsWidget::Private::paintOpOptions, KisPaintOpConfigWidget::setNode(), and KisPaintOpOption::setNode().

◆ setResourcesInterface()

void KisPaintOpSettingsWidget::setResourcesInterface ( KisResourcesInterfaceSP resourcesInterface)
overridevirtual

Reimplemented from KisPaintOpConfigWidget.

Definition at line 186 of file kis_paintop_settings_widget.cpp.

187{
189
190 Q_FOREACH (KisPaintOpOption* option, m_d->paintOpOptions) {
192 }
193}
KisResourcesInterfaceSP resourcesInterface() const
virtual void setResourcesInterface(KisResourcesInterfaceSP resourcesInterface)
virtual void setResourcesInterface(KisResourcesInterfaceSP resourcesInterface)

References m_d, KisPaintOpSettingsWidget::Private::paintOpOptions, KisPaintOpConfigWidget::resourcesInterface(), KisPaintOpConfigWidget::setResourcesInterface(), and KisPaintOpOption::setResourcesInterface().

◆ slotEntryChecked

void KisPaintOpSettingsWidget::slotEntryChecked ( const QModelIndex & index)
privateslot

Definition at line 263 of file kis_paintop_settings_widget.cpp.

264{
265 Q_UNUSED(index);
267}

References KisConfigWidget::sigConfigurationItemChanged().

◆ slotLockPropertiesDrop

void KisPaintOpSettingsWidget::slotLockPropertiesDrop ( )
privateslot

◆ slotLockPropertiesSave

void KisPaintOpSettingsWidget::slotLockPropertiesSave ( )
privateslot

◆ writeConfiguration()

void KisPaintOpSettingsWidget::writeConfiguration ( KisPropertiesConfigurationSP config) const
overridevirtual

Member Data Documentation

◆ m_d

Private* const KisPaintOpSettingsWidget::m_d
private

Definition at line 73 of file kis_paintop_settings_widget.h.

◆ m_saveLockedOption

bool KisPaintOpSettingsWidget::m_saveLockedOption
private

Definition at line 74 of file kis_paintop_settings_widget.h.


The documentation for this class was generated from the following files: