41
41
42
42
QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget ( QgsRasterLayer *layer, const QgsRectangle &extent )
43
43
: QgsRasterRendererWidget( layer, extent )
44
- , mDisableMinMaxWidgetRefresh( false )
45
44
, mMinMaxOrigin( 0 )
46
45
{
47
46
QgsSettings settings;
48
47
49
48
setupUi ( this );
49
+
50
50
connect ( mAddEntryButton , &QPushButton::clicked, this , &QgsSingleBandPseudoColorRendererWidget::mAddEntryButton_clicked );
51
51
connect ( mDeleteEntryButton , &QPushButton::clicked, this , &QgsSingleBandPseudoColorRendererWidget::mDeleteEntryButton_clicked );
52
52
connect ( mLoadFromBandButton , &QPushButton::clicked, this , &QgsSingleBandPseudoColorRendererWidget::mLoadFromBandButton_clicked );
@@ -98,9 +98,6 @@ QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget(
98
98
mMinMaxContainerWidget ->setLayout ( layout );
99
99
layout->addWidget ( mMinMaxWidget );
100
100
101
- connect ( mMinMaxWidget , &QgsRasterMinMaxWidget::widgetChanged, this , &QgsSingleBandPseudoColorRendererWidget::widgetChanged );
102
- connect ( mMinMaxWidget , &QgsRasterMinMaxWidget::load, this , &QgsSingleBandPseudoColorRendererWidget::loadMinMax );
103
-
104
101
mBandComboBox ->setLayer ( mRasterLayer );
105
102
106
103
mColorInterpolationComboBox ->addItem ( tr ( " Discrete" ), QgsColorRampShader::Discrete );
@@ -117,6 +114,9 @@ QgsSingleBandPseudoColorRendererWidget::QgsSingleBandPseudoColorRendererWidget(
117
114
118
115
setFromRenderer ( layer->renderer () );
119
116
117
+ connect ( mMinMaxWidget , &QgsRasterMinMaxWidget::widgetChanged, this , &QgsSingleBandPseudoColorRendererWidget::widgetChanged );
118
+ connect ( mMinMaxWidget , &QgsRasterMinMaxWidget::load, this , &QgsSingleBandPseudoColorRendererWidget::loadMinMax );
119
+
120
120
// If there is currently no min/max, load default with user current default options
121
121
if ( mMinLineEdit ->text ().isEmpty () || mMaxLineEdit ->text ().isEmpty () )
122
122
{
@@ -189,8 +189,6 @@ QgsRasterRenderer *QgsSingleBandPseudoColorRendererWidget::renderer()
189
189
void QgsSingleBandPseudoColorRendererWidget::doComputations ()
190
190
{
191
191
mMinMaxWidget ->doComputations ();
192
- if ( mColormapTreeWidget ->topLevelItemCount () == 0 )
193
- applyColorRamp ();
194
192
}
195
193
196
194
void QgsSingleBandPseudoColorRendererWidget::setMapCanvas ( QgsMapCanvas *canvas )
@@ -319,6 +317,8 @@ void QgsSingleBandPseudoColorRendererWidget::mAddEntryButton_clicked()
319
317
this , &QgsSingleBandPseudoColorRendererWidget::mColormapTreeWidget_itemEdited );
320
318
mColormapTreeWidget ->sortItems ( ValueColumn, Qt::AscendingOrder );
321
319
autoLabel ();
320
+
321
+ loadMinMaxFromTree ();
322
322
emit widgetChanged ();
323
323
}
324
324
@@ -335,6 +335,8 @@ void QgsSingleBandPseudoColorRendererWidget::mDeleteEntryButton_clicked()
335
335
{
336
336
delete item;
337
337
}
338
+
339
+ loadMinMaxFromTree ();
338
340
emit widgetChanged ();
339
341
}
340
342
@@ -449,6 +451,8 @@ void QgsSingleBandPseudoColorRendererWidget::mLoadFromBandButton_clicked()
449
451
{
450
452
QMessageBox::warning ( this , tr ( " Load Color Map" ), tr ( " The color map for band %1 has no entries" ).arg ( bandIndex ) );
451
453
}
454
+
455
+ loadMinMaxFromTree ();
452
456
emit widgetChanged ();
453
457
}
454
458
@@ -539,6 +543,8 @@ void QgsSingleBandPseudoColorRendererWidget::mLoadFromFileButton_clicked()
539
543
{
540
544
QMessageBox::warning ( this , tr ( " Read access denied" ), tr ( " Read access denied. Adjust the file permissions and try again.\n\n " ) );
541
545
}
546
+
547
+ loadMinMaxFromTree ();
542
548
emit widgetChanged ();
543
549
}
544
550
@@ -645,6 +651,9 @@ void QgsSingleBandPseudoColorRendererWidget::mColormapTreeWidget_itemEdited( QTr
645
651
{
646
652
mColormapTreeWidget ->sortItems ( ValueColumn, Qt::AscendingOrder );
647
653
autoLabel ();
654
+
655
+ loadMinMaxFromTree ();
656
+
648
657
emit widgetChanged ();
649
658
}
650
659
else if ( column == LabelColumn )
@@ -756,26 +765,48 @@ void QgsSingleBandPseudoColorRendererWidget::loadMinMax( int bandNo, double min,
756
765
Q_UNUSED ( bandNo );
757
766
QgsDebugMsg ( QString ( " theBandNo = %1 min = %2 max = %3" ).arg ( bandNo ).arg ( min ).arg ( max ) );
758
767
759
- mDisableMinMaxWidgetRefresh = true ;
768
+ double oldMin = lineEditValue ( mMinLineEdit );
769
+ double oldMax = lineEditValue ( mMaxLineEdit );
770
+
760
771
if ( std::isnan ( min ) )
761
772
{
762
- mMinLineEdit ->clear ();
773
+ whileBlocking ( mMinLineEdit ) ->clear ();
763
774
}
764
775
else
765
776
{
766
- mMinLineEdit ->setText ( QString::number ( min ) );
777
+ whileBlocking ( mMinLineEdit ) ->setText ( QString::number ( min ) );
767
778
}
768
779
769
780
if ( std::isnan ( max ) )
770
781
{
771
- mMaxLineEdit ->clear ();
782
+ whileBlocking ( mMaxLineEdit ) ->clear ();
772
783
}
773
784
else
774
785
{
775
- mMaxLineEdit ->setText ( QString::number ( max ) );
786
+ whileBlocking ( mMaxLineEdit )->setText ( QString::number ( max ) );
787
+ }
788
+
789
+ if ( oldMin != min || oldMax != max )
790
+ {
791
+ classify ();
776
792
}
777
- mDisableMinMaxWidgetRefresh = false ;
778
- classify ();
793
+ }
794
+
795
+ void QgsSingleBandPseudoColorRendererWidget::loadMinMaxFromTree ()
796
+ {
797
+ QTreeWidgetItem *item = mColormapTreeWidget ->topLevelItem ( 0 );
798
+ if ( !item )
799
+ {
800
+ return ;
801
+ }
802
+
803
+ double min = item->text ( ValueColumn ).toDouble ();
804
+ item = mColormapTreeWidget ->topLevelItem ( mColormapTreeWidget ->topLevelItemCount () - 1 );
805
+ double max = item->text ( ValueColumn ).toDouble ();
806
+
807
+ whileBlocking ( mMinLineEdit )->setText ( QString::number ( min ) );
808
+ whileBlocking ( mMaxLineEdit )->setText ( QString::number ( max ) );
809
+ minMaxModified ();
779
810
}
780
811
781
812
void QgsSingleBandPseudoColorRendererWidget::setLineEditValue ( QLineEdit *lineEdit, double value )
@@ -871,8 +902,5 @@ void QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textEdited( const QStr
871
902
872
903
void QgsSingleBandPseudoColorRendererWidget::minMaxModified ()
873
904
{
874
- if ( !mDisableMinMaxWidgetRefresh )
875
- {
876
- mMinMaxWidget ->userHasSetManualMinMaxValues ();
877
- }
905
+ mMinMaxWidget ->userHasSetManualMinMaxValues ();
878
906
}
0 commit comments