QGIS API Documentation  2.14.0-Essen
qgsstylev2.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsstylev2.h
3  ---------------------
4  begin : November 2009
5  copyright : (C) 2009 by Martin Dobias
6  email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSSTYLEV2_H
17 #define QGSSTYLEV2_H
18 
19 #include <QMap>
20 #include <QMultiMap>
21 #include <QString>
22 
23 #include <sqlite3.h>
24 
25 #include "qgssymbollayerv2utils.h" // QgsStringMap
26 
27 class QgsSymbolV2;
28 class QgsSymbolLayerV2;
30 
31 class QDomDocument;
33 
36 
57 
58 // enumerators representing sqlite DB columns
65 
66 class CORE_EXPORT QgsStyleV2 : public QObject
67 {
68  Q_OBJECT
69 
70  public:
71  QgsStyleV2();
72  ~QgsStyleV2();
73 
75 
80  enum StyleEntity { SymbolEntity, GroupEntity, TagEntity, ColorrampEntity, SmartgroupEntity };
81 
83 
90  bool addColorRamp( const QString& name, QgsVectorColorRampV2* colorRamp, bool update = false );
91 
93 
98  int addGroup( const QString& groupName, int parent = 0 );
99 
101 
106  int addSmartgroup( const QString& name, const QString& op, const QgsSmartConditionMap& conditions );
107 
109 
116  bool addSymbol( const QString& name, QgsSymbolV2* symbol, bool update = false );
117 
119 
123  int addTag( const QString& tagName );
124 
126  QgsSymbolGroupMap childGroupNames( const QString& parent = "" );
127 
129  void clear();
130 
132  QgsVectorColorRampV2* colorRamp( const QString& name );
133 
135  int colorRampCount();
136 
138  QStringList colorRampNames();
139 
141  const QgsVectorColorRampV2* colorRampRef( const QString& name ) const;
142 
145  int colorrampId( const QString& name );
146 
148  static QgsStyleV2* defaultStyle();
149 
151 
158  bool tagSymbol( StyleEntity type, const QString& symbol, const QStringList& tags );
159 
161 
168  bool detagSymbol( StyleEntity type, const QString& symbol, const QStringList& tags );
169 
171  bool removeSymbol( const QString& name );
172 
174  bool renameSymbol( const QString& oldName, const QString& newName );
175 
177  QgsSymbolV2* symbol( const QString& name );
178 
180  const QgsSymbolV2* symbolRef( const QString& name ) const;
181 
183  int symbolCount();
184 
186  QStringList symbolNames();
187 
190  int symbolId( const QString& name );
192  int groupId( const QString& group );
194  QString groupName( int groupId ) const;
196  int tagId( const QString& tag );
198  int smartgroupId( const QString& smartgroup );
199 
201  QStringList groupNames();
202 
204  QList<int> groupIds() const;
205 
207 
212  QStringList symbolsOfGroup( StyleEntity type, int groupid );
213 
215 
220  QStringList symbolsWithTag( StyleEntity type, int tagid );
221 
223 
229  bool group( StyleEntity type, const QString& name, int groupid );
230 
232 
237  void rename( StyleEntity type, int id, const QString& newName );
238 
240 
244  void remove( StyleEntity type, int id );
245 
247 
254  bool saveSymbol( const QString& name, QgsSymbolV2* symbol, int groupid, const QStringList& tags );
255 
257 
264  bool saveColorRamp( const QString& name, QgsVectorColorRampV2* ramp, int groupid, const QStringList& tags );
265 
267  bool removeColorRamp( const QString& name );
268 
270  bool renameColorRamp( const QString& oldName, const QString& newName );
271 
273  bool load( const QString& filename );
274 
276  bool save( QString filename = QString() );
277 
279  QString errorString() { return mErrorString; }
280 
282  QString fileName() { return mFileName; }
283 
285 
290  QStringList findSymbols( StyleEntity type, const QString& qword );
291 
293 
298  QStringList tagsOfSymbol( StyleEntity type, const QString& symbol );
299 
301  QgsSymbolGroupMap smartgroupsListMap();
302 
304  QStringList smartgroupNames();
305 
307  QgsSmartConditionMap smartgroup( int id );
308 
310  //clumsy implementation TODO create a class for smartgroups
311  QString smartgroupOperator( int id );
312 
314  QStringList symbolsOfSmartgroup( StyleEntity type, int id );
315 
317  bool exportXML( const QString& filename );
318 
320  bool importXML( const QString& filename );
321 
322  signals:
323  void symbolSaved( const QString& name, QgsSymbolV2* symbol );
324 
325  protected:
326 
329 
332 
334 
336 
338  bool openDB( const QString& filename );
339 
344  bool runEmptyQuery( char* query, bool freeQuery = true );
345 
347  char* getGroupRemoveQuery( int id );
348 
350  int getId( const QString& table, const QString& name );
351 
353  QString getName( const QString& table, int id ) const;
354 
356 
362  bool updateSymbol( StyleEntity type, const QString& name );
363 
364  private:
365  Q_DISABLE_COPY( QgsStyleV2 )
366 };
367 
368 
369 #endif
QString mErrorString
Definition: qgsstylev2.h:330
QString mFileName
Definition: qgsstylev2.h:331
QMultiMap< QString, QString > QgsSmartConditionMap
Definition: qgsstylev2.h:56
ColorrampTable
Definition: qgsstylev2.h:63
QString fileName()
return current file name of the style
Definition: qgsstylev2.h:282
static QgsStyleV2 * mDefaultStyle
Definition: qgsstylev2.h:335
sqlite3 * mCurrentDB
Definition: qgsstylev2.h:333
QMap< int, QString > QgsSymbolGroupMap
Definition: qgsstylev2.h:35
SymbolTable
Definition: qgsstylev2.h:59
struct sqlite3 sqlite3
QgsSymbolV2Map mSymbols
Definition: qgsstylev2.h:327
QMap< QString, QgsVectorColorRampV2 * > QgsVectorColorRampV2Map
Definition: qgsstylev2.h:32
QgsVectorColorRampV2Map mColorRamps
Definition: qgsstylev2.h:328
TagTable
Definition: qgsstylev2.h:61
TagmapTable
Definition: qgsstylev2.h:62
StyleEntity
Enum for Entities involved in a style.
Definition: qgsstylev2.h:80
SmartgroupTable
Definition: qgsstylev2.h:64
QString errorString()
return last error from load/save operation
Definition: qgsstylev2.h:279
SymgroupTable
Definition: qgsstylev2.h:60