Skip to content

Commit eabdbd7

Browse files
committedAug 24, 2012
change QgsCptCityCollection to QgsCptCityArchive, join with items and model in file qgscptcityarchive.h
1 parent bcd1a70 commit eabdbd7

File tree

9 files changed

+800
-768
lines changed

9 files changed

+800
-768
lines changed
 

‎src/core/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ SET(QGIS_CORE_SRCS
3535
symbology-ng/qgsgraduatedsymbolrendererv2.cpp
3636
symbology-ng/qgsrulebasedrendererv2.cpp
3737
symbology-ng/qgsvectorcolorrampv2.cpp
38-
symbology-ng/qgscptcitybrowsermodel.cpp
38+
symbology-ng/qgscptcityarchive.cpp
3939
symbology-ng/qgsstylev2.cpp
4040
symbology-ng/qgssymbologyv2conversion.cpp
4141
symbology-ng/qgssvgcache.cpp
@@ -307,7 +307,7 @@ SET(QGIS_CORE_MOC_HDRS
307307
gps/qextserialport/qextserialport.h
308308
gps/qextserialport/qextserialenumerator.h
309309

310-
symbology-ng/qgscptcitybrowsermodel.h
310+
symbology-ng/qgscptcityarchive.h
311311
)
312312

313313

@@ -439,7 +439,7 @@ SET(QGIS_CORE_HDRS
439439
symbology-ng/qgssymbologyv2conversion.h
440440
symbology-ng/qgssymbolv2.h
441441
symbology-ng/qgsvectorcolorrampv2.h
442-
symbology-ng/qgscptcitybrowsermodel.h
442+
symbology-ng/qgscptcityarchive.h
443443
symbology-ng/qgsvectorfieldsymbollayer.h
444444

445445
qgsdiagramrendererv2.h

‎src/core/symbology-ng/qgscptcitybrowsermodel.cpp renamed to ‎src/core/symbology-ng/qgscptcityarchive.cpp

Lines changed: 670 additions & 52 deletions
Large diffs are not rendered by default.

‎src/core/symbology-ng/qgscptcitybrowsermodel.h renamed to ‎src/core/symbology-ng/qgscptcityarchive.h

Lines changed: 80 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/***************************************************************************
2-
qgscptcitybrowsermodel.h
2+
qgscptcityarchive.h
33
---------------------
44
begin : August 2012
55
copyright : (C) 2009 by Martin Dobias
@@ -14,8 +14,8 @@
1414
* *
1515
***************************************************************************/
1616

17-
#ifndef QGSCPTCITYBROWSERMODEL_H
18-
#define QGSCPTCITYBROWSERMODEL_H
17+
#ifndef QGSCPTCITYARCHIVE_H
18+
#define QGSCPTCITYARCHIVE_H
1919

2020
#include "qgsvectorcolorrampv2.h"
2121

@@ -25,6 +25,77 @@
2525
#include <QAction>
2626

2727
class QgsCptCityColorRampV2;
28+
class QgsCptCityDataItem;
29+
class QgsCptCitySelectionItem;
30+
31+
#define DEFAULT_CPTCITY_ARCHIVE "cpt-city-qgis-min"
32+
33+
class CORE_EXPORT QgsCptCityArchive
34+
{
35+
public:
36+
QgsCptCityArchive( QString archiveName = DEFAULT_CPTCITY_ARCHIVE,
37+
QString baseDir = QString() );
38+
~QgsCptCityArchive();
39+
40+
QString baseDir() const;
41+
static QString baseDir( QString archiveName );
42+
static QString defaultBaseDir();
43+
void setBaseDir( QString dirName ) { mBaseDir = dirName; }
44+
bool loadSchemes( QString rootDir = "", bool reset = false );
45+
/** Is the minimal (free to distribute) set of schemes available?
46+
* Currently returns hasAllSchemes, because we don't have a minimal set yet. */
47+
/* bool hasBasicSchemes(); */
48+
/** Is the entire archive available? Currently tests that there is at least one scheme. */
49+
/* bool hasAllSchemes(); */
50+
bool isEmpty();
51+
52+
QStringList listDirNames( QString dirName = "", bool recursive = false );
53+
QStringList listSchemeNames( QString dirName );
54+
QgsCptCityArchive* colorRampFromSVGFile( QString svgFile );
55+
QgsCptCityArchive* colorRampFromSVGString( QString svgString );
56+
57+
QString copyingFileName( const QString& dirName ) const;
58+
QString descFileName( const QString& dirName ) const;
59+
static QString findFileName( const QString & target, const QString & startDir, const QString & baseDir );
60+
static QMap< QString, QString > copyingInfo( const QString& copyingFileName );
61+
62+
QString archiveName() const { return mArchiveName; }
63+
QMap< QString, QStringList > schemeMap() const { return mSchemeMap; }
64+
QMap< QString, QStringList > schemeVariants() const { return mSchemeVariants; }
65+
QMap< QString, QString > dirNamesMap() const { return mDirNamesMap; }
66+
QMap< QString, QStringList > selectionsMap() const { return mSelectionsMap; }
67+
QVector< QgsCptCityDataItem* > rootItems() const { return mRootItems; }
68+
QVector<QgsCptCityDataItem*> selectionItems() const { return mSelectionItems; }
69+
70+
static void initArchives( bool loadAll = false );
71+
static void initArchive( QString archiveName, QString archiveBaseDir );
72+
static void clearArchives();
73+
static QgsCptCityArchive* defaultArchive();
74+
static QString defaultArchiveName();
75+
static QMap< QString, QgsCptCityArchive* > archiveRegistry();
76+
77+
protected:
78+
79+
QString mArchiveName;
80+
QString mBaseDir;
81+
QStringList mDirNames;
82+
QMap< QString, QStringList > mSchemeMap; //key is archive, value is schemes
83+
QMap< QString, QStringList > mSchemeVariants; //key is scheme, value is variants
84+
QMap< QString, QString > mDirNamesMap; //key is name, value is description
85+
QMap< QString, QStringList > mSelectionsMap;
86+
static QString mDefaultArchiveName;
87+
static QMap< QString, QgsCptCityArchive* > mArchiveRegistry;
88+
static QMap< QString, QMap< QString, QString > > mCopyingInfoMap; // mapping of copyinginfo, key is fileName
89+
90+
// new stuff
91+
92+
// root items, namely directories at root of archive
93+
QVector< QgsCptCityDataItem* > mRootItems;
94+
// map of selections, each one corresponds to an .xml file
95+
/* QMap< QString, QVector<QgsCptCitySelectionItem*> > mSelections; */
96+
QVector<QgsCptCityDataItem*> mSelectionItems;
97+
98+
};
2899

29100
/** base class for all items in the model */
30101
class CORE_EXPORT QgsCptCityDataItem : public QObject
@@ -185,13 +256,13 @@ class CORE_EXPORT QgsCptCityDirectoryItem : public QgsCptCityCollectionItem
185256

186257
};
187258

188-
/** A category: contains subdirectories and color ramps */
189-
class CORE_EXPORT QgsCptCityCategoryItem : public QgsCptCityCollectionItem
259+
/** A selection: contains subdirectories and color ramps */
260+
class CORE_EXPORT QgsCptCitySelectionItem : public QgsCptCityCollectionItem
190261
{
191262
Q_OBJECT
192263
public:
193-
QgsCptCityCategoryItem( QgsCptCityDataItem* parent, QString name, QString path, QString info );
194-
~QgsCptCityCategoryItem();
264+
QgsCptCitySelectionItem( QgsCptCityDataItem* parent, QString name, QString path, QString info );
265+
~QgsCptCitySelectionItem();
195266

196267
QVector<QgsCptCityDataItem*> createChildren();
197268

@@ -206,7 +277,7 @@ class CORE_EXPORT QgsCptCityBrowserModel : public QAbstractItemModel
206277

207278
public:
208279
explicit QgsCptCityBrowserModel( QObject *parent = 0,
209-
QgsCptCityCollection* collection = QgsCptCityCollection::defaultCollection(),
280+
QgsCptCityArchive* archive = QgsCptCityArchive::defaultArchive(),
210281
QString viewName = "authors" );
211282
~QgsCptCityBrowserModel();
212283

@@ -292,7 +363,7 @@ class CORE_EXPORT QgsCptCityBrowserModel : public QAbstractItemModel
292363
void removeRootItems();
293364

294365
QVector<QgsCptCityDataItem*> mRootItems;
295-
QgsCptCityCollection* mCollection;
366+
QgsCptCityArchive* mArchive;
296367
QString mViewName;
297368
};
298369

‎src/core/symbology-ng/qgsvectorcolorrampv2.cpp

Lines changed: 10 additions & 615 deletions
Large diffs are not rendered by default.

‎src/core/symbology-ng/qgsvectorcolorrampv2.h

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -159,63 +159,6 @@ class CORE_EXPORT QgsVectorColorBrewerColorRampV2 : public QgsVectorColorRampV2
159159
QList<QColor> mPalette;
160160
};
161161

