|
16 | 16 | #include "qgsmapcanvas.h"
|
17 | 17 | #include "qgsprojectionselectiondialog.h"
|
18 | 18 | #include "qgsscalecombobox.h"
|
| 19 | +#include "qgsstatusbarmagnifierwidget.h" |
19 | 20 | #include "qgsdoublespinbox.h"
|
| 21 | +#include "qgssettings.h" |
20 | 22 | #include <QMessageBox>
|
21 | 23 | #include <QMenu>
|
22 | 24 | #include <QToolBar>
|
@@ -55,7 +57,8 @@ QgsMapCanvasDockWidget::QgsMapCanvasDockWidget( const QString &name, QWidget *pa
|
55 | 57 | QgsMapSettingsAction *settingsAction = new QgsMapSettingsAction( menu );
|
56 | 58 | menu->addAction( settingsAction );
|
57 | 59 | mScaleCombo = settingsAction->scaleCombo();
|
58 |
| - mRotationEdit = settingsAction->rotationEdit(); |
| 60 | + mRotationEdit = settingsAction->rotationSpinBox(); |
| 61 | + mMagnificationEdit = settingsAction->magnifierSpinBox(); |
59 | 62 | connect( mScaleCombo, &QgsScaleComboBox::scaleChanged, this, [ = ]( double scale )
|
60 | 63 | {
|
61 | 64 | if ( !mBlockScaleUpdate )
|
@@ -95,6 +98,27 @@ QgsMapCanvasDockWidget::QgsMapCanvasDockWidget( const QString &name, QWidget *pa
|
95 | 98 | mBlockRotationUpdate = false;
|
96 | 99 | }
|
97 | 100 | } );
|
| 101 | + |
| 102 | + connect( mMagnificationEdit, static_cast < void ( QgsDoubleSpinBox::* )( double ) > ( &QgsDoubleSpinBox::valueChanged ), this, [ = ]( double value ) |
| 103 | + { |
| 104 | + if ( !mBlockMagnificationUpdate ) |
| 105 | + { |
| 106 | + mBlockMagnificationUpdate = true; |
| 107 | + mMapCanvas->setMagnificationFactor( value / 100 ); |
| 108 | + mMapCanvas->refresh(); |
| 109 | + mBlockMagnificationUpdate = false; |
| 110 | + } |
| 111 | + } ); |
| 112 | + |
| 113 | + connect( mMapCanvas, &QgsMapCanvas::magnificationChanged, this, [ = ]( double factor ) |
| 114 | + { |
| 115 | + if ( !mBlockMagnificationUpdate ) |
| 116 | + { |
| 117 | + mBlockMagnificationUpdate = true; |
| 118 | + mMagnificationEdit->setValue( factor * 100 ); |
| 119 | + mBlockMagnificationUpdate = false; |
| 120 | + } |
| 121 | + } ); |
98 | 122 | }
|
99 | 123 |
|
100 | 124 | QgsMapCanvas *QgsMapCanvasDockWidget::mapCanvas()
|
@@ -175,19 +199,40 @@ QgsMapSettingsAction::QgsMapSettingsAction( QWidget *parent )
|
175 | 199 | mScaleCombo = new QgsScaleComboBox();
|
176 | 200 | gLayout->addWidget( mScaleCombo, 0, 1 );
|
177 | 201 |
|
178 |
| - mRotationEdit = new QgsDoubleSpinBox(); |
179 |
| - mRotationEdit->setClearValue( 0.0 ); |
180 |
| - mRotationEdit->setKeyboardTracking( false ); |
181 |
| - mRotationEdit->setMaximumWidth( 120 ); |
182 |
| - mRotationEdit->setDecimals( 1 ); |
183 |
| - mRotationEdit->setRange( -180.0, 180.0 ); |
184 |
| - mRotationEdit->setWrapping( true ); |
185 |
| - mRotationEdit->setSingleStep( 5.0 ); |
186 |
| - mRotationEdit->setToolTip( tr( "Current clockwise map rotation in degrees" ) ); |
| 202 | + mRotationWidget = new QgsDoubleSpinBox(); |
| 203 | + mRotationWidget->setClearValue( 0.0 ); |
| 204 | + mRotationWidget->setKeyboardTracking( false ); |
| 205 | + mRotationWidget->setMaximumWidth( 120 ); |
| 206 | + mRotationWidget->setDecimals( 1 ); |
| 207 | + mRotationWidget->setRange( -180.0, 180.0 ); |
| 208 | + mRotationWidget->setWrapping( true ); |
| 209 | + mRotationWidget->setSingleStep( 5.0 ); |
| 210 | + mRotationWidget->setToolTip( tr( "Current clockwise map rotation in degrees" ) ); |
187 | 211 |
|
188 | 212 | label = new QLabel( tr( "Rotation" ) );
|
189 | 213 | gLayout->addWidget( label, 1, 0 );
|
190 |
| - gLayout->addWidget( mRotationEdit, 1, 1 ); |
| 214 | + gLayout->addWidget( mRotationWidget, 1, 1 ); |
| 215 | + |
| 216 | + QgsSettings settings; |
| 217 | + int minimumFactor = 100 * QgisGui::CANVAS_MAGNIFICATION_MIN; |
| 218 | + int maximumFactor = 100 * QgisGui::CANVAS_MAGNIFICATION_MAX; |
| 219 | + int defaultFactor = 100 * settings.value( QStringLiteral( "/qgis/magnifier_factor_default" ), 1.0 ).toDouble(); |
| 220 | + |
| 221 | + mMagnifierWidget = new QgsDoubleSpinBox(); |
| 222 | + mMagnifierWidget->setSuffix( QStringLiteral( "%" ) ); |
| 223 | + mMagnifierWidget->setKeyboardTracking( false ); |
| 224 | + mMagnifierWidget->setDecimals( 0 ); |
| 225 | + mMagnifierWidget->setRange( minimumFactor, maximumFactor ); |
| 226 | + mMagnifierWidget->setWrapping( false ); |
| 227 | + mMagnifierWidget->setSingleStep( 50 ); |
| 228 | + mMagnifierWidget->setToolTip( tr( "Magnifier level" ) ); |
| 229 | + mMagnifierWidget->setClearValueMode( QgsDoubleSpinBox::CustomValue ); |
| 230 | + mMagnifierWidget->setClearValue( defaultFactor ); |
| 231 | + mMagnifierWidget->setValue( defaultFactor ); |
| 232 | + |
| 233 | + label = new QLabel( tr( "Magnification" ) ); |
| 234 | + gLayout->addWidget( label, 2, 0 ); |
| 235 | + gLayout->addWidget( mMagnifierWidget, 2, 1 ); |
191 | 236 |
|
192 | 237 | QWidget *w = new QWidget();
|
193 | 238 | w->setLayout( gLayout );
|
|
0 commit comments