28#include <QRegularExpression> 
   52  const QList< QVariant > recentColorVariants = settings.
value( QStringLiteral( 
"colors/recent" ) ).toList();
 
   56  const auto constRecentColorVariants = recentColorVariants;
 
   57  for ( 
const QVariant &color : constRecentColorVariants )
 
 
   71  if ( !color.isValid() )
 
   77  QColor opaqueColor = color;
 
   78  opaqueColor.setAlpha( 255 );
 
   81  QList< QVariant > recentColorVariants = settings.
value( QStringLiteral( 
"colors/recent" ) ).toList();
 
   84  for ( 
int colorIdx = recentColorVariants.length() - 1; colorIdx >= 0; --colorIdx )
 
   86    if ( ( recentColorVariants.at( colorIdx ).value<QColor>() ).name() == opaqueColor.name() )
 
   88      recentColorVariants.removeAt( colorIdx );
 
   93  const QVariant colorVariant = QVariant( opaqueColor );
 
   94  recentColorVariants.prepend( colorVariant );
 
   97  while ( recentColorVariants.count() > 20 )
 
   99    recentColorVariants.pop_back();
 
  102  settings.
setValue( QStringLiteral( 
"colors/recent" ), recentColorVariants );
 
 
  109  const QList< QVariant > recentColorVariants = settings.
value( QStringLiteral( 
"colors/recent" ) ).toList();
 
  111  if ( recentColorVariants.isEmpty() )
 
  114  return recentColorVariants.at( 0 ).value<QColor>();
 
 
  120  Q_UNUSED( baseColor )
 
  127  if ( !settings.
contains( QStringLiteral( 
"/colors/palettecolors" ) ) )
 
  130    colorList.append( qMakePair( QColor( 0, 0, 0 ), QString() ) );
 
  131    colorList.append( qMakePair( QColor( 255, 255, 255 ), QString() ) );
 
  132    colorList.append( qMakePair( QColor( 166, 206, 227 ), QString() ) );
 
  133    colorList.append( qMakePair( QColor( 31, 120, 180 ), QString() ) );
 
  134    colorList.append( qMakePair( QColor( 178, 223, 138 ), QString() ) );
 
  135    colorList.append( qMakePair( QColor( 51, 160, 44 ), QString() ) );
 
  136    colorList.append( qMakePair( QColor( 251, 154, 153 ), QString() ) );
 
  137    colorList.append( qMakePair( QColor( 227, 26, 28 ), QString() ) );
 
  138    colorList.append( qMakePair( QColor( 253, 191, 111 ), QString() ) );
 
  139    colorList.append( qMakePair( QColor( 255, 127, 0 ), QString() ) );
 
  144  QList< QVariant > customColorVariants = settings.
value( QStringLiteral( 
"colors/palettecolors" ) ).toList();
 
  145  const QList< QVariant > customColorLabels = settings.
value( QStringLiteral( 
"colors/palettelabels" ) ).toList();
 
  149  for ( QList< QVariant >::iterator it = customColorVariants.begin();
 
  150        it != customColorVariants.end(); ++it )
 
  152    const QColor color = ( *it ).value<QColor>();
 
  154    if ( customColorLabels.length() > colorIndex )
 
  156      label = customColorLabels.at( colorIndex ).toString();
 
  159    colorList.append( qMakePair( color, label ) );
 
 
  169  Q_UNUSED( baseColor )
 
  173  QList< QVariant > customColors;
 
  174  QList< QVariant > customColorLabels;
 
  176  QgsNamedColorList::const_iterator colorIt = colors.constBegin();
 
  177  for ( ; colorIt != colors.constEnd(); ++colorIt )
 
  179    const QVariant color = ( *colorIt ).first;
 
  180    const QVariant label = ( *colorIt ).second;
 
  181    customColors.append( color );
 
  182    customColorLabels.append( label );
 
  184  settings.
setValue( QStringLiteral( 
"colors/palettecolors" ), customColors );
 
  185  settings.
setValue( QStringLiteral( 
"colors/palettelabels" ), customColorLabels );
 
 
  198  Q_UNUSED( baseColor )
 
  207  for ( QStringList::iterator it = colorStrings.begin();
 
  208        it != colorStrings.end(); ++it )
 
  212    if ( colorLabels.length() > colorIndex )
 
  214      label = colorLabels.at( colorIndex );
 
  217    colorList.append( qMakePair( color, label ) );
 
 
  227  Q_UNUSED( baseColor )
 
 
  245  Q_UNUSED( baseColor )
 
  248  if ( sourceFilePath.isEmpty() )
 
  256  QFile sourceFile( sourceFilePath );
 
 
  263  Q_UNUSED( baseColor )
 
  266  if ( destFilePath.isEmpty() )
 
  271  QFile destFile( destFilePath );
 
 
  293  : mFilename( filename )
 
  298  if ( sourceFile.open( QIODevice::ReadOnly ) )
 
  300    QTextStream in( &sourceFile );
 
  304    while ( !in.atEnd() && !line.startsWith( QLatin1String( 
"Name:" ) ) )
 
  306      line = in.readLine();
 
  310      const thread_local QRegularExpression rx( 
"Name:\\s*(\\S.*)$" );
 
  311      const QRegularExpressionMatch match = rx.match( line );
 
  312      if ( match.hasMatch() )
 
  314        mName = match.captured( 1 );
 
  318  if ( 
mName.isEmpty() )
 
  327  mEditable = !sourceFileInfo.exists() || sourceFileInfo.isWritable();
 
 
  345  const QStringList showInMenuSchemes = s.
