Skip to content

Commit 1080d97

Browse files
committed
adapt raster save as dialog to changes in collapsible group box
1 parent 0179e38 commit 1080d97

3 files changed

+50
-101
lines changed

src/gui/qgsrasterlayersaveasdialog.cpp

+37-35
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,11 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
8484
{
8585
mPyramidsOptionsWidget->createOptionsWidget()->setType( QgsRasterFormatSaveOptionsWidget::ProfileLineEdit );
8686

87-
// init. pyramids button group
88-
for ( int i = -2, j = 0 ; i >= -4 ; i--, j++ )
89-
mPyramidsButtonGroup->setId( mPyramidsButtonGroup->button( i ), j );
9087
// TODO enable "use existing", has no effect for now, because using Create() in gdal provider
9188
// if ( ! mDataProvider->hasPyramids() )
9289
// mPyramidsButtonGroup->button( QgsRasterDataProvider::CopyExisting )->setEnabled( false );
93-
mPyramidsButtonGroup->button( QgsRasterDataProvider::CopyExisting )->setEnabled( false );
94-
mPyramidsButtonGroup->button( QgsRasterDataProvider::PyramidsFlagNo )->click();
95-
mPyramidsButtonGroup->button( QgsRasterDataProvider::PyramidsFlagNo )->setChecked( true );
90+
mPyramidsUseExistingCheckBox->setEnabled( false );
91+
mPyramidsUseExistingCheckBox->setVisible( false );
9692

9793
populatePyramidsLevels();
9894
connect( mPyramidsOptionsWidget, SIGNAL( overviewListChanged() ),
@@ -111,12 +107,10 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
111107
okButton->setEnabled( false );
112108
}
113109

114-
115110
// this should scroll down to make widget visible, but it's not happening
116111
// (at least part of it is visible)...
117-
connect( mCreateOptionsGroupBox, SIGNAL( expanded( QWidget* ) ),
112+
connect( mCreateOptionsGroupBox, SIGNAL( collapsedStateChanged( QWidget* ) ),
118113
this, SLOT( groupBoxExpanded( QWidget* ) ) );
119-
120114
}
121115

122116
void QgsRasterLayerSaveAsDialog::setValidators()
@@ -236,7 +230,7 @@ QString QgsRasterLayerSaveAsDialog::outputFormat() const
236230

237231
QStringList QgsRasterLayerSaveAsDialog::createOptions() const
238232
{
239-
return mCreateOptionsWidget ? mCreateOptionsWidget->options() : QStringList();
233+
return mCreateOptionsGroupBox->isChecked() ? mCreateOptionsWidget->options() : QStringList();
240234
}
241235

242236
QgsRectangle QgsRasterLayerSaveAsDialog::outputRectangle() const
@@ -535,6 +529,12 @@ void QgsRasterLayerSaveAsDialog::on_mRawModeRadioButton_toggled( bool checked )
535529
mNoDataGroupBox->setEnabled( checked && mDataProvider->bandCount() == 1 );
536530
}
537531

532+
void QgsRasterLayerSaveAsDialog::groupBoxExpanded( QWidget * widget )
533+
{
534+
if ( !mCreateOptionsGroupBox->isCollapsed() )
535+
mScrollArea->ensureWidgetVisible( widget );
536+
}
537+
538538
void QgsRasterLayerSaveAsDialog::on_mAddNoDataManuallyToolButton_clicked()
539539
{
540540
addNoDataRow( std::numeric_limits<double>::quiet_NaN(), std::numeric_limits<double>::quiet_NaN() );
@@ -658,31 +658,15 @@ void QgsRasterLayerSaveAsDialog::on_mTileModeCheckBox_toggled( bool toggled )
658658
// enable pyramids
659659
if ( ! mPyramidsGroupBox->isChecked() )
660660
mPyramidsGroupBox->setChecked( true );
661-
if ( mPyramidsButtonGroup->checkedId() == QgsRasterDataProvider::PyramidsFlagNo )
662-
{
663-
mPyramidsButtonGroup->button( QgsRasterDataProvider::PyramidsFlagYes )->click();
664-
mPyramidsButtonGroup->button( QgsRasterDataProvider::PyramidsFlagYes )->setChecked( true );
665-
}
661+
if ( mPyramidsGroupBox->isCollapsed() )
662+
mPyramidsGroupBox->setCollapsed( false );
666663
mPyramidsOptionsWidget->checkAllLevels( true );
667664
}
668665
}
669666

