Skip to content

Commit f7f4c74

Browse files
committedAug 16, 2014
Add method for editing color scheme colors
1 parent ff28fe9 commit f7f4c74

File tree

3 files changed

+74
-1
lines changed

3 files changed

+74
-1
lines changed
 

‎python/core/qgscolorscheme.sip

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,24 @@ class QgsColorScheme
4040
virtual QgsNamedColorList fetchColors( const QString context = QString(),
4141
const QColor baseColor = QColor() ) = 0;
4242

43+
/**Returns whether the color scheme is editable
44+
* @returns true if scheme is editable
45+
* @see setColors
46+
*/
47+
virtual bool isEditable() const;
48+
49+
/**Sets the colors for the scheme. This method is only valid for editable color schemes.
50+
* @param colors list of colors for the scheme
51+
* @param context to set colors for
52+
* @param baseColor base color to set colors for
53+
* @returns true if colors were set successfully
54+
* @see isEditable
55+
*/
56+
virtual bool setColors( const QgsNamedColorList colors, const QString context = QString(), const QColor baseColor = QColor() );
57+
58+
/**Clones a color scheme
59+
* @returns copy of color scheme
60+
*/
4361
virtual QgsColorScheme* clone() const = 0 /Factory/;
4462

4563
}; // class QgsColorScheme
@@ -90,6 +108,10 @@ class QgsCustomColorScheme : QgsColorScheme
90108

91109
virtual QgsNamedColorList fetchColors( const QString context = QString(),
92110
const QColor baseColor = QColor() );
111+
112+
virtual bool isEditable() const;
113+
114+
virtual bool setColors( const QgsNamedColorList colors, const QString context = QString(), const QColor baseColor = QColor() );
93115

94116
QgsColorScheme* clone() const /Factory/;
95117
}; // class QgsCustomColorScheme

‎src/core/qgscolorscheme.cpp

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ QgsColorScheme::~QgsColorScheme()
3030

3131
}
3232

33+
bool QgsColorScheme::setColors( const QgsNamedColorList colors, const QString context, const QColor baseColor )
34+
{
35+
//base implementation does nothing
36+
Q_UNUSED( colors );
37+
Q_UNUSED( context );
38+
Q_UNUSED( baseColor );
39+
return false;
40+
}
41+
3342

3443
//
3544
// QgsRecentColorScheme
@@ -90,7 +99,7 @@ QgsNamedColorList QgsCustomColorScheme::fetchColors( const QString context, cons
9099
QSettings settings;
91100

92101
//check if settings contains custom palette
93-
if ( !settings.contains( QString( "/colors/ypalettecolors" ) ) )
102+
if ( !settings.contains( QString( "/colors/palettecolors" ) ) )
94103
{
95104
//no custom palette, return default colors
96105
colorList.append( qMakePair( QColor( "#000000" ), QString() ) );
@@ -129,6 +138,29 @@ QgsNamedColorList QgsCustomColorScheme::fetchColors( const QString context, cons
129138
return colorList;
130139
}
131140

141+
bool QgsCustomColorScheme::setColors( const QgsNamedColorList colors, const QString context, const QColor baseColor )
142+
{
143+
Q_UNUSED( context );
144+
Q_UNUSED( baseColor );
145+
146+
// save colors to settings
147+
QSettings settings;
148+
QList< QVariant > customColors;
149+
QList< QVariant > customColorLabels;
150+
151+
QgsNamedColorList::const_iterator colorIt = colors.constBegin();
152+
for ( ; colorIt != colors.constEnd(); ++colorIt )
153+
{
154+
QVariant color = ( *colorIt ).first;
155+
QVariant label = ( *colorIt ).second;
156+
customColors.append( color );
157+
customColorLabels.append( label );
158+
}
159+
settings.setValue( QString( "/colors/palettecolors" ), customColors );
160+
settings.setValue( QString( "/colors/palettelabels" ), customColorLabels );
161+
return true;
162+
}
163+
132164
QgsColorScheme *QgsCustomColorScheme::clone() const
133165
{
134166
return new QgsCustomColorScheme();

‎src/core/qgscolorscheme.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,21 @@ class CORE_EXPORT QgsColorScheme
6262
virtual QgsNamedColorList fetchColors( const QString context = QString(),
6363
const QColor baseColor = QColor() ) = 0;
6464

65+
/**Returns whether the color scheme is editable
66+
* @returns true if scheme is editable
67+
* @see setColors
68+
*/
69+
virtual bool isEditable() const { return false; }
70+
71+
/**Sets the colors for the scheme. This method is only valid for editable color schemes.
72+
* @param colors list of colors for the scheme
73+
* @param context to set colors for
74+
* @param baseColor base color to set colors for
75+
* @returns true if colors were set successfully
76+
* @see isEditable
77+
*/
78+
virtual bool setColors( const QgsNamedColorList colors, const QString context = QString(), const QColor baseColor = QColor() );
79+
6580
/**Clones a color scheme
6681
* @returns copy of color scheme
6782
*/
@@ -108,6 +123,10 @@ class CORE_EXPORT QgsCustomColorScheme : public QgsColorScheme
108123
virtual QgsNamedColorList fetchColors( const QString context = QString(),
109124
const QColor baseColor = QColor() );
110125

126+
virtual bool isEditable() const { return true; }
127+
128+
virtual bool setColors( const QgsNamedColorList colors, const QString context = QString(), const QColor baseColor = QColor() );
129+
111130
QgsColorScheme* clone() const;
112131
};
113132

0 commit comments

Comments
 (0)
Please sign in to comment.