value( QStringLiteral( 
"/colors/showInMenuList" ) ).toStringList();
 
  347  if ( showInMenuSchemes.contains( 
mName ) )
 
 
  358  if ( filePath.isEmpty() )
 
  364  if ( ! QFile::exists( filePath ) )
 
  370  return QFile::remove( filePath );
 
 
  376  QStringList showInMenuSchemes = s.
value( QStringLiteral( 
"/colors/showInMenuList" ) ).toStringList();
 
  378  if ( show && !showInMenuSchemes.contains( 
mName ) )
 
  380    showInMenuSchemes << 
mName;
 
  382  else if ( !show && showInMenuSchemes.contains( 
mName ) )
 
  384    showInMenuSchemes.removeAll( 
mName );
 
  387  s.
setValue( QStringLiteral( 
"/colors/showInMenuList" ), showInMenuSchemes );
 
 
  395  if ( !localDir.mkpath( palettesDir ) )
 
  400  return QDir( palettesDir ).filePath( 
mFilename );
 
 
static QgsColorSchemeRegistry * colorSchemeRegistry()
Returns the application's color scheme registry, used for managing color schemes.
 
static QString qgisSettingsDirPath()
Returns the path to the settings directory in user's home dir.
 
void setRandomStyleColorScheme(QgsColorScheme *scheme)
Sets the color scheme to use when fetching random colors to use for symbol styles.
 
@ ShowInColorButtonMenu
Show scheme in color button drop-down menu.
 
virtual QString schemeName() const =0
Gets the name for the color scheme.
 
virtual bool setColors(const QgsNamedColorList &colors, const QString &context=QString(), const QColor &baseColor=QColor())
Sets the colors for the scheme.
 
virtual SchemeFlags flags() const
Returns the current flags for the color scheme.
 
QFlags< SchemeFlag > SchemeFlags
 
static QColor colorFromString(const QString &string)
Decodes a string into a color value.
 
A color scheme which contains custom colors set through QGIS app options dialog.
 
QgsNamedColorList fetchColors(const QString &context=QString(), const QColor &baseColor=QColor()) override
Gets a list of colors from the scheme.
 
bool setColors(const QgsNamedColorList &colors, const QString &context=QString(), const QColor &baseColor=QColor()) override
Sets the colors for the scheme.
 
QgsCustomColorScheme * clone() const override
Clones a color scheme.
 
QgsCustomColorScheme()=default
 
virtual QString gplFilePath()=0
Returns the file path for the associated gpl palette file.
 
QgsNamedColorList fetchColors(const QString &context=QString(), const QColor &baseColor=QColor()) override
Gets a list of colors from the scheme.
 
bool setColors(const QgsNamedColorList &colors, const QString &context=QString(), const QColor &baseColor=QColor()) override
Sets the colors for the scheme.
 
A color scheme which contains project specific colors set through project properties dialog.
 
QgsProjectColorScheme * clone() const override
Clones a color scheme.
 
bool setColors(const QgsNamedColorList &colors, const QString &context=QString(), const QColor &baseColor=QColor()) override
Sets the colors for the scheme.
 
QgsProjectColorScheme()=default
 
QgsNamedColorList fetchColors(const QString &context=QString(), const QColor &baseColor=QColor()) override
Gets a list of colors from the scheme.
 
static QgsProject * instance()
Returns the QgsProject singleton instance.
 
void setProjectColors(const QgsNamedColorList &colors)
Sets the colors for the project's color scheme (see QgsProjectColorScheme).
 
QStringList readListEntry(const QString &scope, const QString &key, const QStringList &def=QStringList(), bool *ok=nullptr) const
Reads a string list from the specified scope and key.
 
A color scheme which contains the most recently used colors.
 
QgsRecentColorScheme()=default
 
QgsNamedColorList fetchColors(const QString &context=QString(), const QColor &baseColor=QColor()) override
Gets a list of colors from the scheme.
 
static QColor lastUsedColor()
Returns the most recently used color.
 
QgsRecentColorScheme * clone() const override
Clones a color scheme.
 
static void addRecentColor(const QColor &color)
Adds a color to the list of recent colors.
 
Stores settings for use within QGIS.
 
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
 
bool contains(const QString &key, QgsSettings::Section section=QgsSettings::NoSection) const
Returns true if there exists a setting called key; returns false otherwise.
 
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
 
static bool saveColorsToGpl(QFile &file, const QString &paletteName, const QgsNamedColorList &colors)
Exports colors to a gpl GIMP palette file.
 
static QgsNamedColorList importColorsFromGpl(QFile &file, bool &ok, QString &name)
Imports colors from a gpl GIMP palette file.
 
static QString colorToName(const QColor &color)
Returns a friendly display name for a color.
 
A color scheme which stores its colors in a gpl palette file within the "palettes" subfolder off the ...
 
QString schemeName() const override
Gets the name for the color scheme.
 
QgsUserColorScheme(const QString &filename)
Constructs a new user color scheme, using a specified gpl palette file.
 
QgsColorScheme::SchemeFlags flags() const override
Returns the current flags for the color scheme.
 
QString gplFilePath() override
Returns the file path for the associated gpl palette file.
 
bool erase()
Erases the associated gpl palette file from the users "palettes" folder.
 
void setShowSchemeInMenu(bool show)
Sets whether a this scheme should be shown in color button menus.
 
QgsUserColorScheme * clone() const override
Clones a color scheme.
 
QList< QPair< QColor, QString > > QgsNamedColorList
List of colors paired with a friendly display name identifying the color.