23QgsCombineStylesAlgorithm::QgsCombineStylesAlgorithm() =
default;
25QgsCombineStylesAlgorithm::~QgsCombineStylesAlgorithm() =
default;
27void QgsCombineStylesAlgorithm::initAlgorithm(
const QVariantMap & )
33 const QStringList options = QStringList()
34 << QObject::tr(
"Symbols" )
35 << QObject::tr(
"Color ramps" )
36 << QObject::tr(
"Text formats" )
37 << QObject::tr(
"Label settings" );
38 addParameter(
new QgsProcessingParameterEnum( QStringLiteral(
"OBJECTS" ), QObject::tr(
"Objects to combine" ), options,
true, QVariantList() << 0 << 1 << 2 << 3 ) );
45QString QgsCombineStylesAlgorithm::name()
const
47 return QStringLiteral(
"combinestyles" );
50QString QgsCombineStylesAlgorithm::displayName()
const
52 return QObject::tr(
"Combine style databases" );
55QStringList QgsCombineStylesAlgorithm::tags()
const
57 return QObject::tr(
"symbols,colors,ramps,formats,labels,text,fonts,merge" ).split(
',' );
60QString QgsCombineStylesAlgorithm::group()
const
62 return QObject::tr(
"Cartography" );
65QString QgsCombineStylesAlgorithm::groupId()
const
67 return QStringLiteral(
"cartography" );
70QString QgsCombineStylesAlgorithm::shortHelpString()
const
72 return QObject::tr(
"This algorithm combines multiple QGIS style databases into a single style database. If any symbols exist with duplicate names between the different "
73 "source databases these will be renamed to have unique names in the output combined database." );
76QString QgsCombineStylesAlgorithm::shortDescription()
const
78 return QObject::tr(
"Combines multiple style databases into a single database." );
81QgsCombineStylesAlgorithm *QgsCombineStylesAlgorithm::createInstance()
const
83 return new QgsCombineStylesAlgorithm();
88 const QStringList inputs = parameterAsFileList( parameters, QStringLiteral(
"INPUT" ), context );
90 QList<QgsStyle::StyleEntity> objects;
91 const QList<int> selectedObjects = parameterAsEnums( parameters, QStringLiteral(
"OBJECTS" ), context );
92 if ( selectedObjects.contains( 0 ) )
94 if ( selectedObjects.contains( 1 ) )
96 if ( selectedObjects.contains( 2 ) )
98 if ( selectedObjects.contains( 3 ) )
105 QMap<QgsStyle::StyleEntity, QSet<QString>> usedNames;
106 auto makeUniqueName = [&usedNames](
const QString &sourceName,
QgsStyle::StyleEntity type ) -> QString {
107 QString candidate = sourceName;
112 exists = usedNames[type].contains( candidate );
117 candidate = sourceName + QStringLiteral(
" (%1)" ).arg( i );
120 usedNames[type].insert( candidate );
124 for (
const QString &source : inputs )
128 feedback->
setProgress( 100 * i /
static_cast<double>( inputs.count() ) );
129 feedback->
pushInfo( QObject::tr(
"Importing %1" ).arg( source ) );
136 feedback->
reportError( QObject::tr(
"Could not read %1" ).arg( source ) );
143 const QStringList symbolNames = sourceStyle.
symbolNames();
144 for (
const QString &name : symbolNames )
154 for (
const QString &name : colorRampNames )
164 for (
const QString &name : formatNames )
174 for (
const QString &name : formatNames )
187 feedback->
pushInfo( QObject::tr(
"Writing output file" ) );
190 const QString file = parameterAsString( parameters, QStringLiteral(
"OUTPUT" ), context );
197 results.insert( QStringLiteral(
"OUTPUT" ), file );
198 results.insert( QStringLiteral(
"SYMBOLS" ), style.
symbolCount() );
199 results.insert( QStringLiteral(
"COLORRAMPS" ), style.
colorRampCount() );
200 results.insert( QStringLiteral(
"TEXTFORMATS" ), style.
textFormatCount() );
@ File
Files (i.e. non map layer sources, such as text files)
void setProgress(double progress)
Sets the current progress for the feedback object.
Contains information about the context in which a processing algorithm is executed.
Custom exception class for processing related exceptions.
Base class for providing feedback from a processing algorithm.
virtual void pushInfo(const QString &info)
Pushes a general informational message from the algorithm.
virtual void reportError(const QString &error, bool fatalError=false)
Reports that the algorithm encountered an error while executing.
A numeric output for processing algorithms.
An enum based parameter for processing algorithms, allowing for selection from predefined values.
A generic file based destination parameter, for specifying the destination path for a file (non-map l...
A parameter for processing algorithms which accepts multiple map layers.
int colorRampCount()
Returns count of color ramps.
QgsTextFormat textFormat(const QString &name) const
Returns the text format with the specified name.
bool tagSymbol(StyleEntity type, const QString &symbol, const QStringList &tags)
Tags the symbol with the tags in the list.
QStringList textFormatNames() const
Returns a list of names of text formats in the style.
bool addColorRamp(const QString &name, QgsColorRamp *colorRamp, bool update=false)
Adds a color ramp to the style.
QgsSymbol * symbol(const QString &name)
Returns a NEW copy of symbol.
int labelSettingsCount() const
Returns count of label settings in the style.
StyleEntity
Enum for Entities involved in a style.
@ LabelSettingsEntity
Label settings.
@ TextFormatEntity
Text formats.
@ ColorrampEntity
Color ramps.
QStringList tagsOfSymbol(StyleEntity type, const QString &symbol)
Returns the tags associated with the symbol.
QStringList colorRampNames() const
Returns a list of names of color ramps.
int textFormatCount() const
Returns count of text formats in the style.
bool exportXml(const QString &filename)
Exports the style as a XML file.
QgsColorRamp * colorRamp(const QString &name) const
Returns a new copy of the specified color ramp.
int symbolCount()
Returns count of symbols in style.
bool createMemoryDatabase()
Creates a temporary memory database.
QStringList labelSettingsNames() const
Returns a list of names of label settings in the style.
bool addTextFormat(const QString &name, const QgsTextFormat &format, bool update=false)
Adds a text format with the specified name to the style.
QgsPalLayerSettings labelSettings(const QString &name) const
Returns the label settings with the specified name.
bool addSymbol(const QString &name, QgsSymbol *symbol, bool update=false)
Adds a symbol to style and takes symbol's ownership.
QStringList symbolNames() const
Returns a list of names of symbols.
bool importXml(const QString &filename)
Imports the symbols and colorramps into the default style database from the given XML file.
bool addLabelSettings(const QString &name, const QgsPalLayerSettings &settings, bool update=false)
Adds label settings with the specified name to the style.