Skip to content

Commit 65aa1d5

Browse files
committed
Don't reset output size on radius change (fix #8090)
Prevent input of invalid output size by changing to spin boxes for rows and columns
1 parent 5e760dd commit 65aa1d5

File tree

3 files changed

+42
-29
lines changed

3 files changed

+42
-29
lines changed

src/plugins/heatmap/heatmapgui.cpp

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
//standard includes
3838

3939
HeatmapGui::HeatmapGui( QWidget* parent, Qt::WFlags fl )
40-
: QDialog( parent, fl )
40+
: QDialog( parent, fl ),
41+
mRows( 500 )
4142
{
4243
setupUi( this );
4344

@@ -79,6 +80,8 @@ HeatmapGui::HeatmapGui( QWidget* parent, Qt::WFlags fl )
7980
mFormatCombo->setCurrentIndex( myTiffIndex );
8081

8182
updateBBox();
83+
updateSize();
84+
8285
//finally set right the ok button
8386
enableOrDisableOkButton();
8487
}
@@ -149,22 +152,22 @@ void HeatmapGui::on_advancedGroupBox_toggled( bool enabled )
149152
}
150153
}
151154

152-
void HeatmapGui::on_rowLineEdit_editingFinished()
155+
void HeatmapGui::on_mRowsSpinBox_editingFinished()
153156
{
154-
mRows = rowLineEdit->text().toInt();
157+
mRows = mRowsSpinBox->value();
155158
mYcellsize = mBBox.height() / mRows;
156159
mXcellsize = mYcellsize;
157-
mColumns = mBBox.width() / mXcellsize + 1;
160+
mColumns = max( mBBox.width() / mXcellsize, 1 );
158161

159162
updateSize();
160163
}
161164

162-
void HeatmapGui::on_columnLineEdit_editingFinished()
165+
void HeatmapGui::on_mColumnsSpinBox_editingFinished()
163166
{
164-
mColumns = columnLineEdit->text().toInt();
167+
mColumns = mColumnsSpinBox->value();
165168
mXcellsize = mBBox.width() / mColumns;
166169
mYcellsize = mXcellsize;
167-
mRows = mBBox.height() / mYcellsize + 1;
170+
mRows = max( mBBox.height() / mYcellsize, 1 );
168171

169172
updateSize();
170173
}
@@ -173,8 +176,8 @@ void HeatmapGui::on_cellXLineEdit_editingFinished()
173176
{
174177
mXcellsize = cellXLineEdit->text().toDouble();
175178
mYcellsize = mXcellsize;
176-
mRows = mBBox.height() / mYcellsize + 1;
177-
mColumns = mBBox.width() / mXcellsize + 1;
179+
mRows = max( mBBox.height() / mYcellsize, 1 );
180+
mColumns = max( mBBox.width() / mXcellsize, 1 );
178181

179182
updateSize();
180183
}
@@ -183,8 +186,8 @@ void HeatmapGui::on_cellYLineEdit_editingFinished()
183186
{
184187
mYcellsize = cellYLineEdit->text().toDouble();
185188
mXcellsize = mYcellsize;
186-
mRows = mBBox.height() / mYcellsize + 1;
187-
mColumns = mBBox.width() / mXcellsize + 1;
189+
mRows = max( mBBox.height() / mYcellsize, 1 );
190+
mColumns = max( mBBox.width() / mXcellsize, 1 );
188191

189192
updateSize();
190193
}
@@ -316,8 +319,8 @@ void HeatmapGui::populateFields()
316319