162-
#define DEFAULT_CPTCITY_COLLECTION "cpt-city-qgis-min"
163-
164-
class CORE_EXPORT QgsCptCityCollection
165-
{
166-
public:
167-
QgsCptCityCollection( QString collectionName = DEFAULT_CPTCITY_COLLECTION,
168-
QString baseDir = QString() );
169-
~QgsCptCityCollection();
170-
171-
QString baseDir() const;
172-
static QString baseDir( QString collectionName );
173-
static QString defaultBaseDir();
174-
void setBaseDir( QString dirName ) { mBaseDir = dirName; }
175-
bool loadSchemes( QString rootDir = "", bool reset = false );
176-
/** Is the minimal (free to distribute) set of schemes available?
177-
* Currently returns hasAllSchemes, because we don't have a minimal set yet. */
178-
/* bool hasBasicSchemes(); */
179-
/** Is the entire archive available? Currently tests that there is at least one scheme. */
180-
/* bool hasAllSchemes(); */
181-
bool isEmpty();
182-
183-
QStringList listDirNames( QString dirName = "", bool recursive = false );
184-
QStringList listSchemeNames( QString dirName );
185-
QgsCptCityCollection* colorRampFromSVGFile( QString svgFile );
186-
QgsCptCityCollection* colorRampFromSVGString( QString svgString );
187-
188-
QString copyingFileName( const QString& dirName ) const;
189-
QString descFileName( const QString& dirName ) const;
190-
static QMap< QString, QString > copyingInfo( const QString& copyingFileName );
191-
192-
QString collectionName() const { return mCollectionName; }
193-
QMap< QString, QStringList > schemeMap() const { return mSchemeMap; }
194-
QMap< QString, QStringList > schemeVariants() const { return mSchemeVariants; }
195-
QMap< QString, QString > dirNamesMap() const { return mDirNamesMap; }
196-
QMap< QString, QStringList > selectionsMap() const { return mSelectionsMap; }
197-
198-
static void initCollections( bool loadAll = false );
199-
static void initCollection( QString collectionName, QString collectionBaseDir );
200-
static void clearCollections();
201-
static QgsCptCityCollection* defaultCollection();
202-
static QString defaultCollectionName();
203-
static QMap< QString, QgsCptCityCollection* > collectionRegistry();
204-
205-
protected:
206-
207-
QString mCollectionName;
208-
QString mBaseDir;
209-
QStringList mDirNames;
210-
QMap< QString, QStringList > mSchemeMap; //key is collection, value is schemes
211-
QMap< QString, QStringList > mSchemeVariants; //key is scheme, value is variants
212-
QMap< QString, QString > mDirNamesMap; //key is name, value is description
213-
QMap< QString, QStringList > mSelectionsMap;
214-
static QString mDefaultCollectionName;
215-
static QMap< QString, QgsCptCityCollection* > mCollectionRegistry;
216-
static QMap< QString, QMap< QString, QString > > mCopyingInfoMap; // mapping of copyinginfo, key is fileName
217-
};
218-
219162

