18
18
#include " qgsatlascomposition.h"
19
19
#include " qgscomposition.h"
20
20
#include " qgsmaplayerregistry.h"
21
- #include " qgsvectorlayer.h"
22
21
#include " qgsexpressionbuilderdialog.h"
23
22
#include " qgscomposermap.h"
24
23
@@ -69,6 +68,8 @@ QgsAtlasCompositionWidget::QgsAtlasCompositionWidget( QWidget* parent, QgsCompos
69
68
connect ( mComposition , SIGNAL ( composerMapAdded ( QgsComposerMap* ) ), this , SLOT ( onComposerMapAdded ( QgsComposerMap* ) ) );
70
69
connect ( mComposition , SIGNAL ( itemRemoved ( QgsComposerItem* ) ), this , SLOT ( onItemRemoved ( QgsComposerItem* ) ) );
71
70
71
+ connect ( mAtlasMarginRadio , SIGNAL ( toggled ( bool ) ), mAtlasMarginSpinBox , SLOT ( setEnabled ( bool ) ) );
72
+
72
73
// connect to updates
73
74
connect ( &mComposition ->atlasComposition (), SIGNAL ( parameterChanged () ), this , SLOT ( updateGuiElements () ) );
74
75
@@ -135,6 +136,7 @@ void QgsAtlasCompositionWidget::onLayerAdded( QgsMapLayer* map )
135
136
if ( mAtlasCoverageLayerComboBox ->count () == 1 )
136
137
{
137
138
atlasMap->setCoverageLayer ( vectorLayer );
139
+ checkLayerType ( vectorLayer );
138
140
}
139
141
}
140
142
@@ -183,13 +185,34 @@ void QgsAtlasCompositionWidget::on_mAtlasCoverageLayerComboBox_currentIndexChang
183
185
else
184
186
{
185
187
QgsVectorLayer* layer = reinterpret_cast <QgsVectorLayer*>( mAtlasCoverageLayerComboBox ->itemData ( index ).value <void *>() );
188
+
189
+ checkLayerType ( layer );
186
190
atlasMap->setCoverageLayer ( layer );
187
191
188
192
// update sorting columns
189
193
fillSortColumns ();
190
194
}
191
195
}
192
196
197
+ void QgsAtlasCompositionWidget::checkLayerType ( QgsVectorLayer *layer )
198
+ {
199
+ // enable or disable fixed scale control based on layer type
200
+ switch ( layer->wkbType () )
201
+ {
202
+ case QGis::WKBPoint:
203
+ case QGis::WKBPoint25D:
204
+ case QGis::WKBMultiPoint:
205
+ case QGis::WKBMultiPoint25D:
206
+ // For point layers buffer setting makes no sense, so set "fixed scale" on and disable margin control
207
+ mAtlasFixedScaleRadio ->setChecked ( true );
208
+ mAtlasMarginRadio ->setEnabled ( false );
209
+ break ;
210
+ default :
211
+ // Not a point layer, so enable changes to fixed scale control
212
+ mAtlasMarginRadio ->setEnabled ( true );
213
+ }
214
+ }
215
+
193
216
void QgsAtlasCompositionWidget::on_mComposerMapComboBox_currentIndexChanged ( int index )
194
217
{
195
218
QgsAtlasComposition* atlasMap = &mComposition ->atlasComposition ();
@@ -250,24 +273,20 @@ void QgsAtlasCompositionWidget::on_mAtlasHideCoverageCheckBox_stateChanged( int
250
273
atlasMap->setHideCoverage ( state == Qt::Checked );
251
274
}
252
275
253
- void QgsAtlasCompositionWidget::on_mAtlasFixedScaleCheckBox_stateChanged ( int state )
276
+ void QgsAtlasCompositionWidget::on_mAtlasFixedScaleRadio_toggled ( bool checked )
254
277
{
255
278
QgsAtlasComposition* atlasMap = &mComposition ->atlasComposition ();
256
279
if ( !atlasMap )
257
280
{
258
281
return ;
259
282
}
260
- atlasMap->setFixedScale ( state == Qt::Checked );
283
+ atlasMap->setFixedScale ( checked );
284
+ }
261
285
262
- // in fixed scale mode, the margin is meaningless
263
- if ( state == Qt::Checked )
264
- {
265
- mAtlasMarginSpinBox ->setEnabled ( false );
266
- }
267
- else
268
- {
269
- mAtlasMarginSpinBox ->setEnabled ( true );
270
- }
286
+ void QgsAtlasCompositionWidget::on_mAtlasMarginSpinBox_valueChanged ( int value )
287
+ {
288
+ QgsAtlasComposition* atlasMap = &mComposition ->atlasComposition ();
289
+ atlasMap->setMargin ( value / 100 . );
271
290
}
272
291
273
292
void QgsAtlasCompositionWidget::on_mAtlasSingleFileCheckBox_stateChanged ( int state )
@@ -426,6 +445,7 @@ void QgsAtlasCompositionWidget::updateGuiElements()
426
445
if ( idx != -1 )
427
446
{
428
447
mAtlasCoverageLayerComboBox ->setCurrentIndex ( idx );
448
+ checkLayerType ( atlasMap->coverageLayer () );
429
449
}
430
450
idx = mComposerMapComboBox ->findData ( qVariantFromValue (( void * )atlasMap->composerMap () ) );
431
451
if ( idx != -1 )
@@ -435,7 +455,15 @@ void QgsAtlasCompositionWidget::updateGuiElements()
435
455
436
456
mAtlasMarginSpinBox ->setValue ( static_cast <int >( atlasMap->margin () * 100 ) );
437
457
mAtlasFilenamePatternEdit ->setText ( atlasMap->filenamePattern () );
438
- mAtlasFixedScaleCheckBox ->setCheckState ( atlasMap->fixedScale () ? Qt::Checked : Qt::Unchecked );
458
+ if ( atlasMap->fixedScale () )
459
+ {
460
+ mAtlasFixedScaleRadio ->setChecked ( true );
461
+ mAtlasMarginSpinBox ->setEnabled ( false );
462
+ }
463
+ else
464
+ {
465
+ mAtlasMarginRadio ->setChecked ( true );
466
+ }
439
467
mAtlasHideCoverageCheckBox ->setCheckState ( atlasMap->hideCoverage () ? Qt::Checked : Qt::Unchecked );
440
468
mAtlasSingleFileCheckBox ->setCheckState ( atlasMap->singleFile () ? Qt::Checked : Qt::Unchecked );
441
469
mAtlasSortFeatureCheckBox ->setCheckState ( atlasMap->sortFeatures () ? Qt::Checked : Qt::Unchecked );
0 commit comments