Skip to content

Commit f503bc3

Browse files
committed
Revert last four accidental commits:
backport wmts support: 50ba992 WMTS/WMS updates: 84959cb missed a dialog: 4b5d265. [FEATURE] WMTS: 2130b02
1 parent 50ba992 commit f503bc3

22 files changed

+975
-2266
lines changed

scripts/prepare-commit.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ fi
3333

3434
# save original changes
3535
if [ -d .svn ]; then
36-
REV=r$(svn info | sed -ne "s/Revision: //p")
37-
svn diff >rev-$REV.diff
36+
REV=$(svn info | sed -ne "s/Revision: //p")
37+
svn diff >r$REV.diff
3838
elif [ -d .git ]; then
39-
REV=$(git log -n1 --pretty=%H)
40-
git diff >sha-$REV.diff
39+
REV=$(git svn info | sed -ne "s/Revision: //p")
40+
git diff >r$REV.diff
4141
fi
4242

4343
ASTYLEDIFF=astyle.r$REV.diff

src/app/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,12 @@ SET(QGIS_APP_SRCS
8080
qgsrastercalcdialog.cpp
8181
qgsrasterlayerproperties.cpp
8282
qgstextannotationdialog.cpp
83+
qgswmssourceselect.cpp
8384
qgsshortcutsmanager.cpp
8485
qgssinglesymboldialog.cpp
8586
qgssnappingdialog.cpp
8687
qgsundowidget.cpp
88+
qgstilescalewidget.cpp
8789
qgstipgui.cpp
8890
qgstipfactory.cpp
8991
qgsuniquevaluedialog.cpp
@@ -210,11 +212,13 @@ SET (QGIS_APP_MOC_HDRS
210212
qgssnappingdialog.h
211213
qgssponsors.h
212214
qgstextannotationdialog.h
215+
qgstilescalewidget.h
213216
qgstipgui.h
214217
qgstipfactory.h
215218
qgsundowidget.h
216219
qgsuniquevaluedialog.h
217220
qgsvectorlayerproperties.h
221+
qgswmssourceselect.h
218222
qgshandlebadlayers.h
219223

220224
composer/qgsattributeselectiondialog.h

src/app/qgisapp.cpp

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
#include "qgssnappingdialog.h"
156156
#include "qgssponsors.h"
157157
#include "qgstextannotationitem.h"
158+
#include "qgstilescalewidget.h"
158159
#include "qgstipgui.h"
159160
#include "qgsundowidget.h"
160161
#include "qgsvectordataprovider.h"
@@ -374,6 +375,7 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
374375
, mSplash( splash )
375376
, mShowProjectionTab( false )
376377
, mPythonUtils( NULL )
378+
, mpTileScaleWidget( NULL )
377379
#ifdef Q_OS_WIN
378380
, mSkipNextContextMenuEvent( 0 )
379381
#endif
@@ -575,8 +577,6 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
575577
// request notification of FileOpen events (double clicking a file icon in Mac OS X Finder)
576578
QgsApplication::setFileOpenEventReceiver( this );
577579

578-
QgsProviderRegistry::instance()->registerGuis( this );
579-
580580
// update windows
581581
qApp->processEvents();
582582

@@ -694,6 +694,11 @@ void QgisApp::readSettings()
694694
// Add the recently accessed project file paths to the File menu
695695
mRecentProjectPaths = settings.value( "/UI/recentProjectsList" ).toStringList();
696696

697+
// Restore state of tile scale widget
698+
if ( settings.value( "/UI/tileScaleEnabled", false ).toBool() )
699+
{
700+
showTileScale();
701+
}
697702
// Restore state of GPS Tracker
698703
if ( settings.value( "/gps/widgetEnabled", false ).toBool() )
699704
{
@@ -795,6 +800,7 @@ void QgisApp::createActions()
795800
connect( mActionRemoveLayer, SIGNAL( triggered() ), this, SLOT( removeLayer() ) );
796801
connect( mActionSetLayerCRS, SIGNAL( triggered() ), this, SLOT( setLayerCRS() ) );
797802
connect( mActionSetProjectCRSFromLayer, SIGNAL( triggered() ), this, SLOT( setProjectCRSFromLayer() ) );
803+
connect( mActionTileScale, SIGNAL( triggered() ), this, SLOT( showTileScale() ) );
798804
connect( mActionGpsTool, SIGNAL( triggered() ), this, SLOT( showGpsTool() ) );
799805
connect( mActionLayerProperties, SIGNAL( triggered() ), this, SLOT( layerProperties() ) );
800806
connect( mActionLayerSubsetString, SIGNAL( triggered() ), this, SLOT( layerSubsetString() ) );
@@ -1844,6 +1850,17 @@ void QgisApp::saveWindowState()
18441850
// store window geometry
18451851
settings.setValue( "/UI/geometry", saveGeometry() );
18461852

1853+
// Persist state of tile scale slider
1854+
if ( mpTileScaleWidget )
1855+
{
1856+
settings.setValue( "/UI/tileScaleEnabled", true );
1857+
delete mpTileScaleWidget;
1858+
}
1859+
else
1860+
{
1861+
settings.setValue( "/UI/tileScaleEnabled", false );
1862+
}
1863+
18471864
// Persist state of GPS Tracker
18481865
if ( mpGpsWidget )
18491866
{
@@ -4486,6 +4503,32 @@ void QgisApp::showGpsTool()
44864503
}
44874504
}
44884505

4506+
void QgisApp::showTileScale()
4507+
{
4508+
if ( !mpTileScaleWidget )
4509+
{
4510+
mpTileScaleWidget = new QgsTileScaleWidget( mMapCanvas );
4511+
//create the dock widget
4512+
mpTileScaleDock = new QDockWidget( tr( "Tile scale" ), this );
4513+
mpTileScaleDock->setObjectName( "TileScale" );
4514+
mpTileScaleDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
4515+
addDockWidget( Qt::RightDockWidgetArea, mpTileScaleDock );
4516+
// add to the Panel submenu
4517+
mPanelMenu->addAction( mpTileScaleDock->toggleViewAction() );
4518+
// now add our widget to the dock - ownership of the widget is passed to the dock
4519+
mpTileScaleDock->setWidget( mpTileScaleWidget );
4520+
mpTileScaleDock->show();
4521+
4522+
connect( mMapLegend, SIGNAL( currentLayerChanged( QgsMapLayer* ) ),
4523+
mpTileScaleWidget, SLOT( layerChanged( QgsMapLayer* ) ) );
4524+
4525+
}
4526+
else
4527+
{
4528+
mpTileScaleDock->setVisible( mpTileScaleDock->isHidden() );
4529+
}
4530+
}
4531+
44894532
void QgisApp::zoomToLayerExtent()
44904533
{
44914534
mMapLegend->legendLayerZoom();

src/app/qgisapp.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ class QgsRasterLayer;
5959
class QgsRectangle;
6060
class QgsUndoWidget;
6161
class QgsVectorLayer;
62+
class QgsTileScaleWidget;
6263

6364
class QDomDocument;
6465
class QNetworkReply;
@@ -276,6 +277,7 @@ class QgisApp : public QMainWindow, private Ui::MainWindow
276277
QAction *actionRemoveLayer() { return mActionRemoveLayer; }
277278
QAction *actionSetLayerCRS() { return mActionSetLayerCRS; }
278279
QAction *actionSetProjectCRSFromLayer() { return mActionSetProjectCRSFromLayer; }
280+
QAction *actionTileScale() { return mActionTileScale; }
279281
QAction *actionGpsTool() { return mActionGpsTool; }
280282
QAction *actionLayerProperties() { return mActionLayerProperties; }
281283
QAction *actionLayerSubsetString() { return mActionLayerSubsetString; }
@@ -485,6 +487,8 @@ class QgisApp : public QMainWindow, private Ui::MainWindow
485487
void setProjectCRSFromLayer();
486488
//! Show GPS tool
487489
void showGpsTool();
490+
//! Show tile scale slider
491+
void showTileScale();
488492
//! zoom to extent of layer
489493
void zoomToLayerExtent();
490494
//! zoom to actual size of raster layer
@@ -900,6 +904,7 @@ class QgisApp : public QMainWindow, private Ui::MainWindow
900904
// docks ------------------------------------------
901905
QDockWidget *mLegendDock;
902906
QDockWidget *mOverviewDock;
907+
QDockWidget *mpTileScaleDock;
903908
QDockWidget *mpGpsDock;
904909

905910

@@ -1058,6 +1063,9 @@ class QgisApp : public QMainWindow, private Ui::MainWindow
10581063

10591064
QgsSnappingDialog* mSnappingDialog;
10601065

1066+
//! Persistent tile scale slider
1067+
QgsTileScaleWidget * mpTileScaleWidget;
1068+
10611069
int mLastComposerId;
10621070

10631071
#ifdef Q_OS_WIN

src/providers/wms/qgstilescalewidget.cpp renamed to src/app/qgstilescalewidget.cpp

Lines changed: 38 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,8 @@
1919
#include "qgstilescalewidget.h"
2020
#include "qgsmapcanvas.h"
2121
#include "qgsrasterlayer.h"
22-
#include "qgswmsprovider.h"
2322
#include "qgslogger.h"
2423

25-
#include <QDockWidget>
26-
#include <QMainWindow>
27-
#include <QMenu>
28-
#include <QGraphicsView>
29-
3024
QgsTileScaleWidget::QgsTileScaleWidget( QgsMapCanvas * mapCanvas, QWidget * parent, Qt::WindowFlags f )
3125
: QWidget( parent, f )
3226
, mMapCanvas( mapCanvas )
@@ -38,46 +32,54 @@ QgsTileScaleWidget::QgsTileScaleWidget( QgsMapCanvas * mapCanvas, QWidget * pare
3832
layerChanged( mMapCanvas->currentLayer() );
3933
}
4034

41-
QgsTileScaleWidget::~QgsTileScaleWidget()
42-
{
43-
QSettings settings;
44-
settings.setValue( "/UI/tileScaleEnabled", isVisible() );
45-
}
46-
4735
void QgsTileScaleWidget::layerChanged( QgsMapLayer *layer )
4836
{
4937
QgsRasterLayer *rl = qobject_cast<QgsRasterLayer *>( layer );
50-
if ( !rl )
51-
return;
5238

53-
QgsWmsProvider *wms = qobject_cast<QgsWmsProvider *>( rl->dataProvider() );
54-
if ( !wms )
55-
return;
39+
mResolutions.clear();
40+
mSlider->setDisabled( true );
5641

57-
QgsWmtsTileMatrixSet *tileMatrixSet = wms->tileMatrixSet();
58-
if ( !tileMatrixSet )
42+
if ( !rl || rl->providerKey() != "wms" )
5943
return;
6044

61-
mSlider->setDisabled( true );
62-
63-
mResolutions = tileMatrixSet->tileMatrices.keys();
64-
qSort( mResolutions );
45+
QString uri = rl->source();
46+
int tiledpos = uri.indexOf( "tiled=" );
47+
int urlpos = uri.indexOf( "url=" );
6548

66-
for ( int i = 0; i < mResolutions.size(); i++ )
49+
if ( tiledpos >= 0 && urlpos >= 0 && urlpos > tiledpos )
6750
{
68-
QgsDebugMsg( QString( "found resolution %1: %2" ).arg( i ).arg( mResolutions[i] ) );
51+
uri = uri.mid( tiledpos + 6 );
52+
int pos = uri.indexOf( "," );
53+
if ( pos >= 0 )
54+
uri = uri.left( pos );
55+
QStringList params = uri.split( ";" );
56+
if ( params.size() < 3 )
57+
return;
58+
59+
params.takeFirst();
60+
params.takeFirst();
61+
62+
mResolutions.clear();
63+
foreach( QString r, params )
64+
{
65+
mResolutions << r.toDouble();
66+
}
67+
qSort( mResolutions );
68+
69+
for ( int i = 0; i < mResolutions.size(); i++ )
70+
QgsDebugMsg( QString( "found resolution %1: %2" ).arg( i ).arg( mResolutions[i] ) );
71+
72+
mSlider->setRange( 0, mResolutions.size() - 1 );
73+
mSlider->setTickInterval( 1 );
74+
mSlider->setInvertedAppearance( true );
75+
mSlider->setPageStep( 1 );
76+
mSlider->setTracking( false );
77+
78+
scaleChanged( mMapCanvas->scale() );
79+
80+
mSlider->setEnabled( true );
81+
show();
6982
}
70-
71-
mSlider->setRange( 0, mResolutions.size() - 1 );
72-
mSlider->setTickInterval( 1 );
73-
mSlider->setInvertedAppearance( true );
74-
mSlider->setPageStep( 1 );
75-
mSlider->setTracking( false );
76-
77-
scaleChanged( mMapCanvas->scale() );
78-
79-
mSlider->setEnabled( true );
80-
show();
8183
}
8284

8385
void QgsTileScaleWidget::scaleChanged( double scale )
@@ -100,68 +102,11 @@ void QgsTileScaleWidget::scaleChanged( double scale )
100102
}
101103

102104
QgsDebugMsg( QString( "selected resolution %1: %2" ).arg( i ).arg( mResolutions[i] ) );
103-
mSlider->blockSignals( true );
104105
mSlider->setValue( i );
105-
mSlider->blockSignals( false );
106106
}
107107

108108
void QgsTileScaleWidget::on_mSlider_valueChanged( int value )
109109
{
110110
QgsDebugMsg( QString( "slider released at %1: %2" ).arg( mSlider->value() ).arg( mResolutions[mSlider->value()] ) );
111111
mMapCanvas->zoomByFactor( mResolutions[mSlider->value()] / mMapCanvas->mapUnitsPerPixel() );
112112
}
113-
114-
void QgsTileScaleWidget::showTileScale( QMainWindow *mainWindow )
115-
{
116-
QDockWidget *dock = mainWindow->findChild<QDockWidget *>( "theTileScaleDock" );
117-
if ( dock )
118-
{
119-
dock->setVisible( dock->isHidden() );
120-
return;
121-
}
122-
123-
QgsMapCanvas *canvas = mainWindow->findChild<QgsMapCanvas *>( "theMapCanvas" );
124-
QgsDebugMsg( QString( "canvas:%1 [%2]" ).arg(( ulong ) canvas, 0, 16 ).arg( canvas ? canvas->objectName() : "" ) );
125-
if ( !canvas )
126-
{
127-
QgsDebugMsg( "map canvas theMapCanvas not found" );
128-
return;
129-
}
130-
131-
QgsTileScaleWidget *tws = new QgsTileScaleWidget( canvas );
132-
tws->setObjectName( "theTileScaleWidget" );
133-
134-
QObject *legend = mainWindow->findChild<QObject*>( "theMapLegend" );
135-
if ( legend )
136-
{
137-
connect( legend, SIGNAL( currentLayerChanged( QgsMapLayer* ) ),
138-
tws, SLOT( layerChanged( QgsMapLayer* ) ) );
139-
}
140-
else
141-
{
142-
QgsDebugMsg( "legend not found" );
143-
}
144-
145-
//create the dock widget
146-
dock = new QDockWidget( tr( "Tile scale" ), mainWindow );
147-
dock->setObjectName( "theTileScaleDock" );
148-
dock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
149-
mainWindow->addDockWidget( Qt::RightDockWidgetArea, dock );
150-
151-
// add to the Panel submenu
152-
QMenu *panelMenu = mainWindow->findChild<QMenu *>( "mPanelMenu" );
153-
if ( panelMenu )
154-
{
155-
// add to the Panel submenu
156-
panelMenu->addAction( dock->toggleViewAction() );
157-
}
158-
else
159-
{
160-
QgsDebugMsg( "panel menu not found" );
161-
}
162-
163-
panelMenu->addAction( dock->toggleViewAction() );
164-
165-
dock->setWidget( tws );
166-
dock->show();
167-
}

src/providers/wms/qgstilescalewidget.h renamed to src/app/qgstilescalewidget.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,20 @@
2323

2424
class QgsMapCanvas;
2525
class QgsMapLayer;
26-
class QMainWindow;
26+
class QwtSlider;
2727

2828
class QgsTileScaleWidget : public QWidget, private Ui::QgsTileScaleWidget
2929
{
3030
Q_OBJECT
31-
3231
public:
33-
static void showTileScale( QMainWindow *mainWindow );
32+
QgsTileScaleWidget( QgsMapCanvas *mapCanvas, QWidget * parent = 0, Qt::WindowFlags f = 0 );
3433

3534
public slots:
3635
void layerChanged( QgsMapLayer *layer );
3736
void scaleChanged( double );
3837
void on_mSlider_valueChanged( int );
3938

4039
private:
41-
QgsTileScaleWidget( QgsMapCanvas *mapCanvas, QWidget *parent = 0, Qt::WindowFlags f = 0 );
42-
~QgsTileScaleWidget();
43-
4440
QgsMapCanvas *mMapCanvas;
4541
QList<double> mResolutions;
4642
};

0 commit comments

Comments
 (0)