220163
#define DEFAULT_CPTCITY_SCHEMENAME "cb/div/BrBG_" //change this
221164
#define DEFAULT_CPTCITY_VARIANTNAME "05"

‎src/gui/symbology-ng/qgscptcitycolorrampv2dialog.cpp

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
#include "qgscptcitycolorrampv2dialog.h"
1717

18-
#include "qgscptcitybrowsermodel.h"
18+
#include "qgscptcityarchive.h"
1919
#include "qgsvectorcolorrampv2.h"
2020
#include "qgslogger.h"
2121
#include "qgsapplication.h"
@@ -138,27 +138,27 @@ void QgsCptCityColorRampV2Dialog::on_mBrowserView_clicked( const QModelIndex &in
138138
// lblSchemeName->setText( "" );
139139
populateVariants();
140140
lblSchemePath->setText( item->path() );
141-
updateCopyingInfo( mCollection->copyingInfo( mCollection->copyingFileName( item->path() ) ) );
141+
updateCopyingInfo( mArchive->copyingInfo( mArchive->copyingFileName( item->path() ) ) );
142142
}
143143
}
144144

145145
void QgsCptCityColorRampV2Dialog::on_tabBar_currentChanged( int index )
146146
{
147147
if ( index == 0 )
148148
{
149-
mCollectionGroup = "selections";
149+
mArchiveGroup = "selections";
150150
mModel = mSelectionsModel;
151151
}
152152
else if ( index == 1 )
153153
{
154154
mModel = mAuthorsModel;
155-
mCollectionGroup = "authors";
155+
mArchiveGroup = "authors";
156156
}
157157
else
158158
{
159159
QgsDebugMsg( QString( "invalid index %1" ).arg( index ) );
160160
mModel = mAuthorsModel;
161-
mCollectionGroup = "authors";
161+
mArchiveGroup = "authors";
162162
}
163163

164164
// set model
@@ -187,8 +187,8 @@ void QgsCptCityColorRampV2Dialog::on_pbtnLicenseDetails_pressed()
187187
{
188188
path = item->path();
189189
title = tr( "%1 directory details" ).arg( item->name() );
190-
copyFile = mCollection->copyingFileName( path );
191-
descFile = mCollection->descFileName( path );
190+
copyFile = mArchive->copyingFileName( path );
191+
descFile = mArchive->descFileName( path );
192192
}
193193
else if ( item )
194194
{
@@ -333,24 +333,24 @@ bool QgsCptCityColorRampV2Dialog::eventFilter( QObject *obj, QEvent *event )
333333
}
334334
}
335335

