23 QgsCombineStylesAlgorithm::QgsCombineStylesAlgorithm() =
default;
25 QgsCombineStylesAlgorithm::~QgsCombineStylesAlgorithm() =
default;
27 void QgsCombineStylesAlgorithm::initAlgorithm(
const QVariantMap & )
32 QObject::tr(
"Style files (*.xml)" ) ) );
34 const QStringList options = QStringList()
35 << QObject::tr(
"Symbols" )
36 << QObject::tr(
"Color ramps" )
37 << QObject::tr(
"Text formats" )
38 << QObject::tr(
"Label settings" );
39 addParameter(
new QgsProcessingParameterEnum( QStringLiteral(
"OBJECTS" ), QObject::tr(
"Objects to combine" ), options,
true, QVariantList() << 0 << 1 << 2 << 3 ) );
46 QString QgsCombineStylesAlgorithm::name()
const
48 return QStringLiteral(
"combinestyles" );
51 QString QgsCombineStylesAlgorithm::displayName()
const
53 return QObject::tr(
"Combine style databases" );
56 QStringList QgsCombineStylesAlgorithm::tags()
const
58 return QObject::tr(
"symbols,colors,ramps,formats,labels,text,fonts,merge" ).split(
',' );
61 QString QgsCombineStylesAlgorithm::group()
const
63 return QObject::tr(
"Cartography" );
66 QString QgsCombineStylesAlgorithm::groupId()
const
68 return QStringLiteral(
"cartography" );
71 QString QgsCombineStylesAlgorithm::shortHelpString()
const
73 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 "
74 "source databases these will be renamed to have unique names in the output combined database." );
77 QString QgsCombineStylesAlgorithm::shortDescription()
const
79 return QObject::tr(
"Combines multiple style databases into a single database." );
82 QgsCombineStylesAlgorithm *QgsCombineStylesAlgorithm::createInstance()
const
84 return new QgsCombineStylesAlgorithm();
89 const QStringList inputs = parameterAsFileList( parameters, QStringLiteral(
"INPUT" ), context );
91 QList< QgsStyle::StyleEntity > objects;
92 const QList< int > selectedObjects = parameterAsEnums( parameters, QStringLiteral(
"OBJECTS" ), context );
93 if ( selectedObjects.contains( 0 ) )
95 if ( selectedObjects.contains( 1 ) )
97 if ( selectedObjects.contains( 2 ) )
99 if ( selectedObjects.contains( 3 ) )
106 QMap< QgsStyle::StyleEntity, QSet< QString> > usedNames;
107 auto makeUniqueName = [&usedNames](
const QString & sourceName,
QgsStyle::StyleEntity type )->QString
109 QString candidate = sourceName;
114 exists = usedNames[ type ].contains( candidate );
119 candidate = sourceName + QStringLiteral(
" (%1)" ).arg( i );
122 usedNames[ type ].insert( candidate );
126 for (
const QString &source : inputs )
130 feedback->
setProgress( 100 * i /
static_cast< double >( inputs.count() ) );
131 feedback->
pushInfo( QObject::tr(
"Importing %1" ).arg( source ) );
138 feedback->
reportError( QObject::tr(
"Could not read %1" ).arg( source ) );
145 const QStringList symbolNames = sourceStyle.
symbolNames();
146 for (
const QString &name : symbolNames )
156 for (
const QString &name : colorRampNames )
166 for (
const QString &name : formatNames )
176 for (
const QString &name : formatNames )
189 feedback->
pushInfo( QObject::tr(
"Writing output file" ) );
192 const QString file = parameterAsString( parameters, QStringLiteral(
"OUTPUT" ), context );
199 results.insert( QStringLiteral(
"OUTPUT" ), file );
200 results.insert( QStringLiteral(
"SYMBOLS" ), style.
symbolCount() );
201 results.insert( QStringLiteral(
"COLORRAMPS" ), style.
colorRampCount() );
202 results.insert( QStringLiteral(
"TEXTFORMATS" ), style.
textFormatCount() );
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.
@ TypeFile
Files (i.e. non map layer sources, such as text files)
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.