QGIS API Documentation  2.9.0-Master
qgsscalerangewidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsscalerangewidget.cpp
3  --------------------------------------
4  Date : 25.04.2014
5  Copyright : (C) 2014 Denis Rouzaud
6  Email : denis.rouzaud@gmail.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 #include "qgsscalerangewidget.h"
17 #include "qgsapplication.h"
18 #include "qgsproject.h"
19 
20 
22  : QWidget( parent )
23  , mCanvas( 0 )
24 {
25  mLayout = new QGridLayout( this );
26  mLayout->setContentsMargins( 0, 0, 0, 0 );
27 
28  QLabel* minLbl = new QLabel( tr( "Minimum\n(exclusive)" ), this );
29  minLbl->setWordWrap( true );
30  minLbl->setAlignment( Qt::AlignTop );
31  minLbl->setToolTip( tr( "Minimum scale, i.e. maximum scale denominator. "
32  "This limit is exclusive, that means the layer will not be displayed on this scale." ) );
33  QLabel* maxLbl = new QLabel( tr( "Maximum\n(inclusive)" ), this );
34  maxLbl->setWordWrap( true );
35  maxLbl->setAlignment( Qt::AlignTop );
36  maxLbl->setToolTip( tr( "Maximum scale, i.e. minimum scale denominator. "
37  "This limit is inclusive, that means the layer will be displayed on this scale." ) );
38 
39  mMinimumScaleIconLabel = new QLabel( this );
40  mMinimumScaleIconLabel->setPixmap( QgsApplication::getThemePixmap( "/mActionZoomOut.svg" ) );
41  mMaximumScaleIconLabel = new QLabel( this );
42  mMaximumScaleIconLabel->setPixmap( QgsApplication::getThemePixmap( "/mActionZoomIn.svg" ) );
43 
44  mMinimumScaleWidget = new QgsScaleWidget( this );
45  mMaximumScaleWidget = new QgsScaleWidget( this );
46  mMinimumScaleWidget->setShowCurrentScaleButton( true );
47  mMaximumScaleWidget->setShowCurrentScaleButton( true );
49  // add start, add comprehension of scales by settings fake ordered values
50  mMinimumScaleWidget->setScale( 1.0 / 100000 );
51  mMaximumScaleWidget->setScale( 1.0 / 1000 );
52 
53  mLayout->addWidget( minLbl, 0, 0, 2, 1 );
54  mLayout->addWidget( mMinimumScaleIconLabel, 0, 1 );
55  mLayout->addWidget( mMinimumScaleWidget, 0, 2 );
56  mLayout->addWidget( maxLbl, 0, 3, 2, 1 );
57  mLayout->addWidget( mMaximumScaleIconLabel, 0, 4 );
58  mLayout->addWidget( mMaximumScaleWidget, 0, 5 );
59 
60  mLayout->setColumnStretch( 0, 0 );
61  mLayout->setColumnStretch( 1, 0 );
62  mLayout->setColumnStretch( 2, 3 );
63  mLayout->setColumnStretch( 3, 0 );
64  mLayout->setColumnStretch( 4, 0 );
65  mLayout->setColumnStretch( 5, 3 );
66 }
67 
69 {
70 }
71 
73 {
74  bool projectScales = QgsProject::instance()->readBoolEntry( "Scales", "/useProjectScales" );
75  if ( projectScales )
76  {
77  QStringList scalesList = QgsProject::instance()->readListEntry( "Scales", "/ScalesList" );
78  mMinimumScaleWidget->updateScales( scalesList );
79  mMaximumScaleWidget->updateScales( scalesList );
80  }
81 }
82 
84 {
85  mMinimumScaleWidget->setMapCanvas( mapCanvas );
86  mMaximumScaleWidget->setMapCanvas( mapCanvas );
87 }
88 
90 {
91  mMinimumScaleWidget->setScale( scale );
92 }
93 
95 {
96  return mMinimumScaleWidget->scale();
97 }
98 
100 {
101  mMaximumScaleWidget->setScale( scale );
102 }
103 
105 {
106  return mMaximumScaleWidget->scale();
107 }
108 
110 {
111  return qRound( 1.0 / maximumScale() );
112 }
113 
115 {
116  return qRound( 1.0 / minimumScale() );
117 }
118 
120 {
121  setMaximumScale( max );
122  setMinimumScale( min );
123 }
124 
double minimumScale()
return the minimum scale
double scale()
Function to read the selected scale as double.
A combobox which lets the user select map scale from predefined list and highlights nearest to curren...
void setMaximumScale(double scale)
void setScale(double scale)
Function to set the selected scale from double.
bool readBoolEntry(const QString &scope, const QString &key, bool def=false, bool *ok=0) const
double minimumScaleDenom()
return the minimum scale denominator ( = 1 / maximum scale )
static QPixmap getThemePixmap(const QString &theName)
Helper to get a theme icon as a pixmap.
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:105
QStringList readListEntry(const QString &scope, const QString &key, QStringList def=QStringList(), bool *ok=0) const
key value accessors
void reloadProjectScales()
call to reload the project scales and apply them to the 2 scales combo boxes
void setShowCurrentScaleButton(bool showCurrentScaleButton)
shows a button to set the scale to the current scale of the map canvas next to the combobox ...
double maximumScaleDenom()
return the maximum scale denominator ( = 1 / minimum scale )
void updateScales(const QStringList &scales=QStringList())
double maximumScale()
return the maximum scale
void setMinimumScale(double scale)
void setScaleRange(double min, double max)
int min(int a, int b)
Definition: util.h:93
QgsScaleRangeWidget(QWidget *parent=0)
static QgsProject * instance()
access to canonical QgsProject instance
Definition: qgsproject.cpp:351
void setMapCanvas(QgsMapCanvas *canvas)
set the map canvas associated to the current button
int max(int a, int b)
Definition: util.h:87
void setMapCanvas(QgsMapCanvas *mapCanvas)
set the map canvas which will be used for the current scale buttons
#define tr(sourceText)