@@ -65,8 +65,15 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
65
65
// get rid of annoying outer focus rect on Mac
66
66
mDiagramOptionsListWidget ->setAttribute ( Qt::WA_MacShowFocusRect, false );
67
67
68
- connect ( mEnableDiagramsCheckBox , SIGNAL ( toggled ( bool ) ), mDiagramTypeFrame , SLOT ( setEnabled ( bool ) ) );
69
- connect ( mEnableDiagramsCheckBox , SIGNAL ( toggled ( bool ) ), mDiagramFrame , SLOT ( setEnabled ( bool ) ) );
68
+ mDiagramTypeComboBox ->blockSignals ( true );
69
+ mDiagramTypeComboBox ->addItem ( tr ( " No diagrams" ), " None" );
70
+ QPixmap pix = QgsApplication::getThemePixmap ( " pie-chart" );
71
+ mDiagramTypeComboBox ->addItem ( pix, tr ( " Pie chart" ), DIAGRAM_NAME_PIE );
72
+ pix = QgsApplication::getThemePixmap ( " text" );
73
+ mDiagramTypeComboBox ->addItem ( pix, tr ( " Text diagram" ), DIAGRAM_NAME_TEXT );
74
+ pix = QgsApplication::getThemePixmap ( " histogram" );
75
+ mDiagramTypeComboBox ->addItem ( pix, tr ( " Histogram" ), DIAGRAM_NAME_HISTOGRAM );
76
+ mDiagramTypeComboBox ->blockSignals ( false );
70
77
71
78
mScaleRangeWidget ->setMapCanvas ( QgisApp::instance ()->mapCanvas () );
72
79
mSizeFieldExpressionWidget ->registerGetExpressionContextCallback ( &_getExpressionContext, mLayer );
@@ -90,9 +97,7 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
90
97
QGis::GeometryType layerType = layer->geometryType ();
91
98
if ( layerType == QGis::UnknownGeometry || layerType == QGis::NoGeometry )
92
99
{
93
- mEnableDiagramsCheckBox ->setChecked ( false );
94
- mEnableDiagramsCheckBox ->setEnabled ( false );
95
- mDiagramTypeFrame ->setEnabled ( false );
100
+ mDiagramTypeComboBox ->setEnabled ( false );
96
101
mDiagramFrame ->setEnabled ( false );
97
102
}
98
103
@@ -122,15 +127,6 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
122
127
}
123
128
mPlacementComboBox ->blockSignals ( false );
124
129
125
- mDiagramTypeComboBox ->blockSignals ( true );
126
- QPixmap pix = QgsApplication::getThemePixmap ( " pie-chart" );
127
- mDiagramTypeComboBox ->addItem ( pix, tr ( " Pie chart" ), DIAGRAM_NAME_PIE );
128
- pix = QgsApplication::getThemePixmap ( " text" );
129
- mDiagramTypeComboBox ->addItem ( pix, tr ( " Text diagram" ), DIAGRAM_NAME_TEXT );
130
- pix = QgsApplication::getThemePixmap ( " histogram" );
131
- mDiagramTypeComboBox ->addItem ( pix, tr ( " Histogram" ), DIAGRAM_NAME_HISTOGRAM );
132
- mDiagramTypeComboBox ->blockSignals ( false );
133
-
134
130
mLabelPlacementComboBox ->addItem ( tr ( " Height" ), QgsDiagramSettings::Height );
135
131
mLabelPlacementComboBox ->addItem ( tr ( " x-height" ), QgsDiagramSettings::XHeight );
136
132
@@ -188,9 +184,9 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
188
184
const QgsDiagramRendererV2* dr = layer->diagramRenderer ();
189
185
if ( !dr ) // no diagram renderer yet, insert reasonable default
190
186
{
191
- mEnableDiagramsCheckBox -> setChecked ( false );
192
- mDiagramTypeFrame -> setEnabled ( false );
193
- mDiagramFrame -> setEnabled ( false );
187
+ mDiagramTypeComboBox -> blockSignals ( true );
188
+ mDiagramTypeComboBox -> setCurrentIndex ( 0 );
189
+ mDiagramTypeComboBox -> blockSignals ( false );
194
190
mFixedSizeRadio ->setChecked ( true );
195
191
mDiagramUnitComboBox ->setUnit ( QgsSymbolV2::MM );
196
192
mDiagramLineUnitComboBox ->setUnit ( QgsSymbolV2::MM );
@@ -225,9 +221,6 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
225
221
break ;
226
222
}
227
223
mBackgroundColorButton ->setColor ( QColor ( 255 , 255 , 255 , 255 ) );
228
- mDiagramTypeComboBox ->blockSignals ( true );
229
- mDiagramTypeComboBox ->setCurrentIndex ( 0 );
230
- mDiagramTypeComboBox ->blockSignals ( false );
231
224
// force a refresh of widget status to match diagram type
232
225
on_mDiagramTypeComboBox_currentIndexChanged ( mDiagramTypeComboBox ->currentIndex () );
233
226
}
@@ -249,9 +242,7 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
249
242
QList<QgsDiagramSettings> settingList = dr->diagramSettings ();
250
243
if ( !settingList.isEmpty () )
251
244
{
252
- mEnableDiagramsCheckBox ->setChecked ( settingList.at ( 0 ).enabled );
253
- mDiagramTypeFrame ->setEnabled ( mEnableDiagramsCheckBox ->isChecked () );
254
- mDiagramFrame ->setEnabled ( mEnableDiagramsCheckBox ->isChecked () );
245
+ mDiagramFrame ->setEnabled ( settingList.at ( 0 ).enabled );
255
246
mDiagramFont = settingList.at ( 0 ).font ;
256
247
QSizeF size = settingList.at ( 0 ).size ;
257
248
mBackgroundColorButton ->setColor ( settingList.at ( 0 ).backgroundColor );
@@ -385,16 +376,17 @@ QgsDiagramProperties::QgsDiagramProperties( QgsVectorLayer* layer, QWidget* pare
385
376
386
377
if ( dr->diagram () )
387
378
{
388
- QString diagramName = dr->diagram ()->diagramName ();
379
+ mDiagramType = dr->diagram ()->diagramName ();
380
+
389
381
mDiagramTypeComboBox ->blockSignals ( true );
390
- mDiagramTypeComboBox ->setCurrentIndex ( mDiagramTypeComboBox ->findData ( diagramName ) );
382
+ mDiagramTypeComboBox ->setCurrentIndex ( settingList. at ( 0 ). enabled ? mDiagramTypeComboBox ->findData ( mDiagramType ) : 0 );
391
383
mDiagramTypeComboBox ->blockSignals ( false );
392
384
// force a refresh of widget status to match diagram type
393
385
on_mDiagramTypeComboBox_currentIndexChanged ( mDiagramTypeComboBox ->currentIndex () );
394
386
if ( mDiagramTypeComboBox ->currentIndex () == -1 )
395
387
{
396
388
QMessageBox::warning ( this , tr ( " Unknown diagram type." ),
397
- tr ( " The diagram type '%1' is unknown. A default type is selected for you." ).arg ( diagramName ), QMessageBox::Ok );
389
+ tr ( " The diagram type '%1' is unknown. A default type is selected for you." ).arg ( mDiagramType ), QMessageBox::Ok );
398
390
mDiagramTypeComboBox ->setCurrentIndex ( mDiagramTypeComboBox ->findData ( DIAGRAM_NAME_PIE ) );
399
391
}
400
392
}
@@ -414,71 +406,79 @@ QgsDiagramProperties::~QgsDiagramProperties()
414
406
415
407
void QgsDiagramProperties::on_mDiagramTypeComboBox_currentIndexChanged ( int index )
416
408
{
417
- QString diagramType = mDiagramTypeComboBox ->itemData ( index ).toString ();
418
-
419
- if ( DIAGRAM_NAME_TEXT == diagramType )
409
+ if ( index == 0 )
420
410
{
421
- mTextOptionsFrame ->show ();
422
- mBackgroundColorLabel ->show ();
423
- mBackgroundColorButton ->show ();
424
- mDiagramFontButton ->show ();
411
+ mDiagramFrame ->setEnabled ( false );
425
412
}
426
413
else
427
414
{
428
- mTextOptionsFrame ->hide ();
429
- mBackgroundColorLabel ->hide ();
430
- mBackgroundColorButton ->hide ();
431
- mDiagramFontButton ->hide ();
432
- }
415
+ mDiagramFrame ->setEnabled ( true );
433
416
434
- if ( DIAGRAM_NAME_HISTOGRAM == diagramType )
435
- {
436
- mBarWidthLabel ->show ();
437
- mBarWidthSpinBox ->show ();
438
- mBarOptionsFrame ->show ();
439
- mAttributeBasedScalingRadio ->setChecked ( true );
440
- mFixedSizeRadio ->setEnabled ( false );
441
- mDiagramSizeSpinBox ->setEnabled ( false );
442
- mLinearlyScalingLabel ->setText ( tr ( " Bar length: Scale linearly, so that the following value matches the specified bar length:" ) );
443
- mSizeLabel ->setText ( tr ( " Bar length" ) );
444
- mFrameIncreaseSize ->setVisible ( false );
445
- }
446
- else
447
- {
448
- mBarWidthLabel ->hide ();
449
- mBarWidthSpinBox ->hide ();
450
- mBarOptionsFrame ->hide ();
451
- mLinearlyScalingLabel ->setText ( tr ( " Scale linearly between 0 and the following attribute value / diagram size:" ) );
452
- mSizeLabel ->setText ( tr ( " Size" ) );
453
- mAttributeBasedScalingRadio ->setEnabled ( true );
454
- mFixedSizeRadio ->setEnabled ( true );
455
- mDiagramSizeSpinBox ->setEnabled ( mFixedSizeRadio ->isChecked () );
456
- mFrameIncreaseSize ->setVisible ( true );
457
- }
417
+ mDiagramType = mDiagramTypeComboBox ->itemData ( index ).toString ();
458
418
459
- if ( DIAGRAM_NAME_TEXT == diagramType || DIAGRAM_NAME_PIE == diagramType )
460
- {
461
- mScaleDependencyComboBox ->show ();
462
- mScaleDependencyLabel ->show ();
463
- }
464
- else
465
- {
466
- mScaleDependencyComboBox ->hide ();
467
- mScaleDependencyLabel ->hide ();
468
- }
419
+ if ( DIAGRAM_NAME_TEXT == mDiagramType )
420
+ {
421
+ mTextOptionsFrame ->show ();
422
+ mBackgroundColorLabel ->show ();
423
+ mBackgroundColorButton ->show ();
424
+ mDiagramFontButton ->show ();
425
+ }
426
+ else
427
+ {
428
+ mTextOptionsFrame ->hide ();
429
+ mBackgroundColorLabel ->hide ();
430
+ mBackgroundColorButton ->hide ();
431
+ mDiagramFontButton ->hide ();
432
+ }
469
433
470
- if ( DIAGRAM_NAME_PIE == diagramType )
471
- {
472
- mAngleOffsetComboBox ->show ();
473
- mAngleOffsetLabel ->show ();
474
- }
475
- else
476
- {
477
- mAngleOffsetComboBox ->hide ();
478
- mAngleOffsetLabel ->hide ();
434
+ if ( DIAGRAM_NAME_HISTOGRAM == mDiagramType )
435
+ {
436
+ mBarWidthLabel ->show ();
437
+ mBarWidthSpinBox ->show ();
438
+ mBarOptionsFrame ->show ();
439
+ mAttributeBasedScalingRadio ->setChecked ( true );
440
+ mFixedSizeRadio ->setEnabled ( false );
441
+ mDiagramSizeSpinBox ->setEnabled ( false );
442
+ mLinearlyScalingLabel ->setText ( tr ( " Bar length: Scale linearly, so that the following value matches the specified bar length:" ) );
443
+ mSizeLabel ->setText ( tr ( " Bar length" ) );
444
+ mFrameIncreaseSize ->setVisible ( false );
445
+ }
446
+ else
447
+ {
448
+ mBarWidthLabel ->hide ();
449
+ mBarWidthSpinBox ->hide ();
450
+ mBarOptionsFrame ->hide ();
451
+ mLinearlyScalingLabel ->setText ( tr ( " Scale linearly between 0 and the following attribute value / diagram size:" ) );
452
+ mSizeLabel ->setText ( tr ( " Size" ) );
453
+ mAttributeBasedScalingRadio ->setEnabled ( true );
454
+ mFixedSizeRadio ->setEnabled ( true );
455
+ mDiagramSizeSpinBox ->setEnabled ( mFixedSizeRadio ->isChecked () );
456
+ mFrameIncreaseSize ->setVisible ( true );
457
+ }
458
+
459
+ if ( DIAGRAM_NAME_TEXT == mDiagramType || DIAGRAM_NAME_PIE == mDiagramType )
460
+ {
461
+ mScaleDependencyComboBox ->show ();
462
+ mScaleDependencyLabel ->show ();
463
+ }
464
+ else
465
+ {
466
+ mScaleDependencyComboBox ->hide ();
467
+ mScaleDependencyLabel ->hide ();
468
+ }
469
+
470
+ if ( DIAGRAM_NAME_PIE == mDiagramType )
471
+ {
472
+ mAngleOffsetComboBox ->show ();
473
+ mAngleOffsetLabel ->show ();
474
+ }
475
+ else
476
+ {
477
+ mAngleOffsetComboBox ->hide ();
478
+ mAngleOffsetLabel ->hide ();
479
+ }
479
480
}
480
481
}
481
-
482
482
QString QgsDiagramProperties::guessLegendText ( const QString& expression )
483
483
{
484
484
// trim unwanted characters from expression text for legend
@@ -598,11 +598,10 @@ void QgsDiagramProperties::on_mEngineSettingsButton_clicked()
598
598
599
599
void QgsDiagramProperties::apply ()
600
600
{
601
- bool diagramsEnabled = mEnableDiagramsCheckBox ->isChecked ();
601
+ int index = mDiagramTypeComboBox ->currentIndex ();
602
+ bool diagramsEnabled = ( index != 0 );
602
603
603
604
QgsDiagram* diagram = nullptr ;
604
- int index = mDiagramTypeComboBox ->currentIndex ();
605
- QString diagramType = mDiagramTypeComboBox ->itemData ( index ).toString ();
606
605
607
606
if ( diagramsEnabled && 0 == mDiagramAttributesTreeWidget ->topLevelItemCount () )
608
607
{
@@ -661,11 +660,11 @@ void QgsDiagramProperties::apply()
661
660
}
662
661
#endif
663
662
664
- if ( diagramType == DIAGRAM_NAME_TEXT )
663
+ if ( mDiagramType == DIAGRAM_NAME_TEXT )
665
664
{
666
665
diagram = new QgsTextDiagram ();
667
666
}
668
- else if ( diagramType == DIAGRAM_NAME_PIE )
667
+ else if ( mDiagramType == DIAGRAM_NAME_PIE )
669
668
{
670
669
diagram = new QgsPieDiagram ();
671
670
}
@@ -675,7 +674,7 @@ void QgsDiagramProperties::apply()
675
674
}
676
675
677
676
QgsDiagramSettings ds;
678
- ds.enabled = mEnableDiagramsCheckBox -> isChecked ( );
677
+ ds.enabled = ( mDiagramTypeComboBox -> currentIndex () != 0 );
679
678
ds.font = mDiagramFont ;
680
679
ds.transparency = mTransparencySpinBox ->value () * 255.0 / 100.0 ;
681
680
0 commit comments