336-
// delay initialization and update collection if it has changed
336+
// delay initialization and update archive if it has changed
337337
void QgsCptCityColorRampV2Dialog::showEvent( QShowEvent * e )
338338
{
339-
// setup collections
340-
if ( QgsCptCityCollection::collectionRegistry().isEmpty() )
339+
// setup archives
340+
if ( QgsCptCityArchive::archiveRegistry().isEmpty() )
341341
{
342-
QgsCptCityCollection::initCollections( true );
342+
QgsCptCityArchive::initArchives( true );
343343
}
344-
mCollection = QgsCptCityCollection::defaultCollection();
345-
// if empty collection, try loading again - this may happen after installing new package
346-
if ( ! mCollection || mCollection->isEmpty() )
344+
mArchive = QgsCptCityArchive::defaultArchive();
345+
// if empty archive, try loading again - this may happen after installing new package
346+
if ( ! mArchive || mArchive->isEmpty() )
347347
{
348-
QgsCptCityCollection::initCollections( true );
349-
mCollection = QgsCptCityCollection::defaultCollection();
348+
QgsCptCityArchive::initArchives( true );
349+
mArchive = QgsCptCityArchive::defaultArchive();
350350
}
351351

352352
// show information on how to install cpt-city files if none are found
353-
if ( ! mCollection || mCollection->isEmpty() )
353+
if ( ! mArchive || mArchive->isEmpty() )
354354
{
355355
// QgsDialog dlg( this );
356356
// dlg.setWindowTitle( tr( "cpt-city gradient files not found" ) );
@@ -363,7 +363,7 @@ void QgsCptCityColorRampV2Dialog::showEvent( QShowEvent * e )
363363
"(you must enable Experimental plugins in the plugin manager) "
364364
"and use it to download latest cpt-city package.\n"
365365
"You can install the entire cpt-city archive or a selection for QGIS.\n\n"
366-
"2) Download the complete collection (in svg format) "
366+
"2) Download the complete archive (in svg format) "
367367
"and unzip it to your QGis settings directory [%1] .\n\n"
368368
"This file can be found at [%2]\nand current file is [%3]"
369369
).arg( QgsApplication::qgisSettingsDirPath()
@@ -380,18 +380,18 @@ void QgsCptCityColorRampV2Dialog::showEvent( QShowEvent * e )
380380
return;
381381
}
382382

383-
if ( ! mCollection )
383+
if ( ! mArchive )
384384
return;
385-
QgsDebugMsg( "collection: " + mCollection->collectionName() );
385+
QgsDebugMsg( "archive: " + mArchive->archiveName() );
386386

387387
// model / view
388388
QgsDebugMsg( "loading model/view objects" );
389389
if ( mAuthorsModel )
390390
delete mAuthorsModel;
391-
mAuthorsModel = new QgsCptCityBrowserModel( mBrowserView, mCollection, "authors" );
391+
mAuthorsModel = new QgsCptCityBrowserModel( mBrowserView, mArchive, "authors" );
392392
if ( mSelectionsModel )
393393
delete mSelectionsModel;
394-
mSelectionsModel = new QgsCptCityBrowserModel( mBrowserView, mCollection, "selections" );
394+
mSelectionsModel = new QgsCptCityBrowserModel( mBrowserView, mArchive, "selections" );
395395
mModel = mSelectionsModel;
396396
mBrowserView->setModel( mModel );
397397
mBrowserView->setSelectionMode( QAbstractItemView::SingleSelection );
@@ -409,7 +409,7 @@ void QgsCptCityColorRampV2Dialog::showEvent( QShowEvent * e )
409409
cboVariantName->setIconSize( QSize( 100, 15 ) );
410410
lblPreview->installEventFilter( this ); // mouse click on preview label shows svg render
411411

412-
// populate tree widget - if item not found in selections collection, look for in authors
412+
// populate tree widget - if item not found in selections archive, look for in authors
413413
// try to apply selection to view
414414
QModelIndex modelIndex = mModel->findPath( mRamp->schemeName() );
415415
if ( modelIndex == QModelIndex() )
@@ -431,14 +431,14 @@ void QgsCptCityColorRampV2Dialog::showEvent( QShowEvent * e )
431431
// updatePreview();
432432
}
433433
tabBar->blockSignals( false );
434-
if ( mCollection->collectionName() == DEFAULT_CPTCITY_COLLECTION )
434+
if ( mArchive->archiveName() == DEFAULT_CPTCITY_ARCHIVE )
435435
tabBar->setCurrentIndex( 1 );
436436

