Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_brush_hud_properties_config.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QDomDocument>
10#include <QDomElement>
11
12#include "kis_config.h"
13#include "kis_dom_utils.h"
14
15
17{
18 QDomDocument doc;
19 QDomElement root;
20
21 void readConfig();
22 void writeConfig();
23
24 QDomDocument createDocument();
25};
26
32
33
38
40{
41 QDomElement el = m_d->doc.createElement(paintOpId);
42
43 KisDomUtils::saveValue(&el, "properties_list", ids);
44
45 QDomElement oldEl = m_d->root.firstChildElement(paintOpId);
46 if (!oldEl.isNull()) {
47 m_d->root.replaceChild(el, oldEl);
48 } else {
49 m_d->root.appendChild(el);
50 }
51}
52
54{
55 QList<QString> result;
56 QDomElement el;
57 QStringList errors;
58
59 if (KisDomUtils::findOnlyElement(m_d->root, paintOpId, &el, &errors)) {
60 KisDomUtils::loadValue(el, "properties_list", &result);
61 }
62
63 return result;
64}
65
67{
68 KisConfig cfg(true);
69 doc = QDomDocument();
70
71 QString docContent = cfg.brushHudSetting();
72 if (!docContent.isNull()) {
73 doc.setContent(docContent);
74 root = doc.firstChildElement("hud_properties");
75
76 int version = -1;
77 if (!KisDomUtils::loadValue(root, "version", &version) ||
78 version != 1) {
79
80 warnKrita << "Unknown Brush HUD XML document type or version!";
81 doc = QDomDocument();
82 }
83 }
84
85 if (doc.isNull()) {
86 doc = QDomDocument("hud_properties");
87 root = doc.createElement("hud_properties");
88 doc.appendChild(root);
89
90 KisDomUtils::saveValue(&root, "version", 1);
91 }
92}
93
95{
96 KisConfig cfg(false);
97 cfg.setBrushHudSetting(doc.toString());
98}
99
101 const QString &paintOpId,
102 const QList<KisUniformPaintOpPropertySP> &allProperties,
103 QList<KisUniformPaintOpPropertySP> *chosenProperties,
104 QList<KisUniformPaintOpPropertySP> *skippedProperties) const {
105
106 QList<QString> selectedIds = selectedProperties(paintOpId);
107 *skippedProperties = allProperties;
108
109 Q_FOREACH (const QString &id, selectedIds) {
110 auto it = std::find_if(skippedProperties->begin(),
111 skippedProperties->end(),
113
114 if (it != skippedProperties->end()) {
115 *chosenProperties << *it;
116 it = skippedProperties->erase(it);
117 } else {
118 warnKrita << "Filtering HUD properties: property \"" << id << "\" does not exist!";
119 ++it;
120 }
121 }
122}
123
125{
126 return &m_d->doc;
127}
void setSelectedProperties(const QString &paintOpId, const QList< QString > &ids)
const QScopedPointer< Private > m_d
void filterProperties(const QString &paintOpId, const QList< KisUniformPaintOpPropertySP > &allProperties, QList< KisUniformPaintOpPropertySP > *chosenProperties, QList< KisUniformPaintOpPropertySP > *skippedProperties) const
QList< QString > selectedProperties(const QString &paintOpId) const
void setBrushHudSetting(const QString &value) const
QString brushHudSetting(bool defaultValue=false) const
#define warnKrita
Definition kis_debug.h:87
void saveValue(QDomElement *parent, const QString &tag, const QSize &size)
bool findOnlyElement(const QDomElement &parent, const QString &tag, QDomElement *el, QStringList *errorMessages)
bool loadValue(const QDomElement &e, float *v)
auto mem_equal_to(MemTypeNoRef Class::*ptr, MemType &&value)
mem_equal_to is an unary functor that compares a member of the object to a given value
Definition KisMpl.h:233