Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_dlg_layer_style.cpp File Reference
#include "kis_dlg_layer_style.h"
#include <QBuffer>
#include <QCheckBox>
#include <QDial>
#include <QInputDialog>
#include <QItemSelectionModel>
#include <QListWidget>
#include <QListWidgetItem>
#include <QSpinBox>
#include <QStackedWidget>
#include <QTreeWidget>
#include <QUuid>
#include <QWidget>
#include <KoColorPopupButton.h>
#include <KoColorSpaceRegistry.h>
#include <KoResourceServerProvider.h>
#include <KoMD5Generator.h>
#include <KisResourceLoaderRegistry.h>
#include "KisResourceTypes.h"
#include "kis_asl_layer_style_serializer.h"
#include "kis_config.h"
#include "kis_cmb_contour.h"
#include "kis_cmb_gradient.h"
#include "KisResourceServerProvider.h"
#include "kis_psd_layer_style.h"
#include <KisAslStorage.h>
#include <KisResourceLocator.h>
#include <KisSpinBoxI18nHelper.h>
#include <KisStorageModel.h>
#include <KisResourceUserOperations.h>
#include "kis_signals_blocker.h"
#include "kis_signal_compressor.h"
#include "kis_canvas_resource_provider.h"
#include <KisGlobalResourcesInterface.h>
#include <KisLocalStrokeResources.h>
#include <KisRequiredResourcesOperators.h>
#include <KisResourceModelProvider.h>
#include <KoFileDialog.h>
#include <QMessageBox>

Go to the source code of this file.

Classes

class  StyleItem
 

Functions

bool checkCustomNameAvailable (const QString &name)
 
KoAbstractGradientSP cloneAndPrepareGradientFromGUI (KoAbstractGradientSP gradient)
 
QString createNewAslPath (QString resourceFolderPath, QString filename)
 
KoAbstractGradientSP fetchGradientLazy (KoResourceSignature signature, KisResourcesInterfaceSP resourcesInterface)
 
KoPatternSP fetchPatternLazy (KoResourceSignature signature, KisResourcesInterfaceSP resourcesInterface)
 
template<typename Type , typename TypeSP = QSharedPointer<Type>>
TypeSP fetchResourceLazy (KoResourceSignature signature, KisResourcesInterfaceSP resourcesInterface)
 
QString selectAvailableStyleName (const QString &name)
 

Function Documentation

◆ checkCustomNameAvailable()

bool checkCustomNameAvailable ( const QString & name)

Definition at line 288 of file kis_dlg_layer_style.cpp.

289{
290 Q_UNUSED(name);
291 const QString customName = "CustomStyles.asl";
293 KoResourceSP resource = server->resource("", "", customName);
294 return !resource;
295}
static KisResourceServerProvider * instance()
KoResourceServer< KisPSDLayerStyle > * layerStyleServer()
QSharedPointer< T > resource(const QString &md5, const QString &fileName, const QString &name)
resource retrieves a resource. If the md5sum is not empty, the resource will only be retrieved if a r...

References KisResourceServerProvider::instance(), KisResourceServerProvider::layerStyleServer(), and KoResourceServer< T >::resource().

◆ cloneAndPrepareGradientFromGUI()

KoAbstractGradientSP cloneAndPrepareGradientFromGUI ( KoAbstractGradientSP gradient)

Definition at line 80 of file kis_dlg_layer_style.cpp.

81{
82 KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(gradient, nullptr);
83
84 auto clonedGradient = gradient->clone().dynamicCast<KoAbstractGradient>();
85
86 {
87 QBuffer buf;
88 buf.open(QFile::WriteOnly);
89 clonedGradient->saveToDevice(&buf);
90 buf.close();
91 clonedGradient->setMD5Sum(KoMD5Generator::generateHash(buf.data()));
92 }
93
94 clonedGradient->updatePreview();
95
96 return clonedGradient;
97}
static QString generateHash(const QString &filename)
generateHash reads the given file and generates a hex-encoded md5sum for the file.
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129

References KoMD5Generator::generateHash(), and KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE.

◆ createNewAslPath()

QString createNewAslPath ( QString resourceFolderPath,
QString filename )

Definition at line 370 of file kis_dlg_layer_style.cpp.

371{
372 return resourceFolderPath + '/' + "asl" + '/' + filename;
373}

◆ fetchGradientLazy()

KoAbstractGradientSP fetchGradientLazy ( KoResourceSignature signature,
KisResourcesInterfaceSP resourcesInterface )

Definition at line 70 of file kis_dlg_layer_style.cpp.

71{
72 return fetchResourceLazy<KoAbstractGradient>(signature, resourcesInterface);
73}

◆ fetchPatternLazy()

KoPatternSP fetchPatternLazy ( KoResourceSignature signature,
KisResourcesInterfaceSP resourcesInterface )

Definition at line 75 of file kis_dlg_layer_style.cpp.

76{
77 return fetchResourceLazy<KoPattern>(signature, resourcesInterface);
78}

◆ fetchResourceLazy()

template<typename Type , typename TypeSP = QSharedPointer<Type>>
TypeSP fetchResourceLazy ( KoResourceSignature signature,
KisResourcesInterfaceSP resourcesInterface )

Definition at line 54 of file kis_dlg_layer_style.cpp.

56{
57 if (signature.type.isEmpty()) return nullptr;
58
59 auto source = resourcesInterface->source<Type>(signature.type);
60
61 auto resource = source.bestMatch(signature.md5sum, signature.filename, signature.name);
62 if (!resource) {
63 qWarning() << "WARNING: failed to find a resource for layer sytle" << signature;
64 resource = source.fallbackResource();
65 }
66
67 return resource ? resource->clone().template dynamicCast<Type>() : nullptr;
68}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)

References KoResourceSignature::filename, KoResourceSignature::md5sum, KoResourceSignature::name, source(), and KoResourceSignature::type.

◆ selectAvailableStyleName()

QString selectAvailableStyleName ( const QString & name)

Definition at line 297 of file kis_dlg_layer_style.cpp.

298{
299 QString finalName = name;
300 if (checkCustomNameAvailable(finalName)) {
301 return finalName;
302 }
303
304 int i = 0;
305
306 do {
307 finalName = QString("%1%2").arg(name).arg(i++);
308 } while (!checkCustomNameAvailable(finalName));
309
310 return finalName;
311}
bool checkCustomNameAvailable(const QString &name)
const char * name(StandardAction id)

References checkCustomNameAvailable().