1 /***************************************************************************
2                              qgscodeeditorcolorschemeregistry.h
3                              ------------------------
4     begin                : October 2020
5     copyright            : (C) 2020 by Nyall Dawson
6     email                : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  ***************************************************************************/
17 
18 #ifndef QGSCODEEDITORCOLORSCHEMEREGISTRY_H
19 #define QGSCODEEDITORCOLORSCHEMEREGISTRY_H
20 
21 #include "qgis_gui.h"
22 #include "qgscodeeditorcolorscheme.h"
23 #include <QList>
24 
25 /**
26  * \ingroup gui
27  * \class QgsCodeEditorColorSchemeRegistry
28  * \brief A registry of color schemes for use in QgsCodeEditor widgets.
29  *
30  * QgsCodeEditorColorSchemeRegistry is not usually directly created, but rather accessed through
31  * QgsGui::codeEditorColorSchemeRegistry().
32  *
33  * \since QGIS 3.16
34  */
35 class GUI_EXPORT QgsCodeEditorColorSchemeRegistry
36 {
37 
38   public:
39 
40     /**
41      * Constructor for a color scheme registry.
42      */
43     QgsCodeEditorColorSchemeRegistry();
44 
45     /**
46      * Adds a color \a scheme to the registry.
47      *
48      * Returns TRUE if the scheme was successfully added.
49      */
50     bool addColorScheme( const QgsCodeEditorColorScheme &scheme );
51 
52     /**
53      * Removes the color scheme with matching \a id from the registry.
54      *
55      * Returns TRUE if scheme was found and removed.
56      */
57     bool removeColorScheme( const QString &id );
58 
59     /**
60      * Returns a list of the QgsCodeEditorColorScheme::id() values for all registered color schemes.
61      */
62     QStringList schemes() const;
63 
64     /**
65      * Returns the color scheme with matching \a id.
66      *
67      * If the specified scheme \a id does not exist then the default scheme will be returned instead.
68      */
69     QgsCodeEditorColorScheme scheme( const QString &id ) const;
70 
71   private:
72 
73     QMap< QString, QgsCodeEditorColorScheme > mColorSchemes;
74 
75 };
76 
77 #endif // QGSCODEEDITORCOLORSCHEMEREGISTRY_H
78