|
QGIS API Documentation
master-28efcda
|
00001 /*************************************************************************** 00002 qgsstylev2.h 00003 --------------------- 00004 begin : November 2009 00005 copyright : (C) 2009 by Martin Dobias 00006 email : wonder dot sk at gmail dot com 00007 *************************************************************************** 00008 * * 00009 * This program is free software; you can redistribute it and/or modify * 00010 * it under the terms of the GNU General Public License as published by * 00011 * the Free Software Foundation; either version 2 of the License, or * 00012 * (at your option) any later version. * 00013 * * 00014 ***************************************************************************/ 00015 00016 #ifndef QGSSTYLEV2_H 00017 #define QGSSTYLEV2_H 00018 00019 #include <QMap> 00020 #include <QMultiMap> 00021 #include <QString> 00022 00023 #include <sqlite3.h> 00024 00025 #include "qgssymbollayerv2utils.h" // QgsStringMap 00026 00027 class QgsSymbolV2; 00028 class QgsSymbolLayerV2; 00029 class QgsVectorColorRampV2; 00030 00031 class QDomDocument; 00032 class QDomElement; 00033 00034 typedef QMap<QString, QgsVectorColorRampV2* > QgsVectorColorRampV2Map; 00035 typedef QMap<int, QString> QgsSymbolGroupMap; 00036 00056 typedef QMultiMap<QString, QString> QgsSmartConditionMap; 00057 00058 // enumerators representing sqlite DB columns 00059 enum SymbolTable { SymbolId, SymbolName, SymbolXML, SymbolGroupId }; 00060 enum SymgroupTable { SymgroupId, SymgroupName, SymgroupParent }; 00061 enum TagTable { TagId, TagName }; 00062 enum TagmapTable { TagmapTagId, TagmapSymbolId }; 00063 enum ColorrampTable { ColorrampId, ColorrampName, ColorrampXML, ColorrampGroupId }; 00064 enum SmartgroupTable { SmartgroupId, SmartgroupName, SmartgroupXML }; 00065 00066 class CORE_EXPORT QgsStyleV2 00067 { 00068 public: 00069 QgsStyleV2(); 00070 ~QgsStyleV2(); 00071 00073 00078 enum StyleEntity { SymbolEntity, GroupEntity, TagEntity, ColorrampEntity, SmartgroupEntity }; 00079 00081 00088 bool addColorRamp( QString name, QgsVectorColorRampV2* colorRamp, bool update = false ); 00089 00091 00096 int addGroup( QString groupName, int parent = 0 ); 00097 00099 00104 int addSmartgroup( QString name, QString op, QgsSmartConditionMap conditions ); 00105 00107 00114 bool addSymbol( QString name, QgsSymbolV2* symbol, bool update = false ); 00115 00117 00121 int addTag( QString tagName ); 00122 00124 QgsSymbolGroupMap childGroupNames( QString parent = "" ); 00125 00127 void clear(); 00128 00130 QgsVectorColorRampV2* colorRamp( QString name ); 00131 00133 int colorRampCount(); 00134 00136 QStringList colorRampNames(); 00137 00139 const QgsVectorColorRampV2* colorRampRef( QString name ) const; 00140 00143 int colorrampId( QString name ); 00144 00146 static QgsStyleV2* defaultStyle(); 00147 00149 00156 bool tagSymbol( StyleEntity type, QString symbol, QStringList tags ); 00157 00159 00166 bool detagSymbol( StyleEntity type, QString symbol, QStringList tags ); 00167 00169 bool removeSymbol( QString name ); 00170 00173 bool renameSymbol( QString oldName, QString newName ); 00174 00176 QgsSymbolV2* symbol( QString name ); 00177 00179 const QgsSymbolV2* symbolRef( QString name ) const; 00180 00182 int symbolCount(); 00183 00185 QStringList symbolNames(); 00186 00189 int symbolId( QString name ); 00191 int groupId( QString group ); 00193 int tagId( QString tag ); 00195 int smartgroupId( QString smartgroup ); 00196 00198 QStringList groupNames(); 00199 00201 00206 QStringList symbolsOfGroup( StyleEntity type, int groupid ); 00207 00209 00214 QStringList symbolsWithTag( StyleEntity type, int tagid ); 00215 00217 00223 bool group( StyleEntity type, QString name, int groupid ); 00224 00226 00231 void rename( StyleEntity type, int id, QString newName ); 00232 00234 00238 void remove( StyleEntity type, int id ); 00239 00241 00248 bool saveSymbol( QString name, QgsSymbolV2* symbol, int groupid, QStringList tags ); 00249 00251 00258 bool saveColorRamp( QString name, QgsVectorColorRampV2* ramp, int groupid, QStringList tags ); 00259 00261 bool removeColorRamp( QString name ); 00262 00265 bool renameColorRamp( QString oldName, QString newName ); 00266 00267 00269 bool load( QString filename ); 00270 00272 bool save( QString filename = QString() ); 00273 00275 QString errorString() { return mErrorString; } 00276 00278 QString fileName() { return mFileName; } 00279 00281 QStringList findSymbols( QString qword ); 00282 00284 00289 QStringList tagsOfSymbol( StyleEntity type, QString symbol ); 00290 00292 QgsSymbolGroupMap smartgroupsListMap(); 00293 00295 QStringList smartgroupNames(); 00296 00298 QgsSmartConditionMap smartgroup( int id ); 00299 00301 //clumsy implementation TODO create a class for smartgroups 00302 QString smartgroupOperator( int id ); 00303 00305 QStringList symbolsOfSmartgroup( StyleEntity type, int id ); 00306 00308 bool exportXML( QString filename ); 00309 00311 bool importXML( QString filename ); 00312 00313 protected: 00314 00315 QgsSymbolV2Map mSymbols; 00316 QgsVectorColorRampV2Map mColorRamps; 00317 00318 QString mErrorString; 00319 QString mFileName; 00320 00321 sqlite3* mCurrentDB; 00322 00323 static QgsStyleV2* mDefaultStyle; 00324 00326 bool openDB( QString filename ); 00327 00332 bool runEmptyQuery( char* query, bool freeQuery = true ); 00333 00335 char* getGroupRemoveQuery( int id ); 00336 00338 int getId( QString table, QString name ); 00339 00341 00347 bool updateSymbol( StyleEntity type, QString name ); 00348 }; 00349 00350 00351 #endif