670-
void QgsRasterLayerSaveAsDialog::on_mPyramidsButtonGroup_buttonClicked( int id )
667+
void QgsRasterLayerSaveAsDialog::on_mPyramidsGroupBox_toggled( bool toggled )
671668
{
672-
if ( id == QgsRasterDataProvider::PyramidsFlagNo || id == QgsRasterDataProvider::CopyExisting )
673-
{
674-
mPyramidsOptionsWidget->setEnabled( false );
675-
mPyramidResolutionsLabel->setEnabled( false );
676-
mPyramidResolutionsLineEdit->setEnabled( false );
677-
}
678-
else if ( id == QgsRasterDataProvider::PyramidsFlagYes )
679-
{
680-
mPyramidsOptionsWidget->setEnabled( true );
681-
mPyramidResolutionsLabel->setEnabled( true );
682-
mPyramidResolutionsLineEdit->setEnabled( true );
683-
}
684-
else
685-
QgsDebugMsg( QString( "invalid button id %1" ).arg( id ) );
669+
Q_UNUSED( toggled );
686670
populatePyramidsLevels();
687671
}
688672

@@ -691,14 +675,14 @@ void QgsRasterLayerSaveAsDialog::populatePyramidsLevels()
691675
// if selection != "Build pyramids", get pyramids from actual layer
692676
QString text;
693677