437437
QDialog::showEvent( e );
438438

439439
// show error message to use color ramp manager to get more gradients
440-
if ( mCollection->collectionName() == DEFAULT_CPTCITY_COLLECTION &&
441-
QgsCptCityCollection::collectionRegistry().count() == 1 )
440+
if ( mArchive->archiveName() == DEFAULT_CPTCITY_ARCHIVE &&
441+
QgsCptCityArchive::archiveRegistry().count() == 1 )
442442
{
443443
QString helpText = tr( "You can download a more complete set of cpt-city gradients "
444444
"by installing the \"Color Ramp Manager\" plugin "

‎src/gui/symbology-ng/qgscptcitycolorrampv2dialog.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include "ui_qgscptcitycolorrampv2dialogbase.h"
2222

2323
class QgsCptCityColorRampV2;
24-
class QgsCptCityCollection;
24+
class QgsCptCityArchive;
2525
class QgsCptCityBrowserModel;
2626

2727
class GUI_EXPORT QgsCptCityColorRampV2Dialog : public QDialog, private Ui::QgsCptCityColorRampV2DialogBase
@@ -49,8 +49,8 @@ class GUI_EXPORT QgsCptCityColorRampV2Dialog : public QDialog, private Ui::QgsCp
4949
bool eventFilter( QObject *obj, QEvent *event );
5050

5151
QgsCptCityColorRampV2* mRamp;
52-
QgsCptCityCollection* mCollection;
53-
QString mCollectionGroup;
52+
QgsCptCityArchive* mArchive;
53+
QString mArchiveGroup;
5454

5555
/* void refreshModel( const QModelIndex& index ); */
5656
void showEvent( QShowEvent * event );

‎tests/src/core/testqgsrasterlayer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include <qgsmaplayerregistry.h>
3737
#include "qgssinglebandpseudocolorrenderer.h"
3838
#include "qgsvectorcolorrampv2.h"
39+
#include "qgscptcityarchive.h"
3940

4041
//qgis unit test includes
4142
#include <qgsrenderchecker.h>
@@ -256,7 +257,7 @@ void TestQgsRasterLayer::colorRamp2()
256257
void TestQgsRasterLayer::colorRamp3()
257258
{
258259
// cpt-city ramp, discrete
259-
QgsCptCityCollection::initCollections();
260+
QgsCptCityArchive::initArchives();
260261
QVERIFY( testColorRamp( "raster_colorRamp3",
261262
new QgsCptCityColorRampV2( "cb/div/BrBG", "_10" ),
262263
QgsColorRampShader::DISCRETE, 10 ) );
@@ -265,7 +266,6 @@ void TestQgsRasterLayer::colorRamp3()
265266
void TestQgsRasterLayer::colorRamp4()
266267
{
267268
// cpt-city ramp, continuous
268-
QgsCptCityCollection::initCollections();
269269
QVERIFY( testColorRamp( "raster_colorRamp4",
270270
new QgsCptCityColorRampV2( "grass/elevation", "" ),
271271
QgsColorRampShader::DISCRETE, 10 ) );

‎tests/src/core/testqgsstylev2.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "qgsconfig.h"
2525
#include "qgslogger.h"
2626
#include "qgsvectorcolorrampv2.h"
27+
#include "qgscptcityarchive.h"
2728

2829
#include "qgsstylev2.h"
2930

@@ -83,7 +84,7 @@ void TestStyleV2::initTestCase()
8384
// mStyle->clear();
8485

8586
// cpt-city ramp, small selection available in <testdir>/cpt-city
86-
QgsCptCityCollection::initCollections();
87+
QgsCptCityArchive::initArchives();
8788
}
8889

8990
void TestStyleV2::cleanupTestCase()
@@ -163,6 +164,8 @@ void TestStyleV2::testLoadColorRamps()
163164
colorTests.insert( "test_cc3", qMakePair( 0.25, QColor( "#7f7f7f" ) ) );
164165
colorTests.insert( "test_cc3", qMakePair( 0.66, QColor( "#ffad00" ) ) );
165166

167+
QgsDebugMsg( "loaded colorRamps: " + colorRamps.join( " " ) );
168+
166169
foreach ( QString name, colorRampsTest )
167170
{
168171
QgsDebugMsg( "colorRamp " + name );
@@ -191,6 +194,8 @@ void TestStyleV2::testSaveLoad()
191194
mStyle->load( QgsApplication::userStyleV2Path() );
192195

193196
QStringList colorRamps = mStyle->colorRampNames();
197+
QgsDebugMsg( "loaded colorRamps: " + colorRamps.join( " " ) );
198+
194199
QStringList colorRampsTest = QStringList() << "test_gradient";
195200

196201
foreach ( QString name, colorRampsTest )

0 commit comments

Comments
 (0)
Please sign in to comment.