317320
void HeatmapGui::updateSize()
318321
{
319-
rowLineEdit->setText( QString::number( mRows ) );
320-
columnLineEdit->setText( QString::number( mColumns ) );
322+
mRowsSpinBox->setValue( mRows );
323+
mColumnsSpinBox->setValue( mColumns );
321324
cellXLineEdit->setText( QString::number( mXcellsize ) );
322325
cellYLineEdit->setText( QString::number( mYcellsize ) );
323326
}
@@ -363,17 +366,13 @@ void HeatmapGui::updateBBox()
363366
mBBox.setYMinimum( mBBox.yMinimum() - radiusInMapUnits );
364367
mBBox.setXMaximum( mBBox.xMaximum() + radiusInMapUnits );
365368
mBBox.setYMaximum( mBBox.yMaximum() + radiusInMapUnits );
366-
mRows = 500;
369+
370+
// Leave number of rows the same, and calculate new corresponding cell size and number of columns
367371
mYcellsize = mBBox.height() / mRows;
368372
mXcellsize = mYcellsize;
369-
// +1 should be added wherever a fractional part of cell might occur
370-
mColumns = mBBox.width() / mXcellsize + 1;
371-
mRows += 1;
373+
mColumns = max( mBBox.width() / mXcellsize, 1 );
372374

373-
if ( advancedGroupBox->isChecked() )
374-
{
375-
updateSize();
376-
}
375+
updateSize();
377376
}
378377

379378
double HeatmapGui::mapUnitsOf( double meters, QgsCoordinateReferenceSystem layerCrs )

src/plugins/heatmap/heatmapgui.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ class HeatmapGui : public QDialog, private Ui::HeatmapGuiBase
114114
void on_mBrowseButton_clicked();
115115
void on_mOutputRasterLineEdit_editingFinished();
116116
void on_advancedGroupBox_toggled( bool enabled );
117-
void on_rowLineEdit_editingFinished();
118-
void on_columnLineEdit_editingFinished();
117+
void on_mRowsSpinBox_editingFinished();
118+
void on_mColumnsSpinBox_editingFinished();
119119
void on_cellXLineEdit_editingFinished();
120120
void on_cellYLineEdit_editingFinished();
121121
void on_radiusFieldCombo_currentIndexChanged( int index );

src/plugins/heatmap/heatmapguibase.ui

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
<string>Rows</string>
131131
</property>
132132
<property name="buddy">
133-
<cstring>rowLineEdit</cstring>
133+
<cstring>mRowsSpinBox</cstring>
134134
</property>
135135
</widget>
136136
</item>
@@ -150,7 +150,7 @@
150150
<string>Columns</string>
151151
</property>
152152
<property name="buddy">
153-
<cstring>columnLineEdit</cstring>
153+
<cstring>mColumnsSpinBox</cstring>
154154
</property>
155155
</widget>
156156
</item>
@@ -165,10 +165,24 @@
165165
</widget>
166166
</item>
167167
<item row="0" column="1">
168-
<widget class="QLineEdit" name="rowLineEdit"/>
168+
<widget class="QSpinBox" name="mRowsSpinBox">
169+
<property name="minimum">
170+
<number>1</number>
171+
</property>
172+
<property name="maximum">
173+
<number>999999</number>
174+
</property>
175+
</widget>
169176
</item>
170177
<item row="0" column="3">
171-
<widget class="QLineEdit" name="columnLineEdit"/>
178+
<widget class="QSpinBox" name="mColumnsSpinBox">
179+
<property name="minimum">
180+
<number>1</number>
181+
</property>
182+
<property name="maximum">
183+
<number>999999</number>
184+
</property>
185+
</widget>
172186
</item>
173187
<item row="1" column="1">
174188
<widget class="QLineEdit" name="cellXLineEdit"/>
@@ -292,8 +306,8 @@
292306
<tabstop>mBufferLineEdit</tabstop>
293307
<tabstop>mRadiusUnitCombo</tabstop>
294308
<tabstop>advancedGroupBox</tabstop>
295-
<tabstop>rowLineEdit</tabstop>
296-
<tabstop>columnLineEdit</tabstop>
309+
<tabstop>mRowsSpinBox</tabstop>
310+
<tabstop>mColumnsSpinBox</tabstop>
297311
<tabstop>cellXLineEdit</tabstop>
298312
<tabstop>cellYLineEdit</tabstop>
299313
<tabstop>kernelShapeCombo</tabstop>

0 commit comments

Comments
 (0)