694-
if ( mPyramidsButtonGroup->checkedId() != QgsRasterDataProvider::PyramidsFlagNo )
678+
if ( mPyramidsGroupBox->isChecked() )
695679
{
696680
QList<QgsRasterPyramid> myPyramidList;
697-
if ( mPyramidsButtonGroup->checkedId() == QgsRasterDataProvider::CopyExisting )
681+
if ( mPyramidsUseExistingCheckBox->isChecked() )
698682
{
699683
myPyramidList = mDataProvider->buildPyramidList();
700684
}
701-
else if ( mPyramidsButtonGroup->checkedId() == QgsRasterDataProvider::PyramidsFlagYes )
685+
else
702686
{
703687
if ( ! mPyramidsOptionsWidget->overviewList().isEmpty() )
704688
myPyramidList = mDataProvider->buildPyramidList( mPyramidsOptionsWidget->overviewList() );
@@ -708,8 +692,7 @@ void QgsRasterLayerSaveAsDialog::populatePyramidsLevels()
708692
myRasterPyramidIterator != myPyramidList.end();
709693
++myRasterPyramidIterator )
710694
{
711-
if ( mPyramidsButtonGroup->checkedId() == QgsRasterDataProvider::PyramidsFlagYes
712-
|| myRasterPyramidIterator->exists )
695+
if ( myRasterPyramidIterator->exists )
713696
{
714697
text += QString::number( myRasterPyramidIterator->xDim ) + QString( "x" ) +
715698
QString::number( myRasterPyramidIterator->yDim ) + " ";
@@ -753,6 +736,9 @@ void QgsRasterLayerSaveAsDialog::adjustNoDataCellWidth( int row, int column )
753736
QList<QgsRasterNuller::NoData> QgsRasterLayerSaveAsDialog::noData() const
754737
{
755738
QList<QgsRasterNuller::NoData> noDataList;
739+
if ( ! mNoDataGroupBox->isChecked() )
740+
return noDataList;
741+
756742
for ( int r = 0 ; r < mNoDataTableWidget->rowCount(); r++ )
757743
{
758744
QgsRasterNuller::NoData noData;
@@ -762,3 +748,19 @@ QList<QgsRasterNuller::NoData> QgsRasterLayerSaveAsDialog::noData() const
762748
}
763749
return noDataList;
764750
}
751+
752+
QList<int> QgsRasterLayerSaveAsDialog::overviewList() const
753+
{
754+
return mPyramidsGroupBox->isChecked() ? mPyramidsOptionsWidget->overviewList() : QList<int>();
755+
}
756+
757+
QgsRasterDataProvider::RasterBuildPyramids QgsRasterLayerSaveAsDialog::buildPyramidsFlag() const
758+
{
759+
if ( ! mPyramidsGroupBox->isChecked() )
760+
return QgsRasterDataProvider::PyramidsFlagNo;
761+
else if ( mPyramidsUseExistingCheckBox->isChecked() )
762+
return QgsRasterDataProvider::CopyExisting;
763+
else
764+
return QgsRasterDataProvider::PyramidsFlagYes;
765+
}
766+

src/gui/qgsrasterlayersaveasdialog.h

+4-6
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,12 @@ class GUI_EXPORT QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRast
5858
QgsRectangle outputRectangle() const;
5959
QList<QgsRasterNuller::NoData> noData() const;
6060

61-
QList< int > overviewList() const { return mPyramidsOptionsWidget->overviewList(); }
62-
QgsRasterDataProvider::RasterBuildPyramids buildPyramidsFlag() const
63-
{ return ( QgsRasterDataProvider::RasterBuildPyramids ) mPyramidsButtonGroup->checkedId(); }
61+
QList< int > overviewList() const;
62+
QgsRasterDataProvider::RasterBuildPyramids buildPyramidsFlag() const;
6463
QString pyramidsResampling() const { return mPyramidsOptionsWidget->resamplingMethod(); }
6564
QgsRasterDataProvider::RasterPyramidsFormat pyramidsFormat() const
6665
{ return mPyramidsOptionsWidget->pyramidsFormat(); }
6766

68-
6967
void hideFormat();
7068
void hideOutput();
7169

@@ -94,14 +92,14 @@ class GUI_EXPORT QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRast
9492

9593
void on_mCrsComboBox_currentIndexChanged( int ) { crsChanged(); }
9694

97-
void groupBoxExpanded( QWidget * widget ) { mScrollArea->ensureWidgetVisible( widget ); }
95+
void groupBoxExpanded( QWidget * widget );
9896
void on_mAddNoDataManuallyToolButton_clicked();
9997
void on_mLoadTransparentNoDataToolButton_clicked();
10098
void on_mRemoveSelectedNoDataToolButton_clicked();
10199
void on_mRemoveAllNoDataToolButton_clicked();
102100
void noDataCellTextEdited( const QString & text );
103101
void on_mTileModeCheckBox_toggled( bool toggled );
104-
void on_mPyramidsButtonGroup_buttonClicked( int id );
102+
void on_mPyramidsGroupBox_toggled( bool toggled );
105103
void populatePyramidsLevels();
106104

107105
private:

src/ui/qgsrasterlayersaveasdialogbase.ui

+9-60
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
<rect>
3131
<x>0</x>
3232
<y>0</y>
33-
<width>536</width>
34-
<height>947</height>
33+
<width>550</width>
34+
<height>738</height>
3535
</rect>
3636
</property>
3737
<layout class="QVBoxLayout" name="verticalLayout_5">
@@ -476,9 +476,6 @@
476476
<layout class="QHBoxLayout" name="horizontalLayout_5">
477477
<item>
478478
<widget class="QLabel" name="mMaximumSizeXLabel">
479-
<property name="enabled">
480-
<bool>false</bool>
481-
</property>
482479
<property name="toolTip">
483480
<string>Maximum number of columns in one tile.</string>
484481
</property>
@@ -489,19 +486,13 @@
489486
</item>
490487
<item>
491488
<widget class="QLineEdit" name="mMaximumSizeXLineEdit">
492-
<property name="enabled">
493-
<bool>false</bool>
494-
</property>
495489
<property name="toolTip">
496490
<string>Maximum number of columns in one tile.</string>
497491
</property>
498492
</widget>
499493
</item>
500494
<item>
501495
<widget class="QLabel" name="mMaximumSizeYLabel">
502-
<property name="enabled">
503-
<bool>false</bool>
504-
</property>
505496
<property name="toolTip">
506497
<string>Maximum number of rows in one tile.</string>
507498
</property>
@@ -512,19 +503,13 @@
512503
</item>
513504
<item>
514505
<widget class="QLineEdit" name="mMaximumSizeYLineEdit">
515-
<property name="enabled">
516-
<bool>false</bool>
517-
</property>
518506
<property name="toolTip">
519507
<string>Maximum number of rows in one tile.</string>
520508
</property>
521509
</widget>
522510
</item>
523511
<item>
524512
<widget class="QCheckBox" name="mTileModeCheckBox">
525-
<property name="enabled">
526-
<bool>false</bool>
527-
</property>
528513
<property name="text">
529514
<string>Create VRT</string>
530515
</property>
@@ -535,9 +520,6 @@
535520
</item>
536521
<item>
537522
<widget class="QgsCollapsibleGroupBox" name="mNoDataGroupBox">
538-
<property name="enabled">
539-
<bool>true</bool>
540-
</property>
541523
<property name="sizePolicy">
542524
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
543525
<horstretch>0</horstretch>
@@ -659,45 +641,8 @@
659641
<layout class="QGridLayout" name="gridLayout_3">
660642
<item row="3" column="0">
661643
<widget class="QgsRasterPyramidsOptionsWidget" name="mPyramidsOptionsWidget" native="true">
662-
<property name="enabled">
663-
<bool>false</bool>
664-
</property>
665644
</widget>
666645
</item>
667-
<item row="0" column="0">
668-
<layout class="QHBoxLayout" name="horizontalLayout_2">
669-
<item>
670-
<widget class="QRadioButton" name="radioButton">
671-
<property name="text">
672-
<string>No pyramids</string>
673-
</property>
674-
<attribute name="buttonGroup">
675-
<string notr="true">mPyramidsButtonGroup</string>
676-
</attribute>
677-
</widget>
678-
</item>
679-
<item>
680-
<widget class="QRadioButton" name="radioButton_2">
681-
<property name="text">
682-
<string>Build pyramids</string>
683-
</property>
684-
<attribute name="buttonGroup">
685-
<string notr="true">mPyramidsButtonGroup</string>
686-
</attribute>
687-
</widget>
688-
</item>
689-
<item>
690-
<widget class="QRadioButton" name="radioButton_3">
691-
<property name="text">
692-
<string>Use existing</string>
693-
</property>
694-
<attribute name="buttonGroup">
695-
<string notr="true">mPyramidsButtonGroup</string>
696-
</attribute>
697-
</widget>
698-
</item>
699-
</layout>
700-
</item>
701646
<item row="2" column="0">
702647
<widget class="Line" name="line">
703648
<property name="orientation">
@@ -751,6 +696,13 @@
751696
</item>
752697
</layout>
753698
</item>
699+
<item row="0" column="0">
700+
<widget class="QCheckBox" name="mPyramidsUseExistingCheckBox">
701+
<property name="text">
702+
<string>Use existing</string>
703+
</property>
704+
</widget>
705+
</item>
754706
</layout>
755707
</widget>
756708
</item>
@@ -841,7 +793,4 @@
841793
</hints>
842794
</connection>
843795
</connections>
844-
<buttongroups>
845-
<buttongroup name="mPyramidsButtonGroup"/>
846-
</buttongroups>
847796
</ui>

0 commit comments

Comments
 (0)