23 QgsCombineStylesAlgorithm::QgsCombineStylesAlgorithm() = 
default;
 
   25 QgsCombineStylesAlgorithm::~QgsCombineStylesAlgorithm() = 
default;
 
   27 void QgsCombineStylesAlgorithm::initAlgorithm( 
const QVariantMap & )
 
   32                 QObject::tr( 
"Style files (*.xml)" ) ) );
 
   34   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.